You are on page 1of 13

Summer Internship Report

From July 23rd,2011 to Aug 23rd,2011


(Full Time Game Programmer Position)
At

JUDOBABY INC
955 Charter Street, Suit A, Redwood City, CA-94063
650 – 368 - 3499

Student Information:
Lin Li
Department of Computer Science and Engineering
State University of New York at Buffalo
716 - 601 - 5881
Table of Content

1. Internship Aspects
1.1 Introduction to Judobaby Inc
1.2 The Internship
1.3 Timeline

2. Technical Aspects
2.1 Introduction to Jerry Rice & Nitus’ Dog Football
2.2 Introduction to Gamebryo Game Development Engine
2.3 The Installer
2.4 The port of Dog Football from Wii to PC

3. Discussion and Conclusion

4. Acknowledgement

5. Affix Page I
1. Internship Aspects
1.1 Introduction to Judobaby Inc

JUDOBABY INC. (www.JUDOBABY.com) is the creative force and


developer of AAA quality interactive family entertainment that is easy to learn,
fun to play, providing excitement for all ages. We here at JUDOBABY INC. focus
on quality content delivered across a wide variety of popular and emerging
platforms, including game consoles, social networks and mobile devices for
serious and casual gamers alike. The JUDOBABY INC. team knows what captures
the imagination and delivers products with engaging personalities and addicting
experiences.

© 2008 JUDOBABY INC., a California C-Corp is the creator of the Pet Sports
League which brings the love of pets, the excitement of sports, and family celebrities
together to provide unique entertainment experiences.
For more information about Judobaby and its team, please visit here.

1.2 The Internship

When searching for the internship for this summer, I paid majority of my attention
to the positions of software engineer and game programmer, and I also hold three
criteria:
1. Real world experience: I looked for an internship position which could
provide me real world experience of working with projects having predictable
business value and mature development environment;
2. Potential future working area: The place of this summer internship position
should be near the area of my potential job after graduation;
3. Technology scale: The requirement of the internship projects should
exceed my skill level at a proper scale, which could help me to enrich my skill list.
After more than two month application, and interviewing with more than 10
potential companies, I chose to come to Judobaby Inc, which is the best fit for my
expectation and drew my interest as a company with great potential at game industry.
My job during the internship mainly focused on three parts/projects:
1. Working on the port of the game “Jerry Rice & Nitus’ Dog Football”(Dog
Football) from Wii to PC;
2. Working on the project of PC version Dog Football installer ;
3. Working on the set up of a new game project on different platform*.
*: Due to the Non Disclosure Agreement (NDA), the detailed information about this project is temporary
listed as non-revealed.

1.3 Timeline of my internship program

For the first week, I spent lots time on getting to know the overall structure of
Dog Football;
For the next four weeks, I mainly focused with the PC Dog Football project. In
parallel, I also start the project of Installer of PC Dog Football.
For the next three week, I took part into the project of the second game.
2. Technology Aspect
2.1 Introduction to Jerry Rice & Nitus’ Dog Football

“Jerry Rice and Nitus Dog Football" is a family-friendly interactive video game,
endorsed by NFL Hall of Fame receiver Jerry Rice and is guaranteed to provide dozens of
hours of fun for sports fans and canine lovers alike. "Jerry Rice and Nitus’ Dog Football,"
for the Nintendo Wii system, has 12 interactive football fields and features 14 QBs
(including Rice) and 20 breeds of dogs all vying to win the coveted Golden Hydrant
Trophy. The game was initially developed for Wii console, and then ported to PC
(Windows OS). The game idea, and the entire development process was from Judobaby
Inc, which leaded by several game industry veterans from Sony, Crystal Dynamics, Sega
and Capcom.

2.2 Introduction to Gamebryo Game Development Engine

Gamebryo Game Engine, which is adapted in the development of Dog Football, is


an industry leading cross platform game development engine comes from Emergent
Game Technologies Inc, written in C++ and support 3D computer graphics. Gamebryo
supports the following platform: Windows (DirectX9, 10, 11), Nintendo GameCube,
Wii/Wii Ware, PS2, PS3/PSN, XBOX, and XBOX360. Gamebryo gave birth to many great
video games, such as Fallout 3, Fallout: New Vega, Warhammer Online: Age of
Reckoning, The Elder Scrolls III & IV, etc.

2.3 The Installer

As a part of the PC version of Dog Football, the installer is something didn’t show
up for the Wii version game. I did research together with leading game engineer, Mr.
Diego, and decided to use the open source and customized installer development
software, Nullsoft Scriptable Install System (NSIS) from NullSoft Inc. Due to the shortage
of intelligence source, a totally customized game installer (like the one of World of
Warcraft) could be hard to obtain for the certain time schedule, but NSIS could provide
an acceptable succedaneum installer for the game.

