The Idea
Jungle Speed1 is one of my favorite board games ever since my friend brought it with him to the school camp almost 10 years ago. We always played with this version. But recently I decided that I would also like to own the game myself. So I ordered it, but when it arrived I noticed it is missing one crucial card, “Color Match”. I first thought it is a mistake, but then I searched the internet a bit and discovered that the newer versions simply do not have this card23. I was quite disappointed, so I got the idea to change the “All Flip” card to the “Color Match” card since colors rule is more fun. Later I also got the idea that I can replace “All Flip” card with a simple timer, that notifies the players to turn the cards at the same time. I could do better than that, I thought, I could code a simple app that has a random timer. Or even better, what if I add more time-based rules that are selected randomly? Long story short, after some more brainstorming I decided I would make a physical device that has a timer and randomly selects between 4 rules.
The Rules
The device has 4 symbols that light up when they are selected (on the image from left to right): The Hand, The Direction Arrow, The All Flip Arrows and The Skull. Each represents a rule. Every 90 s, the device beeps and then selects one of the rules at random. The selection is indicated by the center circle, that rotates towards the selected symbol. Then the symbol also lights up.
The Hand
When this rule is activated, all the players must play with their non-dominant hand, until the next rule is selected. Then they switch back to their dominant hand. Except if the new rule selected is again The Hand, then everyone continues to play with their non-dominant hand.

“The Hand” symbol
The Direction Arrow
This rule is pretty simple, the game just changes direction every time it is selected.

“The Direction Arrow” symbol
The All Flip Arrows
This is the rule that was triggered by the “All Flip” card before I replaced it with “Color Match”. So when this rule is selected, all the players turn their cards at the same time (usually one player counts down from 3).

“The Center Arrows” symbol
The Skull
When this rule is selected, a small skull is placed on top of the totem. It stays on there until it falls off the totem. The game continues normally, but when you grab the totem, you must not knock over the skull. You can also not touch the skull. So while you still need to be faster than your opponents, you must also be very careful and gentle. If you knock it over, it counts like if you knocked over the totem, so you take all the open cards on the table.

“The Skull” symbol
The Design
The frame of the device was printed on the Creality Halot One Pro resin 3D printer4 with Elegoo ABS-like gray resin5. The symbols for the rules were printed separately in 3D Jake Eco transparent yellow resin6. The basic CAD was made in Fusion 3607. Then the decorative design for the top was first made in Affinity Designer8 as a black and white height map, which was then converted into a 3D mesh and added to the base model in Blender9. Similarly, the sides were decorated, I designed a very wide height map image that I then wrapped around the model.

Example of the heightmap
Then I added the ancient, damaged look by manually sculpting the model in Blender. When everything was printed, I painted it with acrylic colors. First I added two layers of dark gray primer. Then I dry brushed with a silver-white to get the stone-like highlights look. In the end, I protected the paint with a few layers of matte varnish. I also added 4 rubber feet to the bottom plate to prevent it from slipping. The bottom cover is secured in place by 4 M3x16 screws that screw into M3 nuts.

The whole assembly
The Skull model was not my design, I just downloaded it10. I also printed it in Elegoo ABS-like gray resin. Then I printed it in a similar way to the rest, I just with a shiny silver color for the highlights and then varnished it with gloss varnish.

The Skull model
The STL files can be found on my GitHub11.
The Electronics
At the heart of the device is an ATtiny24-20PU microcontroller12. The dial is moved by an off-brand 9g servo motor. For each of the rule symbols, there is one white LED. The beeping is done with a small piezo buzzer. For the random number generator, I used the RF 433MHz receiver to read 10 random bytes, use a hash function on them and then decide on one of the 4 options based on that final number. The whole device is powered by 6 AAA batteries, connected 2 x 3 batteries in series. Then the voltage is converter to 5V with a buck step-up converter. The Batteries are connected to the step-up converter through the main power switch. Directly to the microcontroller I also soldered jumper cables required for serial programming, so I could reprogram the device after I put the microcontroller in it. It is hot glued to the bottom and very hard to reach.

The internals
I chose the ATtiny24-20PU because it is small enough, and I had it lying around. In retrospect, it was a bad choice because of its tiny 2 KB of flash memory, which despite a relatively simple code, filled up very quickly. So I could not use any standard libraries (for servo control, buzzer, random numbers) and had to write everything by hand as efficiently as possible, even by writing/reading directly to/from pin registries. The original plan was that the timer would be random between 60 and 120 s, but the code would not fit in the memory, so I just settled on keeping it at a constant 90 s, which fortunately saved enough space to fit the final code on the microcontroller.
The code can be also be found on my GitHub.
Conclusion
After playing the game with the device several times now, I can classify this project as a major success. Obviously, it is not perfect and if I were to make a V2, I would make quite a few changes. First I would select a different microcontroller with more memory, so the code would not need to be that optimized and all the wanted features could be included. Although I am not an expert microcontroller programmer, I am pretty sure my code could be further optimized to perhaps fit all the functions on it without changing the microcontroller. Furthermore, I would improve the CAD to use less material. As it is right now, the walls are thicc, reaching a few cm at max. That is of course unnecessary. I come from the FDM13 printing background, so I was used to just making such thick walls mostly hollow and there was no problem. But with resin printers, hollowing is a bit more difficult, especially with more complex geometry. Another pretty obvious issue with the design is that the bottom cover can’t close all the way because of all the wires inside. That could be fixed by making the walls thinner (thus making more room for wires inside) and by cutting the wires shorter.
Overall I am very pleased by the outcome, it is for sure one of my most successful projects so far.
References
-
Jungle Speed Wikipedia page: https://en.wikipedia.org/wiki/Jungle_Speed ↩︎
-
Missing Color Match card Reddit Thread 1: https://www.reddit.com/r/boardgames/comments/qqxdhl/new_asmodee_versions_of_jungle_speed_are_missing/ ↩︎
-
Missing Color Match card Reddit Thread 2: https://www.reddit.com/r/boardgames/comments/zzakwr/jungle_speed_missing_the_color_cards/ ↩︎
-
Halot One Pro 3D Printer: https://www.creality.com/products/halot-one-pro-3d-printer ↩︎
-
Elegoo ABS-Like Resin: https://www.elegoo.com/products/elegoo-abs-like-resin ↩︎
-
3D Jake ecoResin Transparent Yellow: https://www.3djake.com/3djake/ecoresin-transparent-yellow ↩︎
-
Autodesk Fusion360: https://www.autodesk.com/products/fusion-360/overview?term=1-YEAR&tab=subscription ↩︎
-
Affinity Designer: https://affinity.serif.com/en-us/designer/ ↩︎
-
Blender: https://www.blender.org/ ↩︎
-
Celtic Skull - Fixed and Flat on Platform by MacGyver on Thingiverse: https://www.thingiverse.com/thing:70717 ↩︎
-
Speedy Jungle GitHub Repository: https://github.com/llukad/speedy-jungle ↩︎
-
ATtiny24-20PU: https://www.microchip.com/en-us/product/ATtiny24# ↩︎
-
FDM wikipedia page: https://en.wikipedia.org/wiki/Fused_filament_fabrication ↩︎