Ludum Dare 36
The Theme is:
Ancient Technology

LD36 has ended!
Well done to everyone who took part.
1912 Amazing Games!

Posts Tagged ‘gif’

Desert Strife Post-Jam AI (with more code examples!)

Posted by
Wednesday, October 5th, 2016 2:31 am



Took a while (too many projects at the moment; loving it!), but here it is: Part 2. The basis of the system is still a reactive AI using heuristics. It doesn’t plan ahead at all, which is good enough even if it does show every once in a while.

The full AI code can be found here, if you care for that sort of thing!


Heatmap, the main technique utilized, simply stores values in an extra tilemap (int array!) for spatial information evaluation. In this case the heatmap stores threat and support values used in choosing the AI attack target and movement path.


Heatmap visualization

The recursive heatmap function is called for each enemy and ally on the map

Threat evaluation

Calculating the threat (and support) values is a cinch: Add up the probable averages of all usable weapon types of your allies and enemies. There is a bit of quess work involved if the enemy ammo counts are not known already.


┬áNothing out of ordinary here I’d hope


New feature alert! Taken that we already have threat values for each group and location data about safe areas, we might as well have a bit of fun with them! Every time a group gets into a fight its support value is compared to the threat level around it. A high enough difference will send the group in panic, running away from enemies and finally fleeing if reaching the level border. Now you can bully your enemies to submission!


Panic also ensues if the total enemy force is overwhelming, but that is checked elsewhere


Simple and seems to work alright. In the next project I’ll be using Monte Carlo Tree Search, no doubt about that. It is much less work with potentially more intelligent results. Working on a generic version at the moment.

Play it here!


seththefirst suggested taking a look into AI utility functions in part 1 . The threat level comparison turned out to be sufficient so I didn’t implement anything like it, but maybe you (yes, you!) will find it useful.

Desert Strife Post-Jam Build (Part 2)

Posted by
Wednesday, September 21st, 2016 1:47 pm


Missed the voting period slightly. Not that it matters much, deadlines were made to be broken.

Bug fixes, AI improvements and usability tweaks ahoy! Also added in a new feature: morale. Troops in a tough stop will panic and scatter for that extra layer of reelism!

Will do an extended AI write up soon’ish.

Play it here!

Desert Strife Post-Jam Build (Part 1)

Posted by
Friday, September 9th, 2016 2:42 pm


Quite the shocker that!

Had some spare time to sink into the post jam version this past week. Implementing the battle visuals was a blast! Got animation assets from a mysterious fellow member of the secret society! The less said about that the better.

Part 2 will be about AI improvements and more tweaks (I forgot a few!).

Play the post-jam version here


The original here

Mead Boy: Game Feel and Level Design

Posted by (twitter: @blubberquark)
Tuesday, September 6th, 2016 8:08 am


play Mead Boy or read on:

This is not a post-mortem of the development process, but an explanation of the game design and what makes it tick.

Game Design

Mead Boy is a small platformer where your goal is to drink all the mead. The more mead you drink, the more laggy your controls get. Alcohol wears off slowly and linearly, just like real life. Also like in real life, a single drink impacts your reflexes enough to make many tasks perceivably more difficult. A tenth of a second of lag is already noticeable. In order to make players not just wait out the effects of the alcohol, and progress slowly, there is hunger clock and a time-based scoring system. Food pickups set back the hunger clock, and Gold pickups increase the score. One per mille of BAC creates a lag of one second and takes ten seconds to wear off. This should incentivise players to look for food while stillslightly drunk. Levels are small and take under a minute to complete. Levels should pose little challenge “sober”.

Each level represents a real city from the Viking age. There is an overworld map that shows you where the city is, and how a river connects it to the sea. There is some looting and pillaging, but no combat or violence against people shown.





Game Feel

Speed and Momentum


Mead boy is a game about going right, going fast, picking up speed, and jumping far. (At least when you’re sober. When you are drunk, you pick up speed and go too fast. Your first instinct if the character is not responding right away is to hit the buttons harder.) There are only three buttons needed to control Mead Boy: Left, Right, Jump.

Mead Boy responds to button presses instantly, but he keeps accelerating until he reaches a top speed of 5.5 pixels per frame. When you stop pressing the button, he decelerates exponentially. At speeds below 1 px/frame he stops completely (like stiction compared friction). This way there is no “long tail” of slow sliding after landing a jump, which feels weird and floaty and may make you fall off a cliff when you don’t expect it. The following diagram shows a plot of speed and button presses, where you can see a long attack and a quick release phase:




Jumps are always the same height, and there is no way to increase or reduce the jump height. Like Mario or Sonic, Mead boy goes right fast. Mead Boy is not Luigi or Mega Man. The Camera only scrolls on the left-right axis, in order to de-emphasise going up or down.

No Turning on a Dime

