Categorygithub.com/walesey/go-engine
repositorypackage
0.0.0-20220117071515-e229e0e7d42b
Repository: https://github.com/walesey/go-engine.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# 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.

Demo