Love this talk! I tried making a game in Clojure with an approach similar to this, but got stuck on handling input and events. Good to see someone figured it out!
Would it be worthwhile to keep a backend in play-clj (libgdx) and then build the engie on top? The principles are platform-indepenent, it's a pity they get lost by focusing on web for the sake of web.
+Francisco Estévez García I would recommend that you think about separating it into two parts, one which is the game engine that you can organize similarly to the talk, and another for rendering. The only reason this is targeting the web is for ease of development and maturity of rendering libraries in Javascript. There is no reason why you can't take the same approach to manage your game state and use Java2D or libgdx as the renderer.
You said you didn't use MACROS, but isn't it a way to improve performance? Especially macros that take in a function then look at the function's source code then jquery the S-expressions to replace slow code with fast code. You can also have a simple dynamic compiler that is inserted by the macro system which looks at any functions and inlines the calls and get rid of any other types of indirection.
Love this talk! I tried making a game in Clojure with an approach similar to this, but got stuck on handling input and events. Good to see someone figured it out!
Slides for the presentation github.com/alexkehayias/clojure-west-2016-functional-game-engine-design
Where do all these guys find work for Clojure? :( I want one too
Would it be worthwhile to keep a backend in play-clj (libgdx) and then build the engie on top? The principles are platform-indepenent, it's a pity they get lost by focusing on web for the sake of web.
+Francisco Estévez García I would recommend that you think about separating it into two parts, one which is the game engine that you can organize similarly to the talk, and another for rendering. The only reason this is targeting the web is for ease of development and maturity of rendering libraries in Javascript. There is no reason why you can't take the same approach to manage your game state and use Java2D or libgdx as the renderer.
Yeah I would be really happy if play-clj has this CES thing, but I don't think it'll happen any soon, if ever.
Very nice talk !!
You said you didn't use MACROS, but isn't it a way to improve performance? Especially macros that take in a function then look at the function's source code then jquery the S-expressions to replace slow code with fast code. You can also have a simple dynamic compiler that is inserted by the macro system which looks at any functions and inlines the calls and get rid of any other types of indirection.
I can't imagine implementing inventory like diablo in the clojure.. It's all mutable state