top of page

Twin Stick Shooter

This project was given by an indepedent game studio called Group 14. I need to make a top-down (multiplayer) twin stick playable level in the Unreal engine, and it has to be a family friendly game as the brief says the target focuses on a "family friendly IP"

Screenshot 2022-11-04 at 10.49.05.png
Screenshot 2022-11-04 at 10.49.18.png

This is an advert discussing a multiplayer game designer, which fits into my task to develop a multiplayer game.  This job requires you to be able to design multiplayer core gameplay, be able to script a multiplayer game, have the ability to analyse your strengths, weaknesses, and be able to note ways to improve the gameplay.  I have been able to do similar things by designing my weekly charted plan, my feedback forms, and the documentation discussing my problems, and how I fixed them.  This document, in my opinion, mirrors the work I've been doing, and acts as a guidebook showing what I have been doing over the weeks of this project.
I, of course, do not fit every requirement of this job, as I do not have the required time in multiplayer development, or an exhaustive knowledge and skill in this document's criterion, but it still shows as a good path of knowledge needed for this class of work.


My game will be a halloween themed game where you launch objects to the edge of a large room, and get points for it. The halloween theme came about because my original idea featured the characters having weird powers they used to launch each other off the map, and having a halloween theme to the game would give a good excuse for magical characters.  This was before I came to recognise that a 1-v-1 combative game wouldn't be an excellent choice for a family friendly project.


My game is using these four games as inspiration:


1: Food Fight.
Food Fight is a family friendly game that contains the twin stick shooter action this project requires, and a collectible ammunition system I thought was nice.   I got the idea for launching pumpkins partially from this game.


2: Slime Rancher:
The indie game Slime Rancher. which may count as family friendly, is not a top down twin stick shooter, but it contains cute art, and the ability to launch these objects (slimes) far distances, and they knock into each other
This game also gave points to the limited ammo system, and started to help with the idea of knocking about physics objects.


3: Wizard Of Legend contains really good music, so I used it as an inspiration source for my musical tracks.


4: Only One is the main linchpin game of my idea. It contains a large tower that you use your knockback to launch objects off of.   It also contains a way to respawn the objects, and a point system to reward more objects launched.  The only problem is that hitting people off of a massive tower is NOT family friendly, so in my game, you'll hit off pumpkins.


Ver 1:  Control your player, and try to hit your friend off the map.   You can collect pillows, which give you better knockback for a few hits. This, however, would not be a good choice for a family friendly gameplay loop, as 
it could be said that this game promotes violence, and this is meant to be a family friendly game. To make this a more friendly, and safe "family" game, you will instead hit objects off the side, not people.  Hit more off, and you get more points.  You would win by getting et more points than your friend to win, and pillows give you better knockback for 'x' amounts of hits, to add some extra rewards for collecting them. Since this is a prototype, I don't have to make an incredibly complicated control system for multiple platforms, just a setup for a computer game platform. This means I can have a simple rigging for controllers and keyboards.

Q: What are my milestones?

My plan:
1. Build Character One, and make a solid a character rigging.
2. Make a preplaced object for testing, and a knockback system for launching the object      Completed on Sunday 28th NOV
3. Make the object, and multiple others, come from a spawner, to allow randomisation of object placement.   Completed on Monday 29 Nov
4. Make a points system for an end objective.    Completed on Mon 29  Nov
5. Make Character 2.    Started, but unmoveable before 24th, as I don't own an Xbox controller.  The setup was tested on Thursday 24th.

1. Players cannot hit each other. This would reduce player against player violence, and help the game be more family friendly.
2. Players can hit each other off the side, to which they can respawn later, but you get no out and out  reward for doing this. This would reduce the reward for unkind play, but still allows player against player violence.

Annotation 2022-11-23 113420.png

Players.   Walk/Attacks.   (Make hand drawn if possible)
Objects. (Pumpkins.)  (They bounce weirdly.)
Map. (Design and Model.)
Font. Atkinson Hyperlegible (if doable)
Music.  Project One. (My music that plays in the game.)
Hypothetical Extras: Creepy trees. (To block pumpkins and players.)

00:00 / 04:16

