Quick summary: ClojureScript + Babylon.JS on the frontend and Clojure for the backend, coordination via Websockets.<p>The point about lack of tooling for Babylon.JS is interesting: a lot of times I see people wanting to release games but spending most of the time building tools... sometimes <i>all</i> of the time. It is a delicate balance!<p>Congratulations on releasing! Very cool project.
This is bonkers and so cool that you did this solo. Loaded right up on my iPhone 13, prompted me to turn my phone to landscape and I was running around in a 3d world shooting spells at other players - really great work and surprisingly polished for being a solo project.
I found some old gaming instincts kicking in when I asked myself: did I get a frag?<p>This is a fun little romp. Very Quake-esque in terms of mechanics (though the floaty jumps have more of a Tribes feel). Excellent job putting it all together in a Lisp... even if that Lisp is Clojure! I like to think of Lisp as a mind-tool for creatives, a way to turn thoughts into code so quickly it can keep up with the highly iterative creative process for other endeavors and enhance the reach of people working in other digital media besides code. It's probably less relevant in that capacity today than it was in the past, though.
I have a question if you don't mind. I don't know clojure at all, and I may be misreading things, but from this comment on your site:<p>> Game development is fundamentally an art of state management. States are everywhere, and managing numerous unrelated systems in harmony is a challenging task. While Clojure’s immutability by default offers many advantages, it also introduces complexity. To handle the intricate state management required for game development, I had to create my own abstractions. Writing a custom DSL (domain-specific language) became a necessity, but it wasn’t easy.<p>And then this comment:<p>> In Wizard Masters, all game data resides in a global game database—a single large hashmap. The fields referenced in the :what block (e.g., :pointer-locked?, :player/ground?) are keys in this global hashmap.<p>Please don't take this the wrong way but you've essentially just worked around clojures functional immutable style and invented global state in a hashmap, right?
Interesting to see that I already had an account at CrazyGames. It wasn't loading from your URL, but I saw that it's CG so when I logged on with my account my Firefox played ball (I got ABP, Ublock, NoScript, PrivacyBadger, LARGE hosts file, so 'some' websites are broken ;)<p>Cool game, fast. Someone dominated me for 4 mins and then I decided to switch to Fortnite :)
Clojure programmers are a different breed. They're actually doing cool things with Lisp while other niche languages just talk a good talk. I'm staying away though, it's hard enough finding paid work in more mainstream stacks.
hmmm seems buggy, player is aiming at the sky continuously and I can't get it to make it aim at a normal level more than a microseconds with the mouse.