Skip to content

Companion repo for zig-renderkit for making 2D games

Notifications You must be signed in to change notification settings

NewbLuck/zig-gamekit

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zig GameKit 2D

Companion repo and example implementation for zig-renderkit. GameKit provides an example implementation of a game framework built on top of RenderKit. It includes the core render loop, window (via SDL), input, Dear ImGui and timing support. You can use it as a base to make a 2D game as-is or create your own 2D framework based on it.

GameKit provides the following wrappers around RenderKit's API showing how it can be abstracted away in a real world project: Texture, Shader and OffscreenPass. Building on top of those types, GameKit then provides Mesh and DynamicMesh which manage buffers and bindings for you. Finally, the high level types utilize DynamicMesh and cover pretty much all that any 2D game would require: Batcher (quad/sprite batch) and TriangleBatcher.

Some basic utilities and a small math lib with just the types required for the renderer (Vec2, Vec3, Color, 3x2 Matrix, Quad) are also included.

Dependencies

GameKit has just one external dependency: SDL. You can install SDL with the package manager of your choice. On macOS if you intend to use the Metal renderer you will need to build from source until the next SDL release drops.

Usage

  • clone the repository recursively: git clone --recursive https://github.com/prime31/zig-gamekit
  • zig build help to see what examples are availble
  • zig build EXAMPLE_NAME to run an example

Minimal GameKit Project File

var texture: Texture = undefined;

pub fn main() !void {
    try gamekit.run(.{ .init = init, .render = render });
}

fn init() !void {
    texture = Texture.initFromFile(std.testing.allocator, "texture.png", .nearest) catch unreachable;
}

fn render() !void {
    gamekit.gfx.beginPass(.{ .color = Color.lime });
    gamekit.draw.tex(texture, .{ .x = 50, .y = 50 });
    gamekit.gfx.endPass();
}

About

Companion repo for zig-renderkit for making 2D games

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Zig 51.2%
  • C 48.1%
  • Other 0.7%