[Community Puzzle] Dice Duel

https://www.codingame.com/multiplayer/bot-programming/dice-duel

Send your feedback or ask for help here!

Created by @eulerscheZahl,validated by @trictrac,@jacek1 and @field3.
If you have any issues, feel free to ping them.

Very nice & fun puzzle to play. Though, my browser’s renderer is over 100% of GPU usage (either safari/firefox/chrome) and I can hardly use the CG code editor. Is there some minimum hardware requirement for the 3D assets included in this puzzle? Anyway, I use CGSync for code editing so I could implement my solution, but not easy for testing.

3 Likes

Thanks for your feedback philRG.
Please make sure that you have hardware acceleration disabled enabled (edit: oops) in case you didn’t already.
The problem probably is the model of the die itself, which has about 8000 vertices to render (I already reduced it from the original model).
There are 2 things I can try: use another model of a die with less vertices and render on a smaller area to just scale it up at the end. Possibly combining that with a toggle so that both options are available.
Unfortunately my own 3D modelling skills are very limited, @ZarthaxX might provide a replacement asset.

1 Like

Thanks a lot eulerscheZahl! I completely forgot that parameter as I rarely play video games :wink: It works perfectly now and will be able to continue this puzzle more easily :slight_smile: Have a nice day!

1 Like

Well actually, it is still very slow on my hardware which is also not a competitive computer for 3D rendering. The puzzle is quite fun. I generate all actions (about 500 / turn) in about 5ms in Python which was fun, and I have a 10 line heuristic function/basic simulation to select best action (using basic chess strategy: avoiding to be captured except if I can make a capture and I lead to the score, and protect my threatened dice by my other dices in blocking opponent paths). Sometimes, it seems my dice remains in my side of play, and does not seem to occupy enemy side too much, but I cannot affirm that, as I actually cannot analyse the replays. I have remarked that in official board game, when a dice reach the opponent side, it is a win, so this shortens game duration a bit. Thanks a lot for this nice contribution eulerscheZahl :slight_smile:

The replacement assets still have some problems (as shown below), I’ll update the contribution when they work as intended and manage to reduce the overall lagginess. Do you have any problems with BlockOut?

I don’t have any problem with BlockOut. Some other players seems to have lagginess on this puzzle (like Patrick in Wood 2), but not leojean. Personaly, I own a iMac (21"5, mid-2011) which is about 6 years old (2,5 GHz Intel Core i5 - 16 Go 1333 MHz DDR3 - AMD Radeon HD 6750M 512 Mo) which i do not use for video games (3D textures rendering). I own also a recent PC that I do not use anymore, I will try to start Windows tomorrow if it does not take too long :smiley:

Thanks, that’s all I wanted to know. I see 2 ways to improve performance:

  • render on a smaller canvas and scale it up
  • simpler 3D geometries

BlockOut renders on the full screen size too, so it’s apparently not necessary in this case to scale it down. Thus I will go with simpler models first (takes a bit, I don’t have the skillset to create these on my own).

1 Like

You don’t often play dice, the sum of the opposite sides must be 7 ^^

:wink:

I’m fully aware of the misconception in my game. Unfortunately that’s what you get for using free assets. As it doesn’t really harm the gameplay, I still opted for those dice instead of other ones that got the sum of 7 right but looked less appealing overall.
I lack the skills needed to edit the model, I was proud when I managed to change the color already (and restarted Blender and even my computer a few times as it kept crashing hard)

1 Like

Continuing the discussion from [Community Puzzle] Dice Duel:

It’s not the first time I play a multiplayer, turn based challenge like this one, but I usually go with a “on the fly” approach in python, which lets me quite low in the ranking as when I start to fight players who play systematically the best move for the 3 next moves, I can’t compete.

So for this one, I try to do things correctly, in C++, with a more “tree”-like approach, but could someone tell me if that’s not relevant here? I lack any reference to know if there are simply too many branches to do some sort of minmax approach.

Hi @wyenat,
I’m using C, and I’m doing a “tree”-like approach as you say. I allocate memory for every node in the tree, and never free any of the memory. I thought this would cause a crash, but my program lasts for the maximum 200 rounds.
I think it helps that I do not pursue impossible paths. For example, my tree will stop searching down a branch that is blocked by a dice or landing on a friendly dice.
I do a sort of minmax approach, where I give each branch of length “top” a score and take the branch with the highest score.
Best,
Kylar

Hi, interesting puzzle, I just started it but the IDE is reeeally slow, probably because of the 3D view, maybe for this puzzle it could be enough to have a 2D one.

1 Like

Hi, I’m painfully aware of the slowness. It would even be possible to have both 2D and 3D and add a toggle in the viewer settings.
Unfortunately doing so takes a lot of time. I created this game and a few others in my spare time after work. Therefore the current game is the limit of what I can do in a reasonable amount of time and effort. It just turns into investing days or even weeks just to make a dozen of players happy - there isn’t much more activity when it’s not a puzzle of the week. For the moment I’ve retired from creating new games or supporting existing ones beyond a minimum degree.

The source code is available on github, pull requests are welcome. But for aforementioned reasons it’s unlikely that I will get back to it and solve the issue myself.

1 Like

I understand, thanks for it btw ! I would be glad to help you but Java is not my thing !