Good News Delivery Co. : How it was made + Retrospective
48 Hours & lots of swearing later, Good News Delivery Co. was finished. This post’ll cover in vague details how it was made, the problems that nearly killed it, and thoughts going forward. Lots of in progress shots & code/art discussion inside!
The Theme
“Connected Worlds” wasn’t my favorite choice of the themes this time. There were a few near ideas I had for others (one involved jam-based weaponry) but come Saturday Morning I was kinda left curious what to do. The obvious choice was a dual world mechanic of some sort, or something where you warp between different worlds Stargate-style. In the end, quickly decided on something involving Space.
The Art

DragonXVI’s noddy guide to basic planet graphics in Paint.net

All my spaceships look like they were designed by a 5 year old.
Luckily, Space is one of those popular settings in games where it’s fairly easy to generate something quite nice looking with minimal effort. Above is my standard process for making simple planets. A starfield can just be black + noise + contrast + clouds for nebula too. The planets in GNDC actually split the lighting & atmosphere layers above so I can ‘dynamically’ light them so they’re lit from the sun.

First day early progress: Basic space graphics & ship movement
The Development
Originally I’d set it up so the planets orbit the sun or each other (for moons), and they’re dynamically ‘lit’ according to their position. This was abandoned early on (anyone checking the source will not the ‘Orbiter’ script still exists but is disabled for most planets) as I didn’t want the game ‘level’ moving about too much. Keeping everything still makes it easier to navigate and balance for gameplay.
With a ship flying about it needed something to do, and then came the idea of ferrying cargo back and forth between planets – ala Connected Worlds. The obvious inspiration was Futurama’s “Planet Express”. So I whipped up some cargo graphics, dropped ’em into the game and coded up a way for the ship to collect them and attach them to the last point in a chain, connected using Unity’s 2D Hinge joints.

And at this point it was unplayable
Difficult to control snake of cargo wobbling your ship about? Sure might be some game in that, let’s go for it.
Spent much of the 2 days arguing with Unity’s physics engine, tweaking masses & torques & the effect of the planets gravity fields to try and get something reasonably fair (jury’s out if I actually managed that :p). The next big problem was getting around – The solar system was quite sizable and I wanted quite a few planets, so I decided to implement a minimap.

No idea what the thing in the middle was supposed to show. I only used the top bit.
Minimaps are quite simple once you get the deal. Basically it takes a central point (The player’s ship on the left, the sun on the right), and calculates each important game object’s position relative to that. Then we divide that by a ‘range’ (the left minimap’s range is shorter than the right) and multiply that final offset by the size of the minimap graphic and hey presto! I also multiply the ‘blips’ alpha by the distance-from-focus / minimap-range so things fade out as they reach the edges of the minimap. Didn’t mean to have two minimaps, but didn’t know what else to put on the right hand side and quite liked the symmetry of it. I figured a full solar-system map might be quite useful?
Still in a GUI mood, I decided to whip up a quite text log to print out current objectives and keep the player notified on what’s going on.

The randomly generated cargo names were quite fun. Essentially {Storage-type} of {adjective} {nouns}
Nothing special there, just a list of 4 strings that scroll as they’re added and work a bit like a queue.
Last thing on Day 1 was a bit more navigation aid. The Minimaps weren’t brilliantly useful stuffed down in the bottom corners of the screen, so I decided to do a good ol’ guide arrow. I wanted to make it quite flashy, so it points in the direction of your current goal when far away, then switches so it hovers over the target when close by (This is fairly old. I think even the first GTA’s objective arrow did this) and animates nicely between the two states. This wasn’t the last of the blatant TELL THE PLAYER WHAT THEY NEED TO DO visual feedback I ended up including, as later on I also made the destination planet pulse bright green too.
Day two began with morning sound & music creation. The music was quickly whipped together in FL Studio after figuring out the Chorus on the first night. It’s a fairly simple ‘catchy’ dance-track thing.

