0% found this document useful (0 votes)
26 views42 pages

Report Chirag ETP

The OJT report details the training experience of Chirag at PlaySimple Games Pvt. Ltd. in Bengaluru, focusing on projects related to 'Daily Themed Crossword' and 'Crossword Search'. It includes sections on company introduction, project undertaken, learning outcomes, and future perspectives, highlighting the company's growth in the gaming industry and its focus on word games. The report is submitted as part of the requirements for a B.Tech degree in Computer Science and Engineering from Lovely Professional University.

Uploaded by

originaltracks69
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
26 views42 pages

Report Chirag ETP

The OJT report details the training experience of Chirag at PlaySimple Games Pvt. Ltd. in Bengaluru, focusing on projects related to 'Daily Themed Crossword' and 'Crossword Search'. It includes sections on company introduction, project undertaken, learning outcomes, and future perspectives, highlighting the company's growth in the gaming industry and its focus on word games. The report is submitted as part of the requirements for a B.Tech degree in Computer Science and Engineering from Lovely Professional University.

Uploaded by

originaltracks69
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 42

OJT REPORT

Play Simple Games Pvt. Ltd.

Bengaluru

A training report

Submitted in partial fulfillment of the requirements for the award of degree of

B.Tech. in Computer Science and Engineering

Submitted to

LOVELY PROFESSIONAL UNIVERSITY PHAGWARA, PUNJAB

From 15th Feb 2024 to Present

SUBMITTED BY: SUBMITTED TO:

Name of student: Chirag Name of supervisor:

Registration Number: 12115616 Designation:

Student’s Signature
TABLE OF CONTENTS

S. No. Title Page

1 Declaration by student
3

2 Declaration by supervisor
4

3 Acknowledgement
5

5 List of Abbreviations
6

6 List of figures and tables


7

7 Chapter-1 INTRODUCTION OF THE COMPANY


8

8 Chapter-2 INTRODUCTION OF PROJECT


UNDERTAKEN 20

9 Chapter-3 LEARNING OUTCOME


36

10 Chapter-4 PERKS OF WORKING AT A SMALL ORG.


39

11 Final Chapter: CONCLUSION AND FUTURE


PERSPECTIVE 41

12 References 42

2
Student Declaration

To whom so ever it may concern

I, Chirag, 12115616, hereby declare that the work done by me on “Daily Theme
Crossword” & “Crossword Search” from Feb, 2024 to Present, under the supervision of
Abhishek Panwar, Senior Software Engineer 2, PlaySimple Games Pvt. Ltd. ,
Bengaluru, and xxxx xxxx, Assistant Professor, Lovely professional University, Phagwara,
Punjab, is a record of original work for the partial fulfilment of the requirements for the
award of the degree, B.Tech. in Computer Science and Engineering.

Name of the Student (Registration Number)


Chirag (12115616)

Signature of the student :

Dated: 28th Nov 2024

3
Declaration by the supervisors

To whom so ever it may concern


This is to certify that Chirag, 12115616 from Lovely Professional University,
Phagwara, Punjab, has worked as a trainee in PlaySimple Games Pvt. Ltd, Bengaluru
on “Daily Themed Crossword” & “Crossword Search” under my supervision from
15th Feb 2024 and will continue till 16th May 2024. It is further stated that the work carried
out by the student is a record of original work to the best of my knowledge for the partial
fulfilment of the requirements for the award of the degree, B.Tech. in Computer Science

Name of External Supervisor: Name of Internal Supervisor:


Abhishek Panwar xxxxx xxxxxx

Designation of the External Supervisor: Designation of the Internal Supervisor:


Senior Software Engineer 2, PlaySimple xxxxx xxxxx
Games Pvt. Ltd

Signature of the external Supervisor: Signature of the Internal Supervisor:

Dated: 28-Nov-2021 Dated:

4
ACKNOWLEDGEMENT

I am really grateful to Training and Placement Cell for providing such an opportunity to be a
part of a great organization like PlaySimple Games. I would also like to thank each and
everyone in the placement cell who had worked hard around this to make it possible. I would
also like to thank the recruitment team at PlaySimple for conducting placement drive at our
university and giving me a chance to work at their organization. I would also like to point out
to the fact that despite these difficult times during a pandemic when people were losing jobs,
the university made sure that student’s placements are not affected by it. I am positive that
these endeavours by the university will continue in the future as well.

5
LIST OF ABBREVIATIONS

1. LLC: Limited Liability Corporation


2. CAGR: Compound Annual Growth Rate
3. APAC: Asia Pacific
4. CEO: Chief executive Officer
5. CTO: Chief Technology Officer
6. MBA: Masters in Business Administration
7. UI: User Interface
8. UX: User experience
9. LLP: Linear Level Progression
10. P0: Priority 0, highest priority issues
11. QA: Quality Assurance
12. OpenGL: Open Graphics Library
13. DTC: Daily Themed Crossword (Game)
14. DAU: Daily Active Users
15. LTV: Life Time Value
16. FTUE: First Time User Experience
17. ATT: App Tracking Transparency
18. IDFA: Identifier for Advertiser
19. SDK: Software Development Kit
20. GUI: Graphical User Interface
21. API: Application Programming Interface
22. CSP: Communicating Sequential processes

