DOME - Motor minimalista orientado al diseño
Un marco cómodo para el desarrollo de juegos que combina SDL2 y el lenguaje de programación Wren, escrito en C.
Para obtener más información sobre cómo usar DOME y comenzar, lea los documentos aquí.
Cómo utilizar
Descargar
Puede descargar archivos binarios listos para producción desde nuestra página de Lanzamientos. Este es el método recomendado para distribución y fácil desarrollo.
Instalar a través de Brew
Alternativamente, si tiene instalado Homebrew (Mac OS X, Linux y WSL), puede instalar DOME usando los siguientes comandos:
> brew tap domeengine/tap
> brew install dome
Construir
Finalmente, si desea construir DOME usted mismo, realizar modificaciones u otros motivos, siga estas instrucciones.
Primero asegúrese de tener las bibliotecas SDL2 compartidas instaladas en su sistema y luego, para compilarlas, ejecute:
Esto creará un ejecutable llamado ./dome
(en Mac OS X y Linux) y ./dome-x32.exe
o ./dome-x64.exe
.
Correr
Ejecute ./dome [gamefile.wren]
para ejecutar su juego. Si su archivo inicial se llama main.wren
, simplemente ejecute ./dome
para ejecutarlo. Reemplace dome
con su nombre binario integrado según sea necesario.
Lo esencial
El punto de entrada de tu juego debe contener una variable Game
que contenga al menos los métodos init()
, update()
y draw(_)
.
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 ()
Módulos
DOME proporciona las siguientes funciones y más:
- Gráficos
- Lienzo
- recto
- Punto
- Círculo
- elipses
- Pauta
- Triangulos
- Color
- ImageData (también conocido como mapa de bits)
- Dibujar sprites cargados desde archivos (png)
- Soporte para hojas de Sprite
- Aporte
- Sistema de archivos
- Lectura y escritura de archivos
- Audio (archivos estéreo y mono OGG, MP3, FLAC y WAV)
- Colecciones (tipos abstractos)
- Colocar
- Cola
- Pila
- Cola de prioridad
- Complementos nativos (¡que permiten el acceso a todo tipo de funciones!)
HACER
Puedes seguir mi progreso en la implementación de DOME en mi Twitter.
- Gráficos
- ¿Posible modo de renderizado 3D?
- OI
- Acceso a la red
- UDP
- Cliente HTTP (tal vez)
- Sandboxing de seguridad (tal vez)
Dependencias
Actualmente, DOME depende de algunas bibliotecas para lograr sus funciones.
- Wren (ya incluido en el repositorio del proyecto)
- SDL2 (versión 2.26.3. Si lo instala desde el código fuente, querrá crear bibliotecas compartidas/dinámicas).
- utf8.h
- imagen_stb
- stb_image_write
- stb_truetype
- stb_vorbis
- microalquitrán
- optar por analizar
- jo_gif
- diminutodir
- ABC_fifo (un grupo de subprocesos/tarea SPMC que distribuye FIFO que escribí para este proyecto)
- mkdirp
- dondeami
- dr_mp3
- dr_flac
Aparte de SDL2, todas las demás dependencias están integradas. DOME aspira a ser minimalista y multiplataforma, por lo que depende de la menor cantidad de componentes externos posible.
Expresiones de gratitud
- Bob Nystrom por crear Wren e inspirarme a crear juegos, gracias a Game Programming Patterns
- ¡Un agradecimiento especial a lqdev por el fantástico logo!
- Glenn Fiedler para obtener los recursos más referenciados sobre Game Loops, física y redes en juegos.
- Casey Muratori por crear Handmade Hero, un recurso educativo e inspirador que hace posible este proyecto.
- La fuente incorporada proviene de aquí.
- Sean Barrett para múltiples bibliotecas
- rxi para microtar
- Neil Henning para utf8.h
- Chris Wellons por optparse y pdjson
- cxong para tinydir
- Jon Olick para jo_gif
- Stephen Mathieson para mkdirp
- Gregory Pakosz para dondeami
- David Reid por dr_flac y dr_mp3
Recursos de juego de ejemplo
- El juego y los gráficos de ejemplo se derivan de este fantástico tutorial de PICO-8.
- Aerith's Piano Theme (res/AerisPiano.ogg) de Tanner Helland está disponible bajo una licencia CC BY-SA 3.0: Enlace
- Game Over Theme (res/music.wav) de Doppelganger está disponible bajo una licencia CC BY-SA 3.0: Enlace
- La fuente "Memory" la proporciona Eeve Somepx y está disponible en su patreon aquí bajo una licencia de sentido común.