Jan 10, 2013

DIT Student's Experience During NUS-MDA SHAPE Internship Programme in the US of A

Choo Jing Lin Christopher, one of our student in Diploma in Information Technology (Games Development Option) had received the great opportunity to join NUS-MDA SHAPE for his internship in USA! Here is the details of his experiences as well as his opinion about the exciting overseas internship program!

My name is Choo Jing Lin, Christopher. I am currently pursuing a Diploma in Information Technology (Games Development Option) at Singapore Polytechnic, Third Year. I have been involved in programming and games development during my time in school. I enjoy playing all sorts of games and this led to my interest in developing games. I’ve tried out trigger-based programming before and really enjoyed it, and decided to further pursue in Games Development. I also enjoy culture from other countries mainly things like Manga, Comics, Sitcoms, Variety Shows, etc.

I decided on joining NUS-MDA SHAPE for my internship as I felt it was a great opportunity. It is not always one gets to experience an overseas internship. Singapore’s Gaming industry cannot compare to some of the overseas ones and I was hoping I would be able to bring what I learnt there back to Singapore. There was also several companies that I was really interested in, like Blizzard Entertainment, Electronic Arts, THQ, Lucasfilm, etc. It was going to be a new challenge and a rewarding one.

Internship Experience

My entire internship experience started way before the actual internship. We had to deal with the confirmation emails and the visa. There was also a ton of things to prepare like apartment, bank account, knowledge of the place, etc. I had to do things I never really tried before until this. To book my apartment, I had to search through the internet and with help from Jehan, Dr. Newton, Ms Jeene, etc. I eventually found it on craigslist; I called to US and confirmed my location.

I was living alone so the ability to live independently was much more demanded. Firstly I had to go through 3 different planes to get to Pittsburgh and find my way to the limousine to bring me to my apartment. Though with some past experience and some common sense, it wasn’t hard and I got to Pittsburgh.

I had been to the US before but this was slightly different. I could recognize some of the roads from Google maps. Throughout my stay Google maps was one of the most important thing. It was my way of finding my way around the place. I was able to get to the Giant Eagle, Downtown, the office and many more other places all thanks to Google Maps.

The room was simple enough and small enough for one person to clean it often and easily. I had very simple furniture with only my laptop as a source of entertainment. The roommates were friendly but we hardly chat.  The best feature about the room is that there was a toilet in it. (Every room had one).

I had the area mapped down in my mind within 3-4 weeks of stay and I felt really comfortable with living in Pittsburgh and working there. There was any awkwardness or really missing Singapore. I just felt that I was on a rare opportunity and I should focus on Pittsburgh and Schell Games.

The actual internship was a mind blowing experience. The first week was merely a ramp up on what project I was one, who I’m working with, What I’m supposed to do and how Schell Games works. I felt overwhelmed but I soon get used to it as everyone was really helpful and taught me a lot of things.

My day would start with me getting to work and working a bit of my task before the morning SCRUM meeting where we were to talk about what we’ve done before, how long it took and what we will be doing today. This is to learn the progress of the group and let each other know whether any task was being blocked by someone else. Like say I was to create the dialog of the NPC actual dialog wasn’t created yet. This would block my progress. Thus SCRUM allows each other to priorities more important task on a daily basis.

We worked about 8 hours each day but everyone else seems to work way more than that. It was a lot longer than what I was used to and I had to take a breather every now and then to now ‘overload’. I could go to the min garden, outside to the convenience store, the games room, toilet, or even just surf the internet a while.

We would work through a SPRINT where it usually ends a milestone for each SPRINT like say content lock or feature lock where we will not add further content after or feature after and focus more on other aspects lie debugging. I was able to experience most of it as I when though several milestones from adding content, feature all the way to debugging.

Working on the programming is much harder than it is in Singapore. In school we are kind of spoon fed the code and we just had to piece it together. In real life there are many errors that can appear from your code, especially if your source is some forum online. The chances are it will take some time for you to make heads and ends of the code online. However, the people are Schell Games really helped me a lot on the errors and how to do certain tasks. I was able to promptly finish the tasks given to me.

There was also some events or ‘happenings’ during my time at Schell. Birthdays were a common thing and there was a special system. This system where each person is assigned to gift another person a present during their birthday in a cycle. The gifts were all very cool and nice. There was  a minecraft shirt, minecraft pickaxe, a lightsabre and many more. Also we do go out to lunch sometimes especially when a person is leaving Schell games. They would usually go to places I wouldn’t think of going and I would realize the food there are actually quite good but much more expensive compared to what I am used to.

There was also this special week where we will not do any task but tasks that are suggested by each other. I joined into the Minecraft Editor group and worked on Saving and Loading which proved to be a much harder tasked than I thought it would be. I had to do a ton of research before getting it done 1 day before the actually presentation of what we did. In the end we never really did finish it. It became a tiny region viewer where you can view a chunk of minecraft land.

It was really fun working on this as normally I wouldn’t get to work on it nor do I have the time. Working with them on this especially since everyone is testing and learning things out is fun. Also breakfast and lunch was provided. There was a huge array of food to eat and it was also.

There was also the system of code buddies where at the end of the sprint and before the progress report meeting about all projects. There would be a rotating system for selecting the pairs. We would the sit down and show each other what  we have worked on to learn about work not directly related to what you are doing and maybe even help out.

I would try to understand what they are doing and ask things when I am unsure. Also they have given me quite a bit of advice on how to further work on things or alternative way that might be better.

