Game Development, Graphics Programming, GPU, Computer Science

Short story – my latest side project as of Jan 2016 is a game using Unreal Engine 4.

Long story – ramblings on how I got here:

My previous post on this blog was over 3 months ago dated 2015/10/19. My full-time job has continued to maintain priority, but I was able to find some time to continue my (now ex) latest side project – a basic cross-platform graphics engine foundation using (C++, SDL2, GLES2, CMake). Much fun and learning was had getting experience with the cross-platform nuances of low layer development with C++ OpenGL on Windows, OS X, Linux, Android, iOS, and Emscripten.

I was able to (somewhat) reduce the workload of building “from scratch” by targeting only GLES2… But it’s still low-layer plus significant effort on the cross-platform native aspects. I enjoyed the “low layer” cross-platform work and it was good exposure, but I was feeling tempted to just focus on one platform so I could implement cooler demos with less effort. I was also tempted to try something like less “low layer” like Marmalade SDK, Ogre3D, or OpenSceneGraph.

Then over the December holiday break, I took a break from it (did some game math book reading) (built another desktop computer from parts). Starting the new year, I decided to try out Unity and Unreal. So for this side project, the focus is on making a robust playable game using an existing game engine.

In 2009, I made a game prototype for a game called “City Hero Defense” using Torque 3D. I’ve also played with Unity (and Ogre3d) multiple times in the past eight years (or so). Besides that, most of my side projects tended to build things directly from OpenGL or DirectX (similar to my 2003-2005 college game projects). Meanwhile, my day job is even lower layer than that – GPU modeling (eg implement graphics pipeline, shader instructions) (eg GPU driver support) (eg exercise with OpenGL, DirectX).

So to start the new year, I tried Unity a bit, then I tried Unreal, then I hit the ground running with Unreal. So far I’m loving Unreal Engine 4 and the progress is much faster than building “from scratch” (even more than I had expected). Lower layer development can be good experience and obviously someone has to develop game engines for others to create games with them (just as someone has to develop GPUs, GPU drivers, and GPU graphics APIs). However, developing a cross-platform robust game as a part-time hobby project as an individual seems much easier and faster using an existing game engine. The difference in the effort-to-results ratio is significant (assuming your goal is to make a game) (assuming you don’t have a good reason or a real need to develop “from scratch”).

My experience using UE4 is very different than writing “from scratch”. With UE4 I haven’t written any OpenGL code or rendering code, dealt with cross-platform nuances or build system nuances, or integrated third-party libraries. Instead it’s been more about integrating content, implementing game logic, implementing interactions, and using UE4’s editor and API.

One of the big selling points for me with UE4 (over Unity) is C++. This isn’t a knock on Unity. In fact, it’s not necessarily that I think I’m more productive using C++ or that I think I’ll write more optimized code… My preference is just because I think I’ll get better experience by doing more C++.

I am very thankful to Epic for releasing Unreal Engine 4 and all future updates as free for everyone as of 2015/03/02 ( https://www.unrealengine.com/blog/ue4-is-free ). This is a great trend in game engines – making them more accessible. There’s a lot of great AAA game engines now available to everyone for free or cheap – Unity, Unreal Engine 4, Source 2, CryENGINE ($9.90/mo).