Mead Boy can come to a standstill relatively fast, but turning around is harder: When he is still moving into the opposite direction, the slow acceleration takes longer than simply stopping first and then accelerating into the other direction. This makes the momentum feel “weightier”, but it is also kind of frustrating. Mead Boy is running really fast; you can’t just turn around. Well, now you know and can exploit the behaviour for speed running!





Level Design

play Mead Boy before you get spoiled!


haithabu level

Haithabu Level – Click to see at full resolution

This is a kind of tutorial and sandbox level. There are only three units of alcohol and enough food. You have to jump out of some pits, but there is no way to drown or to get stuck. You spawn on the left and have to go right. You can also go back left. You have to use both running and jumping controls, so I know you can use them when you advance to the next level.

How the level fits with the theme: This level is inspired by the Viking city of Haithabu. The destruction of Haithabu marked the end of the Viking age. Haithabu is your home base and a safe place. That’s why there is no longship. You arrived on foot. Haithabu is your home.


lindisfarne level

Lindisfarne – Click to see at full resolution

The second level is much bigger. There is only water on the left and land on the right. After the first mead pickup, there are two food items that should reset your hunger clock. The only “dangerous” jump comes right after: You can fall and drown, and you might still be slightly drunk at this point. You have to make a leap of faith. After the next jump, you are free to take all the gold and set the buildings on fire. Jumping to get the gold or over the small bump after the cathedral may be tricky due to alcohol, but you can safely retry: No real challenge.

How it fits the historical theme: The Viking raid of the Lindisfarne monastery marked the beginning of the Viking age. There are stone buildings and churches that kind of look like an English monastery of the era.


london level

London – Click to see at full resolution

This was the first level I had designed. There is more alcohol, the same amount of food, and you have to jump over a gap to get food. The last bit on the right requires you to jump onto a small platform after two units of alcohol. Definitely harder than Lindisfarne, but not much.

Historical Inspiration: The building on the right is a mash-up between the tower bridge and the tower of London. London was raided by Vikings multiple times. The tower bridge was not there during the Viking age, please forgive my anachronism.


paris level

Paris – Click to see full resolution

Paris is a step up in challenge. There are two deadly jumps in the beginning, lots of going up and down and the buildings you torch are relatively small. You have to go back and forth to collect all the food or gold.

The Lore: Paris was attacked by Vikings a couple of times under Charlemagne. Once they paid ransom, once they didn’t. Guess how that turned out. Also red wine and the Eiffel tower (super anachronism) to make sure you get that it’s Paris.


hamburg level

Hamburg – Click to see full resolution

Hamburg is the last and hardest level. It has the most alcohol, lots of water to drown in, and gaps where you have to jump right and up or down. I expect you to lose this on the first try. Nonetheless you can make many jumps drunk. Losing is fun!

History: Hamburg is a port city and a member of the Hanse. It has trading post houses right in the harbor. Also a dike. Also vikings.

play Mead Boy and comment please


Desert Strife Jam AI (with code examples!)

Posted by
Tuesday, September 6th, 2016 3:14 am


The Post-Jam version is still far away (I’ve hardly had any time to work on it yet) so I might as well talk about the AI of the Jam version and the plan for the Post-Jam AI.

Version one

The first version of the AI was finished in the morning of the second day. It had one goal and one goal only, EXTERMINATE! In simple terms each unit finds the closest enemy and moves towards it. They also check that the path to the enemy is not blocked, by simply finding a path to it. This could cause slowdown with bigger maps and larger unit counts, but here it is just fine and dandy.

VIEW CODE (embedding doesn’t work unfortunately…)

Version two

So far the AI doesn’t take into consideration the main mechanic: scavenging technology. Implementing such behaviour, the quick and easy way, requires nothing more than adding technology distance checking into the previous code. If there’s technology closer to the unit than enemies, then that is what the unit will go for. On top of this the unit won’t move until it has completely excavated the technology.


Version three

I could have stopped here, but there was an annoying deficiency in the artificial thought process. The units don’t prioritize actions; In other words, an attacking unit is sometimes blocked by a scavenging unit.

The fix is slightly more elaborate than the previous step, but by no means complicated: tally up the best actions from all units and choose the most important one based on the target type and distance. Here’s the final AI in action.



The future?

There are still a few things I’d like to implement in the AI, namely threat assessment and intelligent positioning. As luck would have it, there’s a single technique which can be used to achieve both of these goals: heatmaps! A heatmap is simply an extra tilemap which contains values based on unit proximity and threat level (if you are lazy you can even reuse the world tilemap objects for this purpose). Heatmaps can be used in selecting the target (lower threat value is preferred) and in pathfinding to choose the safest route to the target.


Keep it simple and you’ll go surprisingly far.

Play Desert Strife here

Desert Strife Post-Mortem

Posted by
Friday, September 2nd, 2016 12:28 am

One more jam, one more post-mortem. Such is the way of life (for me at least!)



Checked out the theme as it was announced (4.00 am around here). I knew what was coming based on the previous voting rounds, but no idea sprang up immediately (which is usually the case to be honest).