6
LIST OF FIGURES AND IMAGES

1. Fig 1.1: Game industry revenue country-wise in 2014


2. Fig 1.2: Mobile gaming revenue by region
3. Fig 1.3: Word trip statistics from Google play store
4. Fig 1.4: DTC Google play store statistics
5. Fig 1.5: Word Jam Google play statistics
6. Fig 1.6: Word Trek Google Play Store statistics
7. Fig 1.7: Global market forecast till 2022
8. Fig 1.8: Organization chart
9. Fig 1.9: Game screen of ‘DTC’
10. Fig 1.10: Game Calendar screen
11. Fig 1.11: Daily puzzle screen
12. Fig 1.12: Daily Mini Calendar
13. Fig 1.13: Leagues screen
14. Fig 1.14: Leagues screen with Tier
15. Fig 1.15: Trivia Game screen
16. Fig 1.16: Arena screen

7
CHAPTER 1: INTRODUCTION TO THE COMPANY

PlaySimple Games is analytics driven gaming company, with worldwide hits in their
portfolio. Hundreds of thousands of people play their games every day, and that number is
growing exponentially – they're solving for massive scale, cross platform intelligence &
highly adaptive systems. The company is mainly focused on word games and has already
launched a lot of them. The games also have a strong foothold in the word games genre. Few
of the games launched by the company are WordTrip, Daily Themed Crossword, WordJam
and many more.

The company focuses at hyper casual games made for elder age group of people, that too
outside India. The company envisions a goal to be the best in the word genre category and is
striving toward achieving this goal with a team of around 350.

Very recently, the company got certified as a ‘Great Place to Work’. Every year, more than
10,000 organizations from over 60 countries participate in Great Place to Work® Institute for
assessment, benchmarking and planning actions to strengthen their workplace culture. Great
Place to Work® Institute’s methodology is recognized as rigorous and objective and is
considered as the gold standard for defining great workplaces across business, academia and
government organizations.

1.1 ORIGIN OF THE COMPANY

Woodside Capital Partners International LLC, which is a is a global,


independent investment bank that delivers world-class strategic and financial advice to
emerging growth companies in the technology and life sciences sectors, accumulated data
regarding gaming industry sizes across the world and came up with some astonishing
results. The research suggested that the United States followed by Japan and China are the
largest gaming countries in the world. The fastest growing Asian markets are China at a
CAGR of 10.9% and South Korea at a CAGR 4.1% and European market for games is
almost $20 billion.

8
Figure 1.1 Game industry revenue country-wise in 2014

Figure 1.2 Mobile gaming revenue by region

9
Fig 1.1 suggests that in 2014 (the founding year of the company) United States was leading
the gaming industry with its contribution in terms of revenue.

Fig 1.2 chart also stresses this point only and it is very important for us to understand the
trend and data prevalent at around that time when the company originated. The data is more
specific to mobile gaming industry.

The Asia Pacific (APAC) region accounts for over 55% of the global mobile gaming revenue
and is only third in the highest amount spent per capita on mobile games. APAC has the
largest number of active online gamers and almost 5 times the number of mobile gamers as
North America.

Despite that fact that APAC region has bigger mobile gaming market, still the company chose
to target the United Stated could be because of the type of game that we present. Hyper
casual game genre like ours usually target an older segment of the society which is missing in
the APAC regions, because of youth centric regions like India.

Also, around that time mobile and online distribution disrupted the gaming industry. Mobile
games exploded by an annual rate of 37%. Social and digital gaming grew rapidly. Due to
growth in smartphone purchases and social media users, social/digital gaming alone is
expected to produce $13.8 billion in revenue by 2019. Women over 40 represent the fastest
growing segment, currently representing 54% of social gamers. Customers transitioning from
console to online and mobile, due to portability and free-to-play game availability.

The report also suggests that female and older generations are playing more games. Female
gamers represent 39% of revenue, 48% of players, and 50% of game buyers. Women over 18
is a bigger target market than boys under 18. Developers are starting to cater games to loyal,
evergreen, and growing gamers age 45+. [1]

10
This age group results in the report suggest that older generation would be a better source of
revenue for game developers and the founders must’ve realized this while they were at the
former company and choose to take the advantage of the gaming industry boom and setup
this company, thus originating the company.

The company is still growing as it is new, founded in Nov 2014. The company is based in
Bengaluru, Karnataka and was founded by:

Siddharth Jain

He is the co-founder and CEO of the company. Before


starting PlaySimple he worked as a Lead Product Manager
at Zynga, another huge gaming company. He has plethora of
experience in the product management area and he is
utilizing that to lead the team at PlaySimple Games.

Preeti Reddy

She is the co-founder of PlaySimple Game. An MBA


graduate from Carnegie Mellon University, Preeti has
worked in product management and management consulting
roles at Zynga and Bain & Company. After her stint at
Zynga, she co- founded PlaySimple Games Pvt Ltd. In 2014.

