Gameoji
                                
                                 Gameoji copied to clipboard
                                
                                    Gameoji copied to clipboard
                            
                            
                            
                        An emoji-based 2D dungeon crawler with live coding interface
Gameoji - an emoji-based terminal game in Julia
A silly little emoji game for my children 😃

Installation
You need a color terminal with a good emoji font. I assume the terminal supports ANSI escape codes for color and various cursor control.
On Ubuntu 18.04 I've tested it with
- Terminal: gnome-terminal --disable-factory
- Emoji font: fonts-noto-color-emoji
julia --project=. -e 'using Pkg; Pkg.instantiate()'
Running the game
Run with:
./gameoji.jl
or
julia --project=. gameoji.jl
or in development, just include("gameoji.jl").
Then you walk around collecting items, there's not really an aim to the game! Bombs can be used to explode walls to get access to new areas. Very different levels are randomly generated each time.
Controls
The girl and boy emoji both have controls on the same keyboard — WASD and arrow
keys respectively to move, and 1 and 0 to drop a bomb.
Live-coding of game rules!
Gameoji starts a REPL server using
RemoteREPL.jl, so you can modify the
game rules while the game is running by connecting with
RemoteREPL.connect_repl(). You may find the hacks in hacks.jl useful for
this.
Of course, you'll need to understand the internals — in particular a good grasp of the Entity-Component-System programming model as implemented in Overseer.jl.
In-person multiplayer
Gameoji has rudimentary multiplayer support where multiple devices can be used
to control characters on a single physical screen. For this, start a normal
gameoji game on one machine, then ssh into it from a separate machine, start a
normal Julia REPL there and run ./gameoji.jl remote. ssh is desirable because
there's no security in the game protocol.
This will start an event loop which reads keyboard events and allows you to participate in the game on the main screen. (Yes, this only allows play when everyone is in the same room looking at the single physical screen of the server. It's just a fun hack, ok 😃)
Troubleshooting
I've found emoji terminal rendering isn't super consistent or reliable between terminal emulators. For example
- 
gnome-terminalon ubuntu 18.04 needs some hacks to correctly render the width of certian emoji characters, including the brick emoji🧱. For other terminal emulators, alternative hacks might be needed.
- 
The style of emoji glyphs in your installed fonts will affect the look of this game a lot. 
- 
After playing this game for some time (perhaps 1/2 an hour) both gnome-terminalandxfce-termseem to use all system memory! Perhaps this is due to some misconfiguration on my part, or perhaps they have a true memory leak. Usegnome-terminal --disable-factoryto avoid crashing your other terminal windows!