Technical Research

Unity, Unreal or Godot?

For this project, there are a few game engines we could use. Unity, Unreal and Godot are all focused on object oriented programming (OOP) and are all distinctively different. Unity and Unreal are industry standard game engines while Godot is an up and coming game engine. Here I will analyse these different game engines and determine which is most efficient and convenient for us to use.


Unity first released in 2005 and was developed by Unity technologies. Unity is a closed source development tool which means the code that made Unity is not accessible as it is owned by Unity technologies. C# is the primary programming language used by Unity as well as Bolt and Prefab which are proprietary programming languages. Unity specialises in more 2D projects while supporting a strong 3D project system and supports a good graphics system. Unity has 3 licenses to use, personal which is a free license which requires published games to come with the "made in Unity" splash screen, However this is now optional in newer versions of Unity. Unity Plus which costs $185 which is £147 a month, allows earnings of up to $200k/year and allows integration and collaboration tools and custom splash screens. Unity Pro costs $400 which is £319 has no yearly revenue limit and comes with all of Unity's features as well as a few asset pack and a few extra seats for collaborative working. Overall, Unity is more effective at 2D projects due to simple UI and good tools and can keep up with high graphics, it is also a free software with the personal license but isn't the most accessible due to being closed source. Some popular games made with Unity are Genshin Impact, Phasmophobia and Risk of Rain 2.


Unreal Engine was first released in 1998 by Epic Games and is a pseudo-open source software and uses the C++ programming language as well as blueprints. Many popular high quality games are created using Unreal engine such as Tekken 7, Borderlands and ARK: Survival Evolved. Unreal is generally more loved by AAA companies for its high graphics capabilities and support for multiple platforms. Unreal features advanced post processing, material editing, physically-based rendering, global illumination and volumetric lights. However, Unreal can create 2D games, but not as powerful as Unity's 2D games, Unreal specialises in 3D games with high graphics. Unreal has no tier pricing and is always free to use, if a developed game reaches more than $1 million then Unreal takes 5% gross revenue. 


Godot Engine was first released in 2014 and is an completely open source game engine that features multiple programming languages such as C++, C# and its own language, GDScript. This means that new developers can choose which language to use and experienced developers in C# or C++ can program in these languages. A few popular games have been made by Godot such as Brotato, Sonic colours ultimate and Getting Over It. Godot is still relatively new and receiving frequent updates which means it can only improve over time and more great games can be made using this engine. Despite being a new engine and being completely free, Godot can compete even with Unity and Unreal for great 2D and good 3D development as well as being very beginner friendly. This makes Godot a great choice for Indie developers that are beginners or high level developers. 



Here is a table comparing the 3 engines more graphically: 

Overall, I think the best game engine to go with for our project would be Unity. This is because it is a little simpler to use than Unreal and has greater capabilities than Godot, I also have the most experience with this engine and have created multiple games with Unity before. Unreal would be a greater engine for graphical capabilities which would make our game look much better but I and other team mates don't have much experience using Unreal. I plan to learn Unreal engine in the future to become more diverse in game programming as well as try different programming methods such as blueprints. Some sources I could use to help me learn Unreal someday is Codecadamy, this website is perfect for learning different programming languages which can help with learning an engine alongside it. Godot would not be a great engine to use for this project because of it's limited 3D capabilities, external tools are required to bring Godot's 3D system to its full potential. Godot is also still rather new and so needs to be improved in the 3D side to be considered to use for major 3D projects.

Controls For The Game

Controls are quite important in games, they need to be easy to use or customizable so each player can change key binds to preference. Since I will be programming the movement mechanics, I have to make sure that the key binds I assign are reasonable, easy to remember and feel good to use the mechanics with. Firstly, I have basic movement to do. This is simply the player moving around the game, the key binds for this will simply be WASD which is standard for most games on PC. The player should also be able to sprint and slide with the controls being shift to sprint and control to slide/crouch. The controls for sprint and slide/crouch can usually vary a little as I have seen different combinations for this before such as control for sprint and shift for sliding/crouching shift to sprint is the most common way to sprint on PC.


The grappling controls may get a little bit complicated, since the player will have a gun to shoot, the controls cannot be any of mouse buttons in the final build unless another button is pressed to equip a grappling gun. I can either do this or have the grappling gun available to use at any time as well as the regular guns the player has to use by using key binds such as Q to swing and E to pull. This also may not work in the end due to my team mate developing all of the combat for the game and taking quite a few key binds. I think the best and simplest option would be to use a key or hold a key down to equip the grappling gun first and then use the left and right mouse buttons to control pulling and swinging. The idea is to have the player switch from their regular weapons to the grappling gun as fast as possible with ease.

IDE's

IDE's are programs that code is written in, I will be using Visual Studio for this project as I am well experienced in this software. Visual Studio is also closely tied in with Unity and has great compatibility when it comes to programming in Unity. This software also has many tools and features that assists me as a programmer such as the auto complete tool which can speed up the coding process as well as a fixing tool that helps with resolving errors.


Unity is exclusively C# and Visual Studio has a few tools that work around C#. Since Visual Studio works so well with Unity and C# as well as all of the coding team for this project having experience with this language and software, we will be using Visual Studio to program in. There is always the option of a blueprint like add on for Unity but we are more centered around programming in C#.