11
Siddhanth Jain

He is a computer science postgraduate from IIT Bombay,


has had an exciting journey in building games. After
working with Walmart Labs and Zynga, he co-founded
PlaySimple in 2014, to build exciting and educational
games. Even while he is busy designing the next game at
PlaySimple, he enjoys reading about the latest developments
in the industry.

Suraj Nalin

He is the co-founder and Chief Technology Officer of the


company. He is a graduate from IIT Bombay and has
worked as Principal Software Engineer at Zynga, before he
co- founded PlaySimple Games. He has around 14 years of
experience in the industry and continues to lead the
engineering team at PlaySimple.

1.2 CURRENT STATE OF THE COMPANY

The company currently has two games with more than 5 million installs, and couple of
games with more than 1 million installs. And these numbers are only from Google play
store only, would be higher when we consider Apple App store. I will explain briefly
about our company’s portfolio of games and will only include games that have been doing
really well for quite some time. Other than these also we have a few other games which
can be found on the play store, that are growing and being loved by players.

12
● Word Trip: Quoting from play store, “Classic word search and word connect game,
WordTrip - Word Connect & word search game is a first of its kind free word
connect puzzle game where you travel through countries as you clear the puzzles.
Swipe letters on the word compass to find different words. Solve the puzzles by
finding all words to make your way to each country. As you progress in the game,
puzzles get trickier.

WordTrip is a free word connect brain game that tests your vocabulary, spelling, word
finding and puzzle solving skills, just search and find words. Get a fun brain exercise
in your free time and improve your vocabulary.” [2]

Figure 1.3 Word trip statistics from Google play store

● Daily Themed Crossword: This game has been contributing a lot towards our
growth. Quoting from play store, “A fun crossword game with each day connected to
a different theme. Choose from a range of topics like Movies, Sports, Technology,
Games, History, Architecture and more!

Access to hundreds of puzzles, right on your Android device, so play or review your
crosswords when you want, wherever you want!” [3]

13
Figure 1.4 DTC Google play store statistics

● Word Jam: A trip like game with crossword answer grid. Makes it simpler and more
fun. Quoting google play store, “Word Jam - A word search & word guess brain
game. WordJam is a fun and relaxing word game in a crossword-style format made
for the smartest brains! Swipe the letters to find and guess the hidden words in a
crossword-style grid.
Solve the anagram puzzles as you travel around the world in the Crossword Food
Truck unlocking new levels. Guess and search letters on the word plate to find
different word recipes. Solve the anagram puzzles by searching for all the words to
make your way to a new country. As you progress in the game, anagram puzzles get
trickier and tastier!”[4]

Figure 1.5 Word Jam Google play statistics

14
● Word Trek: This was one of the first games that did really well and hence is now an
old game. Quoting google play, “Word Trek - Word Brain streak: Hand-made puzzles,
designed to tickle your brain cells!

Are you a fan of word games and puzzle challenges? Try the most addictive free brain
game on the Play Store and get hooked as you form word streaks! Get into the flow,
find and swipe your way through hundreds of word puzzles, spread across different
difficulty levels. Go on a quest to become a Word Genius and Master Puzzle Solver!
Meant for casual brain exercise, join millions of puzzle solvers and trek your way to
word glory!” [5]

Figure 1.6 Word Trek Google Play Store statistics

● Crossword Explorer : game with crossword answer grid. Makes it simpler and
more fun. Quoting google play store, “Increase your vocabulary and general
knowledge for free through this fun and refreshing crossword app. . Crossword Explorer is
a fun and relaxing word game in a crossword-style format made for the smartest
brains! Guess and search letters on the grid to find different word recipes. Solve the
daily puzzles by searching for all the words to make your way to a new country. As
you progress in the game, crossword puzzles get trickier and tastier!”[6]

15
1.3 FUTURE

According to the research by market research firm Newzoo in 2019, mobile gaming
industry is expected to take up 41% of the total gaming industry revenue which will
approximate to 95.4 billion dollars. In the foreseeable future, there is no looking back for
mobile gaming industry as it continues its boom.

16
Figure 1.7 Global market forecast till 2022 [6]

1.4 TEAMS WITHIN THE COMPANY

There are multiple game teams, and within each team we have:

● Dev team: Team of game developers who look into development of games and
features within. The developers mostly work with game engines to develop games and
also look after the stability issues of the builds in production. There are mainly two
game engines we use in the company and those are Cocos 2d-js, this is a derivative of
cocos 2d-x which was originally written in C++, but with Cocos 2D-js we have
JavaScript as the medium of coding. The second game engine we use is Unity, we
have relatively lesser games in this game engine as compared to cocos. The
developers mainly implement the features outlined by designers. Flutters is also
getting used intensively by the developers to create upcoming games .

