A pure Go game engine for building 2D games and GUI applications with built-in rendering, physics, and audio systems.
Oak is a pure Go game engine designed for creating 2D games and GUI applications. It provides a comprehensive set of built-in systems for rendering, physics, audio, and input handling, enabling developers to build fully functional projects without external C dependencies.
Go developers looking to build 2D games or GUI applications without relying on C compilers or external dependencies, particularly those targeting cross-platform deployment.
Developers choose Oak for its pure Go implementation, which eliminates the need for C compilation by default and offers an integrated suite of 2D game development features like collision detection, physics, and particle systems in a single library.
A pure Go game engine
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
By default, Oak requires no C compilation, allowing developers to build and run games on machines without C toolchains, as emphasized in the 'On Pure Go' section of the README.
Includes rendering, physics, collision detection, audio, and input handling in a single library, reducing the need for external dependencies, as detailed in the features list with systems like collision R-trees and particle effects.
Supports multiple windows running simultaneously, forked from shiny, enabling complex GUI applications or multi-screen games, as shown in the examples like 'Multi Window'.
Provides numerous examples (e.g., platformers, shooters) and has a Slack channel for support, facilitating learning and troubleshooting, with links to finished games and a blog for updates.
Oak is primarily designed for 2D rendering, making it unsuitable for projects requiring 3D graphics or advanced visual effects, limiting its use case compared to more versatile engines.
The README admits that on OSX, Oak relies on Objective C code, which contradicts the pure Go claim and adds complexity for cross-platform development, especially for teams prioritizing dependency-free builds.
Being pure Go, Oak may have performance trade-offs in graphics-intensive scenarios compared to game engines using lower-level languages like C++, though it integrates optimizations via gift for image manipulation.
While it supports GUI applications, Oak lacks pre-built UI components, requiring more custom work for interfaces compared to dedicated GUI frameworks like Fyne or Gio.