War Ghost
Description
A Sci-Fi Multiplayer Shooter set in the future where different factions are battling over the possession of entire planets. By time travelling, highly trained soldiers called ghosts can go back in time and change the battles they lost. However, they cannot go back in time in human form, they transform into ghosts being able to possess any vehicle on the battlefield and change the past.
Before making this game I had mainly used Unity for all my projects. C++ was always my strongest language but Unreal was initially very intimidating to me. I made this game to learn the engine and its API. Having known Unity up to a very advanced level, I was able to learn Unreal in only 2 weeks and I was already starting to make complex mechanics and ideas with it. This game was a product of this and it turned into a complex and competitive multiplayer game utilizing physics based vehicles and planes. The game is a 1v1 where 1 player controls each team. The units of each team spawn by themselves and will navigate, attack their enemies and capture points alone using an AI. The player doesn't infact have to do anything but by possessing a vehicle they can take over the AI and control it themselves changing the course of the battle. The players control these sphere like characters called ghosts that are able to take over any unit on the field. Durning anytime the player can un-possess the unit they are controlling and go for another one if its in a better position or situation. The game currently has Hover Tanks, Fighter Jets and Humanoid Soldiers (Soldiers not in this demo). The game mode is a capture the flag therefore the player wins when he ends up with the most points as seen in the UI. This was a project alone where I did all the programming and some of the art. Most of the art are free assets but many of the Unit models have been heavily altered. I challenged myself to make something complex to learn the engine and I am happy with the result. I was able to achieve many technical aspects on this project.
I encourage you to view the source code as it shows my programming skills very well. The Orune project also demonstrates my skills aswell and its more recent so I encourage you to see both. If viewing Source Code please make sure to use the same engine version as me (see above).
Project Technical Aspects
- Advanced C++ and Unreal Engine 4 API
- All mechanics and Physics utilizing C++ and the UE4 API to its full potential. All mechanics are created to be reusable and work in different situations. Only the AI in the game was created in Blueprint, I did this in order for easy debugging and applying simple changes. Created a custom module that added to the engine's base classes. Some of these classes included a dedicated bullet class, team based pawns and controllers and more feature rich version of the projectile class. I also expanded on Unreal's damage architecture with point and projectile damage to use more complex damage types for different type of weapons e.g. acid weapons, fire weapons etc. and their respective visual effects and damage models. I sadly did not have time to use this feature but it is coded and ready within my source code.
- Physics Programming
- All programmed in C++. All Vehicles use classical mechanics physics calculations for movements. A good example of this is the fighter jet. Planes use real world calculations for the lift coefficient, drag coefficient, control authority at different speeds and even landing physics with spinning wheels, suspension and friction when breaking. The result is vehicles that feel realistic and fun. I programmed all the physics to be data driven, meaning many parameters in the BP version can be changed to alter the physics and feel of the units.
- Advanced Post Processing Shaders
- Created advanced PP shaders for the radar effect and I used custom nodes to code in HLSL for the blur effects seen on the ghost when moving quickly. Utilized Unreal's deferred rendering features such as the Global Buffer and Custom Depth to achieve the desired effects.
- Advanced AI
- The AI in this game are sophisticated enough that they can achieve the game mode's objective alone. The AI can find enemy capture point, capture them, seek out enemies and they even attack the unit most damaging them. They can target enemies and compensate for the bullet drop and bullet time if they are too far away. Finally the AI can also detect if a capture point is too busy and guard it before moving onto the next point.
- UI Programming
- The UI system in this game is perfectly modular and I have expanded many of the UMG classes available in UE4. The UI uses many nested BPs to allow less repeated code. Since the capture point can be represented in the main UI or in a secondary UI when capturing. Both UI elements use the same code and can be nested in each other. This modular setup also allows the UI to adapt to the map, if a designer adds another capture point. The UI will add the new point by itself and it will show correctly and be calculated into the final score as it gets captured.