PHASE THREE
After a couple of days break I went back to it with a two-pronged assault: draw up the character list with stats for speed changes, and add some inertia-based physics. Not a lot, just a little. The game would be based around 5 gear speeds: Very Slow, Slow, Medium, Fast and Very Fast (or 0.15, 0.3, 0.5, 0.7 and 0.9, for you mathematicians). Only one character has all 5, most have 2 or 3 speeds (the Hobo has Very Slow and Slow, for example). Also wrote the stories and formulated ideas for their POW moves.
Before I get on to explaining the physics and the super neat trampoline animation, let me reveal the roster of characters:
The goat/yak thing I actually changed the design of, to make him look more like the goat from my previous Trampoline Goats game with Cthulu tendrils (what do you guys think? Old or new design?). Most of the characters refer to personal in-jokes, so while the idea of equine gallows, sentient beards, and gherkin jars stuffed with a cooked chicken carcass are hilarious to me and some who know me, they probably make no sense to any of you. In which case excellent! Some of my favourite games have been rich with impenetrable dev in-jokes. The Lawnmower Priest is based on a
previous game I made, while Jeffer has some nods to an amazing UK indie developer who I’m a fan of (guess who and win a prize!).
Mango
His special POW is he shoots a tiny cow that homes in on opponents. An all-rounder. The POW name is based on a conversation I had with my brother, as we were walking down a country lane with cows in the adjacent field. He said it was creepy how they followed us along, always watching us, and I said: "Little know fact, right, is that cows are actually omnivores. They subsist on a diet of grass and genitals. That's why they have 4 stomachs. Three are to process grass, one is for human flesh. After a bull stamped in Spain, 1967, when the army were called in to secure the town, they found that cows had partially consumed those they'd killed. Seriously, cows always go for the genitals." Being an adult he knew I was talking BS (lol), but ever since then we've had a running joke, and will randomly mention to people: "Hey, do you know cows are actually omnivores? True fact."
Hobo
This one is interesting. He has infinite speeds changes and a massive high attack, but only one bullet at a time and is very slow, plus has low health. Requires further testing for balancing.
Natali
Two guns with two separate ammo amounts. Her whip attack sends a horizontal line across the screen at her Y height, thereby acting as ceiling to potentially trap enemies.
Lawna
The idea of a wheelchair based character came from someone on the NTSC-uk forum, who said that the change in dynamics could be interesting in a game (what kind of real-life difficulties do wheelchair users face?), but that publishers today would be afraid to tackle such a subject. Is my game the first to feature a playable wheelchair-bound character? I also like the visual image of a wheelchair bouncing on a trampoline. Lawna is quite powerful too since she'll be the only character who can recharge health (her POW move) and has a 50/50 chance of getting a new bullet when touching the trampoline. I'm wondering, since she can heal herself, should I have her health constantly decreasing at a very slow rate, but stopping once it reaches 1?
Azdash
Army guy with lots of ammo but weak attack. His POW sends a wall of bullets and temporarily boosts his attack power.
Jeffer
Weird character who depletes enemy's POW, constantly charges his own, and whose POW attack is more strange than useful. I love the Cthulu tendrils coming from the goat's head.
Secret 7th character
I've not coded him in yet, but I have an idea for how he plays (no speed changes, pure gravity physics, and a boomerang).
I’ve slowly tweaked their specs and story over the weeks to make each feel unique and hopefully create distinctive play styles.
The Hobo has infinite speed change abilities, since it doesn’t require ammo for him. Also, when a character is travelling at their slowest speed and going upwards, and they try to slow down further, they change direction and fall downwards. I liked the idea of this since it allowed tactical play – do you change direction to avoid being hit but risk less ammo and a longer journey back to the box? This led to an interesting quirk where the Hobo could indefinitely cancel his ascension and fall back down, leading to an infinite quick bounce on the trampoline. I looked cool and was a lot of fun, but I reckoned it might make him impossible to beat, so I removed that ability from him. Others can still Cancel though.
This part was a lot of fun, trying to invent new ways for characters to behave. Jeffer reduces enemy POW when hitting them. Natali has separate ammo for shooting and speed changing. Lawna has a 50/50 chance of getting an extra bullet when touching the trampoline. And so on.
What was NOT fun was drawing all these characters. It took AGES. Then I had to reverse then all for the other player. At first I thought I would have to manually go through altering every instance of the letter E to the letter H, but in the end I loaded sections of the source code up in Microsoft WORD and had it automatically replace E with Q, then H with E, then Q with H. Rinse and repeated for L, R and F, G.
Once I had them drawn and their stats down I spent a long time adding inertia and a trampoline animation. The physics ended up needing a day’s worth of debugging just to make it feel “right”. I suspect it’s the same for all such games. I wanted it so that rate of ascent slowed slightly, and wanted descent to increase slightly, but not to the degree that it negated the need for speed gears. There’s a counter (P1grv for example) which is continuously increasing, and in turn is being added to the player Y position, in addition to their chosen direction and speed (for example travelling up could be -0.7, while receiving +0.15 due to gravity). The MAX for gravity is based on your then chosen speed gear, while things like touching the trampoline or ammo result in negative gravity – this means you leap off the trampoline with a spring in your step, and you float away gently from the ammo box at the height of your ascent. It works great.
I don’t understand real-world physics so I just made this up and tweaked until it felt right. Eventually it did and I thought the tramping animation looked super awesome. Then I left it for several days.
PHASE FOUR
A right pain in the arse this was. I intended to start adding special powers now, but instead spent an entire weekend-day debugging it. Tweaked everyone’s stats and made it so that firing your gun added power, even if you didn’t hit anything (which should prevent stalemates). Needed to alter the hit box as well, since bullets were passing through people’s legs.
To aid debugging, I also made a DEBUG button, which pauses the game and switches to a screen printing most of the game’s variables, which should aid future tweaking. I also added a button to instantly reload ammunition, activate blood splats and the KILL animation.
Once I’ve implemented special powers, I’d like people to play this beta and offer feedback on the game’s balancing – so will leave these debug options in. These will be disabled prior to the final release though.
Next I added stuff like blood splats and sparks when firing your gun. Not difficult just dull, since it’s mainly trial and error with a lot of tweaking. Since my game is based around a MAIN LOOP followed by a SECONDARY LOOP for movement, I had to be very careful to connect every single animation to the timing of the secondary loop, thereby ensuring it’s the same speed on everyone’s computer. When I first started coding in 1998 I only had one main loop in my games, not realising everyone’s computer would run things differently. At that time I used SOUND to slow things down, but that was screwy. Here the sounds will be separate files, and timing should be correct.
Since I’ll be including a SAVE FILE with the game, once a user has tweaked the speed to their liking, it will always be like that, until it ends up on another PC. Currently I have to type in the speed I want each time.
FUN FACT: the blood splats and gun sparks use randomised LINES and CIRCLES, meaning each is unique! A bit like snowflakes.
The dullest stuff though was tweaking inertia and trying to correct a bug. This bug had me really stumped: after touching the ammo box, if you’re going at Slow or Medium speed and switch to Very Slow, your character flies upwards suddenly until he retouches the ammo. But why?
Disabling the line of code which implements gravity showed that it was a result of gravity (as I expected). So I went through every single line of gravity based code, disabling them one by one to find the culprit. Nothing specific – it appeared to be the entire system somehow. Then I went through every line which added anything to the player’s Y position. Again nothing.
It only happened when pushing down though, while travelling down and away from ammo. So I focused on the paragraph for the down button. Eventually I narrowed it to a line of code which switches M/S speeds to VS, but I couldn’t fathom why. I made a quick and dirty fix which sort of corrected the problem, but removed inertia for 50% of the screen area (which wasn’t much fun). I intended to have this as a toggle in the final game if I couldn’t fix it.
Then while trying to fall asleep I had an epiphany!
Touching the ammo box adds negative gravity, right? Well it’s based on your then current Speed Gear. At M/S speeds and above it results in something like -0.5. But speed VS makes you go down at a rate of only 0.15, so the negative gravity causes you to fly up! Although I added a cap to maximum downwards gravity, I never capped the negative gravity. A quick line of code which caps it at -0.2 for VS speeds fixed the problem quite nicely. You move up ever so slightly, as if you’d fired downward propulsion on a rocket, but gravity soon takes over negating it and sending you downwards.
If Trampoline Gunmen interests you, I recommend you test out Turbo Deux for 1P and 2P modes, AI, and some awesome backgrounds. Quadro for 4 player simultaneous modes, and Minigame$ for really cool 1P games which save your hi-score. These will require a PC capable of running DOS (Win XP is great) or DOSbox, though this is a bit wonky with speed detection – so you will need to manually reset it.
DOWNLOAD HERE.
TG: QuadroTG: Minigames - Bounce for me BabyIf there's a demand for it, I might go back and correct some bugs in these earlier versions and recompile them for modern windows systems.
Anyway, back to Trampoline Gunmen 3...
Finally I cleaned up the character select screen and wrote a list of sounds and voice clips which I’ll need. Fancy your voice in my game? Keep an eye out for a request topic at some point!
I will probably also need some music, otherwise I might just rip some Street Fighter II tunes and call it a day.
More entries as I make them (probably won’t be for a while).
STUFF TO DO STILL IN TG3:
Special powers
Backgrounds
AI
Sound Fx
Music
Endings
EDIT:
Well, managed to get 2 POW attacks drafted up this evening. Here's one of them in action: