3d6 Postmortem. Style, Readability and RNG Death

Hi everyone! My name is Alexander, I'm with my friend Maxim made 3d6 (with a small "d", there are guys with the game "3D6" with 3D, rate it too).

Immediately I want to say that I was very pleased to read all your reviews and kind words. I almost forgot how nice it is to participate in these jams after all!

About the game

Just in case, I'll tell you what the game is about if you suddenly find yourself in this devlog.

3d6 is a game where we engage in a turn-based battle on the theater stage, using all 3 six-sided dice that the carriers carefully bring out for us each turn. The dice we choose are responsible for the action. The action is tied to the value of the dice. We can see this on the sign to the right of the stage. The other two dice don't go anywhere, but are responsible for the power of the action.

There are 3 actions in total. Attack, defence and heal. Beat the enemy (first armor, then health), add protection (for 1 turn, alas), heal health (forever, if the enemy does not knock out all healed by his next strike).

The enemy only hits and defends. Frequently strikes, rarely defends. At critical health it's the other way around. I agree, it's a bit illogical, but it's the easiest thing to add and not to worry about.

Yeah, that should have been written in the game description... but it's more interesting to find out for yourself, isn't it?


So, I'd like to talk about what all the commenters liked. The style of the game. After this jam, I realized how important organic animation and what you see in front of you is.

After meeting some of the participants of the jams, I realized that even a static picture is interesting to watch, when it is furiously moving, rotating and scaling. Actually, these are all possible kinds of "physical" changes for a 2D object (if you know more, email me).

When I learned how to do this with ease (thanks Godot), I started doing it all the time.

I always imagined how funny it would be to have our hero move as if he were being controlled by the hand of a child, stomping on a static human figure with a strong swing. 

Now I realized that the cardboard man theater was perfect for this animation. And I'm absolutely delighted with the way it looks. Thanks to Maxim, my friend and the pixel-artist of this game, for the way the whole game looks.

To maintain this atmosphere, everything else in the game was also either on sticks or ropes. Even the game's start button.

The curtain is a gorgeous and practical thing! We also use it for its intended purpose, to clean up the actors backstage! I hope they punch play believable enough. You believed it, didn't you?

After a few comment-reviews, I realized that my doubts about the dice animation were wrong and I should have finished it after all.

Game readability

The main problem with the feedback from our game was that people didn't immediately realize that the other 2 dice influenced the strength of the chosen action.

In order to show the player something, you have to do more than one thing that tells you what you want to deliver. It could be sound, animation, interaction of elements with each other.

All I did was color the dice flying out in a way that made sense for that chosen action. If these dice were still flying at the player for healing and defense, and also flying at the enemy to attack, their involvement in the action would be more obvious. As it is, they just disappear into thin air. I had my doubts about the latter, since our character is attacking the enemy, not the dice themselves. Healing and defending, on the other hand, would look pretty organic.

A battle log with a fully described action would have been as eloquent as possible, but for such a small game it would have looked like a car horn on a tricycle.

Unfortunately, I did not think of creating tooltips when pointing mouse on different things, then the players in the game would fully understand without the risk of misunderstanding certain mechanics.

Now I understand that it is possible to reveal all the values to the player, and then the game will already have a solid element of strategy in order to develop it further in other details.

I can confess to a fun challenge for myself. At the end of the first day, we already had the whole scene ready except for the curtain. And I joked, "There's no text at all in the game right now... What if it stays like that? Why not? It's a fun challange. A game with no text, but as clear as possible."

Instead of damage numbers, dice are raised. A play button instead of a "Start Game" button. Action icons and sound and music settings are familiar to all.

*Damn, I should have made it so that when you hit, damage dice fly out of the enemy. We'll have to work on that.*

Still, I'm glad that the players weren't completely familiar with the rules of the game, and it was a pleasure for them to be exposed to this new knowledge. I'll have to be sure to try this experience again with intent.

I remember often trying to start playing Monster Hunter World. And when my friend told me how many things I missed and what interesting mechanics were hidden there, I still managed to start playing it properly and loved it.

Although with an example like that, you realize that hiding the mechanics too deeply from the player is not an option. Fortunately, in such a non-complex game, these details are well caught by the player's eye.


Many people have talked about the uselessness of the shield, and I completely agree with them. The effect is identical to a healing. Only after the healing, the health stays, but the shield disappears. And someone even said that it looks like a bug! Moreover, it still looks strange when the enemy a couple of times in a row selects a shield, and he just rotates on the spot, changing his amount of protection all the time. Almost no distinct feedback to the player about the enemy's action (other than the player getting control back).

I was thinking about the enemy being able to do everything the player does except heal. So I didn't want to make the ability much of a bother to the player. Well... through the enemy's behavior, I did get to the point where it would bother the player. Unintentionally, sorry. Guided by the following thought: "The player will exhaust the enemy, respectively he will get tired and begin to defend more. As a result, he became an indestructible fortress.

At this point, we don't have any character classes, just 2 boxers, so the accumulated defense between turns would look weird. Boxers take a defensive posture, rather than wiggling around in the corner of the ring, "throwing a defense on" and then bravely starting to punch. As if the ritual of gesturing in the corner of the ring would keep them safe from punches. That would be very inorganic.

On raising the level of defense, in addition to the shield bar in the interface and character animation, I would also like to add a corresponding sound. It's very lacking. However, in the free libraries there was just an overwhelming abundance of all sorts of energy shields and their charging and stuff. The noise of the armor was very lacking for that. Hopefully, in your battles, the enemy failed to penetrate your armor at least once, and you heard the shield hit. It was important for us to show the difference so that you would know for sure that your health was not reduced on impact.

However, when I found some pretty fun impact sounds and added them, it was really nice to see characters flip back, outraged faces, and ringing slaps.

Ideal synchronisity caused RNG death

I've covered the most notable things, now there are the hidden things. Godot developers, important information!

An artist friend of mine wanted us to not release the game to browsers because of the screwed up dice selection. He got to the game Sunday night (at which time I added all the sounds to the game and published itch). During the game, he saw that the 3 dice carriers had exactly the same sprite. They were holding the same dice value. I, on the other hand, was fine. It turned out that he was using Firefox, and the problem was how good Firefox turned out to be at synchronicity.

The 3 nodes with these carriers were loaded at the same time, and they all had their own random number generator.

Godot's documentation of the randomize function in the RandomNumberGenerator class says, "Setsups a time-based seed to generator." 

They all generated a randomize seed into one. Because of this, they had the same seed, and no uniqueness. 3 identical dice. The whole point of the game was lost because of one error. Chrome and Windows show normal random for each object.

This jam taught me that the same items should have the same random number generator, not unique to each object. Then one generator will give random numbers in order to each object in turn. Or you should have one generator for the whole game. Then you won't have any problems at all.

Of course, traditionally, when we download the game to itch, we still play it for a while. And we find little things that would be nice to correct. As a result we re-download about 5 more times.

Unfortunately, even these 5 times were not enough to realize that the music in the game from scene to scene is not updated. And all I had to do when changing the background make update_music() and that's it. However, this isn't the first jam that has some kind of problem with the music.

Someday we will all make a bug-free game. Someday!

Or maybe I'm leaving flaws on purpose, so there's always something to strive for in the future :D

I really enjoyed developing 3d6 and have tons of plans for what to do with it. Thank you for playing and feedback, and thank you Mark for hosting such awesome jams! Will definitely put the itch servers down next year!

Get 3d6

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.