Published 3 years ago
From Zero Experience to Finished Game
   My name is Jacob Stewart and go by Dukealicious on the oculus subreddit.  I started a studio named Iron Stomach to finally do what 6 year old me always wanted to after playing MegaMan 2.  Now I am 33 years old and a life long fan of videogames.  Getting older the weight of never having made a game but fairly certain I could make a good one if I buckled down and did it.  One full finished game that I could enjoy and be proud of.  So a few years ago I set off and started designing like mad.  I opened up old boxes full of designs I had made up during my childhood and started filling up new notebooks with overly ambitious projects organized by just how much I would have to learn to complete them.  I have always been an a traditional 2d artists and dabbled with 3d modeling over the years.  I downloaded Unreal 3 and armed with Blender and Sculptris I started work on an ill fated game called "Outer Darkness" an HR Giger inspired world.     Making enemies and environment art was fun but I was putting off a major part of production.  I didn't know how to program.  Eventually I became discouraged and gave up. Games would always be my hobby and I was fine with that.
  I picked up an Oculus DK1 justifying my purchase saying I would make games but of course really I just wanted to play games having always been a fan of stereoscopic gaming.  The pinnacle of gaming setups for me prior to the DK1 was a room with  couches against the wall, a floor carpeted with mattresses, a chase lounge dead center, a 3d projector with Nvidia 3d Vision shutter glasses.  Spent like 200 hours in Skyrim that way.   I spent a lot of my time in Vorpx playing FPSs hacked to play in VR.  Suitably impressed I preordered a DK2 as soon as it became available.  I was struck by how everyone in the VR community was shying away from artificial locomotion and FPSs saying they did not work in VR, especially after the improvements to the DK2 removed any remaining discomfort as far as I could tell.  Sim sickness only affected me until my IPD was setup correctly.  Having played through all the Borderlands, Bioshocks, Dishonored, Doom 3, and various others in VR and having the time of my life. I got to thinking I would just have to make my own if no one was making them.  There are others like me who don't get sim-sick and these games are a blast.  Unity 5 released and then I got started again.  This time I scaled back my ambition knowing that I was just a beginner.
  I got a physical journal and decided to chronicle everything on my journey of knowing nothing to finished game.  I would take screenshots throughout development and record gameplay footage.  So beginner tutorials would be my next few months.
I work the night shift and so on my days off I am up all night.  This was the perfect opportunity to mass watch tutorials on Youtube and take classes on Udemy. I had a simple game in mind that wasnt ambitious and something that I thought was reasonably possible given my beginner status to finish and release for free or 1$.   It was going to be VR and play in the style of games I grew up on in the 80s and 90s.  A procedural corridor and room shooter with one weapon, 2 enemies(small and large) and 3rd that showed up if you took to long to finish a level.  The goal would be to get to an exit to drop you down a hole to the next level.  Each level enemies would spawn faster and the level would get bigger.  I would roll over the dark art style from "Outer Darkness."Oh and only 1 life to go down 100 floors.  In the early days of gaming winning wasn't always a given and just seeing how far you could get each time was part of the fun and sense of accomplishment.  Never did finish Blaster Master but I sure did enjoy trying.
  After getting past the initial dread of learning to program and the anxiety that initially caused me eventually I realized I could do more.  The code for an elevator could easily be re-purposed to be a set of automatic sliding doors, and that in turn could be used to make proximity mines.  Triggers and variables were great.   Once learning the vocabulary these 2 building blocks could make just about anything.   I wanted this game to be available on as many platforms as possible and knew most of my friends would be getting a PSVR and really I was just making this for myself and my friends.  I had to redesign it to be less demanding performance wise.  I realized going abstract I could make something that was still visually appealing and yet less demanding.  I remembered the old VHS tapes I had as a child of early 70s and 80s computer graphics and I had just finished playing the new Shadowrun DragonFall.  I looked up those old animations and settled on a retro-version of cyberspace and a story that features the player as a beta tester.  The beta test was for a cybersecurity AI program that players were enlisted to continuously go up against so it could grow and be more effective.  This is really a story that would allow me to do what the genre of game that was rolling out of development needed.  I was making a VR Shooter Tronish-Roguelike.  Roguelikes are often developed for years and continuously growing in size and complexity.  It is not that they are incomplete but rather like an ever growing pantry to make new meals from each time you eat.  A complete game would be published and according to the story line I would rollout large update chunks of gameplay for free over the years.  Not in sequels or paid for DLC.  Not in early access.  My passion project could continue to grow massive.  I want this game to be overwhelmingly large with content.
   It is a year later and now I am ready to show some of it off, though full release is not until Fall 2016.  Development has been dominated by an obsession over optimizing performance and so scoured message boards, tutorials, and keynotes integrating every tip or technique knowing I could not have any frame rate dips in VR.
 1st up was low geometry and quad wireframe look.  Unfortunately in VR the wireframes looked pixelized upclose unless you had textures at 4K.  
4K textures on everything wasnt going to be great for performance since I thought if I did this right I might be able to get this on the GearVR.   So I looked into and found a way to do wireframes through a non DX11 dependent singlepass shader.  
Not ideal in look since it could not do quad wireframes but only tris.  I decided to make up for it by individually coloring polygons using a single texture with a pallete of colors and rearranging the UVs.
 [[{"fid":"66012","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"","field_file_image_title_text[und][0][value]":"InEngine Test","field_file_tags[und]":""},"type":"media","link_text":null,"attributes":{"title":"InEngine Test","class":"media-element file-default"}}]]
Looking better but not quite there yet.  Using the same texture I made one material for environments and one for enemies.  This allowed me to make use of Static and Dynamic batching and therefore keeping drawcalls down. Pool everything.  I pooled all enemies, particles, and sounds.  probably the biggest performance saver.  Eventually through shaders and image
effects and careful color selection I landed on this on the right formula that I am very happy with. 
With procedural generated levels I used a door/sector based occlusion system and trigger volumes that detect the player to turn on/off things that  don't get occluded normally. Though the  game is bright and colorful there are zero lights or shadows. Pfft why would there be shadows in the matrix?  I moved from iTween to doTween and that reduced garbage collection.  90fps, 4xMSAA, CV1, and no dips with 30 enemies, no problem. 
 With everything in place I am free to add more enemies, weapons, items, environmental art and always tweaking balance up until release, and forever (or 5 years) after.  If the game is well received I will publish a pdf with the images, journal entries, and video links to youtube from throughout development.   It feels good knowing that my dream will soon be realized.  Even if I do not find an audience outside of my close friends and me, six year old Jacob will be happy that I finally did it.  
Jacob Stewart