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.
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.
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!)
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.
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?)
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.
I had this terrible, game-breaking bug and was about throwing the towel. And then it kinda worked out. Congrats to everyone who finished in time. Cheers!
This is pretty much it. Even the humans got themselves a model, albeit sans animations.
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?
Tacticool sheep extraction team?
Hmm, I’ll continue working on the name.
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!
After struggling with the game concept for a while, I went ahead with an infinite runner-ish idea. The game still lacks scoring, gameover-restart game loop, GUI and SFX.
It’s almost fun to play already
To move the chair, you must become the chair. I’ll probably do some more work on the camera, but I think the movement controls are working pretty well. You click on the furniture you want to move, and then control it with WASD to move and QE to rotate.
Now it’s time to dig into the game mechanics of furniture arrangement.
Jumped on the graphics implementation already. Some of you might spot the inspiration.
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.
All the systems are more or less done (according to plan). Tweaking and polish are of course needed.
Plenty of time for graphics tomorrow, it seems.
My tactical extraction action simulation is coming along nicely (I’ll need to think of a snappier name at some point!).
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.
I’ve decided to build a game about arranging furniture in a room. Working title is “Table Jockeys”. The rooms and furniture will all be procedurally-generated. I’m imagining a first-person puzzle game, along the lines of Portal, Talos Principle, Antichamber, etc.
I’m using Unity, and the Procedural Toolkit which came with a neat chair generator. I had to write my own collision generator for the chairs, which basically mashes together a bunch of box colliders. I also grabbed this nice smooth mouselook script from the Unity wiki.
I’m gonna get some sleep. Tomorrow, I’ll start generating some tables. Once I’ve got a few basic furniture types, I’ll make a grabbing/moving interface, and work on rules/puzzles for furniture arrangements.
I don’t know yet where I’m heading to with the game itself but at least I have a running pickle lad now.
Edit: yeah, that’s shipping quality right there. I accept nothing short of perfection!
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.
The recursive heatmap function is called for each enemy and ally on the map
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.
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.
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.
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 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.
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.
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.
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!
play Mead Boy before you get spoiled!
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.
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.
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 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 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.