Header image

Don't forget us Linux Users

posted by pschichtel | 05 October 2022

I've posted this before and will do it again: Please publish for Linux or even better for Web.

I'm aware that it is not easily possible with all game engines and it might not work for every game, but many Unity-, Godot- and Unreal-based submissions can probably be easily exported for Web.

An added bonus since LD51 is, that you can directly embed your web-exported games into the game page. Checkout the announcement and the related guide.

My previous posts on the topic:


Automating your Unity WebGL export on Github

posted by pschichtel | 06 May 2021

We at Banana4Life develop our games on Linux. Unity on Linux most of the time works fairly well, but every now and then we have some issues during the WebGL export. This time the export kept failing due to an incompatible python version on our systems.

Instead of looking into how to fix the export on our systems I started looking into ways to export the game using a containerized version of Unity. It doesn't take long to find the Game CI project and eventually Unity's official docker containers.

When using the containerized version of Unity, you still need a license file for it to start. If you are a free user of Unity, which I'm guessing is probably most of you, you can either take the file from your local installation or use the manual activation process. Try not get too confused about all the different "howto" guides for building your project with Unity's CLI, most of them are probably outdated. Stick to the official Unity documention, it covers all the options pretty well.

Building locally in container, while working perfectly fine, was suddenly not enough for me anymore and I started looking into building the export and deploying the WebGL version using Github actions. Luckily the GameCI project also built a ready made Github action that is pretty well documented: https://game.ci/docs/github/builder.

If previously blogged about how we deploy our games: here and here. So we simply create an orphaned branch for gh-pages and put the jam submissions into separate folders in there. Likely, there is an action for that as well.

So with this workflow on Github we now have a fully automated build and deployment of the WebGL version of our game within 10-15 minutes after the push to Github. This almost feels like cheating.


LDJam API misbehaving

posted by pschichtel | 04 May 2021

I'm currently working on a new feature for the website of our LDJam team (https://banana4.life) that's using the api.ldjam.com in order to pull certain things. I'm only using /vx/node/get/..., /vx/node/feed/... and /vx/node/walk/....

While trying to fetch the feed of platform tags (the values of the "platform" dropdown when you add downloads to a game), I noticed a weird behavior in the API.

When I get the feed as one large request with the following link, I get the 89 unique node IDs I expect: https://api.ldjam.com/vx/node/feed/0/all/tag/platform?offset=0&limit=250

This can be reproduced with: curl -s 'https://api.ldjam.com/vx/node/feed/0/all/tag/platform?offset=0&limit=250' | jq -r '.feed[].id' | sort | uniq | wc -l

However if a get the feed in two chunks by doing the request first with offset=0&limit=50 and then with offset=50&limit=50, while still the same amount of node IDs, the list contains duplicates.

This can be reproduced with: curl -s 'https://api.ldjam.com/vx/node/feed/0/all/tag/platform?offset=0&limit=50' 'https://api.ldjam.com/vx/node/feed/0/all/tag/platform?offset=50&limit=50' | jq -r '.feed[].id' | sort | uniq | wc -l

The first command prints 89, the second command print's 57 (at least at the moment I tried this today).

I looked at the implementation of the API over at https://github.com/ludumdare/ludumdare to see what is going on. When I follow the code paths for the given argments (root=0, method=[all], type=tag, subtype=platform, offset=..., limit=50) and it seems to eventually end in a SELECT ... ORDER BY n.published DESC LIMIT 50 OFFSET ... query against the MySQL database, where n is the table with all the nodes.

From what I read about MySQL, OFFSET happens after ORDER BY, so the result should be consistent, however the behavior I see tells a different story.

Can anyone confirm the behavior and possibly even explain it?

Code path that's taken:

  1. Controller code behind /node/feed at the line it calls into the DB access code: https://github.com/JammerCore/JammerCore/blob/8f8e2366083fbd57865a7baa874b2d6305aa37af/public-api/vx/node.php#L481
  2. The DB access code at the point where the DB query is executed: https://github.com/JammerCore/JammerCore/blob/8f8e2366083fbd57865a7baa874b2d6305aa37af/src/shrub/src/node/node_feed.php#L514

