When I started the migration from Torque 3D to UE4 in the summer of 2014 it was in anticipation of Oculus Connect 1, and running on the DK2. There wasn’t a lot of time to both learn a new game engine, and port HCTD over. UE4′s Blueprint system really helped out with the transition by holding my hand and providing me guidance on what I could and couldn’t do with the various components. I still had to implement my custom Razer Hydra and player code, as well as my custom IK solution for the player’s arms and spine in C++, but there wasn’t much else I couldn’t do with Blueprints for what I needed at the time. I also relied on UE4′s Blueprints to update the game demo for the TAVES 2014 showing in November.
In December 2014 I took time to review where HCTD was heading, and started to plot its course towards a 2015 release. Based on what I had learned in building the OC1 and TAVES demos of HCTD, I decided that I needed to move away from a Blueprint heavy structure and into a C++ one. Here were some of my reasons why:
- The HCTD demos were not architectured with multiplayer in mind. I wanted HCTD to support co-op play, so all of the player, player controller, and weapons’ Blueprints I had assembled needed to be redone.
- Blueprints are saved in binary files that are opaque to source control. It is not easy to track changes, nor know what would be impacted with a roll-back.
- I’m a core programmer that has been using C++ throughout my game industry career, and it feels comfortable to get in to extend, and modify, the engine code to the needs of the game.
Throughout December 2014 and January 2015 I have been working to rebuild the game with multiplayer in mind using a C++ base. I still use Blueprints as they are still awesome, but now in a more “glue code” capacity, similar to how I would use an engine’s scripting language. Along the way I’ve improved how the player starts the level by touching their wristwatch (some demo players had trouble), added in weapon recoil, and further optimized the game’s performance under UE4 4.6. All-in-all a good base for a new year.