go-engine

command module
v0.0.0-...-5b12917 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 26, 2017 License: GPL-2.0 Imports: 6 Imported by: 0

README

GoEngine

Go engine is a simple game engine intended for 2D or 3D games. This project is currently in progress and it is likely to change significantly over the next year or so.

Build Status

Features

  • OpenGL renderer
  • Obj importer
  • Lighting Engine
  • Particle System
  • UI system
  • Controller system (mouse, keyboard, joystick)
  • Multiplayer networking library

Platform Support

  • Windows
  • macOS
  • webgl/browser (WIP)
  • android (Planned)

Instructions

Example programs can be found in examples/*.

Go-Engine uses go-gl which requires opengl. Note: if you are using Xcode 8.3 or above, you will need go1.8.1 or above.

Core Packages

  • renderer - package contains common renderer interface and scenegraph implementation.
  • opengl - package contains opengl renderer implementation.
  • engine - package Is the high level engine interface that handles a lot of boilerplate stuff.
  • controller - package Is the api for keyboard/mouse/joystick controllers. (see examples/simple/main.go)
  • assets - asset management for images and obj files.

Important Interfaces and Structs

  • renderer.Entity (interface) - anything that can be moved, rotated and scaled. (eg. Camera/Node/ParticleEmitter)
  • renderer.Spatial (interface) - something that can be Drawn by a Renderer (eg. Geometry/Node)
  • renderer.Node (struct) - Container for Spatials.
  • renderer.Geometry (struct) - A collection of faces and verticies.
  • renderer.Material (struct) - used for texturing a geometry.
  • renderer.Camera (struct) - Struct used to manage the camera.
  • renderer.Light (struct) - Struct used to manage dynamic lights.
  • controller.Controller (interface) - Can have (mouse/keyboard...) events bound to.
  • engine.Engine (interface) - The main game engine interface
  • engine.Updatable (interface) - anything that can be updated every game simulation step.

Demo

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
examples
ui
libs
freetype
The freetype package provides a convenient API to draw text onto an image.
The freetype package provides a convenient API to draw text onto an image.
freetype/raster
Package raster provides an anti-aliasing 2-D rasterizer.
Package raster provides an anti-aliasing 2-D rasterizer.
freetype/truetype
Package truetype provides a parser for the TTF and TTC file formats.
Package truetype provides a parser for the TTF and TTC file formats.
physics

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL