By: Ben Hubner, Game Programming ’21
Over this semester, I have been working at the company Back to the Game as a programmer. Back to the Game, also known as B2tGame, is a Montreal-based software development and game studio. Their previous games include Reach, a competitive puzzle game, and its sequel Reach VS. They have also created Rob0, a QA Unity program that allows developers to record sessions of their games automatically and allows them to look through the gameplay and inputs frame by frame to see what could be causing possible bugs during QA sessions. As of right now, there are only a few people working at Back to the Game; Richard, the owner, Annick, a producer, Julien, a data analyst and designer, and Ivan, a programmer. Those are the only people that I have met and talked to, though I know that there are a few more working both in our studio area and working remotely. Not including myself or Giancarlo, who also works there, there are about seven or eight people in total that make up Back to the Game.
Currently, both Giancarlo and I are working on Back to the Game’s upcoming game City Cleaner, a management game where the player is tasked with cleaning up cities around the world, getting rid of pollution and trash as you do. I started off at the beginning of the year by simply looking over the Unity project that held the game, and just experimenting with what was there already. I also joined the company Slack and Github, so that I could be updated both on company information and the Unity project itself. Getting to play around and do small projects for myself was a good way to familiarize myself with the Unity project; I ended up using my time to demo a simple day and night cycle that could be sped up or slowed down if needed. While this did not get implemented into the game (that I know of), it was a good simple project that got me to look into the included code to see what I could change around. After a meeting that I attended, I started working on official tasks that Ivan and Richard assigned me. Working with Giancarlo, I started working on further programming the user interface, allowing more information to be seen while playing. This necessitated me to get more familiar with how the data for the game was actually stored and retrieved, which was useful in later projects. We also worked on creating pop-up menus for the city so assets could be purchased in the game for the player.
After working on the UI for a while, we were given a new task; to create “resource nodes”, objects that could be spawned and destroyed, giving the player the game’s currency. This is the first assignment that I worked on that has been officially implemented into the game, and it is now one of the main gameplay features in City Cleaner, meaning that the player now has a more active role in cleaning up the city. After this, I worked on another big feature for City Cleaner. I helped implement a world map, so that multiple cities could be added to the game, and the player could navigate between them freely. I also created the ability for managers to be assigned to specific cities, so that certain cities could be ignored by the player and generate resources automatically. After these two major features, I worked on bug fixing for a little while. I fixed some bugs with the world map UI, and a bug with the cars and pedestrians in the cities, where they would just continue to walk off the map and disappear.
The next big feature that I worked on was the ability to import dialogue from Google Sheets into the game. This required me to learn how to use Google’s Sheet API to get data from spreadsheets hosted on Google Drive. While data was already being retrieved for certain parts of the game, like upgrades for certain areas of the cities, I had to learn how to get data from a new spreadsheet. This was very interesting to me, specifically because I noticed how useful this kind of data retrieval could be used for so many different tasks. I also know that my dialogue importing has been implemented into the game, since I have seen Giancarlo writing dialogue for the game into the spreadsheet. After working on importing dialogue, the last assignment I have been working on is utilizing Unity’s Shader Graph tools and Unity’s Lightweight Render Pipeline. At first Richard asked me to create a shader for objects in the game scene that would make them look “dirty”. After I created a version of this shader that could create dirt and rust on a surface, Richard asked me to look into using Unity’s Lightweight Render Pipeline to implement this shader during the rendering of the game. As of right now, I am working on getting the Lightweight Render Pipeline to apply my shader consistently while keeping with the new look of City Cleaner, which I have only recently seen has changed considerably (I have been working in separate places of the Unity project, and have only just seen the new look of the main game.
Throughout all of these projects, I have learned quite a great deal, both about Unity as a platform and about working in the game industry. Specifically, for Unity, I have learned about ways to implement Google Drive files into Unity projects, how to create shaders for advanced looks for games, and how to use Unity’s Lightweight Render Pipeline to add to the look of a game. I also have learned how to use Unity’s UI features to create menus and informative content for the games I work on. I haven’t only learned about Unity features though; I have also learned to work in a modern company, and what challenges come with it. I have also learned how to communicate in a company that mainly speaks a different language, and how to handle working with people that work remotely. Overall, so far, this internship has been very informative and interesting.