Ludum Dare 56 October 4–7, 2024

The speedrunners of Springtail

I wanted to share the journey of the current world record of my game, Springtail.

@coatline made a great video about his journey completing and speedrunning the game, ending up with a record time.

Coatline video

Then, @klaus-peter responded with his WR run.

Klaus-Peter video

Finally, a new contender submitted the current WR.

Mindtrap video

It's been really cool to see interest in speedrunning my game. The skips found, and the speed and accuracy these players have rushed through the game are honestly amazing.

Edit (3 hours later) : A new WR has been set!

Klaus-Peter video 2

Edit 2 (8 hours later) : A new WR has been set!

Mindtrap video 2

Edit 3 (10 hours later) : A new WR has been set!

Mindtrap video 3

Edit 4 (24 hours later) : A new WR has been set!

Mindtrap video 4

Play Springtail

Stuart's Colors

After a few fun sessions with the jam last week, we've felt inspired! My mind keeps going back to the little world we created with our prototype.

We went for a rather distinct and minimalistic style, and I've been testing out some alternatives. What do you think? StuartsColors.gif

It was very tempting to test a darker direction as well. It's cozy for sure, but it might stray too from the initial style.

StuartsNight.gif

You can test Stuart's Perfect Day here!

Stuart's Colors

After a few fun sessions with the jam last week, we've felt inspired! My mind keeps going back to the little world we created with our prototype.

We went for a rather distinct and minimalistic style, and I've been testing out some alternatives. What do you think? StuartsColors.gif

It was very tempting to test a night-time direction as well. It's cozy for sure, but it might stray too far from the initial style.

StuartsNight.gif

You can test Stuart's Perfect Day here!

Tiny Inc. Repair Shop Learnings: Correcting bad level design

I added analytics to my LD game and noticed that big amount of players close the game on level 4. Fun fact: level 4 supposed to be a chill level to give player a break between challenges and a tutorial to a new mechanic at the same time. It was created to hook player's interest to play further, but instead had an opposite effect. How did that happen? Let's have a look! Screenshot 2024-10-13 191559.png

When I started working on Tiny Inc. Repair Shop at the beginning of the first day, I set my self a goal: the game should have at least 5 levels and all of them should be finished by the end of Day 1, leaving Day 2 for polish only.

For those of you who didn't play, Tiny Inc. Repair Shop is a puzzle game, where you need to arrange differently behaving creatures on a grid board so that they bring a charge to a battery.

fjNVQ6.gif

If you want to play it to understand better what I am talking about consider playing the game here

https://ldjam.com/events/ludum-dare/56/tiny-inc-repair-shop

Context

From the beginning I had 3 creatures in mind:

  1. The first will go left and right only
  2. The second will go only up or down
  3. The third will stay idle unless it sees a red color thing either vertically or horizontally. If it sees one it will charge to it and push it until meets the wall

Combining them along with placing some blocks on the grid opened some space to design a few interesting puzzles. But I got exhausted pretty quick (after the 3rd level) and decided I need a new mechanic: a button that will open a door. To introduce this mechanic I needed an easy tutorial level, something that should show the player that:

  1. There is a door
  2. There is a button
  3. If the creature steps on a button the door opens

So I created this:

Screenshot 2024-10-13 192225.png

The idea is simple: you place a creature that goes from left to right (the green one) near the button and then another one near the charge. The one near the button will open the door and the one with the charge will go inside and finish the level. In fact, this was what most of the players who played in front of me did. But what happened instead was this:

button_bug.gif

The green guy presses button, encounters the wall, turns back and then presses the button again, closing the door right in front of the other green guy, carrying the charge!

Obviously I saw this during the development and tried using other creatures to see if the level is passable. In the end it was and at the time I though it might be a good idea to leave this as is, so that the player tries the most obvious solution and the game says "Gotcha! Try again!". I thought that maybe this will require the player to think a bit more and then once they realize how to pass it they'll get this "Aha!" moment which all puzzle designers strive for.

However what I observed from people playing this level, it was completely unobvious how to pass it. Some people randomly found the solution, some people exploited a bug (which I fixed later) and some people (majority) just gave up, abandoning the game.

One big mistake this level did for players was violating the rule of the puzzle genre. Instead of making a player feel smart it made them feel stupid. And no one likes feeling stupid!

Fixing the bad level design.

The best fix for this level I think is bringing it back to the original idea: just introduce the new mechanic in the easiest way possible so player understands how to interact with it. If I just move the button one tile right, the green creature just doesn't have time to come back to it and toggle the door.

buttonembug/emfix.gif

