🤑 Indie game store🙌 Free games😂 Fun games😨 Horror games
👷 Game development🎨 Assets📚 Comics
🎉 Sales🎁 Bundles

DevLog about "Life in space - and how to get rid of it"

A topic by jppresents created 1 year ago Views: 208,298 Replies: 28
Viewing posts 1 to 25
(Edited 3 times)

I did some brainstorming and came up with the title "Life in space - and how to get rid of it".

The game should go something like this:

In the year 2127 alien life was discovered in space. It is now the year 2128 and you have been sent out to eliminate it. The global earth council (GEC) gave only one reason: It's our universe, not theirs!

So you will be playing an exterminator astronaut that has to clean up all the life infested planets out there in space.

I plan to make a timelapse of all work done on this project (using ChronoLapse).

So far I made some inkscape art, that I plan to use in the game and as a title screen:

(Edited 4 times)

So I have made some anmiations in spriter..

Here is a sneak peak:

(Edited 1 time)

Did the library setup for my game today..

.. I packaged the spriter runtime ( https://github.com/Trixt0r/spriter ) into a jar, to include it.

And I set up texture packer to get nice atlas files for my animations.

Both things took really long.. but they are done.

So maybe I can actually start to code tomorrow!

Okay, after the family visit over Christmas I got back to the game.

I continued working on the tech, there is now a light system (thanks to @orangepascal and his tutorial http://techblog.orangepixel.net/2015/07/shine-a-light-on-it/).

I made tiles (which I don't like, but they have to work for now) and managed to load the tiled map into the game.

After animation, light and map were up and running (as a big chaos in the main class) I have begun moving stuff into classes. (Right now the light class is done).

Here is what this looks like in the game (scaled down 2:1):

Latest source can be found on github: https://github.com/jpcloud/lifeInSpace

(Edited 3 times)

I made some more progress today.

Mainly pathfinding and the beginnings of a ui (indicator what your action will be, walking, not walking, targeting).

Also player and monster positions are now read from the tiled map file.

I made a quick youtube video to show the current state:

(Edited 2 times)

Today was all about combat, action points and a bit of user interface.

The only thing missing for complete combat is that the monsters attack (they already follow the player around, but they don't bite yet).

When that is done I'll make another video.

(Edited 1 time)

Just had a little (2 hours wasted) hickup.

I noticed that I managed to use capitalization in my package name "net.jppresents.lifeInSpace" .. package names should of course be all lowercase.

So quick fix, IntelliJ refactor "lifeInSpace" -> "lifeinspace" .. and that's when things went wrong.

Root cause of all the problems: windows

Windows does not care about case in filenames / directory names. It does save it, when you create a file/dir.. but when changing it, things go weird.

The refactor changes the case in all files that reference the package, but can't (due to windows) actually change the directory names. This (with some unexplained gradle behavior) killed the main class from my desktop build.gradle and made commiting the name change to git impossible.

easy fix: Refactor to a different package name, I choose "net.jppresents.space" and fix the build.gradle.

But getting to that fix took some swearing and complaining.

I just learned that you shouldn't use capitals in package names from the libgdx project creator. It will actually give you a warning if you try to give it a package name with a capital. Do you know what the reason for no using capitals is? Will it cause in problems if you do use them? Some of my old android games have capitals in the package name so was wondering if that could turn into a problem?

I have checked the java documentation, and it just says it's to avoid conflicts with class names.

(Source: http://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html

Quote: "Package names are written in all lower case to avoid conflict with the names of classes or interfaces.")

So as long as you don't have classes named the same as your packages you are fine!

(Edited 1 time)

Okay, so today I managed to do:

- a few variations on alien body parts (2 new heads, a new leg) so that not all aliens look the same

- aliens now attack the player

- the player can now die (with animation) - but the game is stuck on death (no restart yet)

- aliens have levels (for now they determine damage, hp and visuals)

- the game map can be changed (but there is no trigger for it yet)

- the html:dist works!

And this means, you can check out what I have here: http://jppresents.net/static/temp/space/

If you try it, keep in mind: This is not a well designed level, it's just five aliens from lvl 1 to lvl 5 .. so you will die (because you are only lvl 1), if you die, only reloading the browser page (f5) will restart the game.

You control everything with the mouse.

Any feedback is of course welcome!

Great graphics and concept!

Do you plan to give the aliens a health bar? I think that would boost the strategic aspect because you can actually plan what you are going to do next if you know exactly how many hits it will take to take down that alien.

Maybe there could also be aliens with different speeds, so they move a different amount of steps for every turn!

(Edited 1 time)

Thanks for the input!

Both has actually just been implemented today :)

Depending on level the enemies now not only have different hp & looks, but also varying amounts of action points.

If you target an enemy, you can now see the health percentage. I am not sure if I will show actual values later.

On my list for today are also: an indicator how much of your action points a move / shot will cost and health & weapon pickups.

(Edited 1 time) (+1)

The last two days have been quite productive again (and they needed to be, because I have to go to work again starting tomorrow).

I have another short video dev log for you:

I show off the round based combat complete with attack animations and different action point costs.

The user interface is also improved, it previews how much action points a shot will cost and it shows numbers for health and action points.

This is done via libgdx BitmapFont (you can easily create a bitmap font from any font on your system using Hiero. There is also the option to use freeType which creates the fonts on the fly, but as @nathantolbert discovered, this does not work if your game is compiled to html. That's the reason I stuck to a normal bitmap font.

Some plans for the next update:

- health pickups (easy)

- weapon pickups (moderately difficult, I want to modify action point cost, laser color, damage and weapon design)

- suit improvement pickups (moderately easy, I want to give the player more max health points and more max action points)

If there is time I would like to implement a story - most likely you get radio messages (with voice acting? - #libgdx say they would prefer orders from a female voice - we'll see.)

(Edited 1 time)

So (of course) I didn't actually develop the stuff on the list from the last post.

Well, I did do the health pickups (and they paved the road for further pickups).

Instead I did these things:

Muzzle flashes, they were needed because if the enemy is right next to you you never see the projectile fly.

This way there is visual feedback for the attack in all cases.

The muzzle flash is part of the shooting animation (in spriter). The interesting part was to make it fit with the big gun and the small gun.

The gun change is done via character maps (where you can replace one of the animation's sprites with another picture).

Since the size of the guns isn't the same the muzzle flash wasn't appearing at the correct position.

Solution: Also switch the picture for the muzzle flash when switching the gun picture. (Both muzzle flashes are the same size picture, but in one there is lot's of space left to the flash, in the other to the right - this changes the position in the animation to fit the gun size.)

Another thing I experimented with is ninePatch in libgdx.

For this message box:

The background of the box including the round edges is a ninePatch image. This way there is no blurring even when resizing it.

(And it is resized in this picture, because no one wants such a big box in their spritesheet.)

Original 9patch:

Notice how the edges are the same and only the repeatable part gets stretched out.

And this requires you to quickly mark the strechable parts with the android's sdk 9patch editor - and exactly one line of code with libgdx:

ninePatch = textureAtlas.createPatch(name)

So then.. maybe I do the weapon pickups tomorrow :)

Today was pickups / upgrades:

The first pickup is a medkit, it heals the player and is not picked up if the player is at full health.

The next too are permanent upgrades (one max hp, one max ap).

The last one is a weapon upgrade (this switches the weapon graphic for all player animations & increases damage right now).

Plans for tomorrow:

1) change the upgrade animations to be multiple small arrows (kind of like the heal animation) - that looks cooler.

2) Implement line of sight aggro, aliens that engage in combat through walls aren't fun (it interrupts the free movement.. and then they never reach the player)

3) weapon range (right now range is about 1 and a half screens) + indicator (and inability to shoot) if something is out of range

4) weapon upgrades -> damage, range (I am thinking base damage = 3, base range = 4 - and then the upgrade will increase by 1) - I want a unique weapon for each level.. (maybe via colors, let's see)

5) aliens have to be balanced to the new weapon levels (and AP / HP upgrades)

(Edited 2 times)

So regarding the plans:

1) didn't change it.. for now it will stay this way, maybe later (if I get a better Idea than just to copy the heal animation)

2) it's in - it's the same way shots work, so if you can shoot it, it can see you

