Late to the party but:
* Clojure is totally viable for high performance game dev
* @ivanreese has it right, most of your code won't be performance critical and can be idomatic clojure
* for the tight loops you'll probably need to move to native arrays w/ mutable types.
transient doesn't really cut it. Also important to have a rendering library like pixi.js, libGDX, or Unity.
* @jjttjj play-clj / chocolatier are good libraries but use immutable state, so you'll end up hitting a wall if your game has high amounts of entities (maybe 1k+). Still worth checking out though!
* @iwannaseethelight clojure+libGDX can build for android, ~3 years back my impression was that clojure performed pretty badly on android's memory model but that may have changed by now.
* ARCADIA IS NOT DEAD - we build games with it all the time https://itch.io/c/57995/clojure-game-dev, stop by https://gitter.im/arcadia-unity/Arcadia if you'd like a hand getting set up
and some experimental stuff on the horizon: * Godot started embedding mono last year, I got clojure running in it although it's super experimental https://github.com/arcadia-unity/ArcadiaGodot * http://armory3d.org/ is a very exciting project, the editor is a blender plugin and it compiles with haxe/kha. The web builds expose the full API so it'd be possible to drive your game logic with clojurescript1👍
@selfsame cool, thanks for the response! good to see there's a lot going on on the Arcadia scene. That said, I've made a few decisions over the last few days regarding the direction I want to go in. For one, I want the game to be a browser/js game. I like the idea of being able to work on something for a day and send my non-programmer friends a link that will instantly get them playing it without having to worry about cross platform much (beyond touch controls) Also, I've never made a game before and I really want to start things off at the highest level possible. I don't want to get stuck spending weeks working on stuff like collision engines and camera things. I want to start working directly on the elements of my game, so that if I fail making a game at least i can know I failed at making a game, not "i spent weeks trying to make a game engine after never having made a game and failed at that". With this is mind, after spending a few days evaluating several clojure script options (play-cljs, chocolately, phzr, a few other lesser known ones) I've come to the conclusion that clojurescript is just not the way to go for now and that it will be better to start with raw JS. I think I want to use the Phaser(3) library, which allows me to start working on the game i want to make right away. Once I have a quick game or two under my belt there I can start thinking about maybe incorporating it into clojurescript using interop. But for now I don't really want to deal with all the mental overhead of adding clojurescript tooling and translating all the info i find from js to cljs.
Sounds like a good plan, I've heard good things about Phaser. Think it has a physics engine too which is nice compared to something like pixi.js that's just a renderer