● QA team: The Quality Assurance team is the one who tests the features developed by
dev. They write test cases for the feature developed and then perform Alpha testing,
for specific feature, smoke for the complete build with the older features and then
sanity in production environment. While testing they file the bugs, if found and verify
them once they are fixed. They also take care of the support tickets that we received
from the users on a daily basis.
● Art Team and UX Team: This team has the responsibility of creating all the art items
and assets for the game. They design the UI mocks and then also verify them while
doing a build review once the development is complete and then there are multiple
cycles of these reviews till we get the final desired UI. This team also includes tech art
and animations, they provide animation mock and timings for the animation and then
once implemented they also verify the same. There is another part called UX team
which take care of things from user perspective and looks over the design developed
by UI to ensure proper user experience.

● Design Team: They develop the feature specifications and basically design the
features and pitch ideas that should be implemented. They are important decision
makers while trying out any feature or removing any.

● Product Team: This team is responsible for looking into the business aspects of the
product. They analyze game and revenue metrics on a daily basis and keep track of
progress we’ve made in terms of our targets. They also take build read when newly
rolled out to check of retention and ad impressions and report in case of any issues.
They work closely with design team a lot of time while creating feature specifications
to provide with data as to why the feature is being picked up and implemented.

● Production: They are like a bridge between all the teams and are responsible for task
allocation, team management and communication between teams also sometimes
within teams. During work from home times they were also responsible to conduct
regular team health surveys to check how everyone is doing.

Other than the game teams, we have other teams as well. One is growth team that helps scale
the business, it also includes advertising our product and thus a vital part of this team are
designers who develop static and video advertisements to target audiences and attract them
towards the game.

There is also one dashboard team, or we can call them dev ops team that takes care of
automating the day to day data processing tasks that would otherwise be redundant and time
consuming. They provide us with a tool to take of care of these ad-hoc tasks easily.

18
1.5 FACILITIES AVAILABLE

Just like any other software-based company we had the necessities such as laptops, testing
devices, monitors and Wi-Fi.

Other than this we were provided afternoon lunch in the company and evening snacks. We
also had a few games like carrom board, table tennis, few card and board games, and also a
play station.

1.6 ORGANIZATION STRUCTURE

Here I’ve outlined the organization hierarchy of the roles and teams described in section 1.3.
The arrows indicate how the teams interact with each other.

Figure 1.8 Organization chart

19
CHAPTER 2: INTRODUCTION OF THE PROJECT UNDERTAKEN

During my internship, I worked on the "Daily Themed Crossword" and "Crossword


Search" games, which involved developing features like leaderboards, daily quests,
subscriptions, and rewards. The games were built using the Cocos2d engine for Android and
iOS, and I gained hands-on experience with both XCode and Android Studio. In my first
week, we were tasked with creating Solitaire from scratch in Flutter within just 3 days.
Despite having no prior experience with Flutter, my team successfully completed the project
on time.

In the first week we were given a task to make a famous card game called solitaire , we were
given 3 days to learn flutter, which none of us interns knew at that time from and build the
game from scratch. And meanwhile, we also had to attend the induction lectures. It was a
challenging task but we somehow managed to complete it on time. Post which we were
assigned to our respective teams as mentioned above.

I am in the developer team and have been pushing code to production, since after 3 months
into my internship, I was also very anxious the first time my code was in production. The
entire process of development can be quite intimidating at first, but it gets better with time
and experience is what I’ve learnt. We work on this project in a team of 4 game developers.
All three of my seniors are immensely talented and have helped me a lot in ramping up on the
codebase.

2.1 OBJECTIVE OF THE WORK UNDERTAKEN

The objective of the work I do in the company is to add features to an existing game called
‘DTC’ and then rollout the build maintaining the stability. The game target the elder audience
and provides them a casual word gaming experience. We can say that the primary objective of
the game was to provide entertainment to the user, just as all games do. The features to be
added are designed by the Design team and Product team. It is the role of us

20
developers to implement it in code and then present the build for reviews, testing and then
release.

As mentioned earlier, the work also included maintaining the stability of the newly rolled out
build, if the build is not stable with the new feature then it might have to be halted. To take
care of this we had to look at the js errors and crash free rate of our games daily.

2.2 ABOUT THE GAME

Crossword Search game is an anagram-based puzzle where you are provided with clues and
hints, and you must find the answers by swiping through the grid. It features a Daily
Challenge system, offering three puzzles each day with words to complete as part of a story.
This system helps you maintain a streak in the game.
The theme of the game is like an adventurer which can solve two types of puzzle : LLP &
Daily Puzzle . Users can increase their Streak Daily by Playing at least one daily puzzle.
Fig 1.9
(show the home screen of the game)

Fig 1.10
(Shows Game Screen of the LLP Game Screen)
We have Daily Puzzle Screen as well where the user needs to find the remaining words from the
short story on the grid which helps to attain the streak.

Fig. 1.11
(Daily Challenge Screen)

23
Providing Game Player for store is necessary for increasing in-App purchases , thus
helping users to flexibly use more hints.
2.3 OBJECTVE

The objective of working on this project was very clear from the beginning, and that is to ship
out features quickly to keep scaling up and coping up with other competition in the market. I
worked in team of four developers and we worked on any feature together splitting it among
us.