I need to make a top down, Twin Stick shooter game that is family friendly. I also need a theme, so I'm going to go with my first idea of a Halloween themed game.   The players will be simple to make, as they apply an impulse in the direction they're facing, which can knock pumpkins away from them.
The objects shouldn't be cubes, because I was advised that it would seem not as professional to use default models, so the game will feature pumpkins which fit into the Halloween theme. I will have the map will be a large circle, like Only One. What I need to make first in the project is Players One, Two, a knockback system, the Pillow powers, and a point system.
DEFEATING YOUR OPPONENT:  (An idea which will probably not be in the final product. I plan to get feedback on the idea.)
It gives you 1 point, instead of the more you'd usually get from objects.
DEFEATING A PLAYER causes them to lose control of their pawn, and get moved back into the ring.  (Maybe they glow a bit or something, for extra flair.)

My Over-The_Weekend Updates:
1: I had found an issue with my controls where everything would be off kilter by 90 degrees.  My solution to fix this was to rewire the movement, and invert the axis of the player. This means that the controls for Up and Down were now wired to Left and Right, and vice versa. I also followed some class guidance to make a flashlight, and once I finished this, I started to work on the Player Sprite, and a pumpkin.

Both Player Characters are white models, but I've set up the materials so one is red, and the other will be blue, when I make it.   The circle is the map of playable surfaces, and the second image is my pumpkin.

Screenshot 2022-11-26 at 16.08.33.png
Screenshot 2022-11-26 at 19.49.21.png
Screenshot 2022-11-26 at 16.03.12.png

Also as of today, I have accomplished a basic end goal of 30
pumpkins to bash off the ledge, a death plane to kill any 
player foolish enough to fall off, and a fun little light system 
for people to look at as the bash pumpkins to high heaven.

The basic playable level is a go!

Screenshot 2022-11-26 at 19.49.42.png

The only issue with the project addons now is about the ability to  knockback other players, and due to how the controls are set up, enabling player knockback will cause you to 1: be launched ridiculously far whenever you attack, and 2, be unable to move with the 'normal' controls.
But, knocking back other players is unneeded for the greater project, as it would reward more directly player-combative playstyles, and this is meant to a family friendly game. I wouldn't want to leave in a hyper-accurate control system that misses the brief AND rewards unkind play.
In order to have more peaceful, relaxed play, I've modified the game's point system. In the first version, it was 30 points to win, and both players had seperate point counters, thus increasing the competitiveness of the game. In my modification of the project, I've rigged up the point system so it increases when ANYBODY gets a point, which means it turns from a 1-v-1 game to a 2-v-the objective game.

Also, when I set up Player Knockback, the game ended up like this:


going haywire.png

Player knockback isn't going to be in the packaged project, because it would be unplayable.


If player knockback is enables, you can't move.    Attacking a pumpkin, then walking into an unlit pumpkin allowed you to light it up.    Players have really tiny flashlights so it's hard to see where you're aiming

FIXED BY:   Rmoving player knockback, modifying the system for pumpkin attacks, and I gave the players colored arrows to see the light direction better,

Yes, they DO bounce funny.  Weirdly so, to be honest.
In build 1, they spawned into the exact center of the floor, and in build 2 they were launched out of the floor at incredibly rapid speeds.

FIXED BY: Not using a random-vector-in-cone node that I barely understood.  Now I just spawn in the pumpkins over the floor, onto a random x/y coordinate.

The floor itself was just a cylinder.  But if you fell, you'd fall forever.
The hard part of fixing this were the de-spawning volumes.   I set up eight for the pumpkins, and two for the players.  If you hit a pumpkin into one, you get a point, and if YOU get into one the level resets.  The secondary issue was the lighting, as most of my feedback had a request to fix the lighting. As it turns out, Unreal has a little something called "Dynamic Lighting" which, whenever the player shined their light, caused the light on the floor to fade, thus reducing your visibility.  To fix the problem, I just disabled the dynamic lighting, but my problems weren't over!  Despite this fix, you still couldn't see well!  This issue was resolved when I increased the height and radius of the lights, allowing them to illuminate more, and I increased the light intensity units from 10 units to 60 units, thus turning the floor a good vibrant easily visible green.

I have not yet imported the Atkinson Hyperlegible dyslexia font.

I took my "Project One" song, which was a semi creepy song I made a few weeks prior, and added an automatically playing audio emitter into the level scene in order to make the music play.

