Into The Vortex : Behind the scenes of game development.
A Quick Recap
Into The Vortex is a third-person stealth adventure game which allows the player to travel between two super-positioned parallel universes. One universe is a scientifically advanced universe governed by order while the other is a post-apocalyptic universe of chaos. The player should solve puzzles, avoid enemies and try to close the rift that connects the two universes.
In this article, I will be discussing our development process for programming and project management. Before I start, let me introduce the team behind the game. We had two programmers ( Ishan Diwekar and Agnel Blaise ), three level designers ( Oscar G Jasso, Tuo Cao and Mozy Mervin ) and an artist ( Daylan Rogan ).
The First Step
The first step was to make a Game Design Document (GDD) and a Technical Design Document (TDD). A game design document contains everything about the game including the story, gameplay design, features, art style, level design, music and pretty much everything about the game. The GDD allowed us to get an idea of the scale and scope of the game we were planning to build. A technical design document is an in-depth review of the technical aspects of the game like the implementation of game mechanics, camera, artificial intelligence etc. The TDD was a valuable asset in helping us map out the architecture for programming the game.
The beauty of design documents is that they act as a blueprint for your game to use as a reference. If a programmer is confused about a mechanics or if a designer about the level layout, the design document comes to the rescue. It sure takes a lot of time to type out everything, but trust me, it is worth every minute you spend on it.
The next step was rapid prototyping in Unity3D. We had one week to make a prototype of the game which consisted of the core game mechanics. In this game, that included the 3Cs of gameplay (Character, Camera, and Control), Vortex Shift ( traveling between universes) and climbing ladders. Due to the time constraints, we used the default third person controller and camera of Unity for the gameplay mechanics, but wrote our own scripts of Vortex Shift and climbing ladders.
The prototype gave an insight into the development process of the next four months. It helped us evaluate the gameplay and decide what works and what doesn’t.
Plans and Charts
Now that we knew what we were going to face, we required a plan and a strategy. The solution was two words; Gantt charts and Scrum.
A Gantt chart is basically a chart with horizontal bars that represent the time required to complete a task. We charted out all out tasks ranging from concept art to playtesting in a Gantt chart that represented the time period of four months. We went low budget and used a simple Excel document to do that. Once everyone was consulted and happy with the chart, the next problem was making sure we follow the chart and keeping track of progress. Trello was the answer.
Trello is an elegant solution to project management. You can make boards and tasks based on the Gantt chart, then assign the task to one or more members of the team. You could also set a deadline and Trello will give you a heads up when the deadline is near. We made use of labels to show progress ( Blue for in-progress, yellow for half-completed and green for completed ). This meant that the team lead could easily find out the status of a task with a glance at the Trello board.
While Gantt chart is a long term project management solution, scum is more like a short term solution. Scrum is lead by a scrum master to whom the members of the team report their progress, next task, challenges etc. Scrum is often complemented by the Trello board. We used Slack for team communication and Perforce for version control.
Programming the game
We started by programming the core mechanics of the game while the designers developed grey box levels to test the mechanics and the artist worked on the concept art. Once the core mechanics was ready, we moved on to the game features and miscellaneous scripts.
As one of the programmers of the game, I was responsible for 3Cs of gameplay, tools and user interface of the game. One of the main challenges I faced during the gameplay was the collision detection. The two universes were super imposed and I had to make sure that player or the camera doesn’t collide with anything from the other universe. Thanks to Unity’s layer system, I was able to use a layer mask to filter out the collision detection.
I’m a big fan of modular code blocks. So, I decided to make use of mixins. Mixins are like lego blocks in programming. Alone, they make no sense, but mix a couple of them and you get a useful functionality. I made use of Unity’s feature to create custom editors and events to make mixins. Imagine having a lego block that can transform into another type of block depending on your requirement. Now imagine combining them together.
Another reason to program mixins was the creative freedom for level designers. Mixins allowed implementation of multiple features using the same script. The downside of this was that if there is a bug in one of these mixins, it will affect more than one feature.
Now, I could go in-depth about the programming techniques we used, but that would be too boring unless you are a programmer. Keeping a documentation that was concise and easy to understand was important during the development process.
Four Months later…
We released the game on August 2016. It is available for download on my personal website.
It was a fun ride; pulling all nighters, forgetting to eat, desperate attempts to patch bugs before playtest builds, ignoring people bitching behind my back and de-stressing by playing Battlefield 4. The game isn’t perfect. It requires a lot of polish, optimization for improving the frame rate and more playtesting. The game is drastically different from what I imagined it would be when we started the project, but we did accomplish a lot during the period.
This was my first 3D game and I learned a lot from the project and even more from my mistakes. I’m looking forward to learning more and being part of more challenging projects. Breaking into the game industry is hard, but I’m keeping my fingers crossed.