The initial objective was to get familiar with the cocos-2d js game engine, as it is not
something, everyone is used to of working on. Other than this there was a task to understand
the existing game code base and the basic infrastructure. For that it was also required to learn
the basics of Android Development and iOS development along with Java and Objective C.

The features shipped our must be free of any P0 bugs, and it was also important to write code
that is scalable and easily understandable by fellow developers. Other than these basic
objective I was also given the quarterly targets which include ramping up of the game code
base, creating a small feature independently while interacting with other teams for getting
tasks like reviews done.

Another objective was to get knowledge of different teams, what their functioning is, how
they operate, and how they interact with each other. This was another important things to do,
as this would ensure that no time is wasted when we started working on time critical features.

2.4 MY CONTRIBUTION

1 .Feature Porting: I worked extensively on porting feature across games for catchup
sprints. A catchup sprint is when we port features from one game to another because of
the similarity within the games. I have done this for the sister game of ‘DTC’ named as
‘Word Trip’. This feature porting was also done when we had to release the latest version
of the game for Amazon Fire devices with the feature that were left behind when we were
releasing Android and iOS builds. I was asked to work on this because this gave an
overall understanding of the code base because porting included a lot of features

25
throughout the game.

2. Crash fixes and js error fixes: We get the crashes on firebase and google play console
and when the frequency of any such crash is alarming we’ve to investigate fixing it.
We actively looks for any new crash or js error or server related error or sdk related error
which comes in recent build and try to fix it as soon as Possible
Few examples ;
1. Null Pointer exception - One line of code was causing a Null Pointer exception in Java
, which we figured out after lots of effort and fix it.
2. Open GL error : If a user try to activate the particle system without being in that
Activity then we get this crash and this may lead to Out of memory exception, black
screen etc. So deep dive into it and solve it after some iteration.
3.Undefined Url getting hit on server : Recently we were facing some issue in which we
were getting some undefined chars in our Url which request the server due to which there
was some inconsistency in the data in client side.

3. Leagues: This is the new feature which runs for a few days as events and in which user
compete with each other. We have to handle how the user will placed in each
LeaderBoard and how their score will be sync across multiple devices in real time.
For this we use a scylla DB in which we store users data and as we request the server
from client side to check and return the data of the other user who is playing the events
and based on their rank we reward them. Also if user win the tournament then they will be
promoted to higher league else they will be demoted to lower league

26
Figure 1.13 Leagues screen Figure 1.14 Leagues screen with Tier

27
4.Trivia Event: This was a part of the miniGames features that we have in our game , so
in this feature we have added one more event i.e Trivia events in which user have to guess
right word based on some options.

Figure 1.15 Trivia Game screen Figure 1.16 Arena screen

28
1. Automated Content generation process: We have Trivia events in our game in
which user has to guess the correct answer by solving words which have multiple
answer , so We have to create content for this events for whcih we required script for
generating content.

2. Misc Items: This are the items that I used to pick up on a regular basis like fixing some bugs,
P0 crashesh, content generation, content push etc.

29
a. Daily Updates for stability metrics: We had to monitor crash free rate for 2
games ‘DTC’ and ‘Xplorer’, we also had to update the crash free rate and js
errors / DAU in the daily metric sheet which is discussed every day during the
team scrum at 10 in the morning. It sounds easy but this is one of the most
tedious tasks I did because I didn’t have clear idea about what crashed are
critical and what are not and how to analyze them or check the stack trace for
the root cause of the issue, most of the crashed used to be really vague and
confusing and didn’t clearly state what he issue was. This was also because of
multiple ads sdk and cocos code which ran behind the scenes and performed a
lot of native calls that I was unaware about. Thus, they were pretty difficult to
debug and fix.

The js error part was relatively easier as those were simpler to understand and
most of the critical ones clearly states what the issue was and was simpler to
debug and fix. I thus fixed a plenty of them whenever I came across one.

b. Weekly event creation for users: As I mentioned earlier we have events in


our games and thus we had to create them on weekly purpose, this task could
have been simpler by simply creating all the events at once, but as we used
certain bots in the leaderboard which would expire after a certain period of
time, so they had to create on a daily basis and bots had to be pushed as well.
This was a simple but monotonous task which I continue doing, we’re looking
forward to make it simpler in the coming future. As currently there can be
issues when one forgets to create events.

30
2.5 SCOPE OF THE WORK DONE

DTC is a game with more than 1.2 million downloads on Google Play Store. The work that
I have done and the features that I’ve contributed towards have been used by a daily active
user base of around four to five lakhs.
My work has also helped simplify some of the monotonous manual process. As mentioned
earlier that I created scripts for content generation that is otherwise a manual process. On a
personal level the work that I’ve done has provided me with experience and exposure to a
new technology which will be very helpful for me in the coming time, when I continue to
work for the company.

I am also starting to work on Flutter, which is the modern framework on the rise for cross
platform development with a single code base. Knowledge of this framework would be
beneficial for me in the long run as well.

This is a legacy project and the above information would be just sufficient to explain the
scope the project in its current state.

31
2.6 TECH STACK

● Cocos2D-js: Cocos2d-x is a mature open-source cross-platform game development


framework that supports 2D and 3D game creation. The engine provides rich
functions such as graphics rendering, GUI, audio, network, physics, user input, etc.,
and is widely used in game development and interactive application construction. Its
core is written in C++ and supports development in C++, Lua or JavaScript.
Cocos2d-x deploys to iOS, Android, HTML5, Windows and Mac systems with
features focused on native mobile platforms. I worked on the engine with JavaScript
as the medium for development.

I will outline the few few things about cocos-2d js or game engines or a whole.
Cocoso used open GL as a medium of development. OpenGL is a cross-language,
cross- platform application programming interface for rendering 2D and 3D vector
graphics. The API is typically used to interact with a graphics processing unit, to
achieve hardware-accelerated rendering. [7]

Following are the few basic terms in game development.

● Director: You can think of the Director the same way you think about
a movie director. The Director controls every aspect of your game. What is
shown on the screen, what sounds are played, what happens with player
input, and much more.

● Scene: A Scene is a container that holds Sprites, Labels, Nodes and other
objects that your game needs. A Scene is responsible for running game logic
and rendering the content on a per-frame basis.

● Sprite: A Sprite is a 2D image that can be animated or transformed by


changing its properties. Most all games will have multiple Sprite objects
ranging from the hero, an enemy or a level boss.

● Scene Graph: The scene graph is a data structure that arranges a graphical
scene, into a tree structure. This tree structure is what is used to render
objects onscreen in a specific order.

32
● Renderer: In an oversimplified definition the renderer is responsible for
taking everything you want on the screen and getting it there, technically.
No need to delve into this further at this time.

● Events: What do you do when the player moves around? What about touch
events or keyboard input? These all trigger events that can be acted upon as
needed.

● Audio: Perhaps your game has background music and or sound effects.
There needs to be a way to hear them!

● UI Components: Things like Button, Label, ScrollView, etc. Items that


help you layout your game and related interfaces.

● Physics Engine: The physics engine is responsible for emulating the laws
of physics realistically within the application. In our game we generally
don’t use physics. We do use animations and effects, as expected out of 2
dimensional game.

We don’t generally use the raw functions provided by cocos because those when
directly used with a dynamically typed language like javascript can cause a lot of
errors and js errors when we built features, as things might be null or undefined at
some point and if it does involve the UI, the user might black screens when there is an
issue rendering the scene.

● XCode with Obj-C (Basic): We develop games for both the platforms and for iOS
we developed using XCode with Objective-C as the medium of development. Xcode
is Apple's integrated development environment for macOS, used to develop software
for macOS, iOS, iPadOS, watchOS, and tvOS. It was first released in 2003; the latest
stable release is version 12.2, released on November 12, 2020, and is available via the
Mac App Store free of charge for macOS Catalina users [8] . I did work a lot with
Xcode as an entity for making build while testing but if we talk about coding in
Obj-C, I didn’t do any considerable amount of work in the language itself, just some
exploration while any issues, small fixes and once I worked on it while making native
popup for one of the sprints.

33
● Android Studio with Java: For Android devices as well as Amazon devices we use
Android Studio with Java as the medium for development for native features that
can’t be implemented using Cocos. Android Studio is the official integrated
development environment for Google's Android operating system, built on JetBrains'
IntelliJ IDEA software and designed specifically for Android development. [9]

Cocos as an engine used GL surface view to render data, I don’t have much in depth
knowledge about this because it is not something, we work on ourselves and is
already implemented by cocos. We use native android features for notification, Ads,
Payments and other utility functionalities for there is no cocos API present in the
engine.

● Git & Source Tree (GUI): Like most companies we use Git as version management
tool, with GitLab as the remote repository source. There was a small introductory
session during the onboarding process of the company where we were given a gist of
how git is used. Post that we mostly used source tree for git related tasks. Sourcetree
simplifies how you interact with your Git repositories so you can focus on coding. It
helps visualize and manage our repositories through simple Git GUI. After I was
comfortable with git I went on my own to learn the command line way to use git
which comes in handy for quick changes that we want to get done. Regular command
that we use in git are push, pull, commit, stash, checkout, restore / reset and clean.

● Flutter: We also use flutter at some places in our project, mainly because of the ease
at which we can develop cross platform applications in it. Flutter is an open-source UI
software development kit created by Google. It is used to develop applications for
Android, iOS, Linux, Mac, Windows, Google Fuchsia, and the web from a single
codebase. The first version of Flutter was known as codename "Sky" and ran on the
Android operating system.[10] Flutter uses the programming language dart which is one
of the most simple and beautiful language I’ve ever learnt. It is because the learning
curve of flutter is very easy, because of the reason that it used similar syntax of
something which has Java and JavaScript combined. It tends to use the best of the
both worlds is what I believe.

34
I didn’t get to work a lot in flutter except while understanding few flows in the game,
I also encountered flutter in the very first week when we had to make a game as a
mini project, which was a card name called black jack. At that time flutter didn’t
impress me much because we learned flutter and developed the game in just 3 days so
it was really quick. But later when I thought of looking into it again as a side project, I
loved it. I tried making a personal project using flutter front end and firebase as a
backend. Other than that, I haven’t worked in flutter on ‘Word Trip’.