I set up my own player 2 into the project, but I did all my work on a Mac computer.  This is a bad thing, as the Unreal Engine only allows use of controller inputs on Windows computers. This means that despite all my work to make this code, I've been unable to test it, as I've either not been on a Windows computer while at home, or I don't have a controller when I am on  a Windows computer at school.

As of Thursday 24th, I was able to fix up my player movement system!  It worked after fixing multiple issues of unconnected code, but then this new system of player controlling had the unforeseen effect of wrecking the respawn system.

     I was told that the aiming system of the attacks seemed very precise. This is because your light is not the thing that pushes the pumpkins. The thing that pushed the pumpkins is the invisible bullet that the light is over.  To fix the hyperprecise aiming I just increased the bullet size, although this does have a new side effect of increasing your player propulsion.
To fix the aiming ssue entirely, I set it up so your light illuminates a shorter distance, which means you only have the light shine in a spot where you can hit.  To also add an extra help, I modified the game, adding a little arrow to the player character, that rotates when you do. As the tip of the arrow marks the spot where the bullet launches with the best accuracy, it's a win-win edition to the project!

Rotating Aiming.

Before I had multiplayer working, the respawns were going fine, but once I added multiplayer, it broke! WHATEVER SHALL I DO?
The solution to fix this was 1: Reset the level. 2: open a NEW level. 3: reset THAT level. then 4: open the first level.
And now, the respawning works! Huzzah!  I don't know how it works, but it does, and I'm not going to question it.
But, there still was an issue I was facing:  What should I do about the platform? It's a circle, and I had shown in my map designs that the level was planned to be a square, which means that I'm not accurately following my plan. I'm thinking that I shouldn't have to make players face the annoyance of playing the game, having a fun time, and then the game resets when they launch themselves off the sides.
In the first version, objects would fall off the platform by nature of gravity. I don't need objects to fall into a kill plane, I just need to somehow dequeue them. To solve this problem I made the players spawn into an enclosed room. The objects all spawn in normally, and hitting things to the edges of the room causes them to despawn.  This choice, in my opinion, is a good one. Instead of always worrying that you misclick, and fly off the sides causing the team to fail, it's a more relaxed game where no matter what happens you all will eventually win. Having a simple game where your victory is inevitable seems to be more "family friendly" to me.

I was advised to try and make the characters easier to tell apart, so I've reduced the brightness of the stage, and gave every character a randomly generated light color. This image shows a green player 2 and a red player 1, in a 20 brightness room. You can get the same color on both, but it's unlikely.

Also in new version, the black orbs which had collision, and
stayed visible or the rest of the game, disappear once you
spawn into the game, so you can't collide with them again.
I was advised to reduce the counter, explain how to aim
properly, and show the counter. So I added two bits of text
to the game. The total number of pumpkins has shrunk to 25 needed.

rand colors and reduced brightness..png

This screenshot shows the new text line, counter meter, 
and the randomly picked colored characters.
Also, after two playtesters quit the game on pushing Menu,
I've decided to fix this, and make it so the Menu button just
brings you to the main menu, instead of outright quitting
your game. A new addon was a change to the aiming yet again, removing the arrow, and adding a white orb at the old
arrow tip location. In order to finally fix the unreliable range, I was advised by my tutor Chris to set the spawn actor node of the bullet to Ignore Collision, and always spawn.
and then it works!

Counter MOD.png

I got feedback! Most of it was to try and fix the unreliable hit system, and so I came upon a very useful solution:
Make all characters twice as big.
This allows me to fix the hit issues in two ways:   1: When you attack, it applies a small impulse to the player, which can bounce pumpkins. When you dramatically increase the size of the player, the mass increases, and so the force the player applies to the pumpkin becomes much greater. This means that just be attacking near a pumpkin you can hit it.  The old hit system is still in, but it is the minimum possible range, so all it does is add a little reward for tipper hits.
A second request was to add a menu for failing and winning, as the game seemed to be too abrupt.  This will be pretty easy to set up and it also allows me to add in my little original character designs into the game, where they will be doing silly dances!


Here is an example of the class of silly dance my little chappies will do. This is the Peace and Tranquility dance from A Hat in Time, and it will be the inspiration for my dancing characters. Here is a longplay of my game, showing both win and fail states, and single/multiplayer modes, with variable timed rounds.

bottom of page