Yes, the level will be much easier and it doesn't show that the button closes the door as well as opens it, but it's okay. I can expose togglable behaviour on a different level and create this "Aha!" moment once player realizes how to overcome it.

However I didn't use the fact that button toggles the door state in any of the other puzzles, so the other fix could be to just disable it and use button to only open the door.

buttonembug/emfix_2.gif

Conclusion

If I will do puzzle games for future jams here are the crucial things to take care of:

  1. The puzzle should make the player feel smart, not stupid
  2. When the solution feels unobvious at the development stage it is unobvious for players
  3. When designing a certain mechanic (e.g. toggling the door state) consider if I will use it at all in future or if it is unnecessary complicates things. Whatever makes things unnecessary difficult should be thrown away.

What puzzle design advices could you give to new puzzle designers? Would love to hear!

Attention All Animal Adventurers!

Attention all Animal Adventurers! Make your way through a library of animal themed page-turners and build a beastly brigade with your favourite companions in order to prevail in battles against enemy squads! Strengthen your fellows and build synergies in this exciting auto-battler called Battle for the Pages!

| 68099.gif | 6809a.gif | | --- | --- | | Play Now! (Playable in Web) | |

This LD is EPIC!

This is our first LD game our team has ever created! We gained so much unique experience! Thanks to all of you! Your feedback is priceless!

Here is some meme for you!

Meme1.png

If you havent played our game, so try and challenge yourself here :) https://ldjam.com/events/ludum-dare/56/drone-brigade

No hamster this time, but beez!

Last time we had little Harold... little_harold.png

Beezz :bee:

This time we made an endless clicker game with EVEN cuter beeezzz! :bee:

Behind the scenes of the rig of the bee model: 20241013embee/emrig_v3.gif

I teamed up with @aghoulprince and @faedoll-attr-action for this Ludum Dare.

We had a lot of fun this game jam! I also loved working on all the tiny cute bee animations. They can fly, jump, get angry at you and even dance!

Crazy stuff

Also, crazy things happened! We reached the itch.io front page for a few days in a row... !!! itchioemfrontpage/emsmall.png

Like, wut? That can happen for a game jam game?

Not everyone sees it, but we still had more than 300 players actually click through directly from the itch.io home page alone! :dizzy_face:

Game update!

But enough of that, what I actually wanted to talk about is a game update! :bee:

(not just the beezz have been buzzy!) - The game now has a little bonus ending cinematic! - There is now also an Android and a Windows build (next to the Web build which also runs on mobile devices!)

Want to meet our Buzzzy Buzzy Beez?

Head over to our Ludum Dare page: https://ldjam.com/events/ludum-dare/56/buzzzy-buzzy-beez

Our game's paper artstyle

In this game everything is made out of paper or some other type of material. We thought it would be a fun to go for a collage type of aesthetic this time. With some digital art, layer effects, and digital editing to get the textures, I managed to get the look I was looking for.

My goal is to always approach a different artstyle for each game I make

Some concept stuff:

image (25).png

image (24).png

Various assets:

enemies post.png

Objects resize.png

Screenshots

Screenshot 5.png

Screenshot 4.png

Screenshot 6.png

If you haven't tried it yet you should check it out! https://ldjam.com/events/ludum-dare/56/small-problems-to-grapple-with

Heeyy! I'm still looking for more feedback!

So... I've been collecting additional feedback through a more detailed questionnaire. So far, I was able to gather a lot of encouraging feedback that does show a clear future direction for the game. I wished Ludum Dare facilitated the collection of specific feedback, ratings and comments are cool and all, but I do see a notable lack of support for questionnaires or forms.

JT+nXC.gif

If you haven't played my game, you should give it a try! And if you do play it, or have played it already, please answer this form : https://forms.gle/YXiq9pgksjw8vG3f7

Thank you! :v:

Sauce post

You might have noticed in our game Fry Quest that we are proud Belgians and love Belgian fries. In Belgium we eat our fries with a sauce, and honestly we have A LOT of different sauces, compared to other countries. Apart from ketchup and mayonnaise, we have cocktail sauce, bearnaise sauce, mushroom sauce, brasil sauce, andalouse sauce, joppie sauce and way more than that.

But what I would like to know: *what is your favorite sauce for your Belgian/french fries? *

fryempotato/emsmile.png

By the way: discover how this un-peel-ievable potato becomes a Belgian fry by playing our game Fry Quest: https://ldjam.com/events/ludum-dare/56/fry-quest

Sammich Ants, Performance, and WebGL

The core mechanic of Sammich centers around covering a delicious-looking sandwich with thousands of ants. This proved to be a bit of a problem for us, because a general philosophy for us as an LD team is to make sure that our games work in WebGL as best as we can in order to make it as convenient as possible for people to play.

