{"id":16730537,"url":"https://github.com/c42f/gameoji","last_synced_at":"2026-01-02T09:19:08.233Z","repository":{"id":67369014,"uuid":"229510257","full_name":"c42f/Gameoji","owner":"c42f","description":"An emoji-based 2D dungeon crawler with live coding interface","archived":false,"fork":false,"pushed_at":"2022-03-20T06:01:22.000Z","size":393,"stargazers_count":25,"open_issues_count":0,"forks_count":0,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-10-19T17:46:23.230Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/c42f.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-22T02:53:17.000Z","updated_at":"2024-04-30T04:15:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"234956fa-dd12-4df4-bd3b-2032bc943bd0","html_url":"https://github.com/c42f/Gameoji","commit_stats":{"total_commits":105,"total_committers":1,"mean_commits":105.0,"dds":0.0,"last_synced_commit":"e393a104f5ad6023ef12511fe9522531b34f92ac"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c42f%2FGameoji","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c42f%2FGameoji/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c42f%2FGameoji/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c42f%2FGameoji/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/c42f","download_url":"https://codeload.github.com/c42f/Gameoji/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243769986,"owners_count":20345217,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-12T23:33:51.216Z","updated_at":"2026-01-02T09:19:08.173Z","avatar_url":"https://github.com/c42f.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gameoji - an emoji-based terminal game in Julia\n\nA silly little emoji game for my children 😃\n\n![screenshot](docs/screenshot.png)\n\n## Installation\n\nYou need a color terminal with a good emoji font.  I assume the terminal\nsupports [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code)\nfor color and various cursor control.\n\nOn Ubuntu 18.04 I've tested it with\n\n* Terminal: `gnome-terminal --disable-factory`\n* Emoji font: `fonts-noto-color-emoji`\n\n```\njulia --project=. -e 'using Pkg; Pkg.instantiate()'\n```\n\n## Running the game\n\nRun with:\n\n```\n./gameoji.jl\n```\n\nor\n\n```\njulia --project=. gameoji.jl\n```\n\nor in development, just `include(\"gameoji.jl\")`.\n\nThen you walk around collecting items, there's not really an aim to the game!\nBombs can be used to explode walls to get access to new areas. Very different\nlevels are randomly generated each time.\n\n## Controls\n\nThe girl and boy emoji both have controls on the same keyboard — WASD and arrow\nkeys respectively to move, and `1` and `0` to drop a bomb.\n\n## Live-coding of game rules!\n\nGameoji starts a REPL server using\n[RemoteREPL.jl](https://github.com/c42f/RemoteREPL.jl), so you can modify the\ngame rules while the game is running by connecting with\n`RemoteREPL.connect_repl()`. You may find the hacks in hacks.jl useful for\nthis.\n\nOf course, you'll need to understand the internals — in particular a good grasp\nof the Entity-Component-System programming model as implemented in\n[Overseer.jl](https://github.com/louisponet/Overseer.jl).\n\n## In-person multiplayer\n\nGameoji has rudimentary multiplayer support where multiple devices can be used\nto control characters on a single physical screen. For this, start a normal\ngameoji game on one machine, then ssh into it from a separate machine, start a\nnormal Julia REPL there and run `./gameoji.jl remote`. ssh is desirable because\nthere's no security in the game protocol.\n\nThis will start an event loop which reads keyboard events and allows you to\nparticipate in the game on the main screen. (Yes, this only allows play when\neveryone is in the same room looking at the single physical screen of the\nserver. It's just a fun hack, ok 😃)\n\n## Troubleshooting\n\nI've found emoji terminal rendering isn't super consistent or reliable between\nterminal emulators.  For example\n\n* `gnome-terminal` on ubuntu 18.04 needs some hacks to correctly render the width\n  of certian emoji characters, including the brick emoji `🧱`. For other\n  terminal emulators, alternative hacks might be needed.\n* The style of emoji glyphs in your installed fonts will affect the look of\n  this game a lot.\n\n* After playing this game for some time (perhaps 1/2 an hour) both\n  `gnome-terminal` and `xfce-term` seem to use all system memory! Perhaps this\n  is due to some misconfiguration on my part, or perhaps they have a true\n  memory leak.  Use `gnome-terminal --disable-factory` to avoid crashing your\n  other terminal windows!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fc42f%2Fgameoji","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fc42f%2Fgameoji","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fc42f%2Fgameoji/lists"}