All Projects → domeengine → Dome

domeengine / Dome

Licence: mit
A lightweight game development environment where games can be written in Wren

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Dome

Obengine
2D Game Engine with Lua Scripting made on top of SFML !
Stars: ✭ 335 (+33.47%)
Mutual labels:  hacktoberfest, gamedev, engine
Excalibur
🎮 An easy to use 2D HTML5 game engine written in TypeScript
Stars: ✭ 892 (+255.38%)
Mutual labels:  hacktoberfest, gamedev, games
Evennia
Python MUD/MUX/MUSH/MU* development system
Stars: ✭ 1,309 (+421.51%)
Mutual labels:  hacktoberfest, gamedev, engine
Gf
A C++14 framework for 2D games
Stars: ✭ 154 (-38.65%)
Mutual labels:  gamedev, sdl2
Imgui sdl
ImGuiSDL: SDL2 based renderer for Dear ImGui
Stars: ✭ 134 (-46.61%)
Mutual labels:  gamedev, sdl2
Opensurge
A fun 2D retro platformer inspired by Sonic games and a game creation system.
Stars: ✭ 143 (-43.03%)
Mutual labels:  gamedev, engine
Defold
Defold is a completely free to use game engine for development of desktop, mobile and web games.
Stars: ✭ 1,938 (+672.11%)
Mutual labels:  hacktoberfest, gamedev
Vulkan Renderer
A new 3D game engine using modern C++ and Vulkan API
Stars: ✭ 205 (-18.33%)
Mutual labels:  gamedev, engine
Gwork
Skinnable GUI with useful widget collection. Fork of GWEN.
Stars: ✭ 179 (-28.69%)
Mutual labels:  gamedev, sdl2
Flaxengine
Flax Engine – multi-platform 3D game engine
Stars: ✭ 3,127 (+1145.82%)
Mutual labels:  gamedev, engine
Ogsr Engine
OGSR Project - Evolution of X-Ray Engine for S.T.A.L.K.E.R.: Shadow of Chernobyl
Stars: ✭ 213 (-15.14%)
Mutual labels:  gamedev, engine
Flaxapi
Old repository with C# Editor and C# API for creating games in Flax Engine
Stars: ✭ 131 (-47.81%)
Mutual labels:  gamedev, games
Simplexrpgengine
Modular game engine built with MonoGame, with GMS2-like workflow and advanced level editor
Stars: ✭ 122 (-51.39%)
Mutual labels:  engine, games
Sourcehold
Open source re-implementation of Stronghold 1
Stars: ✭ 152 (-39.44%)
Mutual labels:  engine, sdl2
Gamedev4noobs
Olá, sejam bem-vindos ao repositório _gamedev4noobs_ do Estúdio Vaca Roxa. O propósito desse repositório, além de contribuir para o projeto 4noobs, é ensinar o básico do desenvolvimento de jogos para iniciantes. Apresentando boas práticas e insumos para criar games incríveis.
Stars: ✭ 122 (-51.39%)
Mutual labels:  hacktoberfest, gamedev
Vxr
General purpose engine written in C++ with emphasis on materials rendering (PBR, clear coat, anisotropy, iridescence)
Stars: ✭ 181 (-27.89%)
Mutual labels:  gamedev, engine
Pixieditor
PixiEditor is a lightweight pixel art editor made with .NET 5
Stars: ✭ 210 (-16.33%)
Mutual labels:  hacktoberfest, games
Awesome Haxe Gamedev
Resources for game development on haxe
Stars: ✭ 213 (-15.14%)
Mutual labels:  gamedev, engine
Openmu
This project aims to create an easy to use, extendable and customizable server for a MMORPG called "MU Online".
Stars: ✭ 243 (-3.19%)
Mutual labels:  hacktoberfest, games
Xray 16
Improved version of the X-Ray Engine, the game engine used in the world-famous S.T.A.L.K.E.R. game series by GSC Game World. Join OpenXRay! ;)
Stars: ✭ 1,806 (+619.52%)
Mutual labels:  engine, sdl2

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 modules/methods/classes:

  • Graphics
    • Canvas
      • Rect
      • Point
      • Circle
      • Lines
    • Color
    • ImageData
      • Draw sprites loaded from files (png)
  • Input
    • Keyboard
    • Mouse
    • Gamepads
  • Filesystem
    • File reading and writing
  • Audio (stereo and mono OGG and WAV files only)

TODO

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

  • Graphics
    • Triangles
  • IO
    • Asynchronous Operations
    • Audio and Graphics also
  • Network Access
    • UDP
    • HTTP client (maybe)
  • Security sandboxing (maybe)

Dependencies

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

  • Wren (This is built by make automatically)
  • SDL2 (version 2.0.12 or newer, please install separately when building DOME from source)
  • 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

Apart from SDL2, all other dependancies are baked in or linked statically. 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.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].