Table of Contents
RobotScrapHeap is an 8 week lasting project focussed on the concepting phase of game development. For this project our team consisted of 2 programmers (including myself), 6 designers and 8 visual artists.
Besides my role as programmer in the team, I was also the programmer lead for the project meaning I had meetings with a teacher in which I had to explain our decisions and back them up.
The project was divided into 3 phases, where each phase had its own task specific team. During all 3 sprints the main programming task was prototyping the ideas that were being concepted which had to comply with the constraints set at the start of the project, at the end of the project all these prototypes were put together to create a playable demo.
The concept constraints provided to us for the project is as follows:
The focus of my research and prototyping can be divided into 3 separate subjects spread over the 3 phases: Destructibles, Gunplay and Throwables. This includes researching different solutions for the problems and outweighing each solution's performance, difficulty to implement etc.
During the first phase of the project my focus was researching destructibles and how best to implement destructible meshes. For this purpose I looked into 3 different real-time destruction plugins for Unreal Engine: Apex, Chaos and Blast. After extensive research into the 3 plugins we concluded that the Apex plugin would best fit our purposes. So if we go for real-time destruction, we will use Apex.
There is also an option of using pre-baked destruction, which is destruction that is calculated before the game starts and
then animates the breaking pieces of the object when it breaks.
We compared the pros and cons of pre-baked destruction and real-time destruction. Where pre-baked came out as the better solution for our use case.
Because of the big performance hit of real-time destruction and the customizability that pre-baked destruction provides.
Here are the results of my testing; a screenshot and two demo videos.
The second phase was focussed on combat. We quickly decided that we need to take a look at guns.
For a gun you need a lot of variated things: sound, particles, bullets, magazine system.
I designed what I need in the gun and after I had my plan, I went to code it.
Some iterations later I have the following result:
Enemies Throwing Enemies
In the same second phase focussed on combat my team was discussing the idea of enemies throwing objects, which led to me bringing up the idea of the larger enemies being able to throw smaller enemies.
The big enemy calculates what forces to apply to the small enemy to land it at the target.
With how long you want them to be in the air as a variable input in the engine (3 seconds in the provided demo).
So far this is the most difficult physics problem I have had to solve within my programming career.
Because there is no tutorial online on how to calculate the forces you need to apply
split over 3 axis in order to throw an object to the target. Meaning that I had to convert physics equations to fit my needs.
Here you see a demo of the throwing prototype: