Skip to content

PurpleKingdomGames/indigo

Folders and files

NameName
Last commit message
Last commit date
Jan 21, 2025
Dec 28, 2021
Mar 1, 2025
Mar 27, 2025
Feb 9, 2025
Mar 24, 2025
Mar 24, 2025
Jan 28, 2024
Dec 20, 2023
Mar 6, 2025
May 31, 2020
Nov 8, 2024
May 31, 2020
Jan 28, 2024
Feb 9, 2025
Sep 28, 2023
Aug 26, 2023
Feb 12, 2023
Feb 21, 2023

Repository files navigation

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.

Thank you, to our sponsors! ๐Ÿ’œ

Thank you to all our wonderful sponsors, and particularly to dedipresta for their generous support.

dedipresta

If you'd like to help advance our work, we are ever grateful for all forms of contribution, either by volunteering time or financial backing.

Full local build and test instructions

Using Nix

The root of the project contains a very very simple flake.nix file that, if you have nix installed and flakes enabled, will give you all the tools you need to build Indigo by running nix develop in the root directory.

Build requirements

You will need:

  • Mill
  • SBT
  • JDK (Update: 8 works, 17 is used in Indigo's development)

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

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