We collected a lot of progress pics during the development of our first independent game. It's been a fantastic tool to track our progress along the way and now after the release for iOS, it's created a way for us to reflect on our process and improve as game developers. We wanted to take the time to share this experience with the Unity development community. This will be a 3-part series covering: concept and prototype, user testing and audio asset creation, and finally, polish and publishing.
Edit: This is now a 4 part series! Part 3 will cover polish and editing while part 4 will cover studio identity and release.
First Screenshot and Latest
Our original goal for this project was to create a title for iOS and Android that could be created by 2-3 developers in about 6 months start to finish. We wanted something that would allow us room to be creative but also be a simple and clear enough concept to reduce design and concept iterations. The project ended up taking 11 months, some of that time creating a business entity to publish under and a couple of health and personal issues that happened along the way.
The Dev Team
Between the two of us we ended up doing everything on this project: coding, art and animation, sound fx and music. That's me on the left, I'm Rodrigo Aguilar. I come mostly from a game design and art background but have also worked as a software engineer. My friend and now business partner, Glenn Song, has been an engineer in the game industry for many years but also writes and draws his own online comic, This Mortal Coil. We both worked at Maxis/EA at The Sims studio for the better part of a decade and I also worked for a few years at Zynga making free-to-play mobile games including Running With Friends. Glenn got his master's from USC and while there, helped create the award-winning indie game Cloud.
I’ve always kept a design journal and this is a page from one of our very first meetings on this project. At the time I had already been doing the indie life for a few months, mostly making unfinished prototypes as I learned the ins and outs of Unity 3D. When Glenn lost his job at EA, he and I started talking about teaming up. From my backlog of game concepts we narrowed down to 2 that we liked, one of them being a downhill snowboarder.
Also seen here are the initial concepts for our bunny/animal characters. We knew from the beginning we wanted to create original characters and a fun, arcade environment. The title also came to us very early on: “Ollie and Flip” were both names of snowboard moves and the names of two main characters.
Once we agreed on going with the snowboarding concept we had more brainstorming meetings. Glenn created this concept in Blender as we talked so that we could begin to block out how the camera, hazards, and player could be arranged.
Throughout the lifetime of the project we both worked from our individual homes but we met in person about once a week for planning and brainstorming. This is a planning board when we were figuring out the game would work.
For the project we did all the asset modeling and character animation in Blender. We created the entire game in Unity 3D. Meshes were for the most part saved as FBX format except for the Avatars which we left in native Blender format, both of which Unity Imports pretty seamlessly.
I used the MonoDevelop IDE since I was working exclusively on my desktop Mac, while Glenn mostly coded in Visual Studio on his Microsoft Surface Pro 3. We only used C# for code as well as JSON-formatted text files from importing tuning and level data.
The whole project was versioned using BitBucket and the SourceTree front-end. Code and other text source files were easy to merge but we were also able to merge Unity library items such as prefabs and scenes by enabling visible meta files. See this Unity Manual section for more details.
Glenn had the initial version of the "treadmill" working fairly quickly. Basically the game creates the next chunk of game level as the player moved down the game world and deletes the oldest chunk once it passes a certain distance.
Notice the text in French? We also had a localization database working from the start, something we learned to do early from other games we had worked on. What we didn’t get done in time for the U.S. release is a full translation of the text database so the feature will be in our next version of the game- the worldwide release.
This is the first time the prototype is running on a device, my iPhone 5s. We made builds for running on device at least once a week. As handy as it is to run the game in the Unity player while doing iterations or testing, it’s always a good idea to do final tests on the hardware. There’s certain input or visual or performance assumptions that sometimes do not translate to the mobile device. It’s been also super helpful to be able to run profiling and debugging through Unity on the build when having the device attached to the dev computer.
We never needed to do heavy project management since it was just the two of us but we did need a way to track and prioritize features and milestones at a basic level so I created a simple spreadsheet in Google Docs that we could both share and update.
Early Character Design
Initially, we went through a lot of design iteration for the bunny characters, some of them very embarrassing in retrospect. This is the very first drawing I did where we both liked what we saw. This is also where I started to play with the idea that both characters didn't have to be bunnies and that one of them would be a fox. We really liked the idea of creating stories around two characters who aren't supposed to be best friends but are.
Refining the Ollie Design
I did a lot of sketching to get a better understanding of the character designs in various poses and emotional states.
First Rigged Character
The next step was to realize the new character design in 3D so at this point we implemented a rigged and animated version of Ollie. I remember feeling like it was a real milestone because suddenly he felt as if he had been imbued with life. As I said earlier, avatars were the only 3D files that we imported in Blender format and not FBX. Not for any particular reason other than we were experimenting a lot early on with different 3D file formats. It was easy to just save the Blender for an avatar asset and have Unity update the imported version but we also liked exporting meshes as individual 3D Unity assets while having a source Blender file that had many objects in them.
Better Treadmill with Placed Objects
Glenn continued expanding the capabilities of the treadmill engine and initially populated the world with random object placement.
First Gameplay Objects and Game Loop
Gameplay and the player character continued to be integrated and improved. This is an image of our first working ramps as well as a rudimentary gameplay loop where the player could die and restart or quit. Notice the edge of the chunks still being visible for easier testing.
Tiling Asset Designs
I started to do a lot of pre-visualization drawings to plan how that art assets could be created so that they could tile and fit together. This also helped to helped determine how big characters should be relative to the world.
Although I had worked as a graphic designer and illustrator before being in the game industry, it had been well over 10 years before my last professional work and I felt very rusty. I remember feeling frustrated at how long all the concept art was going and how dissipated I was at not quite meeting what I was envisioning. Glenn was able to help here when he took some time out from the coding and helped spend time exploring the art direction.
Initial UI Design
This is the initial Photoshop mockups/storyboards I created to start to design the flow of the game as a whole. Originally the game was only going to be an endless runner which is why we thought we would have a high score. I also re-used a layout from one of my earlier prototypes to save time.
Glenn had this fantastic idea where instead of creating a separate tool to create the layouts of our chunks and levels, we would instead use Google Spreadsheets to visually enter the object placements in a grid, then with an export script we could convert this layout to a JSON file the game could import and be used as data for the treadmill engine.
To Be Continued
Part 2 covers user testing, music creation, and sound effects!