from Hacker News

I made a multiplayer shooter game in Lisp, here is my journey

by ertucetin on 1/22/25, 8:03 PM with 54 comments

  • by emmanueloga_ on 1/23/25, 1:16 AM

    Quick summary: ClojureScript + Babylon.JS on the frontend and Clojure for the backend, coordination via Websockets.

    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 all of the time. It is a delicate balance!

    Congratulations on releasing! Very cool project.

  • by kamranjon on 1/22/25, 11:45 PM

    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.
  • by ertucetin on 1/23/25, 8:01 AM

    Author here, thank you all for taking the time to read about my journey and, of course, for playing my game.

    I’m very glad that you liked it!

  • by tines on 1/22/25, 11:20 PM

    Please include a little animated GIF or something that gives us a taste of what it looks like!
  • by casenmgreen on 1/23/25, 5:35 PM

    PLEASE PLEASE PLEASE option to invert mouse Y-axis.

    It looks fantastic, but I can only play if down on mouse is up on view.

  • by bitwize on 1/23/25, 7:49 AM

    I found some old gaming instincts kicking in when I asked myself: did I get a frag?

    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.

  • by munksbeer on 1/23/25, 10:44 PM

    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:

    > 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.

    And then this comment:

    > 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.

    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?

  • by HenryBemis on 1/22/25, 11:32 PM

    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 ;)

    Cool game, fast. Someone dominated me for 4 mins and then I decided to switch to Fortnite :)

  • by fud101 on 1/24/25, 4:10 AM

    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.
  • by tetris11 on 1/23/25, 12:12 AM

    Holy cow, I've been playing for 20 minutes without realising. This is amazing!
  • by chrisvalleybay on 1/23/25, 7:54 AM

    This was so much fun! Great work! Really brought me back to Quake 3!
  • by prmoustache on 1/23/25, 3:55 PM

    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.
  • by crummy on 1/23/25, 9:34 AM

    Hi Ertu! Great to see your work again! Keep it up!
  • by koinedad on 1/22/25, 11:43 PM

    Was surprised that it loaded on my phone, nice work!
  • by simplify on 1/23/25, 5:20 AM

    Game is actually really good! Was this inspired by Spellbreak per chance?

    Edit: I see you mention it in your blog post. I enjoyed it just as much!

  • by winrid on 1/23/25, 1:27 AM

    Pretty cool, but it seems I crashed it to a grey screen. Even game counter stopped. I was battling someone, was fun though.
  • by andreamonaco on 1/23/25, 4:03 PM

    Cool! Even though my computer is seemingly too underpowered to play it. Anyway, do you plan to make it a big game?
  • by cactusplant7374 on 1/23/25, 5:19 PM

    How did you learn how to make games? Any books you recommend? Or github projects you learned from?
  • by snozolli on 1/23/25, 3:43 PM

    The settings don't appear to allow y-axis inversion, but maybe I missed it.
  • by xeromal on 1/23/25, 4:29 PM

    Incredible job! Hopped in a bit and got some great kills. Reminds me of quake
  • by rNULLED on 1/27/25, 6:30 AM

    I had a lot of fun, thanks for sharing!
  • by casey2 on 1/25/25, 1:32 PM

    20k 0d stuck in a pillar and killed by a bot
  • by munksbeer on 1/23/25, 10:34 PM

    That is seriously impressive. Well done!
  • by victorbjorklund on 1/23/25, 8:31 AM

    Damn this is a good game.
  • by pjmlp on 1/23/25, 1:36 PM

    Looks quite nice.
  • by airstrike on 1/23/25, 1:08 AM

    whaaaa this is too good!
  • by beretguy on 1/23/25, 12:56 AM

    How many closing parenthesis do you have on a last line?