Over the summer, the research lab employed some of our undergraduate engineering students to help out with research projects as summer interns. They were helping out with a bunch of cutting edge tech and ideas, such as Brain Controlled Interfaces for Design; Gesture-driven CAD and Quantum-enabled configuration design tools.
I think it is a great initiative, as it provides an opportunity for them to see what goes on behind the scenes of their labs and lectures, and what PhD life is like and if it is a viable future option for them. To enrich their time with us, each of the PhD students gave a specialist talk on something that the students will probably not have come across as part of their studies.
My talk was on Game Engines, focussing on how the toolset has outgrown its initial purpose of only creating games, and now facilitates a whole host of capabilities and industries beyond gaming – even research!
The talk began with an introduction to game engines, and the core functionalities of a game engine, such as to enable:
- Rendering of 2D/3D objects (show your cool assets)
- Interaction with 2D/3D objects (move your cool assets)
- 2D/3D objects to interact with each other (physics engine/AI)
- Integrated memory management (garbage collection)
- Integrate external libraries (sound/hardware/networking)
- Platform agnostic development (packaging)
Next is why would you traditionally use a game engine? Mainly this comes down to being able to get quickly to the good stuff, the actual interaction with your assets without needing to first write interaction engines (such as keyboard drivers!) and being able to work collaboratively through common tools.
But as the subject topic implies, game engines can be extremely effective when used in non-game industries. There are the tools and proven potential for game engines to be utilised to support:
- Film & television
- Broadcast & live events
- Automotive & transportation
- Virtual production
- Human-machine interface
- Parametric / procedural design
Some examples of these can be seen in the image above. Top-left: building machine learning algorithms through auto-labelling of items in a high fidelity scene. Top-right: a parametric building facade generator, used to support an architectural design course. Bottom-right: Match of the day using a completely virtual set, with only the presenters, the table and their chairs being physical. Bottom-left: using real-time rendering for high-end automotive configuration tools.
Next was a rundown of the big industry players, and what household names and games they are famous for, as well as the licences that might prevent their use. Some of the engines are used for huge numbers of games, such as Unity and Unreal Engine, and their licenses are very generous for individuals or non-game industries looking to start out using the engines. I also reflected on where I started with game engines and some of the legends of the game development game!
Above in the Top-Left: we have the Elder Scrolls Construction Set, a mod tool for Morrowind. Top-Right: The Source Engine. Bottom-Right: the Aurora Toolset for Neverwinter Nights and Bottom-Left: Gamemaker.
The next question is how to pick the right game engine? They have similar fundamentals, but their capability and internal structure are vastly different. To that end, I recommend learning game engines in the following three stages.
Unreal Blueprints are absolutely incredible for getting up to speed with game engines. Being able to be guided by node-based programming, means more time can be spent on learning how the game engine components interact, rather than the syntax or programming paradigms.
Unity then offers great scripting capability all the way up to complex AAA game potential. If you are more comfortable with programming and want more control from the start, then this is a great starting point.
Finally, Unreal C++ is incredibly powerful, but starting here is extremely difficult. The documentation isn’t great, and learning the syntax in tandem with the fundamentals means the learning curve is steep and vast.
Concluding the presentation, I gave a demo on how to create a simple interactive asset that randomised its scale and colour on spawn in Unreal. I also explained how I have used game engines to support several of my research projects, as part of the capture, logging, and analysis!