Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

Space Courier Postmortem

A topic by CiderPunk created Jan 23, 2016 Views: 335 Replies: 2
Viewing posts 1 to 3
Submitted (5 edits)

Hi there!

I made Space Courier go rate it!

I know the jam is over and a dev log should really proceed while the games in development, but that's not how I roll! I'm going to discus some elements of the game, design decisions, etc. now:

Inspiration

I was heavily influenced by the classic game Thrust which i played extensively on my C64, 30 years on from it's 1986 release, I figured I'd try a new take on the theme. For the theme "life in space" I decided I wanted the 'life' part to be regular Joes doing regular jobs...but in space. what's more mundane than couriering, it allows a lot of scope for a story without straying too far from the core mechanics.

Level format

I couldn't find any existing level data format / editors for 2D polygonal levels, so I looked at something I'd touched on with work, Scalable Vector Graphics or SVG. Inkscape is a highly capable art package that works really well with SVG and it's free so the price was right!

inkscape as a level editor


First thing to do was parse the SVG format in Libgdx, I soon had it rendering with shaperenderer, next step create the shapes in Box2D, new technology for me! it can't handle convex shapes, so i spent a few days trying to write an ear clipping algorithm, only to for auto-predict to suggest EarClippingTriangulator as I wrote "ear" once, which is a utility class to do all that for me! grr!

Ear clipping basically cuts triangles that stick out of a polygon (ears) until you are down to one triangle, by which time you've reduced your complex shape to lots of simpler triangles!

Adding these to Box2D I finally had a level, I did the classic adding balls to the world as you clicked and watched them fall down into my SVG designed caves, and I knew this was gonna work!

Next step was to extrude the flat polygons i'd created to make a 3d world, using SVG's layers functionality, to specify different depths, positions, etc.

getting the textures to wrap correctly around the extruded surfaces took a lot of time!

early 3d rendering

Ship control and Camera

I wanted more newtonian physics than the original thrust, so things would keep momentum and intertia etc, but this didn't work for turning the rocket because it easily got out of control, you had to counter every action with an exact opposite! so playing with damping settings, gravity and denisties I fine tuned it to where it is now.

The camera was another complex element, I wanted it to show where you were going, but zoom in when you went slowly, which was great until you crashed or changed direction, then the view would jar to a halt, The camera position is locked to the player location but it looks in the direction of the players vector, with a whole lot of lerp to smooth the actions. It gets stuck at funny angles occasionally!

Story / Dialogue

I always wanted to have some dialogue with a dispatch controller bossing you around, so I chatted to my brother over Christmas, talented comic book artist Lando or Decadence Comics (check them out if you're into indie comics!), he was busy at the time but came through in the last week with animated portraits for various aliens.

I was running short on time but bumped adding the dialogue up my priority list and I'm very happy I did, The first step was creating a sensor type fixture in the box2d world, these were added to a new layer in the SVG and used to trigger the dialogue, and eventually impose rules on the game world, e.g. escape zones, package drop of zones etc. I developed a simple scripting language that was added in the SVG properties for these sensors so dialogues, game ends, out of bounds could be triggered in sequences. dialogue text I wrote in a separate JSON format which has the display time, avatar, text etc

I had a lot more story planned, the brain was going to antagonize the player more, and get in trouble with some customers, culminating in him using you to drop of the bomb in level 3, then some revenge stuff etc, it was going to be epic.

Space courier in game

Future

I'm in the progress of ripping out the SVG parsing, making it more robust and general, i'll release that shortly, I'll then replace the level loading in space couriers and hopefully make the missing levels! fix the lighting a bit, add some new sounds, new package types, maybe Ed will be in a ship and will shoot back!

Thanks!

Thanks for reading and don't forget to rate! - Space Courier

If you have any questions tweet me

Submitted (2 edits)

SVG Parser - work in progress

Inkscape

Rendered with ShapeRenderer

It's upside down because SVG is y down which is annoying, will add facilities to correct this!

https://bitbucket.org/CiderPunk/svglib/overview

Submitted (1 edit)

Work is progressing, it now generates box2d fixtures from the SVG for most shapes:

Inkscape

Shape renderer

Box2D debug renderer
Box2D doesn't do ellipses so i'm not going to support those initially, the concave hull will be supported but is currently work in progress!