Since during the days of creation of the installer, the PC version game is under
fast speed development, there could be several interior version of the game coming out
for one day. So, the reuse of the previous installer is a big concern. Because the major
functions of the installer can be realized by using script (that why NSIS is called
“Scriptable”), a script auto updater written in Python could help a lot. Though Python is
not a familiar language to Mr. Diego or me, but its strong ability in script editing
convinced us to use it, which has been proved to be an efficient way. The script updater
will update all the show up of version number, and insert necessary script at proper
location to realize additional functions like demo version of game detection, auto demo
uninstall, removing empty root folder upon uninstall the game, installer art designing
update etc. The following is some segments of the Python file:

//Append a line after certain location if there is not identical line.


def AppendAfterFileIfNotFound(find_text, appendfile, prev_line, current_line):
global justexported
global iCodeInsertions
lineno = string.find(prev_line, find_text)
if lineno == 0:
append_file = open(appendfile,'r')
for appendtext in append_file:
if lineno == 0:
appendlineno = string.find(current_line, appendtext)
if appendlineno >= 0:
break
else:
iCodeInsertions = iCodeInsertions + 1
new_file.write(appendtext)
lineno = lineno + 1
justexported = 0
//Append a script segment after certain location if there is no identical ones.
def AppendAfterIfNotFound(find_text, appendtext, prev_line, current_line):
global justexported
global iCodeInsertions
lineno = string.find(prev_line, find_text)
if lineno == 0:
appendlineno = string.find(appendtext, current_line)
if appendlineno < 0:
iCodeInsertions = iCodeInsertions + 1
new_file.write(appendtext)
justexported = 0

//FART: Find And Replace Text


def Fart(find_text, replace_text, current_line):
global iFartReplacments
charno = current_line.find(find_text)
if charno < 0 :
return 0;
new_line = current_line.replace(find_text,replace_text)
new_file.write(new_line)
iFartReplacments += 1
return 1

Additionally, the Microsoft DirectX 9 is required for the game, and since
Microsoft allowed user to embed DirectX 9 installation to the installer of software/game,
the DirectX 9 installation is embedded in our installer, which runs under silent mode.
The related scripts are as follows:

Section "DirectX Install" SEC_DIRECTX


SectionIn RO
DetailPrint "Running DirectX Setup...This may take some time"
ExecWait '"$INSTDIR\DirectX\DXSETUP.exe" /silent' $DirectXSetupError
DetailPrint "Finished DirectX Setup"
DetailPrint "Installing VC++ 9 runtime"
ExecWait '"$INSTDIR\DirectX\vcredist2008_sp1_x86.exe" /q' $DirectXSetupError
Delete $INSTDIR\*.dll
RMDir /r $INSTDIR\DirectX
SectionEnd
Since the game is a commercial product, anti-piracy factor was also considered.
With the online source from NSIS Wiki website, the installer has the CD Key verification
part during the installation, the related scripts are as follows: (See Affix Page I for
details).

2.4 The port of Dog Football from Wii to PC

