We first used Unreal Engine 4 around the end of August 2014 after viewing many videos floating around the internet showcasing what looked to be one of the best looking engines available. It wasn't until one of our team members stumbled upon a video from Reddit demonstrating the blueprint editor and material blending that we finally looked into it. Unreal Engine 4's ease of use, not to mention the countless possibilities for developing quick prototypes, was what eventually drew us in to actually learn and use the engine. As developers coming from other game engines (but never UDK!), we expected it would take some time to adjust to the brand new design and interface. But after following a few tutorials online, everything just worked. It fell into place so fast and seamlessly, we knew from that point on that Unreal Engine 4 was for us.
Very shortly after using UE4 for the first time, we started work on NewRetroArcade. We originally planned to make all the games for the arcade manually, using the blueprint system, in-engine actors and objects being filmed via a RenderTarget and then drawn on a screen for an arcade Oculus demo. We succeeded in doing this! And it worked really well for a while, especially because our artists built a fantastic looking demo to play them in! However, the gameplay just didn't match up, so we decided to take it one step further and implemented real-world activities such as the dart-board, basketball machines and a ten-pin bowling alley. But once we added these features, the immersion of what could have been a great experience was broken by being surrounded by these "fake" arcade machines playing music, but having no interaction or playable games. This is the point when we decided to delve further into the C++ side of Unreal and found that by using the fantastic setup supplied in VS2013, it was easy to work out how to compile and integrate separate external libraries to Unreal to make the arcade games much more than they were!
NewRetroArcade version 1 contained a Game Boy emulator that would initialize an instance inside each arcade machine, load a game and output the pixel data onto a procedural texture. All of this took around two days to have fully working. The prototyping and hot-reloading of the C++ allowed for insanely quick testing of the pixel math, and with UE4 providing source code access, it was not hard to find examples in the engine of how to properly utilize the textures and RTI systems to get the visuals to show up in the engine.
After release, we had many requests to further work on NewRetroArcade. Eventually, we gave in and returned to develop some more features. We added support for better and more accurate emulation, then built a much more optimized system for loading DLLs and working with the fantastic LibRetro emulation system. From there, we re-did all of the arcade art, added real MAME, NES and SNES emulation into the demo and created even more awesome assets to go along side the new content. Everything in NewRetroArcade was done in a period of around three months worth of work. Version 1 was created from start to finish in two months, during which our team was still in the process of learning UE4. We are still amazed, nothing compares to the speed of prototyping, testing and visual aspects of Unreal and this really showed when we released.
A good number of our team are big fans of virtual reality, which was the driving force for us to make an Oculus game, and developing for virtual reality was no more difficult than developing a non-VR game on UE4. After we had finished the main bulk of work, we put some time into researching some very helpful tips from the devs at Epic on how to optimize the game further. After some careful but fast real-time tweaking of our assets and environment, we managed to increase the frame rate by around 30 FPS, allowing it to still run great and look fantastic on less powerful systems.
Even though the project started as a way to test if Unreal Engine 4 was what we needed for another game currently in development, we really put a lot of love, care, time and effort into developing the arcade and had an absolute blast doing so! This is all because Unreal Engine 4 just worked. It allowed us to develop everything we wanted in an insanely fast amount of time. We never once had to waste time "fixing" the underlying engine. Each day, a new feature or asset was added and we visually saw our project grow. This motivated the team to do even more in our future projects and our enjoyment of using UE4 is still ongoing to this day.
For anyone who wishes to download NewRetroArcade, the game can be downloaded via our website at http://digitalcybercherries.com/
Twitter - @DCybercherries