Skip to content

Latest commit

 

History

1,545 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gondwana Game Engine

NuGet NuGet Downloads License Docs API .NET Platforms

Gondwana logo

Gondwana is a code-first, cross-platform 2D and 2.5D game and rendering engine for C# and .NET 8. It gives developers fine-grained control over rendering, timing, movement, input, collision detection, and scene composition.

Gondwana targets Windows, Linux, macOS, and WebAssembly through SkiaSharp-based rendering, with dedicated integrations for WinForms, Avalonia, and Blazor. Its layered worlds support multiple views, parallax, stable z-ordering, particles, pixel overhang, and several grid projections. Optional packages add desktop and browser audio, MIDI playback, SDL2 gamepad input, video playback, hosting, and reusable game UI widgets.

Rather than hiding the render pipeline behind an editor, Gondwana embraces a code-first, engine-driven design. Developers retain direct ownership of the game loop and rendering flow when needed, while sensible defaults and ready-to-use hosts keep smaller games approachable.

The engine carries forward the predictability of classic Win32/GDI-era rendering—explicit draw order, dirty-region updates where appropriate, scene composition, and timing—inside a modern, modular architecture. The result is an engine intended to remain understandable and debuggable without demanding that a project surrender control as it grows.


🎮 Gondwana in Action

Spot! is Gondwana's primary playable showcase.

Spot gameplay showing the game board and HUD Spot gameplay showing animated scene rendering

Get Started

Requires the .NET 8 SDK.

dotnet new install Gondwana.Templates
dotnet new gondwana-winforms -n MyFirstGame
cd MyFirstGame
dotnet run

For a guided introduction, see Make Your First Game in 30 Minutes with Gondwana.

Prefer an AI-assisted workflow? See Using Gondwana with ChatGPT and Codex.

Note

Gondwana is actively developed. Its public API is usable today, but breaking changes may occur as the engine and tooling mature.

Documentation & Resources


🌐 Repository Mirrors

GitHub is the canonical repository for Gondwana. Issues, pull requests, discussions, and development activity should be submitted there.

Read-only mirrors are maintained for availability and discoverability:


🎯 Who Gondwana Is For

Gondwana is for .NET developers who want to build games in C# rather than assemble them entirely through an editor. It is a good fit when you value:

  • Fine-grained control over rendering, timing, input, and movement
  • Predictable, debuggable draw and update pipelines
  • A code-first workflow without editor lock-in
  • A reusable foundation for custom 2D and 2.5D games
  • Modern .NET architecture grounded in proven rendering principles

Gondwana is deliberately an engine and framework, not an all-encompassing visual game-making suite. Its tooling supports the code-first workflow rather than replacing it.


✨ Features

  • Cross-platform SkiaSharp rendering through CPU bitmap and GPU-backed surfaces
  • Backbuffer abstraction through BitmapBackbuffer and GpuBackbuffer
  • WinForms, Avalonia, and Blazor adapters, with ready-to-use hosts for Windows, Linux, macOS, and WebAssembly
  • View-centric layered scenes with multiple cameras, viewports, parallax, stable z-ordering, and world-space dirty-region tracking
  • Host-owned display effects for view- and layer-level effects, including fades, slides, directional fills and erases, view shake, and zoom
  • Modular lighting and fog-of-war primitives, including radial lights, flicker, darkness overlays, and tracked world-space reveal areas
  • Multiple coordinate systems: orthogonal, rhombic isometric, axial isometric, flat-top hex, pointy-top hex, and oblique
  • Sprites and DirectDrawing for reusable images, shapes, text, particles, overlays, effects, composites, and high-volume bitmap instances
  • Reusable game UI widgets with lifecycle events, automatic input registration, focus, keyboard and pointer routing, dragging, hit testing, and components such as SplashScreen
  • Sprite and camera movement with easing, target following, interpolation, scripted paths, and reusable visual effects
  • Collision detection and kinematic resolution, including per-frame and per-tile collision adjustments for more precise collision geometry
  • High-resolution timing and thread-safe drawable management with stable z-order sorting
  • Asset support for tilesheets, sprites, fonts, audio, and packaged Gondwana asset files
  • Unified keyboard, mouse, touch, and gamepad input, with SDL2 gamepad support available as a dedicated package
  • Audio, MIDI, browser audio, and experimental video integration through optional packages

🎬 More Demos

Gondwana platformer gameplay demonstration Gondwana space-dueling gameplay demonstration Gondwana particle-system demonstration Gondwana coordinate-system demonstration