HOWTO: Employing Minecraft Players as 3D Artists

posted by pschichtel | 28 April 2021
  • Step 1: Get a Minecraft Community.

    Luckily we at Banana4Life also have a small Minecraft community called Cube Island (German), which was eager to help out!

  • Step 2: Setup a Minecraft Server with a flat world.

    Simply download the official Minecraft Java server and set the following values in the server.properties file:

  • Step 3: Unleash your ~~minions~~ creative team.

    We placed a wall with the models we needed for the game, basically like a little kanban board.

All models build in Minecraft
  • Step 4: Get yourself a tool to export parts of a Minecraft world as 3D models.

    We used jMc2Obj which produces models in the Wavefront (.obj + .mtl files) format. The released version has a few issues with backface culling (Unity kind of requires it), so we fixed that. If you plan on using the textures from the export directly, make sure you use a texturepack you are allowed to redistribute. This is not the case for Minecraft's official texturepack. We were lucky again as a community member built their own texturepack. Alternatively you can also just use random blocks and skin them however you want in post-processing. Colored concrete blocks might come in handy here.

    If you plan on animating parts of the model, make sure the builders keep the sub-models separated or tell your exporter to generate a separate object/mesh for each block.

The exporter view of the Minecraft world
  • Step 5: Import the created models either directly into your game engine or into a 3D modelling software for post-processing.

    In Unity specifically we had to change a couple of settings on the textures and materials. Since we used a Minecraft-inspired texturepack we wanted to retain the blockyness of the texture and disabled texture filtering and enabled transparency from alpha.

    From your first model export, take the .mtl file and give it a generic name (we called it minecraft.mtl), since jMc2Obj generates a full material list (full as in it contains all Minecraft blocks) for each export.

    Before importing the .obj file, open it in your text editor of choice (it's a simple text-based format, so any editor will work) and replace the first line starting with mtllib by mtllib minecraft.mtl. This is important, so you can reuse the same materials for all objects later on, when you customize the material settings in Unity. When importing the .obj file into Unity, all materials will be embedded materials that cannot be changed. In order to change them, they have to be extracted using the "Extract Materials..." button on each model. The extraction will generate Unity material objects for each material used in that particular model, even if some already existed. You might want to delete the duplicates to avoid confusion later on (e.g. using find \( -regex '.* [0-9].mat' -o -regex '.* [0-9].mat.meta' \) -delete. This will also require you to remap the materials in the model using the "On Demand Remap" feature on the model. For naming you will need to select "From Model's Material" and you might have to play with the search option depending on where you placed your materials when extracting them.

    For the materials of non-cube blocks (e.g. plants, sugar cane, chains, ....) you might want to switch the material rendering mode to "Cutout" and for materials with transparency (all glass blocks, water, ...) you should use mode "Transparent".

  • Step 6: Profit

    Minecraft models in actual game

    If you want to see these models in action have a look at Drillromantik, the entire sources including the textures, models and materials are all on Github.


Is it me or does the blog kinda suck?

posted by pschichtel | 07 October 2020

I see very little technical posts, time lapses, post mortems or other interesting blog posts about the jam entries.

What I do see a lot however: Lots of people spamming "please rate my game" posts.

This feels like abusing the global blog feed to circumvent the karma/coolness/whatever-it's-called system Ludum Dare lives by. Play games, rate games, write feedback and eventually your game will be played, rated and receive feedback.

In many cases games that get spammed onto the blog tend to have received lots of ratings, yet haven't actually given a whole lot, which is kinda sad.

Apart from the possible unfairness in the rating process, it also sucks that all the interesting posts that get written are quickly moved out of visibility. I have yet to find a way to search for content in anyway. There is no way to categorize posts, there is no search function on the site, no way to filter away advertisement posts.

Am I the only one annoyed by this?


Legendary Orbit Golf: Lessons Learned

posted by pschichtel | 06 October 2020

Trying to solve NP-hard problems in realtime is not a good idea

Legendary Orbit Golf (https://ldjam.com/events/ludum-dare/47/legendary-orbit-golf) procedurally generates a small universe, which is a field of planets. In order to not look over clean and make the paths between the start and the destination hard enough to be interesting, we didn't want just spawn them into a fixed grid (quad or hexagon grids come to mind). Instead they should be spaced unevenly and the planets with various sizes should try to pack close together while never overlapping. This problem is commonly referred to circle packing, specially circle packing with different circle sizes. Unfortunately this problem is NP hard and kinda time consuming to find good solutions. The original game idea included a infinite universes, so that you can shot into any direction are guaranteed to eventually hit a planet. We cycled through a various approximation approaches to get a stable planet layout in a reasonable time, the final solution is fairly simple, but is unable to execute continuously, because it is too slow. So we are now just generating one finite universe on startup and that it. Trying various approximation approaches and trying to integrate them and debugging problems around it probably took 2 people over half a day of time.

Celestial mechanics are kinda complicated

The game is basically a gravity physics simulation. But instead of being perfectly realistic, we are making a game, so we have to bend physics. So a general n-body simulation would not fit the intended game play, as this would be to hard for the player to easily chose stable trajectories and for the game it would be too hard to procedurally generate a "fun to play" planet constellation in a reasonable time. Hardcoding a universe would take too much time too.

So we ended up doing simple 1-body simulations, considering the masses of planets and the spaceship vastly different, make the ship insignificant. Planets do not interact with each other gravitationally, they have a gravity well defined by a simple radius and these radi do not overlap, so the ship is only ever being affected by one planet, making a log of game logic and gameplay a lot simpler.

A surprise here was, that single precision floats are not precise enough to do even these simplified simulations, which lead to various inconsistencies between the displayed path (which was simulated using fixed time steps) and the actual movement of the ship (which is simulated using Unity's Time.deltaTime) causing all sorts of problems. Trajectories that were predicated to fling-shot around a planet suddenly spiraled into the planet, orbits where unstable when they should be stable, stable ellipse trajectories around a planet converged to a circle and so on. In the end this took some gameplay adjustments ("it's not a bug, it's a feature") and some more math (kepler's equations) to get consistent results. The simulation and all the problems around it took one person easily over a day.

Learned Lesson

Develop your ideas further early on, invest some more time into researching solutions and possible complications around your key problems (here universe creation and simulation). Toying around and cycles through various, possibly vastly different, approaches during the jam, possibly needing massive refactorings will slow you down and will introduce lot's of subtle bugs.


Publish for Web!

posted by pschichtel | 06 October 2020

Come on everyone, publish your games to the web.

Personally, I will not play games that only provide binary downloads.

  1. Most games don't publish for my OS (Linux), which is fine, I guess most of you are on Windows
  2. Binaries are kinda untrustworthy. I've seen several games that produce (probably false-positive) anti virus warnings on Windows systems.
  3. Most games do not publish sources, at least not directly in the ldjam page.

I will play native binaries iff the web version or the screenshots really hooked me and the native version promises some enhancements (usually better performance or controls).

Publishing for the web is pretty easy in probably all commonly used game engines (Unity, Unreal, Godot, LibGDX, ...).

For Unity you might need to disable compression in the web player settings before exporting (there are known bugs around it), but other than that it's just:

  1. Install web publishing support, if not already (in the Hub: "Add Modules" on the installation)
  2. Go to build settings
  3. Select WebGL
  4. Click Switch Platform
  5. Click Build, Select a Folder
  6. done.

It takes a bit longer than a native export, but it should generally work. If you are using UnityEditor classes (Handles and Gizmozs probably), you need to wrap them in #if UNITY_EDITOR #endif blocks or move the code to separate classes in the Assets/Editor folder, but the export errors are fairly clear on that.

"But where can I upload the export then?" you might ask.

I wrote a post about that for LD 38: https://ldjam.com/events/ludum-dare/38/where-is-mommy/submit-for-all-the-platforms

We at Banana4Life host our code in Github, so its natural to host the web export on corresponding Github Pages in the same repository as the source. Recently Github changed it, so Pages are not enabled automatically, when you push the "gh-pages" branch. You can now use any branch, but you have to enable Pages in the repository settings by selecting a branch and root directory.


Our progress so far...

posted by Rahtainka | 27 April 2019

Hey guys,

we are a little team from Germany and decided to remake an old unfinished student project. We'll make a color based tower defense.

If you want to watch our progress live, you could join our livestream: https://www.twitch.tv/bananafourlife

photo_2019-04-28 01.42.16.jpeg
shooting 2.gif


Katharina | Rahtainka


Finally done!

posted by Rahtainka | 24 April 2018

Hey guys,

I've just released our game and am happy to go to bed now. My alarm rings in 5 hours ... But I'm looking forward to playing your games and streaming them the next days. I will post a post-mortem tomorrow.



A hint even for people who work with Unity and wonder why the WebGL version made with Unity 2017.4 doesn't work:


That cost us at least two hours today. Maybe it will help one of you.

Good night! β™₯️


We are in!

posted by Rahtainka | 21 April 2018

Hey guys,

we are a little team from Germany and this is our 7. Ludum Dare. Due to the time difference, we only started 3 hours ago. And we overlooked the example and decided to make a round based racing game. πŸ˜„

We decided in advance to make either a battle royal game or a racing game because we wanted to do an AI again.

We wish you success and a lot of fun!

You could also join our stream: https://www.twitch.tv/bananafourlife


Greetings from Germany

Katharina | Rahtainka


Please export for Web and/or Linux!

posted by pschichtel | 03 August 2017

I'm a Linux user and from our team only the graphics guy is using Windows. Anyone using a recent version of Unity or libGDX should be able to export a Web-version or at least versions for Linux and MacOS.

Not only will you make me happy, but you will probably receive more rating as well due to the higher accessibility!

Our game Legendary Space Space Space has a Web version, versions for Windows, MacOS and Linux and is completely Open Source.


I'll play YOUR game!

posted by Rahtainka | 02 August 2017

Hey guys,

I would like to play your games and start live streaming in an hour :)

Just add me a link in a comment.

The only condition is that your game has a web version.

Thanks ❀


I need YOUR help!

posted by Rahtainka | 16 May 2017

Hey guys!

I have a small bet with one of our developers. I must get at least five additional reviews for our game in the next four hours. (If I win I get somthing I want πŸ˜‰)

Big problem: I'm at work right now 😟

I promise you I'll play and rate your game when I'm at home.


Thank you!


Greetings from Germany

Katharina | Rahtainka


Post your horror games and I'll play them!

posted by pschichtel | 15 May 2017

We, Banana4Life, submitted "Where is Mommy?" to LD38 as our first ever attempt at an horror game. Getting the mood without breaking it throughout the game was a real challange, but we are pretty happy with the end result.

Did you make an horror or have you played one? Please share them, I'd really like to play them!

Where is Mommy?


My mum make a playthrough on YouTube!

posted by Rahtainka | 13 May 2017

Hey guys!

My mother is probably our biggest fan and makes with her 55 years Let's plays. Also from our game. I have the last few days bothered to provide the video with English subtitles.


Have a look at it so that the effort has paid off. (I can tell you it was a lot of work πŸ˜‰ ) And be kind to my mum.

You can also play and rate our game. ❀


Warm greetings from Germany

Katharina | Rahtainka


Improved Post-Jam Version of Where is Mommy!

posted by pschichtel | 06 May 2017

Hi guys! @faithcaio and I have worked on an improved version of our game "Where is Mommy". We have read the feedback and tried to fix the most them in this new version.

You can now rotate the camera freely around the player and we improved our game play hints, so you guys should better understand how to play it!

Where is Mommy?


Submit for all the platforms!

posted by pschichtel | 02 May 2017

Hi, I'm from the team Banana4Life (we made "Where is Mommy?"). Until now, I have been the one in charge of packaging the game and making it available to the world. @jqnas in the meanwhile makes the submission post for the game.

From our previous 6 game jam submissions and a lot of hours playing other submissions, I have collected some experience when it comes to submitting the game.

When to start Exporting?

Unexpected problems during the export process can easily delay your submission process beyond the submission hour. Depending on your internet connection, uploading the files will take another chunk of your submission time. We make our games using Unity3D since the last few jams (libGDX and other Java-based frameworks before), which makes exporting to various platforms very simple, but there are still a few gotchas like stray imports that cause compilation errors due to missing references. Most of the problems can easily be googled and are fairly easy to solve, but this all takes time. Many of the problems can be detected and prevented early on. So the punch line really is: Start testing your build early as if it was already submission hour.

Which Platforms and in which Form?

Short answer: All the platforms.

Generally more supported platforms means more people can play your games. In addition to supporting platforms, it should also be as easy as possible to run the game on every supported platform. An easy to start game would be a single executable file that can be executed from a graphical desktop. An hard to start game would be a huge number of files that require various other things to be installed beforehand.

In our libGDX days, we build a multi-platform self-contained JAR and a Windows executable wrapper using Launch4J. This worked ok, but still required to install a Java runtime and usually a shell on Linux desktops. libGDX' native components also limited the support beyond the common 3 operation systems and the x86 processor architecture. While it does support a web export using GWT, it was usually too time consuming to setup and keep working for our game jam projects.

Unity3D supports a lot of platforms, usually a lot more than the game will ever be played on. The best thing however: All platforms are supported natively and are easy to export to, including the Web.

So now we usually build Windows and Linux versions for play-testers, because this are the platforms we develop the game on and they are fast to export in Unity. For the submission we go with dedicated exports for Windows, Linux, MacOS and the Web. Native versions are great because they typically run smoother and they can be stored by the users for later replaying. A Web version is great because it runs everywhere, where a WebGL-capable browser can run.

Web versions are also the easiest to play, because LD users will already using a browser and it is most likely capable to run the game. This is good, even if it performs sub-optimal. If web version can generate enough interest in the game, a player will probably download a native version (if available) to get a better experience.

So my recommendation is: Export at least for the Web, but if your game performance intensive provide native version as well. Today ther are quite a few options to get your game into the browser like GWT (Java) and emscripten (native), so get familiar with them.

Where to Host?

Hosting the game is the last step you have to figure out, since ldjam itself doesn't provide hosting space. There are a lot of options here as well, some nicer than others. As a user I prefer to download games from sources I know and trust, so more common and well known the better. I also prefer to know from what the binaries were built and the possibility to build it myself, even if I rarely do that.

We in our team heavily use Git and Github. We develop all our games in the open with the code and assets on Github and the process live on Twitch. Many people here are familiar with Github, which does provide two very valuable features: Releases and Pages.

Releases are great because they allow you to directly link a source code state with the binaries built from it. New releases will not replace old ones, will coexist with previous ones.

Pages are nice, because the hosting is free and versioned through git just as everything else. This is perfect for the web version of your game. Just create an empty branch called gh-pages and put your web version into it. As soon as it's pushed to Github, it will be available at https://.github.io//, which can be linked from your release description.

Where you host is your choice, but you should prefer places, that are fast (can take a lot of downloads) and will stay for the future. Github covers that well while being free for open source projects.

How to Post?

There is a lot to say about good and bad game posts, here just a few things about mentioning your game release. You should mention all supported platforms explicitly, so the user can directly see if he can play it and sites like Feedback Friends can determine the supported platforms for filtering purposes. You should also make it clear, if certain builds of your game are not tested, you can even ask for feedback from users on these platforms.

TL;DR: Make the game playable in the browser or at least don't forget Linux!

PS: Play our game on Windows, Linux, MaxOS or directly in your browser: Where is Mommy?


My second selfwritten song!

posted by Rahtainka | 01 May 2017

Hey guys,

first of all I have to say I am an huge portal fan and I love the credit songs! So I decided to write a credit song for each game we make. If there is enough time. This time it was and I wrote and record in the last four hours a song for our game.

I am sure that not everyone play our game until the end and because of that some people don't hear the song. In the comments I got almost no feedback. Therefore I make this blogpost. I would like to get a little bit more feedback. Is it so bad that only one mentioned it? Or do you think that it's unusual or bad to make a song for the credits?

I'm not 100 percent satisfied with it, because I had a sore throat and have to sing quiet because it was very late and I'm a bit shy and did not want the others to hear me sing. (I know it's ridiculous... But you can't imagine how much overcoming this costs me each time to add and publish a song to the game)

Enough of words. Here is my song:



If you want to play our game: https://ldjam.com/events/ludum-dare/38/where-is-mommy

Greetings from Germany

Katharina | Rahtainka


Too many cooks spoil the broth

posted by pschichtel | 27 April 2017

Hi fellow gamedevs,

I'm part of Banana4Life, a team consisting of @rahtainka, @faithcaio, @jqnas and me. We made the small horror-ish game "Where Is Mommy?":


One thing we noticed during the development of the game (or more precisely nearing the end of the jam): We produced a lot more and higher quality content in a shorter time span compared to our previous Ludum Dare appearances. During the last Jam we had three additional team members working on the game, yet we barely managed to publish the game in time. This time we easily finished several hours before the submission hours and had an overall better game.

This made us think about what went wrong last time, because our process stayed largely the same. In my opionon, there are two possible reasons, why this might have happened:

  1. Management overhead: Intuitively more developers would mean more work can be done and in theory that is probably true. However the larger the team gets, the more difficult it becomes to keep everyone on track with the project. Everyone needs to have a common vision of the game and everyone needs to be roughly aware of what others are doing. Communicating the vision and work will consume more time as the team size increases. Failing to communicate will most likely result in slowdowns due to duplicate work, merge conflicts and will lead to a distorted end result.

  2. Experience gap: Our core team (the previously mentioned people) work pretty well together and we have already participated in four previous Ludum Dare jams together (more in other constellations). Our mode was always the same: One artist working on visual assets, one artist working on acoustic assets, two programmers working on the logic and game/level design shared across all four (we generally make all our assets from scratch). The three new guys were unexperienced in game jams as well as with the technical platform (Unity3d). This lead understandably to a lot of questions which in turn took a lot of time away from the more experienced members. Additionally a lot of communication, which normally happens implicitly in the small team, did not happen across the entire team which lead to more confusion and slow downs.

For us, four people actively working on the game seems to be the sweet spot with maybe one additional member for some dedicated task (e.g. UI).

I'd like to hear your opinions and experiences on the topic: Do you work in teams? How big is your team?

And of course opinions on the game are just as welcome.


Where is mommy - Postmortem

posted by Rahtainka | 26 April 2017

Hey fellow gamedevs,

We are a team of four German students (Faithcaio (@faithcaio), pschichtel (@pschichtel), jQnas (@jqnas), and Rahtainka (@rahtainka)) and we name ourselves Banana4Life.

We have developed the game Where is mommy for the fifth ludum dare we took part in.

I personally think it's our best entry so far.


What went right?

  • The game is playable and we noticed no bugs so far
  • We all met up at one place and were really productive
  • We have decided to take part only as a core team (4 persons) and have done more and a better game than the last time with 7 persons
  • We slept a reasonable amount of time (and weren’t completely destroyed after the weekend)
  • We used Unity with Git this time instead of Unity Collab
  • We had even time left at the end and it was all very relaxed
  • We had a lot of fun

What went wrong?

  • We had some problems with the movement controller

What we want to do better?

  • I think we could improve our streaming setup (this time we had some troubles with our streaming server and had no webcam and no microphone)

My personal thoughts

In our team I'm responsible for the music and the sound and my goals were to create the right mood with the background music and sounds and to write and record my second self written song. I think the first goal I well fulfilled and the self written song for the credits I wrote and record in the last five hours. So for this amount of time it has become good. I am very proud of the heartbeat sound which I have made myself completely.

Until the next Ludum Dare I would like to make more music to get more practice with Logic X Pro and recording stuff. Because I have noticed that I get better with every Ludum Dare but only deal with it during the gamejam and I think more practice can never hurt.


I hoped you liked our short writeup.

If you are curious now, you can play our game "Where is mommy?": https://ldjam.com/events/ludum-dare/38/$23106

or listen to my music: https://soundcloud.com/rahtainka

We would love to get feedback from you!


Team Banana4Life | Rahtainka

P.S.: For the self written song you have to finish the game. It isn't on soundcloud yet πŸ˜‰


My personal progress with music and sound

posted by Rahtainka | 22 April 2017


I want so share with you my personal progress with the music for our game. I am really happy so far and I am very proud of the heartbeat i do by my own. If you have any suggestions feel free to leave a comment.


For the rest progress of the rest of our game you could visit our live stream!


Greetings from Germany Katharina | Rahtainka Team: Banana4life


Legendary Legionnaire Winter Massacre - Post-Mortem

posted by bananafourlife | 13 December 2014

Hey fellow gamedevs,

We are a team of four german students. We name ourselfs “Banana4Life” and have developed the game “Legendary Legionnaire Winter Massacre” for the third ludum dare we took part in. I (Jonas) made a quick LetsPlay of it here:


You can rate and play our game here: Legendary Legionnaire Winter Massacre

But now lets get to the post-mortem. Like last time we didn’t have huge problems and got even more stuff done than last time. But lets start with what went right.

What went right?

  • The game was playable and apparently fun to play.
  • We all met up at one place and were really productive.
  • We developed a cool idea during the game. Things like unicorns and aliens were spontaneous ideas.
  • The graphics were developed steadily parallel to the code and thus weren’t a product of the last minute.
  • We implemented our core gameplay first and after that improved upon it.
  • We partly had a lot of features that we wanted to implement, but cut the right features at the right time.
  • We slept a reasonable amount of time (and weren’t completely destroyed after the weekend).

As you see the most important parts went right and I think we did a pretty good job developing the game this time. But we had some small problems anyway.

What went wrong?

  • We didn’t have the final idea from the beginning on and had a hard time with the theme.
  • There were a few graphical features I wanted to implement, like random props(grass, stones, …), that I did not have time for.
  • Not all of us could work on the game for the whole third day, because they had to go to university.
  • The rendering of the walls and floor tiles could have been solved better.

Most of the “What went wrong?” stuff could be solved with more time and maybe some more structured code on my side rendering the wall and floor tiles. (But it worked anyway)

What we want to do better?

  • Think a bit more before writing code. (maybe, maybe not)

So I think we have an action plan for the next time.

  1. Try long enough to come up with a good idea.
  2. Make the game.
  3. Play more games.
  4. Enjoy the internet fame.

I hoped you liked our short writeup.


Team Banana4Life

P.S.: Play and rate our game please.


Music finally finished!

posted by bananafourlife | 12 December 2014

Hey Guys,

I am really desperate. Could someone tell me why I have in one post a cool media inclusion and in the next it won’t work. That’s really really annoying. :(

This time it was a challenge for me to create music which fits in the theme. But finally I am finished!


Now I will focusing on the sounds and maybe stream a little bit.

Our stream: http://www.twitch.tv/bananafourlife



Work in progress...

posted by bananafourlife | 12 December 2014

Hey Guys,

here an update. Our game has an name: Legendary Legionnaire Winter Massacre

Story: “A legionnaire had build a snowman.
Suddenly aliens destroy it.
Take your revenge!”

You could hear the beta musicversion on our stream: http://www.twitch.tv/bananafourlife

Previous screenshots:

image_2014-12-07_16-16-12 bild

Greetings :)


Team Banana4Life is in!

posted by bananafourlife | 12 December 2014

Hey guys,

We are four students from Germany. It’s the third time we join the contest. Our last game at Ludum Dare 30 was Disconnect: http://ludumdare.com/compo/ludum-dare-30/?action=preview&uid=41477 . This time we will use following tools and technologies:

Programming Language / Engine: Java / libgdx

IDE: IntelliJ

Version Control / GUI: git / SmartGit

Graphics: GraphicsGale

Sound: Garageband

Streaming: OBS

Our stream will be in german language. You can find it at http://www.twitch.tv/bananafourlife . We have a shared twitter account https://twitter.com/bananafourlife where we will post when we will stream. Just follow us to see the hottest news about our streams.


Have a nice Ludum Dare 31,

Team Banana4Life


Disconnect - Post-Mortem

posted by bananafourlife | 02 December 2014

Hey fellow gamedevs,

We are a team of four german students. We name ourselfs “Banana4Life” and have developed the game “Disconnect” for the second ludum dare we took part in. I (Jonas) made a quick LetsPlay of it here:


You can rate and play our game here: Disconnect

But now lets get to the post-mortem. We didn’t have huge problems this time, after we spend half of the time developing a game that we threw away and started over last time. But lets start with what went right.

What went right?

  • The game was playable and apparently fun to play.
  • We had a cool idea from the start up and didn’t change it later on.
  • The graphics and music / sounds were developed steadily parallel to the code and thus weren’t a product of the last minute.
  • We implemented our core gameplay first and after that improved upon it.
  • We partly had a lot of features that we wanted to implement, but we cut the right features.
  • We slept a reasonable amount of time and weren’t completely destroyed after the weekend.

As you see the most important parts went right and I think we did a pretty good job developing the game this time. But we had some small problems anyway.

What went wrong?

  • We spent a lot of time working on collision detecting fixing it over and over but it never really worked.
  • At the end time ran out and the one level we had is pretty short.
  • One of our developers worked remote and wasn’t in one room with the other people which made communication harder.
  • Not all of us could work on the game on the third day, because they had to go to work.
  • The rendering of the walls could have been solved better.
  • Again the collisions were really annoying. Especially with syncing the player positions.
  • We didn’t play enough games

Most of the “What went wrong?” stuff could be solved with more time and maybe some more structured code on my side rendering the walls. (But it worked anyway)

What we want to do better?

  • Meet up all in one location
  • Maybe implement a little framework for the collisions or use an existing framework, because that would be a huge timesaver.
  • Take a day off the next day so everybody can work on the game the whole time.
  • Think a bit more before writing code. (maybe, maybe not)
  • Play more games

So I think we have an action plan for the next time.

  1. Prep a bit more by chosing a physics framework or something like this
  2. Try long enough to come up with a good idea. (Like we did this time)
  3. Make the game.
  4. Play more games.
  5. Enjoy the internet fame.

I hoped you liked our short writeup. Greetings,

Team Banana4Life

P.S.: Play and rate our game please.


Ludum Dare 30 - Disconnect

posted by bananafourlife | 02 December 2014

Hey guys,

We are a german team consisting of 4 members. We just submitted our game “Disconnect”.


You play two players that are in two different worlds, but were connected by evil scientists. Now they can only move when the other person can move too. They only have a disconnector that allows them to wander around independently for a short time before the energy goes out. You need to find the endless powersource, developed in the same lab, to be able to disconnect and free the two forever. But be aware of the guards walking around.

I (Jonas) made a short made a playthrough of our game for you to watch:


Have fun with our entry,

Team Banana4Life


Twitter: @bananafourlife


Team Banana4Life is in!

posted by bananafourlife | 02 December 2014

Hello Ludum Dare folks,

We are four students from Germany. After entering Ludum Dare 28 with a slightly other lineup, we are now back in the game. Last time we submitted #YOGO Platform (The theme was “You Only Got One”). This time we will use following tools and technologies:

Programming Language / Engine: Java / libgdx

IDE: IntelliJ

Version Controll / GUI: git / SmartGit

Graphics: Photoshop

Sound: Garageband

Streaming: OBS

Our streams will be in german language. You can find them at jonasdann and pschichtel. We have a shared twitter account where we will post when we will stream. Just follow us to see the hottest news about our streams.

Have a nice Ludum Dare 30,

Team Banana4Life