3) I am leaving this out.. if you can see it (including scrolling) you can try to shoot it - I don't think I can manage a good range indicator and stuff like this until the deadline.

4) I made 6 unique weapon upgrades, for now they all increase damage by one, that might change later

Here they are in a very short video:

5) haven't balanced aliens yet to match player power (with all the available upgrades)

Unplanned progress: Andreas reworked the background music, it's now even cooler than before.

Today (and last night) I had problems with the tilemap.

I hope they are now resolved. - One of the issue was, that all tiles where of by 2px due to fiddeling around with the packer options and not adjusting the tiled ".tmx" file.

This wasn't visible immediately because I had bleed enabled, so those 2 pixel had the correct colors - but when changing the resolution sometimes there were weird tilemap artifacts. Now the tmx file and the texture packer settings should be matching.

Tip: If you package your tileset with texture packer (you should!) always set "grid" to true - this way if you add new tiles (number them with leading zeros) new tiles always go to the end of the list. Why is this important? So you don't have to redo your tiled tmx map everytime! (If you don't use grid mode every new tile will mix the indices of the old ones.)

Tip2 (I noticed I still had rendering problems):

Settings for texture packer:

paddingX: 4,
paddingY: 4,
bleed: true,
edgePadding: true,
duplicatePadding: true,

