Functional Programming In Games
Welcome to this page! Hope you find what you are looking for
I don't know you, but when I was learning how to do funcitonal programming I wanted to program fun things, or something other than a "website for your cat(tm)" so I was looking for FP in games and there wasn't much around at the time... so I created this list.
Please note: this list is not complete. If you find something missing or incorrect, please send a PR or create an issue specifying the problem.
Thanks
Some resources for Functional Programming in Games Resources
Books
- Haskell: Game Programming in Haskell
- F#: Friendly F# Not totally about games but all examples are game related
- Lisp: Land of Lisp
- Racket: Realm of Racket
- Rust:
- Learn game development in Rust
- Hands-on Rust- Effective Learning through 2D Game Development and Play
- arewegameyet.rs links to 5+ books, and there are also tutorials, videos, etc.
Tutorials
- F# game tutorial series with Monogame
- Arcadia - Clojure on Unity3d
- Building flappy bird from scratch with Arcadia at November Clojure NYC Meetup
- Writing a 2048 clone in elm
- Caves of Clojure a blog series on how to develop a Roguelike in Clojure. Code.
- Game development in Clojure (with play-clj)
Videos
- Building a platform game from the ground up with F# and MonoGame
- A reactive game stack: Using Erlang, Lua and Voltdb to enable a nonsharded game world
- Writing a game in Haskell
- F# in Social Gaming
- My adventures with Elm
- Morgan Mullaney - Well I Wouldn't Want To Make a Dysfunctional Game
- Games and 3D Graphics in Arcadia
- CodeMesh 2014 - Arcadia: Functional Video Game Development
- Making Games at Runtime with Clojure (with play-clj)
- RustConf 2018 - Closing Keynote - Using Rust For Game Development by Catherine West
- Rust Linz, 2021 - Herbert Wolverson - Learning Rust with Game Development - this video is by the author of Hands-On Rust
Presentations
Papers
- Monadic Scripting in F# for Computer Games
- A Formal Specification for Casanova,a Language for Computer Games
Libraries and engines
Haskell
- HELM An FRP game engine inspired by Elm.
- FunGEn A BSD licensed, cross platform non FRP game engine written in Haskell.*
- Haskell game related libraries
- LambdaHack Haskell game engine library for roguelike dungeon crawlers.
F #
- Duality Scripting Allows you to write F# on the Duality Game Engine (the compiler is integrated into the editor so you can write code on any editor you want). This plugin supports C# too.
- Nu Game Engine cross-platform F# 2D game engine. It encourages to use as the architecture a variation of FRP which he calls Iterative Functional Reactive Programming.
- Unity 3D can be used with F#. There are multiple examples in the internet, for example this one.
Clojure
- play-clj A wrapper around libGDX. It supports pc, Android and iOS (through RoboVM).
- brute An Entity Component System which supports both Clojure and ClojureScript. Some information on the thinking behind the implementation are on the author's blog.
- Arcadia Clojure integrated into the Unity engine. It uses ClojureCLR. It has been used for interactive art installations and game jam games.
Scala
- Indigo: A Scala 3 / Scala.js 2D game engine built specifically for functional programmers.
- SGL: Scala Game Library (SGL) is a library for developing cross-platform 2D video games in Scala. It provides a high-level API for building games, and can export games to the Desktop, Android, and the web. More platforms, including iOS and consoles, are on the roadmap.
Awesome Gamedev Repositories
- OCaml: Awesome OCaml Gamedev
Games
Shipped or in development commercial games made with FP languages
- Onikira: Demon Killer is a 2D side scrolling beat โem up set in a fantasy feudal Japan. It's on Steam (tho unsupported), parts of it written in F#.
- Wayward Tide A game in development, targeting pc and written in Haskell
- Magic Cookies Published on iTunes and Google Play for Android, it's written in Haskell.
- Nikki and the Robots is a 2-dimensional platform game written in Haskell, now open source. It's published on Steam.
- [Asteroid Sharpshooter] published on Xbox Live Indie Games, written in F#. Slides on the development process. His blog has more information on how he made F# work with XNA on Xbox 360.
Open source
-
Game jam games
- An Evening of Modern Dance made with Arcadia (Clojure) for Ludum Dare 32. Source available.
- Elm Flyer made with Elm. Source.
- Castle of Elm 7DRL game made in Elm. Source, slides on Elm and developing a game jam game with it.
-
More open source games, by language
- Haskell
- Haskanoid A breakout game in Haskell using SDL and FRP, with Wiimote and Kinect support. Available on Google Play.
- Allure of the Stars is a near-future Sci-Fi roguelike and tactical squad game written in Haskell.
- Nikki and the Robots commercial game written in Haskell, now open source.
- Haskell
-
Meta - games that teach functional programming concepts in-game
- cube-composer
- "A puzzle game inspired by functional programming, written in PureScript."
- lambda-lantern
- You collect functional programming patterns and use them to solve puzzles and escape a dungeon.
- "Lambda Lantern is a game made with PureScript, PureScript Native, and Panda3D." ("One of the purposes of Lambda Lantern is to demonstrate binding PureScript to C++.")
- functional - on Steam and open source, implemented in Rust
- "functional is a puzzle game about math and abstraction."
- cube-composer