Monday, January 1, 2018

Retrospective IX

Last year, I conducted a simple retrospective for 2016. Therefore, here is a retrospective for 2017.

2017 Achievements
  • Setup studio for Windows PC, Mac OS/X and Linux cross platform development
  • Employ large scale C++ program architecture using levelization and insulation
  • Graduate Effective C++ to Modern Effective C++ theory + practical examples
  • Align OpenGL graphics learning [desktop] with OpenGL ES [mobile platforms]
  • Source control branches out SVN, Git + Mercurial with HgFlow on Source Tree
  • Extend retro game development on Sega Master System using the devkitSMS
  • Complete Sega Master System demo on real hardware using Master Everdrive
  • Support Spartan Console proposed next gen Sega console to showcase game!
Note: running Sega Master System demo on real hardware without glitches is an achievement!

2018 Objectives
  • Continue C++11 language improvements to C++14 and C++17 standard additions
  • Virtual Reality with Unity3D + Unreal game engine integration: GoogleVR SteamVR
  • Augmented Reality Unity3D + Unreal game engine integration: ARToolKit + Vuforia
  • Investigate new tech: Crypto currency [Bitcoin | Blockchain] and Machine Learning

Virtual Reality
Building upon 2016, as every Virtual Reality evangelist will tell you was "the year of VR", research and development began with Unity3D game engine integration using plugins such as Google VR [C#/.NET].

However, as VR design and best practices demand delivery of minimum 75fps, .NET languages like C# may be less suited for VR since they require a virtual machine to run. Also, services such as automatic garbage collection can have a negative effect on performance as well.

Conversely, C++ is arguably more suited performance-wise since code written is compiled directly into machine code and doesn't suffer from the overhead imposed by virtual machine and garbage collection.

Therefore, Unreal Engine may be better choice for VR game engine integration because C++ is default language. Otherwise, if writing from scratch, C++ with OpenGL should perform well on any platform.

Augmented Reality
Alternatively, Augmented Reality has grown in popularity this year, especially with releases like Pokémon GO. Apple has incorporated AR into their iOS 11 mobile operating system with expectations that AR will "change the way we use technology forever".

Consequently, AR is currently being used more on mobile devices which will limit the language choice to:
 Type  Specific  Generic
 Android  Java  C++
 iOS  Objective-C  C++
 Mono  C#/.NET  C++
Subsequently, AR is also performance critical thus languages like C++ with OpenGL may also be better suited for this type of native development or alternatively Unreal Engine for game engine integration.

Modern C++
In the above examples, C++ is the common denominator regularly listed. Fortunately, the C++ language has improved upon previous iterations with C++11 and additions to the standard i.e. C++14 and C++17.

At it's base: C++11 offers greater performance benefits with move semantics, which is a way to optimize copying, and improved productivity e.g. the new auto keyword which helps make code shorter + clearer.

There are also other features added to the C++11 standard, such as enum classes, lambda expressions, automatic type deduction, etc. all of which are coincidentally available as the baseline for Unreal Engine.

Outside commercial development, much work was done during the year with the Sega Master System!

Writing low level C code to run on real hardware with limited memory + storage requires performance-critical algorithms to be written at all times to achieve consistent maximum frame rate. Perfecting this skill becomes beneficial especially when transitioning future development to VR / AR environments J