The end of sprint meeting would usually start with announcements like birthdays, anniversaries, accomplishments before each project team start showing what they have done. I felt it was a really good thing as it not only let me see the increasing progress of other projects but it also allows me to know what I was working on and how far our game/ project has been done. Sprints after Sprints, I could tell the progress was definitely fast and the game was getting better and better.

I worked on several areas of programming. Starting out on the build server where I was to work on the existing build server code and make it workable. I was to use cruisecontrol.net to run the build server to build daily builds so that everyone on the team could get the latest working copy at the start of the day.

Next I worked on the NPO scripts, it was unity scripts that assigns what dialog and conversation the NPOs can do. Most of them were really simple as they were just minor NPOs that speak random dialogs. Where the quest related ones are slightly more complex, There was several cases where the logic from the Design was slightly wrong and I had to correct it for it to work 

I also worked on creating some tools like the NPO script editor that was meant to make it easier to create basic scripts and also a deep search that allows you to easily find words in scripts. Also a localization checker to find out if there are any localization errors that could potentially cause error. I also did a spreadsheet scripter where I access google docs spread sheet and created a xml file from the spreadsheet that would be used in the snake game or mukashi mukashi. This would later be modified to work for other mini games.

I would continue working on the NPO scripts and some tools. Finally I also worked on debugging and testing. It was really fun trying to ‘break’ the game. I found a ton of bugs like dying in weird places of escaping the zone, entering buildings, etc. I also manage to fix a ton of bugs that were not easily discovered unless you really look for it.

Eventually I finish up my Schell Games internship with a Heat map generator which I barely manage to finish before leaving. I managed to create some really cool heatmaps by stamping gradient circles which I was taught.

Q & A

1. Please provide a short summary of the programme/activities at your internship.
 I was assigned to one of the largest projects Schell Games has done, Librariana. It was a three year project and I was joining them around their half year mark. It is an education MMO game where students would use an android tablet to learn, read and play their entire three years of English curriculum. I switch through several different parts in the project and I felt that it was great as I learnt a lot from everything I have done.

2. What type of skills and knowledge have you gained from the internship?
 I’ve worked on C#, XML, XSLT, Batch, C++, JavaScript, Unity Script, and several more. I mostly work on C# and JavaScript. I learnt how to create tools that benefit development a lot using C# like a build server that builds the game nightly and copies it to the server for everyone.

I’ve also done Java Script to code the dialogues for the NPOs and learnt how simple quest system works and how to simplify things using a shared class, shared external xml file for the dictionary and how the Tech team would work with the Design team.

Things like communication between the team or to the art team or design team. Communication is key. We need to ensure that we know the progress of each other tasks that affects ours to prevent loss in progress. Also confliction and broken builds can cause a huge delay in time for everyone.

3. How long was your internship?
 It was 4-month long. 

4. Were you satisfied with the supervision and work environment? Why?
 I was really satisfied; everyone was really helpful and taught me a lot of things. I wouldn’t be able to finish most of my works without everyone’s help and My work environment was great. I had a two screens at my workstation, which before I had never used two screens ever, It was extremely convenient. I could get more work done at faster speeds because of that. Also there were free snacks in the pantry sometimes by either other colleagues or the boss. Also in meetings there was food to eat, as most of the time it clashes with lunch time.

5. Were you happy with your living accommodation? Why?
 It was okay. It had everything I needed thus I have nothing to complain. The landlord was a fair and kind guy and all my ‘roommates’ were friendly people.

6. Did you enjoy a good balance between work and play?
 Yes, I would work the weekdays and rest on weekends. I went to the zoo, museums, movie theatre, etc. It was very fun checking out Pittsburgh during the weekends to relax after working for five days.

7. Lastly, would you recommend the NUS-MDA SHAPE internship program to your friends and schoolmates?
 Definitely, I was already recommending it when I was taking the program and even before that. It is a great experience and a waste not to go for it. 

Before and After

I didn’t really have any money management thinking in Singapore at all. I do save but normally those are just leftovers that from what I spent.
Living in US and their high prices has made me more conscious of prices and money management. I look out more for the price of the product and whether I would really need it. I didn’t really buy any useless things as money was limited. I also try to find the specific automated teller machine that would charge extra billing fee and eat slightly cheaper food.
I didn’t really do any exercise during the period I was waiting for the internship and also I never do exercise at home.
I tried working out in the room itself by doing exercise that do not need any equipment. I also stretch constantly but I do not go out to run.
I didn’t really look up on code that I do not know and do not need. I mainly focus on my area of comfort and work on things I’ve already learnt.
I was pulled out of my comfort area and I have to start learning again new things on programming. This sparked my interest again and I’ve started to go find out more about other things I can do on my computer.
I don’t really check my emails and reply a.s.a.p. I was always kind of slacking on this sort of things and I will forget about this replies.
I’ve learnt to read my emails constantly and reply as soon as I get the email if possible. As communication is important and that I should always ensure I keep contact in important conversations.

The Bottom Line

I really learnt a lot from everyone and experience what’s it like in a real gaming company from the morning scrums to the tri-weekly sprints. I’ve learnt how a game is developed. I’ve also learnt to be more independent as four months living alone really demands it. I have also realized my own limitation that I lack knowledge in a lot of subjects and programming knowledge. I should work on them on my own and add on what I’ve learn in my future works.

I really appreciate everyone at NUS-MDA SHAPE, Schell Games, Singapore Polytechnic for giving me this opportunity.

No comments:

Post a Comment