Strange Loop

2009 - 2023

/

St. Louis, MO

Clojure in Unity 3D: Functional Video Game Development

Unity 3D is the de facto industry-standard platform for making games. It is built on Mono, scripted in C#, and exports to a wide range of systems, including OSX, Windows, Linux, iOS, Android, XBox, PlayStation, and the web.

We are providing an open-source library integrating Clojure and Unity. Clojure will dramatically improve game development by bringing Lisp-style REPL-based live coding, optimizing macros, and DSLs to Unity's workflow. Persistent data structures will enable previously impossible computations in games, such as speculative AI algorithms, logic programming, and rewindable game state history.

Unity's graphics and interaction stack opens up considerable power to Clojure programmers. Optimized 2D and 3D graphics, physics simulations, and integration with hardware such as the Kinect are examples of what is now available to functional programmers. Unity's extensive community and collection of prepackaged assets will make developing games in Clojure practical for the first time.

Our talk will cover the indispensable role of platforms like Unity in professional game development, and the new possibilities afforded by its integration with a functional Lisp like Clojure. We will show a demo of our new workflow, discuss historical precedent for this initiative, and conclude with thoughts on future applications of our approach.

Ramsey Nasser

Ramsey Nasser

Ramsey Nasser is a computer scientist, game designer, and educator based in Brooklyn. He researches programming languages by building tools to make computation more expressive and implementing projects that question the basic assumptions we make about code itself. His games playfully push people out of their comfort zones, and are often written in experimental programming languages of his design. A former Eyebeam fellow and a member of Kitchen Table Coders, when he is not reasoning about abstract unintuitive machines, he builds and maintains vintage motorcycles.