Skip to content

Instantly share code, notes, and snippets.

View perky's full-sized avatar

Luke perky

View GitHub Profile
@perky
perky / save_BigRun.sav
Created September 9, 2026 15:02
Big Run Save File
{
"slotName": "BigRun",
"password": "fugitive",
"filenameUid": "ab4c7a124f0c4f83",
"lastPlayedTimeAsLong": 639238859892541400,
"skipAidsActive": false,
"totalPlaytime": 1,
"entries": [
{
"key": "worldSeed",
@perky
perky / main_01.zig
Created June 29, 2026 12:03
Perky's Perks
//! This is some code I wrote after watching the GMTK (Game Makers Toolkit) video
//! on how the presenter implemented 'Passive Modifiers' in a word-making game.
//! See: https://www.youtube.com/watch?v=n1cd1FhVAWY
//!
//! In that video he showcases an implementation that uses class inheritance and
//! virtual functions. I thought that's a great concrete example of gameplay code
//! that can be used to show how I think about programming, where I would go the route
//! of tagged unions and switch statements.
//!
//! To be clear, this isn't a 'my way is better' piece. What's presented in GMTK is
@perky
perky / test_node.zig
Created March 27, 2026 08:56
gdzig memory leak example
// Registration omitted for brevity
const TestNode = struct {
base: *godot.class.RefCounted,
pub fn create(allocator: *Allocator) !*TestNode {
var self = try allocator.create(TestNode);
self.* = .{
.base = godot.class.RefCounted.init(),
};
@perky
perky / multi_core_by_default.zig
Last active November 4, 2025 02:55
An example of multi-core by default.
//! An example of Multi-Core by Default
//! See https://www.rfleury.com/p/multi-core-by-default
//! This solves part 1 & 2 of Advent of Code 2024 day 1: https://adventofcode.com/2024/day/1
//! Code by Luke Perkin (2025)
const std = @import("std");
const Allocator = std.mem.Allocator;
const Thread = std.Thread;
threadlocal var thread_ctx: *ThreadContext = undefined;
@perky
perky / day03.zig
Last active December 14, 2023 15:31
Advent of Code 2023
const std = @import("std");
const LineParser = @import("LineParser.zig");
const fs = @import("fs.zig");
const raylib = @import("raylib.zig");
const c = raylib.c;
const Map = struct {
cells: CellArray,
symbol_indices: IndicesArray,
numbers: NumbersArray,
@perky
perky / day01.zig
Last active December 12, 2023 16:48
Advent of Code 2023
const std = @import("std");
const c = @cImport({
@cInclude("raylib.h");
});
const word_numbers = [_][]const u8{
"one",
"two",
"three",
"four",
@perky
perky / anytype_antics.zig
Created April 29, 2023 19:34
Exploring different ways of using "anytype" in Zig for both static and runtime dispatch.
//! ==============
//! Anytype Antics.
//! ==============
const std = @import("std");
const debug = std.debug;
const builtin = std.builtin;
const trait = std.meta.trait;
fn print(string: []const u8) void { debug.print("{s}\n", .{string}); }
const DONT_COMPILE = false;
@perky
perky / mario_state_machine.zig
Last active November 13, 2024 10:25
Mario State Machine. Showcases the usefulness of switches and tagged unions in Zig.
//! ======
//! file: mario_state_machine.zig
//! This is an example of a Mario/Powerup state machine.
//! It showcases the usefulness of switches and tagged unions in Zig.
//! See state machine diagram:
//! https://external-preview.redd.it/TgwKB-bdEWJase06sIDXmVtaGaP7AZTD9YKn0x4yUWo.png?auto=webp&s=c0318b178038bd83212392c8fdd16e1a4b1a0049
//! ======
/// This is a tagged union.
/// See tagged union doc:
@perky
perky / BindComponentAttribute.cs
Created April 16, 2019 12:31
A little script for Unity that helps binding references to other components in the scene.
using UnityEngine;
using System.Linq;
using System;
using System.Reflection;
public class BindComponent : PropertyAttribute
{
public enum FindMode
{
InSelf, // Find the component on the calling GameObject.
using UnityEngine;
using Bolt;
public class LobbyMenu : GlobalEventListener
{
[SerializeField] string _gameplayScene;
[SerializeField] ushort _port = 27000;
[SerializeField] ushort _broadcastPort = 27001;
bool _bClientLANInit;