/fsharp-3d-and-gamedev

Resources on 3D Graphics Programming and Game Development in F#

3D Graphics Programming and Game Development in F#

Inspired by Functional Programming In Games repository.

This is a WIP document.

Please suggest papers/articles/resources through Github pull requests. If you believe this list is missing something or has factually inaccurate info, you can also file an issue in the issue tracker.

OSS Projects

  1. Aardvark Platform - awesome libraries from math to interactive high-performance graphics applications. Specifically, check out Aardvark rendering engine and Aardvark media, Elm-style purely functional UI and 3D graphics
  2. F# Rendering Toolkit (Real-Time) - includes Math3D
  3. 3D Math in F#
  4. F# GLFW 3.2.1 Binding
  5. RayTracer F# Implementation
  6. F# Ray Caster Implementation
  7. Shader translation from F# to HLSL
  8. Duality Scripting - write F# on the Duality Game Engine. This plugin supports C# too.
  9. Nu Game Engine cross-platform F# 2D game engine. It encourages to use a variation of FRP called Iterative Functional Reactive Programming as architectural style.
  10. FShade - a Library allowing users to write Shaders in F# using code-quotations.
  11. F# Doom
  12. F# Quake 3
  13. A collection of heightmap generators, along with some bmp/ppm image format savers
  14. Fun 3D: Composing 3D objects with F# - beginner-friendly environment for composing 3D objects in functional way.

OSS Samples

  1. Vulkan in F# samples
  2. F# gamedev samples and slides
  3. WebGL F# Fable bindings and example with WebGL
  4. FSSceneKit City - creating a randomly generated city using the SceneKit API (Xamarin) and F#.
  5. ARKit in F#, with realistically proportioned Solar System Objects
  6. WIP: App with facts on the planets in the Solar System. Uses Urho3D and Fabulous (F#)
  7. Three.js, WebGL and F# - a 3D Terrain sample. Live version here

Tutorials

  1. LearnOpenGL.FSharp. Exercises based on https://learnopengl.com/ tutorials, using F# and Silk.NET as the OpenGL wrapper
  2. F# game tutorial series with Monogame
  3. Unity3D game engine tutorial in F# - an easy way to get started
  4. Tutorial: Using F# with Unity3D 2018.3
  5. Programming UrhoSharp with F#

Videos

  1. Will Smith - Porting Quake III to F#: A Journey to Functional Programming
  2. The 3D Geometry of Louvre Abu Dhabi in F#. Alternative link
  3. F# in Social Gaming
  4. F# Exchange 2018 - 3D Model Manipulation with F# - need to log in to watch.
  5. Functional Game Logic With State Pipelines
  6. Teaching F# - from Numerical Expressions to 3D Graphics
  7. Using a "tweaked" version of Fable to run FShade in the browser and generate shaders in runtime from F# code, by Georg Haaser
  8. F# and MonoGame - Part 1 of Video Series by Dave Thomas

Articles

Star Wars Intro in AutoCAD in F# - part 1 out of 4, others linked in part 1

3D Graphics Programming

  1. Why Write Shaders in F#?
  2. Composing Chrismas with F# - example of 3D graphics in F# using an OpenGL-based graphic library written in F#. More with this library: Tomas Petricek - Domain Specific Languages, the functional way, Solving fun puzzles with F#

Game Development

VR / AR / MR

  1. Face-based Augmented Reality with F# and the iPhone X
  2. The Solar System with ARKit and F#

On Interop

  1. Accessing Linux C libraries with F# and .Net Core

Graphics / Gamedev on the Web (Powered by Fable)

  1. Creating Visual Planetary Systems using Fable and F#
  2. Three.js + F# + Fable = ❤
  3. F#, Fable & ThreeJs: Hello Cube

Presentations

  1. Solving 3D Problems With F#

Books

  1. Friendly F# - Not totally about games but all examples are game-related.
  2. Beginning F# by Robert Pickering - Examples in Chapter 12 are relevant to (3D) Graphics Programming.

Papers

  1. Monadic Scripting in F# for Computer Games

Commercial Games Made with F#

  1. Onikira: Demon Killer is a 2D side scrolling beat ‘em up set in a fantasy feudal Japan. It's on Steam Early Access, written in F#.
  2. 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.

Consider eventually consolidating with Guide - Mobile App and Game Programming with F#