1. B-Tech. Project Report
Shirish Jadav
Dhirubhai Ambani Institute of Information and Communication Technology, Gandhinagar
201001162@daiict.ac.in
Supervisor
Prof. Gautam Dutta
Off-Campus Supervisor
Abhijeet Goel
Aspirations, NDBI, NID Paldi, Ahmedabad
Kavina Patel
Transpose, CIIE, IIM, Ahmedabad
Abstract – This document highlights the projects done under my
capacity as the intern game developer and hardware design
engineer at Aspirations and Transpose respectively.
Keywords – game developer, hardware design, Aspirations,
Transpose
I. INTRODUCTION
This document is the summary of my B-Tech. project
undertaken in eighth Semester. It’s about the exploration of
online gaming development and testing of its features.
Aspirations is a startup by Abhijeet Goel incubated at NDBI-
Ahmadabad which is involved in development of games for
multiple platforms. My work at Aspirations revolved around
testing cloud storages API, online gaming room creation
testing and basic camera motions and screen changes.
Transpose is a startup comprising of a group of 5 people from
CEPT. They have a Idea of traffic analysis for improving
infrastructure setup in urban areas. For the projects at
Transpose, I was a prototype maker. My work was to build a
hardware and software with a minimalist approach to make
wireless camera sensor boards capable of taking video data of
traffic at junctions, processing it to count or to know flow rate
and send data to a main server.
This report is structured in a manner that divides the projects
into two broad categories that are the projects done with
Aspirations and projects done with Transpose. Each project
will be presented in a unified fashion which will highlight the
intent of the project, methodology and my contribution to the
actual result and encountered challenges.
II. PROJECT AT ASPIRATIONS
For this project I was acquired as a game developer. Project
was to develop a game for all platforms. Game was a standard
bike racing edition with various options for customisations.
Although it was being developed for all platforms, most of the
things were being developed to greatly work with online
mobile devices. Today’s low network rates and good mobile
hardware with capability of graphics performance with good
processing units has made it possible to deliver a great
experience of social gaming which was before played on
LANs only. At Aspirations we were trying to integrate this
experience of gaming and social network. The primary
objective was to integrate good graphics effects, virtual
gadgets buying and ad serving to earn money. I had worked to
some extent for about a span of two months on testing
multiplayer API’s, cloud storages, and ad servers.
A. Requirements
Hardware requirements for the project included a computer
with a minimum of a Pentium processor or higher with
minimum 1 GB RAM and a good quality graphics processor
preferably Nvidia or ATI. Another piece of hardware required
was an Android device for testing and debugging.
Software requirements included Unity 3D and Chrome
browser for online testing.
B. Methodology
Prototyping methodology was adopted for project
development. In this method a customer expresses his
requirements which are then broken down to smaller and
simplified modules and each module is prepared independent
of each other but functioning such that they can be later
integrated easily. Then standalone testing is performed with
their features. If module is not functioning properly or a can
be optimized than it’s easier for revising it because of the
simplicity of code. Herein this project, every module is an
individual task or feature in the game. Basically prototypes are
either workable models of the final product. Here in this
project, the customer was my mentor. Requirements were the
features he wanted me to implement like camera focus to
object, swaps and ad server setup and integration.
Initial requirements were in the form of features in this project
like a menu of option selectable with swipe, touch or pinch.
With unity, coding can be approached in two ways, C# or
JavaScript. Although anyone can be chosen as both provide all
functionality in unity. With C# we can use object oriented
approach which belongs to the same family with from
Processing (https://www.processing.org/) which was
developed in MIT’s Media Lab. Processing is simplification
2. of Java code for artist, designers and programmers too to
explore visual coding or art with code. But it has grown into a
large community of open source contributors who have
developed lots of libraries and extensions to other devices like
play stations kinect or android devices. Also it is an
independent of platform. Many people have developed data
visualization software around it and I have also previously
used it a lot for prototyping. So basically prototyping with
unity was quick as it followed a similar structure underneath.
Unity has also developed a large communities of coders thus
provides great help online.
In game development there are many types of designs from
model frame design to whole architecture of a level. As in
prototype model this design is concerned with the design of
code or algorithm to be implemented as a feature. Fig.1 shows
an example of design of an algorithm to implement swipe
input from touch screen.
Fig. 1
This step mostly consists of writing code for the perceived
algorithm. It is implemented in coding language to use.
Considering the algorithm in Fig.1, implementation is like as
shown in Fig. 2.
Fig. 2 shows an implementation of detection of touch points and using the
motion of touch point to change levels
The algorithm in simple condition format is as follows:
A.x < 200 & A.x >20 & A.y>10 & A.y<200
Once implemented and errors and bugs are removed, the code
is executed or the module is run as an application on particular
platform. In this case it is run on Android. Android has a
capability of on device debugging where a program can be run
on android while it is connected to the PC with debugging
software. If everything appears and works fine as the
flowchart, the module is shown to customer to test for his
satisfaction. His feedbacks are again taken to improve the
module until he/she is satisfied with functionality and look.
That’s the part of review and update. Cycle continues until
satisfaction. Once satisfied module is either integrated with
other larger part of modules or kept as it is until needed. There
might be modifications later if requirements change.
Debugging mostly consist of solving problems in the code and
errors appearing in the console output. Sometimes you can
ignore warnings but these may cause problem in the long run
so it is better to solve when they appear.
C. Tools and Technologies Used
Unity 3D – game engine
Appwrap – cloud API for multiplayer online gaming and
cloud services.
Revmob – Ad serving service and API
C# – object oriented programming Language
D. Testing Initial Game Design Components
Rotating cube – This small assignment was given to
increase familiarity with Unity 3D.
Clock – This was to implement Time and its function and
motion of objects with respect to time.
Database test – This was to test the cloud storage APIs.
Viking multiplayer test – A Demo to test the multiplayer
implementation. The interface for the same is shown in Fig.
3.
Fig. 3 shows the interface for the Viking Multiplayer test game
Rooms and lobby test – A demo to test the creation of
rooms and lobby for online multiplayer gaming. The
interface for the same is shown in Fig. 4 and Fig. 5.
3. Fig. 4 shows the interface for the game room design test
Fig. 5 shows the interface for chat room and lobby game design testing
III. PROJECT AT TRANSPOSE
Transpose is startup based on the idea that encompasses
analysis of traffic movement in any city and later uses this
data to take inference for proper planning of cities, buildings
and other urban structures. They had developed an initial code
for traffic counting but it was inaccurate and rough and they
had no hardware for the product they suggested. I was hired to
develop a working hardware to capture a live video feed of the
traffic and to process and communicate the data over the mesh
of such sensors. I had to use lots of knowledge covered in last
three years for this project where subjects like Operating
System, System Programming, Embedded Systems, Sensor
Networks, Wireless Communication, Algorithms and Image
Processing were greatly helpful in achieving the final design
flow.
A. Requirements
Hardware:
Raspberry Pi
Xbee pro 2
Xbee explorer
Raspberry Pi Infrared camera Module
Raspberry Pi color camera Module
SD card with raspbian OS image installed
Software
X-CTU for zigbee setup
Raspbian OS installed
openCV
ArduPi library Files
B. Device Description and Background
Work description was to develop a hardware design which
would be able to collect visual data and send processed
information to a central server. According to the requirement
the device had to have a single board computer, camera,
wireless connectivity, power supply and a low cost.
Components chosen to justify the device description were a
Raspberry Pi, Xbee and an imaging sensor. Raspberry Pi is a
credit card size computer developed for hobbyist and teaching
computer science in schools. Xbee is a wireless module for
setting up sensor networks. Project was to collect data on of
traffic at junction and to analysis and abstract information of
traffic movement and how at all junctions’ traffic are affected
in constrains. So the basic task was to develop hardware
capable of collecting data and sending it to storage centre.
Data will be the number of vehicles passing at any given time,
size of vehicles, pedestrians moving around etc. As raspberry
Pi is a small computer and is available at a low cost of Rs
3500, its best to use it for this project.
C. Methodology
The prototyping methodology was again used here. As already
described above I followed same rules like breaking the
problem in to smaller problems and start building up.
First thing here to start test was to setup the Xbee
communication modules. One Coordinator and one router,
setting their destination and source addresses such that testing
a pair of such modules connected to two different computers
to a terminal program. Sending text from one terminal and
receiving it at other makes this prototype test success.
Next task is to connect these Xbee modules to Raspberry Pi
serial port. It was easy for Arduino to communicate to Xbee
with serial library of Arduino and then coding part was very
easy. So there are few I/O pins available including UART.
Also here comes the knowledge of surfing electronic gadget
handy there was already a bridge board from Raspberry Pi to
Arduino and a library called ArduPi library. But I wasn’t
going to buy any other electronic equipment in order to keep
everything low cost. Bridge was a simple circuit as expected
so for time being I used some jumper wires as in Fig. 6 and
setup the test to send data from Raspberry Pi to Xbee and
from there to other Xbee connect to a PC and see the sent data
on screen.
4. Fig. 6 shows the connection of Xbee modules with Raspberry Pi
Later on as demand of mentor I build a PCB in Eagle CAD
and used a process of chemically etching copper clad with
ferrous chloride solution and a laser printer’s print of circuit.
Fig. 7 shows the product when everything was connected it all
worked fine as it should have by following prototyping
strategies.
Fig. 7shows the message passing using wireless connectivity
Then, came the part of connecting the camera modules which
was easy as the camera sensors used were designed especially
for Pi. A simple command would take picture or take video
shot for certain duration and store in file. My next task was to
test a setup where a command from remote computer triggers
video capturing. So I had to integrate Xbee and camera
together and it worked fine with few lines of code.
The overall hardware schematic is shown in Fig. 8.
Fig. 8
The test results of using various image sensors are shown in
Fig. 9 and Fig. 10.
Fig. 9 shows an image taken from the color image sensor
Fig. 10 shows an image taken from an Infrared image sensor
D. Future Aspects
Running Open Computer Vision (openCV) library on Pi and
processing the video and extracting the data and sending it
through Xbee to server through a network of sensors.
5. IV.CONCLUSIONS
I have learned a lot of new technologies in the field of game
design and I have developed an in depth understanding of
studying requirement specifications and giving a simple and
optimized hardware solution. All of these new technologies
and techniques have added more jewels to my crown. As a
programmer, I got a lot of experience and confidence of using
API’s for cloud services. Working with unity added extra
dimension to the skills and tools. Working with startup lets me
see that it’s a difficult task to put a project on hand to
completion. Also went through different Institutes, facilities
and labs. Working with people from different background and
able to communicate Ideas with each other’s perspective.
Overall these projects have been a great learning experience
for me.
ACKNOWLEDGMENT
I would like to acknowledge Prof. Gautam Dutta who has
shown constant support throughout my internship. I would
also acknowledge Abhijeet Goel for guiding me with different
technologies. I would also like to acknowledge people at
transpose, Abhishek doshi, kavina Patel, Jaydip for
introducing me to CEPT’s Fabrication Lab and giving me an
opportunity to test my skills of prototyping.
REFERENCES
[1] http://docs.unity3d.com
[2] http://appwarp.shephertz.com
[3] http://www.cooking-hacks.com
[4] http://shop.oreilly.com/product/9780596807740.do
[5] https://www.sparkfun.com/datasheets/Wireless/Zigbee/XBee-2.5-
Manual.pdf
[6] http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-
ARM-Peripherals.pdf