Need help with indigo?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

PurpleKingdomGames
330 Stars 33 Forks MIT License 2.8K Commits 56 Opened issues

Description

An FP game engine for Scala.

Services available

!
?

Need anything else?

Contributors list

MIT License Latest Tagged Release Discord Chat Join the chat at https://gitter.im/Purple-Kingdom-Games/Indigo CI

Indigo

Indigo is a game engine written in Scala for functional programmers. It allows game developers to build games using a set of purely functional APIs that are focused on productivity and testing.

Indigo is built entirely on Scala.js + WebGL, but it's sbt and Mill plugins will export games for web, desktop (via Electron), and mobile (via Cordova). Hypothetically consoles could also be supported.

Documentation can be found on indigoengine.io.

Full local build and test instructions

Using Nix

The root of the project contains a very very simple

shell.nix
file that, if you have nix installed, will give you all the tools you need to build Indigo by running
nix-shell
.

Build requirements

You will need:

  • Mill
  • SBT
  • JDK (Update: 1.8 works, 11 is used in Indigo's development)
  • glslang validator - can be installed with your favorite package manager.

Running the build

On Mac / Linux, from the repo root to do a full build and test:

bash build.sh

On Windows, open up powershell and run:

& build.ps1

NOTE: You may have trouble installing or running the glslangValidator. As long as you have installed it (e.g.

scoop install glslang
) the build will continue, it's just that the shaders may not be validated.

There is also another script which is a bit faster since it doesn't build the examples or demos.

bash localpublish.sh

Software requirements for running games

The list above covers the software needed to build Indigo itself, but to run a game you may also need:

  • NPM and/or Yarn
  • NodeJS
  • Electron
  • An http server that will serve static from a directory (suggestions:
    http-server
    via npm, or Python's
    SimpleHTTPServer
    )
  • A frontend packaging tool such as Parcel.js

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.