Monorepo for a multi-player game engine, and game examples
Haskell
42
1,348 commits
updated Feb 13, 2022
Monorepo for a Haskell multi-player game engine and games made with it.
The games can be played locally, in single-player mode, or in multi-player mode, after having run the deployment script to host the game server on Heroku.
You can even create your own multi-player game, starting from the tutorial-game.
Officially supported client platforms are (recent versions of) macOS and Ubuntu, where a C++17-enabled compiler is available.
List of packages, inverse-topologically sorted wrt dependencies, with keywords / short description for each of them:
imj-animation)
After checking out the repo, run git submodule init && git submodule update to download the submodules.
To install them:
brew install ftgl
brew install portaudio
brew install postgresql
sudo apt-get update
sudo apt-get install ftgl-dev
sudo apt-get install portaudio19-dev
sudo apt-get install postgresql
sudo apt-get install libpq-dev
stack is the preferred tool to build the project:
stack build --pedantic
A recent enough C compiler should be used by GHC, so as to be able to build C++17.
Passing no command line argument will run the games in single player mode:
stack exec <game-executable>
Use the deployment script to host the games on a Heroku server.
stack exec -- <game-executable> -n <serverName> -p<serverPort>
When the game server is hosted on Heroku, the port to connect to is 80:
stack exec -- <game-executable> -n <herokuAppDomain> -p80
The CI script verifies that compilation and tests succeed with GHC versions 8.2.2 and 8.4.3.
Melodies
are written using the notes quasiquoter, where:
v and ^- extends the preceding note. indicates a pauseEvery game made with imj-game can have the server send midi-like note on / note off events to game clients, allowing to perfectly synchronize the music with the game.
The music won't pause during garbage collection because we use an audio engine whose audio realtime thread is not managed by the GHC runtime.
The screen is conceptually divided in small blocks of equal size, where each block can contain a character with 8-bit background and foreground colors.
The fonts and font size for rendering can be modified at run time.
Currently, the CI build errors because the "build from scratch" process plus unit tests takes more than one hour and hits a timeout :
1,347 commits
1 commits
Haskell
96.3%
C++
3.1%
Monorepo for a multi-player game engine, and game examples
Haskell
42
1,348 commits
updated Feb 13, 2022
Monorepo for a Haskell multi-player game engine and games made with it.
The games can be played locally, in single-player mode, or in multi-player mode, after having run the deployment script to host the game server on Heroku.
You can even create your own multi-player game, starting from the tutorial-game.
Officially supported client platforms are (recent versions of) macOS and Ubuntu, where a C++17-enabled compiler is available.
List of packages, inverse-topologically sorted wrt dependencies, with keywords / short description for each of them:
imj-animation)
After checking out the repo, run git submodule init && git submodule update to download the submodules.
To install them:
brew install ftgl
brew install portaudio
brew install postgresql
sudo apt-get update
sudo apt-get install ftgl-dev
sudo apt-get install portaudio19-dev
sudo apt-get install postgresql
sudo apt-get install libpq-dev
stack is the preferred tool to build the project:
stack build --pedantic
A recent enough C compiler should be used by GHC, so as to be able to build C++17.
Passing no command line argument will run the games in single player mode:
stack exec <game-executable>
Use the deployment script to host the games on a Heroku server.
stack exec -- <game-executable> -n <serverName> -p<serverPort>
When the game server is hosted on Heroku, the port to connect to is 80:
stack exec -- <game-executable> -n <herokuAppDomain> -p80
The CI script verifies that compilation and tests succeed with GHC versions 8.2.2 and 8.4.3.
Melodies
are written using the notes quasiquoter, where:
v and ^- extends the preceding note. indicates a pauseEvery game made with imj-game can have the server send midi-like note on / note off events to game clients, allowing to perfectly synchronize the music with the game.
The music won't pause during garbage collection because we use an audio engine whose audio realtime thread is not managed by the GHC runtime.
The screen is conceptually divided in small blocks of equal size, where each block can contain a character with 8-bit background and foreground colors.
The fonts and font size for rendering can be modified at run time.
Currently, the CI build errors because the "build from scratch" process plus unit tests takes more than one hour and hits a timeout :
1,347 commits
1 commits
Haskell
96.3%
C++
3.1%