What FLStudio looks like when you don’t name anything ever or use proper automation or anything.
Since this was on the clock, the whole thing was made in 1 hour and uses a fair few default drum loops shipped with FL Studio (Which is the audio equivalent of Photoshop lens flares, but DON’T CARE NO TIME! :p)
With music & sound out the way I still hadn’t actually got a working game. You couldn’t lose and you couldn’t make any money, so I quickly shoved in a score & a timer.

I *really* like Unity’s new particle system. If it wasn’t obvious.
Also added some better feedback into what cargo is within pickup range, since before this you just had to mash the pickup button and hope you were close enough. This bit of UI alone improved the game about 3 times over at this point.
At some point I also wanted to add a Black Hole. Did the visuals for it, but in the end these ended up as harmless ‘gravity wells’ that just pull your ship in a bit. Didn’t have time to implement any special way of throwing stuff into it, but for a brief time they were a valid destination for delivering cargo to.

A big purple swirly thing in space.
Before tweaking the various physics parameters, these guys could actually pull you in with such force that ships carrying more than 4 cargo couldn’t escape at all and you had to eject cargo and pretty much leave it.
At this point, most f the game was in & functional, but I had two other things I wanted to get in since flying between planets and dropping stuff off was fairly simple. I wanted obstacles & enemies! I wanted asteroids & PIRATES!
I didn’t end up getting to do the asteroids.
But the pirates?

Yar har, fiddle-de-dee.
The pirate ship graphics is pretty much just the player’s ship with some bits added & painted blue. The turret tracks independently in a similar way to Hot Diggity’s laser turrets. The pirate AI is pretty simple:
- Pick a random patrol point.
- Fly towards the point. If you reach it, pick another one.
- If the player gets too close, start chasing them.
- If the player gets too close to the guns, start shooting the turret.
I tried plugging in some planet-avoidance AI, but after 5 minutes of that I just thought “BUGGER IT” and let them plow into planets and immediately respawn elsewhere. The pirates represented a massive step up in difficult, as they can completely ruin a massive haul of cargo with a well placed shot. Ideally I’d have made them warp in after 1 minute of gameplay and maybe increase the number as time runs down, but I didn’t think of that soon enough…

A view of the scene in Unity’s editor, showing planet locations & gravity fields & patrol points for pirates. Note this visual was actually used in the games logo too, behind the main text.
The Horrible Bugs
So finally I built the thing and ran it in the Unity Webplayer.
DISASTER! The controls were utterly broken – The ship spun around uncontrollably. What the hell?
A quick Unity Editor update highlighted the problem – Sometime between Untiy 4.5.1 and 4.5.3 the 2D physics has had a hefty change to how it calculates torque & angular velocity. Even after fixing the ship’s steering, carrying lots of cargo made the ship utterly uncontrollable – with 3 hours to go!
Not having enough time to deal with it, I quickly hacked in a few things – reduced the power of the gravitational pull of planets, and reduced the mass of cargo while it’s being carried so it doesn’t toss your ship about like a leaf when you’re carrying it. The final result isn’t perfect, but it’s reasonably playable.
So y’know. Make sure you’re using the latest version of something before you start. :p
The Takeaway
This is my second Ludum Dare after the (absurdly successful seriously thanks guys!) Hot Diggity earlier this year. This is another physics based frantic arcade-y thing and I think I might take a break from ’em next time. Fiddling around with physics engines is only so much fun when y’could be doing a nice simple platformer or something a bit easier to control. Things I need to try for next time:
- Stop making your games so ridiculously difficult. Not asking for a tutorial or anything, just a decent difficulty curve.
- Try something a bit more friendly and less machinery/metallic. Drillers & Spaceships’re a bit too “boys-toys”-ey, so might go for something a bit different next time.
- Put more effort into the GUI, Intro & Outro scenes: Seriously the outro is horrible. Like plain (ARIAL!) text on a black background. And the GUI’s got obvious aliasing all over it.
- Maybe try Flash again? I’ve alternated between Flash/Flixel and Unity for games jams before. Might try it again? Will see.
- Maybe try 3D? I’ve done 1 3D game for a games jam. Mostly avoid this because my modelling skills are a bit pants, but can manage some decent results with basic geometry.
Anyway, that’s it for me. Time to play some other games!
As always you can find my game HERE! Don’t forget to rate it! 😀
