About HuvaaKoodia

Entries

 
MiniLD #72
 
Ludum Dare 37
 
Ludum Dare 36
 
Ludum Dare 35
 
Ludum Dare 34
 
October Challenge 2015
 
Ludum Dare 33
 
Ludum Dare 32
 
Ludum Dare 30
 
Ludum Dare 29
 
Ludum Dare 28
 
Ludum Dare 26

HuvaaKoodia's Trophies

W.R.L.D. Champion! (LD38)
Awarded by TerraCottaFrog
on June 1, 2017

HuvaaKoodia's Archive

Can you say no to these ducks?

Posted by
Friday, April 28th, 2017 8:07 am

GIF!

Me neither.

The new build has bug fixes and a resized hat, huzzaa!

Play it here

They can talk too?

Posted by
Sunday, April 23rd, 2017 3:35 pm

GIF!

A mystery to modern science; most entertaining for the rest of us.

There will be ducks!

Posted by
Sunday, April 23rd, 2017 7:03 am

GIF!

 Nuff said.

Hostile Hyper Jump – Optimized

Posted by
Tuesday, March 7th, 2017 2:23 pm

GIF!

Global highscores are in, the build is optimized and, so far, the bugs have been fixed!

There’s still time to partake in the Elympics.

Play it here!

X-GIF

Intro

The prior two LD jams in the past year I worked in a duo; but this time, once again, I went in solo. It turned out pretty well, even though I only managed to squeeze 30 effective work hours into the time frame due to a hectic upcoming week. That week is now long gone so it is time for some reflection.

Plan

The day before the jam I got an idea based on a vision I had quite some time ago. Basically tactical squad management with robots that fall from the skies. The mechanical inspiration came from Atom Zombie Smasher (an old favorite) and the thematic inspiration from MGS5, which I’ve been playing for the last two months at this point (it is quite good, even if Kojima constantly tries to foil it with inane supernatural elements!)

Schedule

I knew that I couldn’t spend as much time on the project as usual so I laid down a simple, yet effective plan: programming first, critical graphics next, level design/tutorial third, and nice to have features if there’s any time left. Well, there wasn’t so audio among other things was cut.

Development

Surprisingly smooth going overall. More work on graphical assets would have been nice as the levels are just made out of simple shapes, but at least they are functional.  Coming up with the name was about the toughest job in all and even then the outcome exceeded my expectations (51 letter is pretty good right?)

Result

Fun jam! With more time the outcome could have been even better, but that happens. I did release two bug fix versions and I’d like to release a proper post-jam version after the holidays are over.

Have a restful rest of the year.

 

Play it here

Fixed a whole heap of small bugs and issues. Also added Linux and Mac builds!

Title

Play it here

That name! Long, but apt.

Title

Had a good time making it. I think there’s potential here, but the next few weeks are no good for me so don’t hold any hope of a quick post-jam version. Oh well.

 

Play it here

Progress Report (26 hours in)

Posted by
Sunday, December 11th, 2016 4:17 pm

This is pretty much it. Even the humans got themselves a model, albeit sans animations.

BIGGIFTAKESTIME_ISWORTHIT

There’s a lot more I’d like to add, but unfortunately it is going to be a busy next week for me. If only I could take Monday off, but alas.

Surely a few more hours won’t hurt too much, right?

Progress Report (20 hours in)

Posted by
Sunday, December 11th, 2016 9:38 am

Tacticool sheep extraction team?

Hmm, I’ll continue working on the name.

GIFEXTRACTION

I’ve kept my priorities in check. Simulation first, then critical graphics assets and thirdly all the levels. Now it is time for polish and nice to have features!

Progress Report (14.5 hours in)

Posted by
Saturday, December 10th, 2016 5:40 pm

Jumped on the graphics implementation already. Some of you might spot the inspiration.

GIFBOT

Requires texturing, but otherwise I’m quite happy with it. I might even reuse it for the enemies, if I don’t feel like modeling a human tomorrow.

Enough for the day.

Progress Report (10.5 hours in)

Posted by
Saturday, December 10th, 2016 1:41 pm

All the systems are more or less done (according to plan). Tweaking and polish are of course needed.

A FINE GIF-T

Plenty of time for graphics tomorrow, it seems.

Progress Report (4 hours in)

Posted by
Saturday, December 10th, 2016 7:05 am

My tactical extraction action simulation is coming along nicely (I’ll need to think of a snappier name at some point!).

GIFFY

The red cube obviously represents a human guard with a gun, while the green cube is a player controlled robot. The plan is to have three different kinds of robots who have to work together to extract resources and people from the level. Lots of features to implement.

Flying solo again so we’ll see if there’s any time for graphics.

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

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

GIF!

Intro

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!

Heatmaps

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.

Pic2Small

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

Panic!

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!

PanicCalculation_

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

Conclusions

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!

PS:

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

AI BATTLE GIF2!

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

AI BATTLE GIF!

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

or

The original here

Desert Strife Jam AI (with code examples!)

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

TL:DR KISS

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.

VIEW CODE

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.

NEW STUFF!

VIEW CODE

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.

Conclusion

Keep it simple and you’ll go surprisingly far.

Play Desert Strife here

[cache: storing page]