https://github.com/walesey/go-engine
open-gl rendering and scenegraph library
https://github.com/walesey/go-engine
game-development game-engine go golang
Last synced: 11 months ago
JSON representation
open-gl rendering and scenegraph library
- Host: GitHub
- URL: https://github.com/walesey/go-engine
- Owner: walesey
- License: other
- Created: 2015-08-17T09:47:13.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2022-01-17T07:16:06.000Z (over 4 years ago)
- Last Synced: 2025-08-11T04:02:05.688Z (11 months ago)
- Topics: game-development, game-engine, go, golang
- Language: Go
- Size: 1.99 MB
- Stars: 34
- Watchers: 5
- Forks: 6
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# GoEngine
Go engine is a simple game engine intended for 2D or 3D games.
## Features
- OpenGL renderer
- Obj importer
- Lighting Engine
- Particle System
- UI system
- Controller system (mouse, keyboard, joystick)
- Multiplayer networking library
## Platform Support
- Windows
- macOS
## Instructions
Example programs can be found in `examples/*`.
Installing deps:
sudo apt-get install mesa-utils
sudo apt install mesa-common-dev
sudo apt-get install libx11-dev
sudo apt-get install libglfw3
sudo apt-get install libxrandr-dev libxcursor-dev libxinerama-dev libxi-dev
sudo apt-get install libxxf86vm-dev
## 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.