Without the support from cross platform game development engine’s support,
porting a Wii game to PC could be tough to make. Gamebryo did well in multi-platform
support, but there are still many efforts need to be paid before users can play Dog
Football fluently with their Windows XP/Vista/7. When my internship program starts,
the porting project (PC Dog Football) has been half way done. Some issues I took part
into are changing the relevant text introduction in the game, removing Wii icon &
adding PC related image (i.e. Wii A/B button VS PC Alt button) and adding resource
(icons, shortcuts etc.) etc. The most challenging issue I took is handling the window
renders when the game is switched between full-screen to windowed mode. The bug
reported by the test group was: when the game was switched from full screen to
windowed, everything is fine, except that there is no frame for the window. This issue is
related to some deep core code with Gamebryo Engine, and also with the design
method (the default mode is full screen). The original way to perform the switching was
simply resize the render, to make the window show in a proper width and length, but
the default window is a full screen one and has no frame, that’s why the problem occurs.
After update, the new method is terminating the game when user change setting in
game main page. This will not cause risk to kill the game process and losing data
because the user has to exit to game main menu in order to change window mode,
when the game data has been saved and game has been already terminated. Then, as
user command, recreate a render with proper size for the monitor, change the window
property (mainly the window style) to enable the frame and apply new render on the
updated window. In this way, the game process will not lose connection to its
application window (because we just update it, not destroy and recreate a new one).
During the research time, I also found this problem happens to many other cross
platform video games, such as Call of Duty: Modern Warfare (COD4). The experience of
understanding and solving this problem is valuable and practical.
3. Discussion and Conclusion
The internship program at Judobaby Inc is my first internship at computer
science engineering field, which brought me great motivation to study as much as
possible. Taking part into the development of a console/PC platform game is totally
different from any term project I ever made. The high requirements of code
optimization, running efficiency, structure reusability, architecture tightness and data
organization all left deep impression on my mind, even the variable naming rule also
worthy some study (Most variable start with easy understanding name abbreviation,
and starting with “Ni” for engine generated variable, containing “_m” for membership
variable, etc.). All those aspects are seldom requested in academic project. Though
there is no strict grammar rules to writing code like this, but the convenience and
efficiency brought by keeping good manner is sometime critical to real products.
And the requirement of programming ability is under a wide range, thus the fast
self learning ability is totally required in industry. Though the whole Gamebryo Engine
and Dog Football were written in C++, many other language is required to ensure a
fluently development process. Applying XML file for default setting is easy and
convenient; using Python to update script automatically is more efficiency to conduct
the whole process of installer creation; understanding strange organized script language
used by NSIS is necessary to get the installer done and updated with new functions.
Accordingly, a good manner to keep the learning result is a must. Within Judobaby,
there is a wiki website for all developers to keep records of each step to make the game,
such as data organization, how to load data into game, and the detailed process to make
a new installer (this part is set up and edited by me). In the project for a big team, a
how-to list like this can provide great help for long term development.
Additionally, besides the how-to website, a functional bug report/feedback
system is also a needful thing for a large team project. The system must has functions
like bug reporting, assigning, tracking, feedbacks, attachment uploading supports, there
are some mature commercial software to provide solutions, such as Redmine system,
OnTime v11 from Axosoft, LLC, but I think the commercial potential of this area is still
great and can be exploit.
Another aspect Judobaby Inc doing great is the quality control. As a game
developer and publisher, game quality is critical for company’s reputation and future.
Though Judobaby Inc is a start-up company with less than 3 years history, but they are
very experienced with quality control. There are always challenging but interesting
functions required for the game, and there are 3-5 regular game tester (company totally
hold about 30 employees) working full time. As programmer, I have to admit the testers’
sharp sense of bug sometimes bring great pressure to me. But this is why Dog Football is
attractive to NFL Hall of Frame Receiver Jerry Rice and many investors. And I think this
kind of team culture has close connection to its veteran team leaders.
At the age that small companies focusing on online social network game spring
out, Judobaby Inc just started its way on higher and more challenging starting point with
great courage. Though the game industry has pretty high standard than other kind of
computer science related companies in the field, interning at Judobaby gave me
practical experience and great practice for professional manner, which are invaluable
asserts for my future career. With the Dog Football came to retails shelves on Aug 16th,
2011, Judobaby Inc has achieved the first success on its road, with the experienced
development team, it will not be long time to see the next game come to sell.
4. Acknowledgement
The special thanks go to Mrs. Helen Hou, who recommended me to Judobaby
CEO/Produer, Mr. Dan Mueller and Producer Assistance, Miss Jasmine Shih, the ones
gave me the chance to intern at such an exciting team, and Mr. Brain, who gave me the
nice company tour and provide me great help during my days in Judobaby.
My grateful thanks also go to the programming group members, Mr. Diego Link,
Mr. Paul Kwwin, Mrs. Natalie, and CTO, Mr. Richard Anderson, all of whom gave me
patient introduction and tech help during my internship period, and also set great
professional model for me.
Also appreciate other team members of Judobaby, who gave me a direct
impression on the organization of a functional game studio, and spent a nice summer
time at Judobaby.
Last but not least I would like to thank my academic advisor Mrs. Jaynee Straw,
internship coordinator Professor Shambhu Upadhyaya, who helped me in the process of
applying the internship. And also thanks to my girlfriend Miss. Xuejia Wang, and all my
other friends who helped me a lot during the process of searching for internship
positions.
Affix Pages I: CD-Key Verification script for Installer:

## Validate serial numbers


Function SerialPageLeave
## Pop values from stack
Pop $R0
Pop $R1
Pop $R2
Pop $R3
Pop $R4
## A bit of validation
StrCmp $R0 ‘XXXX’ +3
MessageBox MB_OK|MB_ICONEXCLAMATION "Incorrect Validation Code Please Try
Again!"
Abort
StrCmp $R1 ‘XXXX’ +3
MessageBox MB_OK|MB_ICONEXCLAMATION "Incorrect Validation Code Please Try
Again!"
Abort
StrCmp $R2 ‘XXXX’ +3
MessageBox MB_OK|MB_ICONEXCLAMATION "Incorrect Validation Code Please Try
Again!"
Abort
StrCmp $R3 ‘XXXX’ +3
MessageBox MB_OK|MB_ICONEXCLAMATION "Incorrect Validation Code Please Try
Again!"
Abort
StrCmp $R4 ‘XXXX’ +3
MessageBox MB_OK|MB_ICONEXCLAMATION "Incorrect Validation Code Please Try
Again!"
Abort
………

FunctionEnd;

You might also like