Description
If you're anything like me, you got into programming to make video games. Eventually you found the Lispest Lisp, and now you can't imagine building a game without your REPL. But everyone knows a "real" game ships to Steam, PlayStation, and Nintendo, and for various wise reasons, existing Clojure implementations do not. Being immune to wisdom, I lobotomized ClojureCLR and Lua and glued them together with a new runtime and a JIT-enabled bytecode compiler, keeping ClojureCLR's data structures. Silk is a Clojure able to ship to Desktop, iOS, Android, Xbox, Nintendo, and PlayStation. It keeps eval, defmacro, and a live REPL on locked-down platforms without the runtime code generation every other Clojure needs to boot. As a fun side effect, it can compile static binaries, like Go, via a self-hosted compiler. Visit with some language hackery and join me at the end of this 10-year rabbit hole to uncover what it takes to smuggle Clojure into statically compiled video games.
Speaker: James J. Tolton, Lotus Mundi (https://lotusmundi.com/)
Indie game dev, content creator, and language hacker. Author of libapl-clj, libscryer-clj, and scrypy, designer of libpython-clj's user-facing API, and architect of the Silk programming language.
0:00 All software aspires to video games
0:28 A letter to Sebastian Thrun
1:29 The demos: Silk x Doom
2:58 How the Doom agent works
4:27 Silk x Project Zomboid
8:52 Silk x Factorio
12:20 Chaos mode
14:01 The chaos topology
15:08 Introducing Silk
16:46 The road from Prolog to Silk
18:00 The three pillars
20:40 The compilation pipeline
21:54 Supported hosts
22:37 Six modes of integration
23:00 Three compilation binding times
23:26 Testing
24:33 Five questions
27:43 1. How do I get my code into the game?
30:28 2. O god, what have I done?
31:32 3. How do I stop the bleeding?
31:48 4. What was even the point? A interacts with B
34:22 The Angel's Sandwich
36:07 Erlang inverts the sandwich
37:06 Actors, OTP and supervision trees
38:22 Unity talks to Silk over ports
39:07 New methods of storytelling
39:27 Learn Prolog
40:09 Clojure is a love language
