Newbrict / engi

Oaktales engi fork
BSD 2-Clause "Simplified" License
0 stars 0 forks source link

Engi

A cross-platform game engine written in Go following an interpretation of the Entity Component System paradigm. Engi is currently compilable for Mac OSX, Linux, Windows and the Web. With the release of Go 1.4, sporting Android and the inception of IOS compatibility, mobile will soon be added as a release target.

Currently documentation is pretty scarce, this is because I have not completely finalized the API and am about to go through a "pretification" process in order to increase elegance and usability. For a basic up to date example of most features, look to the demos/hello.go and demos/pong/pong.go files. These files are currently your best friends for learning engi, well and me (feel free to shoot me a DM or issue whenever you want!).

Examples

If you want to see some projects using engi, check out the demos folder. Newbrict/OakTale is probably the best place to see the newer features (tilemaps, z-layers, physics)

Getting in touch / Contributing

Currently we are active on the gopher slack (You can request an invite here: http://bit.ly/go-slack-signup) under the #engi channel.

The roadmap is available on trello here. If you wish to have something added, or want to discuss a new feature you should begin talking about it in either an issue or on the previously mentioned slack channel.

Docs

Before you read the basic doc, here are a few notes for me (and other contributors) about ideas to achieve elegance

Installation

go get -u github.com/paked/engi

TODO Write about the needed dependencies

Getting Started

package main

import (
    "github.com/paked/engi"
)

type Game struct {
    engi.World
}

func (game *Game) Setup() {
    engi.SetBg(0xffffff)
    game.AddSystem(&engi.RenderSystem{})
}

func main() {
    engi.Open("Title", 800, 800, false, &Game{})
}

First we start off by declaring that it is a runnable file, then import the engi library. Inside the main() function we finish off by opening the window, the four parameters that are passed in are Window Title, Window Width, Window Height, Fullscreen Mode (as a bool) and finally an instance of Game.

If you were to run this code, a white 800x800 window would appear on your screen.

TODO Write about entities

TODO Write about components

TODO Write about systems