Ballunatics SNES

Platform

WINDOWS PC

Engine

UNREAL ENGINE 4

Development time

2 WEEKS

Team size

9

RESPONSIBILITIES:


  • Project manager
  • Player controller scripting
  • Camera scripting
  • 4-player multiplayer setup and respawn system

Box for pushing camera upwards

Camera

Kill box

Ballunatics was a 2-week student project. My role as project manager was quite limited in this project, consisting of making sure our artists were on board and knew what to do, as well as setting and maintaining the scope of the project.


In regards to scripting, I mainly worked on implementing our camera system, which went through a number of iterations before finally ending up as an auto-scrolling camera setting the pace of the race, as well as a system for spawning four players with assigned gamepads, a system for launching our characters into the air, as well as a UI system letting the player know the aim direction and force.

SPAWNING & MULTIPLAYER SETUP

Initially, I designed and scripted the camera to be nudged upwards by the topmost player.

PLAYER CONTROLLER

While the player is "on ground" (determined by a short line trace), force can be built up and then used to launch the character using Add Impulse to launch it in the current direction of an Aim Bot component attached to the center of the player character, whose direction is determined by the direction of the right joystick.


This controller design also made it possible to play the entire game using only one hand.

However, because of the killbox at the bottom of the screen, this resulted in an unfair advantage for the current leading player. As soon as one or more players got ahead, the players would quickly be killed, ending the game.


Eventually, we instead ended up using an Interp to Movement component on the camera, giving us a steady upward scrolling camera, while still keeping the killbox beneath the screen.

CAMERA

The killbox works not by actually despawning the characters, but by teleporting them outside the screen for the time being and disabling their movement, removing the need to despawn and respawn player characters and keeping track of them in the meantime.

At BeginPlay, I get an array of all PlayerStarts.

Then I assign a Player Start Tag from 0 to 3 to each player, as well as a separate skeletal mesh to each character, based on that index.

A four-player vertical platformer, where you compete to be the first to reach the moon.