64K RAM SYSTEM 38911 BYTES OF STUFF I MADE

You can download and play this for yourself from the itch.io page by clicking here

Serious dodgeball was my submission for the games behaviour module at uni, its written in unreal 5 using blueprints and has a heavy focus on the physics engine and AI behaviour.

I started with a simple game design document to outline what i wanted to showcase.

The game centres around throwing dodgeballs at your enemies, i thought this would be a great showcase of the physics engine because it would be all based on the potential rebounds and various impulse forces.

For actual physics interactions i added 4 ball types:

The rubber balls
The rubber balls

Rubber balls are the basic attack, these rebound off surfaces and characters, they can rebound off of other balls even if hit when thrown and they can be kicked with the mighty boot. all giving that classic rubber bounce sound effect when hitting.

Rubber balls deal damage based on which area of the character they hit, hitting in the legs will apply a cripple debuff (depending which leg was hit), hitting the head will cause the camera to sway and disorientate the player and hitting the hands (i.e catching the ball) will arm the ball and allow you to throw it back.

The lava balls
The lava balls

The lava ball explodes on impact, dealing AoE damage, throwing molten rocks around and applying a small burning DoT effect. This uses unreals shatter mesh/destructibles system. The ball mesh is split using the ingame tools, and when the ball hits it swaps the actors and creates a small chaos zone on the shatter mesh.

The wind balls
The wind balls

The wind ball does no damage but does an AoE knockback on impact doing a sphere collision test and throwing anything caught away from it. It also causes all the enemies hit to drop any balls they are holding, and will also launch the balls on the ground into the air to cause damage.

It also has an Alt fire mode that causes a knockback from the players location allowing you to throw everyone away from yourself.

The gravity balls
The gravity balls

The gravity ball has a short timer once thrown, after the alarm period ends it explodes into a gravity well that slowly rises and pulls in everything towards it, creating a swirling mass of enemies and balls (even the player if you are unlucky). This works by applying a negative impulse to everything drawing it in. it also generates a small amount of damage, the bulk of the damage comes from the other ammo colliding.

Throwing another gravity ball into a well will cause a cataclysm explosion doing (mostly) instead death damage to everything in the wells pull.

To accompany these the player can also do a "mighty boot" kick, from the classic duke3d, this does no damage but will apply a kicking force to anything inf ront of the player. You can even kick a ball away in midair if you are skilled enough at timing.

Early ragdolling.
Early ragdolling.

The other half of the coursework is centered around the enemy AI, to make animations easier, i used the blender sculpt tool to pull spikes from the default UE mannequin to create them whilst keeping the same skeleton. 

I created a general behaviour tree and blackboard for all of the enemies to share but these were split down into the individual roles they had as follows:

The Dreg enemy
The Dreg enemy

Dregs are the fodder enemy type, they're pretty weak health wise and can be killed with a single headshot. Their main behaviour is to collect ammo so will focus on finding the closest dropped ammo.

When they have ammo they will make a choice on whether to give this to another enemy (if one has called for ammo) or to throw it at the player themselves, the first choice should take prio as this is their main purpose.

The Lank enemy
The Lank enemy

Lanks are the soldier type enemy, they focus on targetting the player, but will try to run away if they catch the player looking at them whilst theyre unarmed. They make calls for ammo in hopes that nearby dregs will find and give this to them.

They also call out the players location setting it for anyone in hearing range, they will do this if asked by another enemy or if they are at low health.

The Hulk enemy
The Hulk enemy

The Hulk enemy is the biggest of the 3, they have the largest health pool and are immune to phyics changes like the wind and gravity attacks. They need 10 normal ammo to charge their attack which involved them throwing a giant boulder at a given location that does a massive AoE.

Hulks are also blind so cannot find the players location of their own, so they call out for the players location when they are ready to attack, they also do a ground stomp attack if they hear the player is close to them.

These enemies spawn from demon portals placed around the map, they will try to spawn from the closests active one to the player. These portals also spew dodgeballs out for the enemies to collect and use.

The actual level assets are mostly from a humble bundle asset pack i had picked up at some point in the past, so i started with an unreal landscape actor, formed it into some hills and flat areas, and built the temple and grave yard sections around that.

I also managed to get a world partition to work however i didn't really need it in the end since i only got around to using a smaller area.

I created a few helper blueprint actors, like the floating platforms so that i could have them placed anywhere, and move to and from any location, even having a delayed start.

A giant plane of lava was then added which does some damage whilst you swim in it and alters the players gravity when inside to simulate swimming.

I recorded some unedited gameplay to show off the important parts, you can watch here:

I also have some historical screenshots and clips showing some of the interesting bugs and problems i had whilst making this:

It took a little bit to figure out the many quirks of unreal ragdolls...
Another ragdoll quirk would cause the mesh to blast off, also an early look at the dev testing level and platforms.
Tech Used
  • Blender
Info

Date Written:
01/2023