Functional Programming and Data-Oriented Design

These two complementary paradigms, rather than object-orientation, could be the future of game development. Note: This article is a follow up to the previous article, ‘Why Functional Programming Works for Games’. When we tell the story of functional programming and data-oriented design in games, we tell a story of trade-offs. What do you get withContinue reading “Functional Programming and Data-Oriented Design”

A Game Engine in the Elm Style!

A ‘Nu’ way to make games! The Nu Game Engine was the world’s first practical, purely-functional game engine. And it has recently accomplished another first — allowing developers to use Elm-style architecture (AKA, model-view-update) to build their games in the cleanest, most understandable possible way! This article will go over two examples often used by the Elm developerContinue reading “A Game Engine in the Elm Style!”

S-Expression The Ultimate Format

A Powerful F# Library Shows How S-Expressions Can be Superior to XML and Json First, a little historical context… People used to love XML, especially those in the Microsoft camp. XML represented a powerful enabling technology for programmers of that day — data-driven programming without plain text files. Out of this love for XML came many technologies onContinue reading “S-Expression The Ultimate Format”

Why Functional Programming Works for Games

Why I set out to prove that functional programming works for games, and what it might mean for modern game development. A fellow on slack channel #gamedev asked me the following question about my functional F# game engine, Nu (source available here) – “I was curious of how this project started. Do you have previousContinue reading “Why Functional Programming Works for Games”

Double Cone Design

A Highly Effective Approach for Designing Functional Programs Nowadays, I design my programs with an approach that I call ‘Double Cone Design’. Inspired from a rendering of an elegant mathematical construct called a ‘double cone’ that is intersected by a plane segment, it colorfully illustrates my overall approach to software design – The bottom cone,Continue reading “Double Cone Design”