sammichtitlescreen.png

Because of this, a lot of curious players have asked us, “how the heck were you able to spawn so many ants in WebGL?” We hope this technical breakdown will serve as both a response to that frequently asked question, as well as a general guide for how to optimize your game for WebGL builds (at least in Unity).

1. GPU Instanced Materials

This one’s pretty straightforward (although I didn’t personally learn about it until this jam). Materials in a Unity URP project have some advanced options that you can set to optimize performance. Enabling “GPU Instancing” for materials that will be drawn frequently and repetitively will allow Unity to batch draw calls for the same material, which will significantly cut down on the total number of draws that the game will have to do per-frame as it’s running.

gpuInstancing.png

The cool thing about this is that it’s super easy to do! Simply find the toggle to “Enable GPU Instancing” in the material settings, and you’re good to go!

2. Simplify the Ants

Probably our biggest struggle with making our game performant despite having thousands of objects on screen at once was to vastly simplify the complexity of each individual object.

We started by minimizing the geometry of the ant itself, starting with the polygon count of the base body as well as chopping off their adorable little legs.

beforeAntText.gif afterAntText.gif

Fortunately, the ants are so small and numerous that this loss of fidelity (and mobility) doesn’t have too big of an impact on the player experience. This is great, because it just so happens to have a HUGE impact on our performance.

We also experimented with a cute lil wiggly animation for the ants to give them a bit more “life.”

animation.gif

Unfortunately, this “life” came at a dire cost once the number of ants reached 1000+ (a likely scenario for most players). So, despite how much we all LOVED the little wiggly animation, we all begrudgingly made the executive decision to prioritize performance over cute-ness.

My condolences go out to @ruddgasm, our 3D artist, who had to butcher his babies just so we could make the game as performant as possible in a web browser.

3. Physics, Collisions, and Rigidbodies

“But wait!” I hear you ask, “Sammich is a physics-based game! How the hell were you able to process the physics calculations of so many rigidbodies at once?!”

neatThing.png

Fun Fact: The only rigidbody that exists in the game is the one directly tied to the sammich itself. Rigidbodies in Unity have a nifty little setting that allows you to automatically calculate the object’s center of gravity. It does this by taking into account the size and position of all of the colliders that are attached to that object and its children.

Because of this, we don’t actually need each ant to have its own rigidbody and physics simulation (thank god). Instead, we simply attach each spawned ant as a child to the sammich, and the automatic calculations of the main rigidbody takes care of the rest!

rigidBodyHierarchy.png

For a bit of extra performance, we also disabled collision events for bug/bug colliders as well as bug/sammich colliders. That’s right, the thousands of ants that players are painting onto the sammich aren’t even colliding with the sammich itself!

In fact, the only reason the ants have colliders in the first place is so they can contribute to the sammich’s center of mass and detect when a dropping piece of food lands on them.

4. Turn off the lights!

You’d be surprised how much you can get away with visually without having any sort of lighting in your game.

In fact, Sammich does not use a single light source in any of its scenes! We have the wizardry of our 3D artist to thank for that.

Rather than relying on extremely costly lighting and shadow calculations, consider instead baking such visuals into the material itself. You don’t need a light source to make your objects look bright and colorful!

Out of all of our WebGL optimizations, this tip has by far served us the best when it comes to making games performant in WebGL (In fact, none of our games since LD45 have used lighting in any way!).

Conclusion

Making a game run smoothly in WebGL (especially a game that requires thousands of objects to be rendered at once) is a constant balancing act between processing performance and visual fidelity. You will inevitably have to make some sacrifices when it comes to your game’s assets, and even then you will eventually hit diminishing returns (even our game starts to struggle and sometimes break after ~2000 ants on WebGL, depending on the machine).

However, if you design your art style and asset pipeline in a way that keeps these constraints in mind as you’re developing, you can often avoid creating assets or scenes that are unnecessarily complex and performance-heavy from the outset.

As a result, your game will be able to run surprisingly well in WebGL, and even better in a stand-alone build!

jerry.jpg

Hopefully this ramble has been enlightening! If you would like to stress-test the performance of our game yourself, you can find it here!

We actually had time to fit in a physics-free “Sculpting Mode” that lets players paint with ants to their heart’s content, so go wild with it! We’d love to see your creations!

‘Til next time! :pointright: :cowboy: :pointright:

Can you breed all the complete sets?

In Tiny HOC's Pro Creator, you can breed tiny HOCs and get combinations of the parents' features. Can you manage to reconstruct the complete sets?

image.png

Buying eggs from the shop allows you to extend you gene pool, try it now, you can play on your browser!

Feed them, breed them, sell them, the world is yours!