Dome

A lightweight game development environment where games can be written in Wren
Alternatives To Dome
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Godot61,74393 hours ago4September 15, 20229,668mitC++
Godot Engine – Multi-platform 2D and 3D game engine
Phaser34,5321,7422594 days ago139September 20, 2022109mitJavaScript
Phaser is a fun, free and fast 2D game framework for making HTML5 games for desktop and mobile web browsers, supporting Canvas and WebGL rendering.
Libgdx21,5624941844 days ago43May 11, 2022281apache-2.0Java
Desktop/Android/HTML5/iOS Java game development framework
Games20,855
a month ago311
:video_game: A list of popular/awesome video games, add-ons, maps, etc. hosted on GitHub. Any genre. Any platform. Any engine.
3d Game Shaders For Beginners15,226
25 days ago18bsd-3-clauseC++
🎮 A step-by-step guide to implementing SSAO, depth of field, lighting, normal mapping, and more for your 3D game.
Bgfx13,046
9 days ago1July 11, 2022287bsd-2-clauseC++
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
Pyxel11,92117109 days ago111May 25, 202213mitPython
A retro game engine for Python
Openage11,785
7 hours ago225otherPython
Free (as in freedom) open source clone of the Age of Empires II engine :rocket:
Magictools11,437
a month ago2mit
:video_game: :pencil: A list of Game Development resources to make magic happen.
Tiled9,655
2 days ago9September 22, 2022646otherC++
Flexible level editor
Alternatives To Dome
Select To Compare


Alternative Project Comparisons
Readme

DOME - Design-Oriented Minimalist Engine

A comfortable framework for game development which melds SDL2 and the Wren scripting language, written in C.

Image of DOME logo

For more information on how to use DOME and get started, read the docs here.

How to Use

Download

You can download production-ready binaries from our Releases page. This is the recommended method for distribution and easy development.

Install via Brew

Alternatively, if you have Homebrew installed (Mac OS X, Linux and WSL), you can install DOME using the following commands:

> brew tap domeengine/tap
> brew install dome

Build

Finally, if you want to build DOME yourself, to make modifications or other reasons, follow these instruction instead.

Ensure you have the shared SDL2 libraries installed on your system first, then to build, run:

> make

This will create an executable named ./dome (on Mac OS X and Linux), and ./dome-x32.exe or ./dome-x64.exe.

Run

Run ./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.

Basics

Your game's entry point must contain a Game variable which contains at least init(), update() and draw(_) methods.

import "input" for Keyboard
import "graphics" for Canvas, Color

class Main {
  construct new() {}

  init() {
    _x = 10
    _y = 10
    _w = 5
    _h = 5
  }

  update() {
    if (Keyboard.isKeyDown("left")) {
      _x = _x - 1
    }
    if (Keyboard.isKeyDown("right")) {
      _x = _x+ 1
    }
    if (Keyboard.isKeyDown("up")) {
      _y = _y - 1
    }
    if (Keyboard.isKeyDown("down")) {
      _y = _y + 1
    }
  }

  draw(alpha) {
    Canvas.cls()
    var color = Color.rgb(171, 82, 54)
    Canvas.rectfill(_x, _y, _w, _h, color)
  }
}

var Game = Main.new()

Modules

DOME provides the following features, and more:

  • Graphics
    • Canvas
      • Rect
      • Point
      • Circle
      • Ellipses
      • Lines
      • Triangles
    • Color
    • ImageData (aka Bitmap)
      • Draw sprites loaded from files (png)
    • SpriteSheet support
  • Input
    • Keyboard
    • Mouse
    • Gamepads
  • Filesystem
    • File reading and writing
  • Audio (stereo and mono OGG, MP3, FLAC and WAV files)
  • Collections (abstact types)
    • Set
    • Queue
    • Stack
    • Priority Queue
  • Native Plugins (allowing access to all kinds of functionality!)

TODO

You can follow my progress on implementing DOME on my twitter.

  • Graphics
    • Potential 3D rendering mode?
  • IO
    • Asynchronous Operations
  • Network Access
    • UDP
    • HTTP client (maybe)
  • Security sandboxing (maybe)

Dependencies

DOME currently depends on a few libraries to achieve it's functions.

  • Wren (included in the project repo already)
  • SDL2 (version 2.26.3. If you install this from source, you'll want to build shared/dynamic libraries.)
  • utf8.h
  • stb_image
  • stb_image_write
  • stb_truetype
  • stb_vorbis
  • microtar
  • optparse
  • jo_gif
  • tinydir
  • ABC_fifo (A SPMC threadpool/task dispatching FIFO I wrote for this project)
  • mkdirp
  • whereami
  • dr_mp3
  • dr_flac

Apart 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.

Acknowledgements

Example Game Resources

  • Example game and graphics are derived from this fantastic PICO-8 tutorial.
  • Aerith's Piano Theme (res/AerisPiano.ogg) by Tanner Helland is available under a CC BY-SA 3.0 license: Link
  • Game Over Theme (res/music.wav) by Doppelganger is available under a CC BY-SA 3.0 license: Link
  • Font "Memory" is provided by Eeve Somepx, and is available on their patreon here under a common sense license.
Popular Video Game Projects
Popular Game Development Projects
Popular Games Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
C
Game
Gamedev
Graphics
Sdl
Sdl2