Genius or madness? Witness the seven-year transformation of NES homebrew game Grand Theftendo into an upcoming downloadable title.
Brian Provinciano's fast-paced talk reflects his thinking ability -- the man built his own NES dev kit, both hardware and software components. Noting that, "great ideas are often the evolution of good ideas," he charted the course of Retro City Rampage, an award-winning indie title, which began as an NES "demake" of Grand Theft Auto 3, including its locations and scenarios.
In 2002, Provinciano began developing his own NES game, Grand Theftendo, an 8-bit tribute to Rockstar's Grand Theft Auto series. In the meantime, he worked in the game industry on projects spanning all consoles. In 2009, Provinciano decided to go indie full-time, starting Vblank Entertainment. His first title, Retro City Rampage, a "Super Mario meets GTA" simulated 8-bit mashup is due on WiiWare and XBLA later this year.
Developing on the NES, with its 1.79 MHz CPU, is different from modern game development, requiring programs to be written in Assembly language. To reduce some of the development pain, Brian spent a great deal of time working on automation tools. He created an impressive C-like assembler to allow for easier coding, and then soldered together components to get his game running on real hardware. Still, he kept hitting memory, speed, and debugging limitations. The flicker in NES games? That actually had to be programmed in, otherwise the sprites would simply not show up.
With all of its limitations, Provinciano decided to move the game from NES to PC, with the thought that he could just port it back, and he designed to tools to do so. With his open world, he thought it would be fun to throw in components from other games he liked, starting with a Leisure Suit Larry building and a Monkey Island bar. That evolved into adding missions for characters from other games.
As he started to have more fun in designing scenarios, Brian realized that he wanted to make the project his full time job, but that would mean scrapping the GTA content and coming up with original material. In testing jumping code, Brian had the idea that players could stomp characters like the Goombas of Super Mario Bros. This addition was key, as it shifted development from the gritty GTA style into a comedy game. Retro City Rampage was born.
As a programmer, Provinciano originally took game design as an afterthought, underestimating its importance. He had completed everything he set out to do from a technical perspective, but he had a problem -- the game wasn't that fun. He found that playtesting is key. By having others play your games with fresh eyes, their observations can make your game a lot better. As an example that opened his eyes to the importance of design, was the development of a throwing mechanic. He spent time coming up with a scheme where a button being held down affected the arc of the throw. A tester told him to just make a button tap throw in a straight line. After implementing this method with the intent on proving that the tester had the wrong idea, it turned out that it worked better.
Again, he extolled the benefits of automation while demonstrating his programming prowess. For Grand Theftendo's city, Brian created a bitmap where certain colors mapped to patterns and collisions. But to design a new city for Retro City Rampage, he developed a suite of tools. His map editor allowed him to quickly edit buildings and patterns to the map, and create sub-layouts that could be embedded and which would automatically fill in details. While still keeping an 8-bit aesthetic, shadows and textures are automatically generated. To design vehicle sprites, he went with a free open-source voxel editor, which he used to automatically design sprite sheets where he didn't have to worry about getting perspectives right by hand. To generate hundreds of different pedestrians, his system puts them together programmatically from different parts.
His runtime editor allows the game to be changed while it is running, and quickly move around the world to debug and adjust parameters. Provinciano explained nonchalantly, "This took like a day to do, and it saved me so much time," which eliciting amazed laughter from the audience. He also conveyed the importance of writing a deterministic engine. If the engine is deterministic, bugs can be traced by keeping recordings of input, which can be replayed for the debugger.
All that work took up over seven years. In retrospect, Brian had several takeaways of what not to do. First, his project was overly ambitious, trying to pack everything in to make the ultimate game. Much of the time was spent working on the project as a second job, which was draining, especially since he was working on it alone. But his biggest problem was that he spent too much time focusing on the technology -- being a perfectionist on the engine and not working on the content. And finally, when trying to get the game out there, business matters such as contracts and public relations pitches at times ended up consuming far more time than actual game development.
Provinciano closed by suggesting local developer gatherings. In Vancouver, where he's based, such a gathering has grown to over 100 indie developers per month. He noted that, "passion is pretty much all you need." Passion brings the motivation to create, and to learn.