Game Template Library
Find a file
2026-08-03 16:44:45 +01:00
src Added [FixedArrayList, FixedSlotMap] | Updated [gtl.zig, README.md] 2026-08-01 18:18:53 +01:00
.gitignore HelloWorld! 2026-07-12 19:46:40 +01:00
build.zig HelloWorld! 2026-07-12 19:46:40 +01:00
build.zig.zon HelloWorld! 2026-07-12 19:46:40 +01:00
README.md test hooks 2026-08-03 16:44:45 +01:00

Includes

Arrays

  • SlotMap

  • KeyedSlotMap

  • FixedSlotMap

  • FixedArrayList

  • RingBuffer

  • Handle(T) Generational

Misc

  • log
  • ansi (colors etc)
  • TypeID

Examples

KeyedSlotMap

// --- SHADER MAP ---
var shaders: KeyedSlotMap(ShaderID, GPUShader) = .init(alloc);
defer shaders.deinit();

// --- NEW SHADER ---
const shader_handle = try shaders.put(.pbr, .{ .raw = undefined });
defer shaders.remove(shader_handle);

TypeID

const Player = struct {};
std.debug.print("TypeID(Player): {}\n", .{TypeID(Player)});
Output: TypeID(Player): 2462284566368800629

Logs

log.warn("...", .{});
log.err("...", .{});
log.info("...", .{});
log.debug("...", .{});
log.trace("...", .{});
log.fatal("...", .{});

NicePrint

Styles

  • default
  • rounded
  • pipe
  • custom

Example

// --- PRINT ---
if (log.print(.debug, "DEVICE INFO", ansi.bold ++ ansi.red)) |a| {
    defer a.end();

    // --- VALUES ---
    a.write("device -> {s}", .{"GTX"});
    a.write("vendor -> {s}", .{"Nvidia"});

    // --- SECTION ---
    if (a.section(.err, "MEMORY", ansi.green)) |b| {
        defer b.end();

        b.write("VRAM -> {}GB", .{24});
    }
}

Output

┏━ DEVICE INFO
┃ device -> GTX
┃ vendor -> Nvidia
┃ ┏━ MEMORY
┃ ┃ VRAM -> 24GB
┃ ┗━
┗━

TODO

[ ] Lear how to properly structure markdown 🥀 hook-test