GithubHelp home page GithubHelp logo

kasparsu / dome Goto Github PK

View Code? Open in Web Editor NEW

This project forked from domeengine/dome

0.0 0.0 0.0 41.14 MB

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

Home Page: https://www.domeengine.com

License: MIT License

Shell 0.15% JavaScript 2.03% C 97.26% Makefile 0.27% HTML 0.23% NASL 0.06%

dome's Introduction

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.

dome's People

Contributors

avivbeeri avatar clsource avatar trelemar avatar chayimfriedman2 avatar theking0x9 avatar siddhantrao23 avatar catsanddo avatar purefox48 avatar scholar-mage avatar 8-bit-dev avatar frarees avatar confusedsky avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.