Settings for the tile set in tiled:

spacing="4" margin="2"

My problem was, I had margin in tiled set to 4.

Since all the the tiles are padded you don't really notice that all centers are off by 2 pixel (at least with my 64x64 tiles). It only led to rendering errors when zooming out. I hope that's gone now.

Today I added a main menu (my first time using libgdx ui elements like stage, table & buttons).

It worked out okay - but it's boring. I will need some background.. at least the music is playing.

I also added json loading of texts (this was super easy, libgdx json support is awesome) - 2 lines to load from json into a custom class.

This is used for credits & help screens right now - but I plan to use it for dialog/story in the game too.

I also experimented a bit more with android - i tweeked the scrolling for different resolutions, added support for the back-button (also for ESC on desktop).

And that's it.

Overall this took all evening.

(Edited 2 times)

Breathing some life (pun intended...) into the menu.

I found this youtube tutorial for libgdx menus and it pointed me to exactly what I needed:


... and the stage fades out.

One line is all it takes. And there is more, have a quick look as I show off the menu here:

What took the most time was to find a tutorial on how to do a planet and stars - and then actually doing them.

The planet is actually inkscaped (I didn't even know about the filter menu for noise..) and the stars are hsv noise from gimp with some manual edits.

If you need infos on how to hack together a main Menu, have a look at https://github.com/jpcloud/lifeInSpace/blob/master...

But to be clear: This is hacked together learning as I go, so there is no real structure. But hey, only 9 days left, what can you do. Gotta get things done!

Today went quite well.

The game is now at the point, where the list of my mission until the end of the jam is quite short:

a) creating levels (I have the first one, I plan on delivering 5 - 6)

b) fixing bugs

c) possible audio recordings for radio content

Today I finished the menu and some important game events.