The brainstorming began officially in the next morning. Ranquil joined the storm later at which point all I had was a vague strategy game concept about scavenging and stealing technology. Movement of armies would have taken place on a world map and the action on a separate battle map. In the next few hours I managed to simplify the idea down to a single map close to the style of Advance Wars. Nine hours had already passed since the start of the jam so we set out to work with minimal fuss.


Light turn-based strategy isn’t the most demanding of genres and I had in fact created a similar prototype some 4 years ago. Unfortunately, the half-life of a codebase is way less than that and after 5 minutes of perusing I decided to rewrite the whole thing from scratch. That was a good call. The only system I reused was an A* pathfinding system, which I’ve been using for years in other projects including the last few jams.

No severe problems on this front, just a lot of work.


All the problems piled on the graphics artist this time. First off, Ranquil had been working for the whole summer on other projects, didn’t really like the genre and lastly the drawing table broke when only one asset, the character sprite and walking animation, had been finished.

Due to this calamity all non-essential assets were cut, among these battle animations (and any possibility of a separate battle screen). Ranquil shifted focus to other tasks, like audio research (and found a great song right away!). Luckily the drawing board issue was resolved by Monday and the last essential assets, like the desert ground tile and the main menu background image, were made and implemented. Despite the last day push some programmer art slipped in. (I take what I can get!)


With the game itself feature complete and playable only minor tasks remained: Audio implementation, main menu and tutorial. Once again, nothing I hadn’t done before, although for a jam tutorial this one takes the cake! The whole thing was completed with 2 hours to spare, a new record that. The building and uploading process took about an hour more for the tired mind.


Never have had this grave a production setback before, yet thanks to the small asset requirements of the genre the end product didn’t suffer significantly. The 72-hour jam is much more relaxed than the 48 hour counterpart with time for sleeping and breaks. I like that.

Had a good time and, once again, felt genuinely happy about the accomplishment. Now that is a feeling like no other.


Play it here!

And have a nice, relaxing post-jam life!

Desert Strife Desktop Builds

Posted by
Wednesday, August 31st, 2016 2:20 am

Windows, Mac and Linux builds are in.

Here’s a GIF for good measure:

Play it here!

Desert Strife in motion

Posted by
Tuesday, August 30th, 2016 4:56 am

As promised here’s a new GIF from the release version!


One of my programmer art assets slipped in, can you spot it?

Play it here!

Progress Report (67 hours in) – Desert Strife is done!

Posted by
Monday, August 29th, 2016 7:07 pm

The title says it all. Time for celebrations! Play it here!


Too tired to make a new GIF, this one is current enough…


Time to get some Z’s. Gotta catch a train tomorrow!

Have fun!

Progress Report (60 hours in)

Posted by
Monday, August 29th, 2016 1:03 pm

Feature complete! After trials and tribulations we managed to create and implement all required visuals and even audio. What a craft!

Take a gander. It is a long one this.
"156 seconds. NEW RECORD!

Stay tuned for the real deal. Only main menu and tutorial to go. Never had time for a tutorial before; exciting, right!

Progress Report (39 hours in)

Posted by
Sunday, August 28th, 2016 4:33 pm

Crunching tasks. Small GUI tweaks this time, with bug fixes and gameplay balancing.


Playtesting, audio-visuals and main menu left for tomorrow. Should be doable.

Progress Report (35 hours in)

Posted by
Sunday, August 28th, 2016 12:49 pm

Loads of progress in the programming space. Improved AI, initial GUI, and, most importantly, ancient technology are all in. The gameplay will take a lot of tweaking to get right though. At the moment the difference between winning and losing comes mostly down to luck. That is not by design, believe me.

a GIF a Plenty

The graphics are still temp, partly due to our graphics artist running into dire technical difficulties (drawing tablet broke!). That issue should be resolved by tomorrow. We’ll see if there’s enough time to go by!

Rough interface in the working, levels galore.

Posted by (twitter: @tselmek)
Sunday, August 28th, 2016 11:37 am

Got a rough base for a menu and a level selection screen as well as sketches of what the first tutorial levels could look like. Will leave them as is for now and improve them tomorrow, let’s make more levels now.

View post on

Progress Report (23 hours in)

Posted by
Sunday, August 28th, 2016 1:25 am

Where did those 8 hours go? Oh right… This human body requires respite and restoration.

Well yesterday’s AI problems are no more. Took less than half an hour to sort it out (shuffled the hacks around). Not that it is any smart yet, but at least it provides a proper fight.


Next up the titular ancient technologies!


Posted by (twitter: @rhythm_lynx)
Saturday, August 27th, 2016 6:27 pm

First day at the museum and the boss is sick. Guess you’ll have to improvise!


Progress is slowly being made

Posted by (twitter: @tselmek)
Saturday, August 27th, 2016 5:21 pm

Took us a lot of time to find a not-too-fancy idea, here’s our progress so far.

View post on

[cache: storing page]