📂 Architecture

Gondwana uses a central Engine cycle to advance timing, input, movement, animation, and game state. Active View instances then project and composite their SceneLayer contents through cameras and viewports into a platform backbuffer.

CPU bitmap backbuffers support world-space dirty-region rendering, while GPU-backed surfaces render the full viewport. WinForms, Avalonia, and Blazor adapters handle presentation and native input at the edges, leaving the core engine platform-agnostic.

Engine → Views and cameras → Scene layers and drawables → Backbuffer → Platform adapter

See the Engine Wiki for detailed rendering pipelines and subsystem documentation.


📦 Packages

Runtime packages are available on NuGet. Install only the pieces your project needs.

Package Description
Gondwana Core engine; required by Gondwana projects
Gondwana.Hosting Cross-platform GameHostBase for structured startup, shutdown, and lifecycle management
Gondwana.Widgets Reusable game UI widgets, overlays, HUD elements, and unified widget input routing
Gondwana.WinForms WinForms rendering and input adapters for Windows
Gondwana.WinForms.Hosting Ready-to-use WinFormsGameHost
Gondwana.Avalonia Avalonia rendering and input adapters for Windows, macOS, and Linux
Gondwana.Avalonia.Hosting Ready-to-use AvaloniaGameHost
Gondwana.Blazor Blazor WebAssembly rendering, input, and browser components
Gondwana.Blazor.Hosting Ready-to-use Blazor host lifecycle integration
Gondwana.Input.SDL2 Cross-platform SDL2 gamepad input; requires native SDL2
Gondwana.Audio.Midi MIDI playback and SoundFont support
Gondwana.Audio.Browser Browser and WebAssembly audio through the HTML5 Audio API and JavaScript interop
Gondwana.Video Experimental video playback through LibVLCSharp

🧰 Tooling

Tool Install / location Description
Gondwana.Templates dotnet new install Gondwana.Templates Project templates for gondwana-winforms, gondwana-avalonia, and gondwana-blazor
Gondwana.Cli dotnet tool install --global Gondwana.Cli The gondwana CLI for creating projects, checking an environment with gondwana doctor, and packing or inspecting asset files
Gondwana.Tooling.Studio.Avalonia Build from Tooling/Gondwana.Tooling.Studio.Avalonia Cross-platform Avalonia front end for Gondwana project and asset tooling
Gondwana.Tooling.Studio.WinForms Build from Tooling/Gondwana.Tooling.Studio.WinForms Windows-native Studio front end sharing framework-agnostic editor logic with the Avalonia application

🧭 Key Design Principles

  • Code first: Game code owns behavior and can reach the rendering and update pipeline directly.
  • World space first: Gameplay and scene logic operate in world pixels; views and cameras convert world coordinates to screen coordinates at render time.
  • Dirty-region rendering where it pays: CPU bitmap backbuffers redraw changed world-space regions rather than repainting the entire frame.
  • Layered, view-centric scenes: Scenes contain independently rendered SceneLayer instances, while View and ViewRenderer make multiple cameras, viewports, and split views natural.
  • Adapters at the edges: Platform projects host render surfaces and wire native input while the core remains platform-agnostic.
  • Explicit composition: Sprites, direct drawings, composites, widgets, and scene layers have clear ownership and ordering rules.
  • Predictable behavior: Stable ordering and explicit timing make rendering and movement easier to debug.
  • Modularity without ceremony: Hosting, widgets, platform adapters, audio, input, and video remain separate packages so applications take only what they need.

🛠 Roadmap

Gondwana is actively evolving, with an emphasis on strengthening the engine and its tooling.

  • WebAssembly support through Blazor
  • Tilesheet and SceneLayer tooling, including TMX support
  • Full platformer sample
  • WebGL-backed Blazor rendering adapter
  • Expanded 2D physics, including momentum, elasticity, and additional collision shapes
  • Native, first-class pathfinding
  • Initial client/server networking support
  • Android and iOS support via .NET MAUI adapters

🤝 Contributing

Contributions are welcome.

  • Open an issue for a bug report or feature request.
  • Fork the repository, create a focused branch, and submit a pull request.

📜 License

Gondwana is available under the MIT License.

Third-party libraries
Gondwana uses Skia (© Google) through SkiaSharp (© Microsoft and contributors), licensed under the BSD 3-Clause license.


☕ Support Gondwana

Gondwana is developed and maintained independently. If you find the engine useful, consider buying me a coffee to support its continued development.