The menu now shows all available level (currently three.. but that's just a test, the menu is growing whenever a new level is introduced - up to 12 fit perfectly.)

The game safes when you complete a level, so you can come back later and not lose all your progress.

New stuff in the game from today:

level transitions trigger - you teleport from one map to the next

text box trigger - a textbox with a certain text form the gamedata.json is displayed

win trigger - the game ending screen is displayed

all three can be placed and configured in tiled (as big objects, the area they cover is the trigger area).

I also made the player and the enemies completly configureable via tiled. For enemies this means ap, hp, dmg and looks.

The last thing I did today is an optional audio system for the text boxes.

I am not sure there will be audio.. but if it comes to it, the system to play it is in place.

Good start into the sunday.

Last night in bed before falling asleep I came to the conclusion, that levels without doors & keys are too boring.

So today I made them, the doors & keys I mean (and sounds. and event trigger and user interface display of key cards).

Since we are in space (well on mars) it's key cards instead of old fashioned keys:

A quick last update for today:

I have finished implementing shooting enemies (both stationary and moving).

For the stationary ones I had to design a new graphic - so here we go, the turret:

Implementing it wasn't too hard, since all the mechanics were already in place (line of sight, shoots flying and hitting) but it still took some doing.

(Edited 1 time)

After taking a break yesterday today I started building some levels.

The first level is pretty much done - you go around, shoot aliens, get two Action-Point Upgrades (you start with two action points and end the level with four).

For level two to five I did the layout in tiled, but haven't placed enemies yet.

I'll try to get feedback on level one.. too hard? too easy?

And then design the finish the rest of the levels.

I am still thinking about putting in some voice acting - but I am not sure that will make the final cut.

Other then that I only plan on finishing up the levels and do some play testing. - No more new features from now on.

(Edited 1 time)

Just had a two hour bug/problem hunt.

The gwt version (html5) wouldn't run anymore.

The problem was the Json I am using for the game texts. (If I had just used simple string constants...)

The fix:

<extend-configuration-property name="gdx.reflect.include" value="net.jppresents.space.TextResources" />
<extend-configuration-property name="gdx.reflect.include" value="com.badlogic.gdx.utils.Queue" /

This had to go into the SpaceMain.gwt.xml.

The first one for my json class (this class is filled via reflection when loading the json file). The second one.. no clue why, but ArrayLists can't be deserialized otherwise.

Wow, man I am happy it's up and running again.

I had a friend playtest the first level.

Based on his observations I changed some stuff, mainly no longer can you can uneven amounts of action points. - Because that would mean you have to walk 1 tile each round, or end the round by clicking on yourself. (because shots cost 2 points.) - So now every upgrade to AP is 2 points at once.

Also some smaller stuff was found, like dead enemies were hiding upgrades under their bodies (now the upgrades are rendered over dead enemies).

And to better show the goal of each level, I added a teleporter device that you have to get to.

Other than that I finished level 2 monsters, started level 3 .. I still plan to release 6 levels.

Lot's of playtesting involved to find the right enemy strengh - for that I added a mode where you walk much much faster :)

Here is another level editor screenshot - with the teleporter level end point.

(Edited 1 time)

All my levels are done.

Tomorrow I will write the last mission control texts and then it's done.

I plan to publish to itch.io tomorrow night and then have a nice and chill weekend.

(Maybe some bug fixing, but it looks good so far.)

Here are all 6 levels:


The last one should be taken as a thank you nod to the great lib we are given :)

Also: the last one has no health packs, it's you or them, no healing :)

Let's see if anybody can make it there and back again.

I optimized my menu buttons.

Before I was using modified default skin buttons - but they only have a 1 pixel border.

When downscaling the menu, the border was sometimes lost. It didn't look good.

I have now made my own 9patch buttons, that are packed via texture packer and loaded via the skin.


Still not perfect when downscaled, but they work better :)

(Edited 1 time)

I already had the first version posted to itch.io...

... when my wife suggested we do the audio recordings for the "mission command" radio texts.

I had already scrapped the code (but that was back pretty quick, thanks to git) and we did it.

She recorded the messages, I removed the noise (cheap mic headset) and edited the sound a little. Then I cut it all up and converted to oggs.. and now there is voice acting in the game!

Give it a try here:


PS: I had a hickup (took me 5 uplaods to itch.io to figure it out) that the game wouldn't take any keyboard input when embedded on itch. The solution (I got it from the index.html of sanoke's jam entry) was to put window.focus(); in the index.html within the handleMouseDown function.


I have made a making-of timelapse for my game (it does have voice over comments):

It shows most of my development (except when I forgot to turn the tool on ;) )

It consists of 4572 screenshots - one was taken each minute.

So that means it took me about 76 hours to make this game.