● Golang: We use Golang as the server-side language because it is relatively faster than
other modern languages and is designed to be used as a server-side language. Go is a
statically typed, compiled programming language designed at Google by Robert
Griesemer, Rob Pike, and Ken Thompson. Go is syntactically similar to C, but with
memory safety, garbage collection, structural typing, and CSP-style concurrency. [11]
Go uses go routines for concurrency which is the most sought-after feature of the
language. This is also one part which I didn’t work in but have the understanding the
basic code base.

● BugsNag : An interactive platform to track and trace the error and crashes. Have
found some of the issue which were happing quite frequently in our game and also I
have pushed some of the fix in production also. It becomes super easy to track some
of the crashes using BugsNag.

● Texture Packer : It is an Sprite comprosser tool that we use to compress all the sprite
in our game. It helps to save space and hence reducing the overall size of the App.

● New Relic : New Relic's technology, delivered in a software as a service (SaaS)


model, was announced in 2013. It monitors Web and mobile applications in real-time
with support for custom-built plugins to collect arbitrary data.

● Data Dog : Datadog is a monitoring service for cloud-scale applications, providing


monitoring of servers, databases, tools, and services, through a SaaS-based data
analytics platform.

35
CHAPTER 3: LEARNING OUTCOMES

There were a lot of learning opportunities that came my way, and every day I had something
new to learn. Although, the work from situation definitely hampered productivity and
affected what could have been a better and more detailed learning process. I will outline in
the next few point what have been the learning outcomes from my internship up until now.

1. What we see in any application or game is just at the surface, there is lot of code
and different flows that make this possible. I understood what goes behind in
making these flows, with all the thoughts are taken into account before reaching out to
a flow for users. The game designers are the ones who look into this and outline a
feature specification, I learned how they come up with a feature and how they present
it so it could be developed. There are multiple rounds of brainstorming first for
accumulation of ideas every six months and then we filter out the ideas which we
think are the best for the game and would help us scale from where we are right now.
Then based on this we filter out the ones that are relevant. Then we write an initial
spec post that there are several rounds of reviews form different teams and post that
we have a spec review discussion in which everyone can put forward their concerns.
After the spec is finalized the development can be started and parallelly test cases can
be prepared by QAs. This is the brief journey of a feature that gets developed in a
game.

2. The statistical analysis of any product is essentially important and I learned this at
this company, as mentioned in the initial paragraph of this report, the company is
‘analytics-driven’, we use of lot of data to observe how the users are behaving and
then use that data to calculate and come up with a feature that the users would
appreciate and positively respond to.

There is very simple logic behind this but we sometimes forget to take into
consideration when we are engrossed into the product. How the user is responding to
the existing features also gives us lot of meaningful data to decide what feature will be
beneficial for us in the future and in which direction our product should move. If we

36
ignore this then it might happen that for us, we are making awesome products and
features but on a larger scale the users are not responding positively towards it.

3. There is plenty to learn. The industry offers a lot to learn, we just need to be
enthusiastic and have the desire to learn. The thing is that there is a lot to explore.
There are hundreds of different languages and frameworks that are running all over
the world, we don’t know where we might end up and what technology we’ll start
working with. We can’t stick to one particular technology for a long time, because this
industry is ever changing and what’s there today might not exist tomorrow. For
example, the game engine we use, Cocos-2D, I had never even heard the name before
I joined, but now my daily work revolves around that only. I am now better at learning
things and can learn a new technology pretty easily.

4. I learned to adapt and learn things quickly. With the extensive and diverse
codebase that we have, there are at least 6-7 and more different technology and
languages being used. What I learnt is that we need core problem solving skills as that
takes time, learning a new technology or language after that won’t be a difficult thing.
Earlier, I was fascinated by the number of languages a person knows and myself
wanted to a plenty of them to be versatile in all the fields, but that is not correct. There
is one thing that is needed in real world software engineering and that is problem
solving, we just need to know the correct way to approach a problem. Language and
technology can be relatively easy to learn if you already know one or two of them.

5. Learned to handle small features independently. One feature that I did that was
completely independent was Mini Events which I’ve mentioned in above section.
During working on sprint, we need to interact with different teams and get the work
done, whether it is build reviews, feedbacks or bug discussions. It is very important to
learn how to interact across and withing teams when working on project.

37
Soft skills really come in handy while working as a solo developer on a feature as you
have to handle all the things by yourself, this was also one of my quarterly targets.
Other than this one sprint when I worked on catchup sprints again mentioned in
section 2.4, then also I was the solo developer and it was essential to get things
streamlined, by interacting with teams.

6. I learned how to write easily readable and maintainable code. Most of us are used
of writing code by paying very little attention to will it be readable to others or
maintainable in future. But as we mostly write very small programs while practicing
coding, that would make sense. But it doesn’t make sense when we work on a larger
project collaborating with multiple developers.

