I’ve been working on a two-player mahjong game for a while now, and I wanted to
post something that isn’t really a devlog — more a thank-you note to whoever
worked on the GL Compatibility renderer.
The short pitch: mahjong, but you only need one human. Solo against an AI with
8 difficulty levels, 64-tile wall, no dead wall. There’s a free browser trial up
on itch.io.
I picked GL Compatibility early and honestly didn’t think much about it at the
time. I just wanted the game to run on cheap Android phones and in a browser
without me babysitting a fallback path. What I didn’t expect was how much of a
non-issue rendering would turn out to be. Two and a half years of tile layouts,
hover states, animated panels, a 3D table layer that I later disabled, and I
basically never had to think about the renderer again. It just kept working on
everything I threw at it.
The other thing is exports. Windows, Android AAB, and Web all come out of the
same project with nothing but preset differences. For a solo dev that’s the
difference between shipping three builds and shipping one. Same story with ENet
— the LAN mode is built on ENetMultiplayerPeer and the three-RPC setup was
enough for a host-authoritative match. I never needed to reach for anything
fancier.
Two honest notes, both my fault, not the engine’s:
I built the entire UI procedurally in GDScript instead of using scenes. It
works, and it made tweaking tile spacing fast, but the file is now well past
10k lines and I regret it. If you’re starting something similar: use scenes,
or at least split your UI builders into their own scripts before it’s too
late. Godot gave me the rope, I used it.
GDScript is quick to iterate in, which is exactly why I let one script grow
to that size. The engine isn’t the bottleneck there — my own discipline was.
Anyway. No real question here, just wanted to say thanks to the engine folks.
If anyone wants to try the browser build, it’s WebGL so it needs a real browser
(Chrome/Safari/Firefox) — in-app browsers tend to choke on it. Feedback on the
AI difficulty curve is very welcome.
The Windows version is now also available, and LAN multiplayer is working.
If you have another player nearby, you can try the local network battle mode here:
I’m also preparing to release the game on Steam. It has been a long journey as a solo developer, and I would really appreciate your support, feedback, and encouragement when it goes live. I’ll share the Steam link once it is available.
One more honest confession: my art skills are honestly not very good.
A lot of the visual work is still done with my limited ability as a programmer rather than a professional artist, so please forgive the rough edges.
If anyone is interested in improving the artwork, UI, animations, or just wants to create something together, I would be very happy to collaborate. This project started as a personal experiment, but I hope it can grow with help from more people in the community.
Thank you again to everyone who plays, tests, gives feedback, or simply takes a look.
A small update about the project: one thing I really appreciate about Godot is how easy it is to support multiple languages.
For my Mahjong game, I created separate translation resources for Chinese and English. Most UI text is managed through Godot’s localization system, so switching languages does not require rewriting the game logic.
The basic workflow is quite simple:
Keep all player-facing text in translation tables instead of hardcoding strings.
Use translation keys in scenes/scripts.
Let Godot handle language switching and text replacement.
This made it possible for me, as a solo developer, to prepare both Chinese and English versions without maintaining two separate projects.
I’m still improving the English UI and rules explanation, but it has been a great learning experience. Thanks again to the Godot team for making indie development more accessible!
If anyone is interested in trying the game, the free web version is here:
As a long-standing (that’s to say : very old…) modest family player of Mah Jong, this intrigued me. I tried the Web trial, and have been convinced enough to buy the full version (now available with English display…). It’s got a multi-player function, but, for me, playing against the built-in ‘bot’ is quite enough for me. I’ve not yet won a ‘hand’, but have enjoyed trying..! It’s a very clean, smooth game, and worth a look, in my humble opinion. It gets a solid ‘Thumb’s up..!’ from me.