{"id":13531139,"url":"https://github.com/domeengine/dome","last_synced_at":"2026-01-15T01:01:30.073Z","repository":{"id":40412999,"uuid":"139071580","full_name":"domeengine/dome","owner":"domeengine","description":"A lightweight game development environment where games can be written in Wren","archived":false,"fork":false,"pushed_at":"2025-03-31T10:01:48.000Z","size":42067,"stargazers_count":478,"open_issues_count":8,"forks_count":42,"subscribers_count":12,"default_branch":"main","last_synced_at":"2025-03-31T10:30:53.317Z","etag":null,"topics":["c","engine","gamedev","games","hacktoberfest","sdl2","wren"],"latest_commit_sha":null,"homepage":"https://www.domeengine.com","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/domeengine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"avivbeeri"}},"created_at":"2018-06-28T21:49:20.000Z","updated_at":"2025-03-31T10:01:52.000Z","dependencies_parsed_at":"2024-01-03T04:00:57.672Z","dependency_job_id":"bc1c9061-21a2-424a-993a-379ccf452a3f","html_url":"https://github.com/domeengine/dome","commit_stats":null,"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/domeengine/dome","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domeengine%2Fdome","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domeengine%2Fdome/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domeengine%2Fdome/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domeengine%2Fdome/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/domeengine","download_url":"https://codeload.github.com/domeengine/dome/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domeengine%2Fdome/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28441004,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-15T00:55:22.719Z","status":"ssl_error","status_checked_at":"2026-01-15T00:55:20.945Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["c","engine","gamedev","games","hacktoberfest","sdl2","wren"],"created_at":"2024-08-01T07:01:00.401Z","updated_at":"2026-01-15T01:01:29.955Z","avatar_url":"https://github.com/domeengine.png","language":"C","readme":"# DOME - Design-Oriented Minimalist Engine\n\nA comfortable framework for game development which melds SDL2 and the [Wren scripting language](http://wren.io), written in C.\n\n![Image of DOME logo](https://domeengine.com/assets/logo200.png)\n\n### For more information on how to use DOME and get started, read the docs [here](https://domeengine.com).\n\n## How to Use\n\n### Download\n\nYou can download production-ready binaries from our [Releases page](https://github.com/domeengine/dome/releases/latest). This is the recommended method for distribution and easy development.\n\n### Install via Brew\n\nAlternatively, if you have Homebrew installed (Mac OS X, Linux and WSL), you can install DOME using the following commands:\n\n```bash\n\u003e brew tap domeengine/tap\n\u003e brew install dome\n```\n\n### Build\n\nFinally, if you want to build DOME yourself, to make modifications or other reasons, follow these instruction instead.\n\nEnsure you have the shared SDL2 libraries installed on your system first, then to build, run:\n\n```bash\n\u003e make\n```\n\nThis will create an executable named `./dome` (on Mac OS X and Linux), and `./dome-x32.exe` or `./dome-x64.exe`.\n\n### Run\n\nRun `./dome [gamefile.wren]` to run your game. If your initial file is called `main.wren`, just running `./dome` will execute it. Replace `dome` with your built binary name as necessary.\n\n## Basics\n\nYour game's entry point must contain a `Game` variable which contains at least `init()`, `update()` and `draw(_)` methods.\n\n```wren\nimport \"input\" for Keyboard\nimport \"graphics\" for Canvas, Color\n\nclass Main {\n  construct new() {}\n\n  init() {\n    _x = 10\n    _y = 10\n    _w = 5\n    _h = 5\n  }\n\n  update() {\n    if (Keyboard.isKeyDown(\"left\")) {\n      _x = _x - 1\n    }\n    if (Keyboard.isKeyDown(\"right\")) {\n      _x = _x+ 1\n    }\n    if (Keyboard.isKeyDown(\"up\")) {\n      _y = _y - 1\n    }\n    if (Keyboard.isKeyDown(\"down\")) {\n      _y = _y + 1\n    }\n  }\n\n  draw(alpha) {\n    Canvas.cls()\n    var color = Color.rgb(171, 82, 54)\n    Canvas.rectfill(_x, _y, _w, _h, color)\n  }\n}\n\nvar Game = Main.new()\n```\n\n## Modules\n\nDOME provides the following features, and more:\n\n- Graphics\n  - Canvas\n    - Rect\n    - Point\n    - Circle\n    - Ellipses\n    - Lines\n    - Triangles\n  - Color\n  - ImageData (aka Bitmap)\n    - Draw sprites loaded from files (png)\n  - SpriteSheet support\n- Input\n  - Keyboard\n  - Mouse\n  - Gamepads\n- Filesystem\n  - File reading and writing\n- Audio (stereo and mono OGG, MP3, FLAC and WAV files)\n- Collections (abstact types)\n  - Set\n  - Queue\n  - Stack\n  - Priority Queue\n- Native Plugins (allowing access to all kinds of functionality!)\n\n## TODO\n\nYou can follow my progress on implementing DOME on [my twitter](https://twitter.com/avivbeeri/status/1012448692119457798).\n\n- Graphics\n  - Potential 3D rendering mode?\n- IO\n  - Asynchronous Operations\n- Network Access\n  - UDP\n  - HTTP client (maybe)\n- Security sandboxing (maybe)\n\n## Dependencies\n\nDOME currently depends on a few libraries to achieve it's functions.\n\n- Wren (included in the project repo already)\n- SDL2 (version 2.26.3. If you install this from source, you'll want to build shared/dynamic libraries.)\n- utf8.h\n- stb_image\n- stb_image_write\n- stb_truetype\n- stb_vorbis\n- microtar\n- optparse\n- jo_gif\n- tinydir\n- [ABC_fifo](https://github.com/avivbeeri/abc) (A SPMC threadpool/task dispatching FIFO I wrote for this project)\n- mkdirp\n- whereami\n- dr_mp3\n- dr_flac\n\n\nApart from SDL2, all other dependancies are baked in. DOME aspires to be both minimalist and cross platform, so it depends on as few external components as possible.\n\n## Acknowledgements\n\n- Bob Nystrom for creating Wren and inspiring me to make games, thanks to [Game Programming Patterns](http://gameprogrammingpatterns.com)\n- Special thanks to [lqdev](https://github.com/liquid600pgm) for the fantastic logo!\n- Glenn Fiedler for the most referenced [resources](https://gafferongames.com/) on Game Loops, Physics and Networking in games\n- Casey Muratori for creating [Handmade Hero](https://hero.handmade.network), an inspiration and educational resource that makes this project possible.\n- Built-in font comes from [here](https://github.com/dhepper/font8x8).\n- Sean Barrett for [multiple libraries](https://github.com/nothings/stb)\n- rxi for [microtar](https://github.com/rxi/microtar)\n- Neil Henning for [utf8.h](https://github.com/sheredom/utf8.h)\n- Chris Wellons for [optparse](https://github.com/skeeto/optparse) and [pdjson](https://github.com/skeeto/pdjson)\n- cxong for [tinydir](https://github.com/cxong/tinydir)\n- Jon Olick for [jo_gif](https://www.jonolick.com/home/gif-writer)\n- Stephen Mathieson for [mkdirp](https://github.com/stephenmathieson/mkdirp.c)\n- Gregory Pakosz for [whereami](https://github.com/gpakosz/whereami)\n- David Reid for [dr_flac and dr_mp3](https://github.com/mackron/dr_libs)\n\n\n### Example Game Resources\n\n- Example game and graphics are derived from [this](https://ztiromoritz.github.io/pico-8-shooter/) fantastic PICO-8 tutorial.\n- Aerith's Piano Theme (res/AerisPiano.ogg) by Tanner Helland is available under a CC BY-SA 3.0 license: [Link](http://www.tannerhelland.com/68/aeris-theme-piano/)\n- Game Over Theme (res/music.wav) by Doppelganger is available under a CC BY-SA 3.0 license: [Link](https://opengameart.org/content/game-over-theme)\n- Font \"Memory\" is provided by Eeve Somepx, and is available on their patreon [here](https://www.patreon.com/posts/free-font-memory-28150678) under a [common sense license](http://www.palmentieri.it/somepx/license.txt).\n","funding_links":["https://github.com/sponsors/avivbeeri","https://www.patreon.com/posts/free-font-memory-28150678"],"categories":["Libraries"],"sub_categories":["C"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdomeengine%2Fdome","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdomeengine%2Fdome","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdomeengine%2Fdome/lists"}