In team projects it becomes really important to write code that is easily readable and
understandable by other fellow developers. For that we need to pay attention to code
formatting for better readability, giving proper names to all the variables for easier
understanding, and adding comments in place wherever they’re required. Whenever
we write code there is round of code review in which our peers review the code and
point out any mistake on the grounds of readability, logic and formatting. If there are
any changes that have to be done, we do those changes and then only the code is ready
to be send into production.

38
CHAPTER 4: PERKS OF WORKING AT A SMALL, GROWING
ORGANIZATION

In this section I have outlined what are the perks of working of working at a relatively
smaller organization with limited numbers of employees, based on the experience I’ve had till
now at my organization.

1. Access: With lesser number of members on teams it is usually common that everyone
has access to most of the things. Even as an intern I was trusted and has complete
access the codebases and various other dashboards. This gave me more room for
learning a variety of things, and have a broader understanding about the processes that
are in place. I was also given the opportunity to do releases into production on both
Google Play Store for Android and App store for iOS.

2. Sense of belonging: Mostly we get acknowledged for our work and everyone’s effort
is recognized by the team members giving you sense of achievement and satisfaction,
which would be missing in larger organizations and efforts would get faded away
without other acknowledging it. This gives us the push to stive forward and achieve
greater goals.

3. Ownership: Each sprint has an owner from developer side who is in charge of the
build till it is 100 percent rolled out in production. This helps us learn to handle
smaller features and prepares us for future in case we get to lead any project.

4. Responsibility: With all the access rights and ownership of features we had to be
responsible of not breaking anything in production. This included monitoring the
build stability which include the crash free rate and js errors of each release, we had to
be responsible for all these when new release was rolled out and also keep checking
these regularly in case no new feature is sent out, to be aware if some third party SDK
is causing any issue.

39
5. Transparency: The business process is transparent and most of the times all the
employees are aware of the decisions takes and the reason behind that thought. It
makes the employees believe in the business and somewhat makes them more
focusses, is what I believe.

6. Plenty to learn: With lesser people on teams, each one has to handle a lot of things on
their own, it is stressful at times, but can’t deny the fact that there is plenty to learn
through this. Different technology has to be handled by each person by themselves
and exposing ourselves to a new environment definitely ends up with learning
something.

7. Flexible working hours: Some people are in favor some are against, but many time
flexible working hours frees us from the rigid schedule that one has to follow
otherwise. With flexible working hours the emphasis in not on how many hours is
someone putting into word instead the focus is on if they are able to get the work done
within the deadline. And sometimes it really proves very useful when one has some
other personal time bound job to complete they can shift their working hours and
easily manage things.

40
FINAL CHAPTER: CONCLUSION AND FUTURE PERSPECTIVE

I have been working for nine months now on this internship and it has been a great learning
experience, and I am sure there will be a lot to learn in the future as well. The tasks that were
assigned to me were challenging and got to learn a lot in the process. The most important
thing that I learnt is to write scalable code. In the initial phases I looked forward to code
reviews as they taught me a lot.

This year hasn’t been very pleasant for all of us, with everyone locked up in their homes with
a pandemic going on outside. It was tough for everyone, people lost their jobs and struggled
to find new one, considering all this I am very grateful and consider myself lucky that I was
given this opportunity to work on an internship in this organization.

The team mates in the company are also very supportive and encourage me to do better. They
even helped in out on several occasions when I was stuck at something. They helped me in
learning the roped and getting ramped up on the code base and the complete game engine
itself. It was a very pleasant experience.

I never planned to take on game development as a career option. I play quite a few games
mostly on mobile, and I did spend a lot of my time doing so, never imagined being on the
other side developing them. Although it always fascinated, this training provided me the
opportunity to get the gist of how game development or basically how a product development
process is handled, marketed, maintained and scaled for millions of users.

I still have around five more months left in my internship, and there is a long way to go
forward post that as well. I am enjoying this learning process as a software engineer and I
will direct my endeavors towards becoming a great one.

41
REFERENCES

1. http://www.woodsidecap.com/wp-content/uploads/2015/12/WCP-Video-Game-
Report-20151104.pdf
2. https://play.google.com/store/apps/details?id=in.playsimple.wordtrip&hl=en_IN&gl=
US
3. https://play.google.com/store/apps/details?id=in.crossy.daily_crossword&hl=en_IN&
gl=US
4. https://play.google.com/store/apps/details?id=in.playsimple.tripcross&hl=en_IN&gl=
US
5. https://play.google.com/store/apps/details?id=in.playsimple.word_up&hl=en_IN&gl=
US
6. https://resources.newzoo.com/hubfs/Reports/Newzoo_2019_Global_Games_Market_
Report_Press_Copy_v2.pdf
7. https://docs.cocos.com/cocos2d-x/manual/en/basic_concepts/
8. https://en.wikipedia.org/wiki/Xcode
9. https://en.wikipedia.org/wiki/Android_Studio
10. https://en.wikipedia.org/wiki/Flutter_(software)
11. https://en.wikipedia.org/wiki/Go_(programming_language)

42

You might also like