A small wrapper for Kinect V2 SDK for GameMaker games - mostly handy for using the sensor as a color and/or depth camera.
This is a page with a tagged list of things I made!
It is by no means complete (some projects are small, some stay under NDAs, some I might forget to add), but I tried to include everything of interest.
- Works (particularly noteworthy projects)
- itch.io page (collaborations and even more GameMaker extensions)
- GitHub page (even more open-source projects)
- Blog (tutorials, retrospects, one-off examples)
Last updated in March 2021.
You can click on section titles to expand/collapse them, and click on tags to only show sections that have that tag.
Compiler Compilers, transpilers, and interpreters (see descriptions for specifics).
Netcode Online multiplayer and related features.
Format Projects involving file format implementations - documented or not.
Hook Projects involving function hooking, memory scanning, and so on.
Mod Unofficial or semi-official modifications for games.
Web Web-based (read: runs in a browser) projects.
SDK SDK wrappers and implementations.
A simple wrapper for The Eye Tribe's eye tracker SDK for use in GameMaker.
I'm doing netcode for the sequel to the award-winning bushido brawler!
A remake of my 2009 icon converter in Haxe and modern HTML5.
mouse_event) mouse simulation for GameMaker games.
A GIF reader for GameMaker games!
Tricks and function hooking to hot-swap shaders in GameMaker games.
I wrote netcode for this arkanoid-platformer ballbusting title!
A tool for repairing GameMaker Studio 2.2 projects
A web-based tool for converting bitmap fonts into TTF files. A successor of BitFontReader.
For April Fools 2020 I decided to pick no low-hanging fruit and made a tech demo of code in a GameMaker project live-reloading into Unity. Also a good showcase of why I like Haxe.
Allows changing window icons / taskbar badges for GameMaker, C# WinForms, and Unity.
A multi-version mod for Nova Drift that uses DLL injection to add a number of quality-of-life tweaks... and optionally give spaceship 6 legs to scuttle with.
Allows capturing arbitrary parts of screen into Texture2Ds in Unity games.
I once wrote a tool to perform static analysis and generate equivalent C# code for gradually migrating a GameMaker project to C# and Unity.
A tool to convert GameMaker Studio 2 projects back to GMS1 format.
A haxe-based wrapper for mod.io API that is used for the official GameMaker SDK and can be used with Haxe or JS for simple (read: no browser embed) access with no extra dependencies.
A tool to aid with version control branch merges and project manipulation in GameMaker Studio 2 - from a time before this was handled correctly "out of box" in GMS2.3+
Uses various high-end tricks to enable a variety of "offline" GameMaker games to be played over the internet in a form of deterministic lockstep simulation.
A mod that adds SUPERHOT-esque mechanics to Unexplored, a top-down roguelite game with spectacular level generation and mechanical depth.
Monkey-patched internal functions to implement exception handling in GameMaker long before the language officially supported exception handling.
I wrote the modding system (with a GMS2-equivalent scripting language) and the "backend" for the netcode of the award-winning idle & crafting game... before the game fell apart, that is.
Allows GameMaker games to distinguish between input from multiple mice/keyboards.
Monkey-patches an internal function to allow GameMaker HTML5 games to use Data URIs in place of any file/URL path.
A tool that converts GameMaker rooms to a JSON format and an extension to load them.
I wrote netcode, level sharing, and leaderboard systems for this multiplayer sandbox 'racing' game.
Allows GameMaker games to generate specification-compliant ZIP archives.
I wrote netcode for this little volleyball-inspired game.
I wrote a two-part tutorial on writing custom scripting languages and an example GML-like language for it!
Allows capturing arbitrary parts of screen into surfaces in GameMaker games.
Early 2018 I was commissioned to work on series of small fixes for GameMaker's HTML5 target.
A GOG.com SDK wrapper for GameMaker games.
An Electron-based code editor for GameMaker projects with themes, plugin support, and countless convenience features over the default IDE.
In 2017 one of the clients had found themselves in an unfortunate situation after their first developer decided to code a matchmaking server for a large-ish (100+ CCU) turn-based game in GameMaker.
GameMaker didn't have exception handling back then, so the entire server would crash rather easily on any logic mishaps. After realizing the direness of the situation, the developer promptly evaporated.
I was commissioned to write a custom compiler which, by utilizing both type inference and manual type hints, would convert dynamically typed GML code into statically typed Haxe. Doing so allowed to utilize Haxe's exception handling (meaning that bugs would only affect their respective match at worst) and added performance from targeting strictly-typed C++.
Although the project had long concluded, my research lives on in my blog posts - so, when I want interactive demo(s) in a post (examples: 1, 2, 3, 4...), I write them in GMLive.js first, convert them to Haxe, and pair them with a little framework that implements a handful of GameMaker functions while eliminating anything unused via DCE. The result is mere kilobytes of JS code.
A tool for manipulating Heat Signature's character files.
I made the "official unofficial" online multiplayer mod for Caveblazers, an roguelite action platformer game.
zlib [de-]compression from a time before GameMaker had built-in functions for it.
A live-coding extension for GameMaker!
Allows hot-reloading scripts, sprites, shaders, and rooms, making widely considered one of the most useful GameMaker extensions to date.
After working on Nuclear Throne Together for a year, I have been approached to help with development of base game, which resulted in game's update 99, and later the Switch port.
A specification-complaint JSON encoder/decoder for GameMaker games. The extension allowed for garbage-collected JSON objects before built-in functions for them were introduced in 2020.
Allows to integrate Lua scripting in GameMaker games!
I [re-]wrote netcode and made the scripting system for the indie platform fighting game!
I also worked on adapting the systems for the game's Switch port.
I wrote netcode for Gutter Arcade's action platform-fighting game and have been working on netcode for the game's sequel prior to it being put on hold in 2021.
A tool to explore sprites and textures in GameMaker games.
Allows GameMaker and Construct 2 games to offer the user to save screenshot PNGs.
A simpler Steamworks SDK wrapper for old versions of GameMaker.
At some point I wrote someone a DLL to do binary communication over a COM port, which was used to pipe data to series of 7-segment indicators on a billboard.
Improves upon GameMaker's INI support by introducing support for escape characters, ability to manage multiple INI files at once, preservation of comments/formatting, and so on.
Following news of AM2R receiving a DMCA takedown request from Nintendo, I set off with an ambitious task to reconstruct the game's source code from the available binaries.
The project was structured in a way so that the reconstructed repository would be void of Nintendo's copyrighted works. Subsequent community-made updates are based on it.
I did netcode for Indie Pogo, a platformer pogo brawler game for 2-4 players with an impressing number of cameo characters.
I was doing netcode for Kerfuffle, a platformer fighting game for 2..4 games.
Alas, the game was eventually put on hold, but I did do netcode for Knight Club too.
I wrote netcode for Hive Jump, a run-and-gun arcade-ish rogue-lite game.
Due to various reasons, it wasn't the very best.
I did netcode for this platformer MOBA/Tower Defense hybrid.
Though "did netcode" seems like a generous statement given that all I did was give permission to the game's artist to reuse the tech that I made for our previous collaboration, and have never even seen the game's source code. Still, I'm credited for netcode in-game.
A 3d first-person arena shooter inspired by Doom, Quake, and a particular cue sport.
A web-based tool that compiles and runs snippets of GML code right in the browser.
Spots a custom GML➜JS transpiler that pairs code up with GameMaker HTML5 runtime.
I made a Nuclear Throne mod that does a whole lot of things:
- Adds online multiplayer (complete with Steam matchmaking)
- Adds replays and spectating
- Adds ability to load other user-generated content,
complete with scriptable mods
(which use a GML-like language with a bytecode compiler+interpreter)
- Fixes countless bugs, be coop-related or not.
- Adds various quality-of-life tweaks like mouselock, native cursor, borderless fullscreen, widescreen, ≥60fps support, and more.
I was later hired to work on Nuclear Throne itself, incorporating many of my fixes and improvements into the base game.
I was at some point developing a scripting language with type inference for use in one of the contract projects. The project had not seen a release, though some of the ideas would live on in my later compiler works.
A wrapper extension for Steamworks SDK that implements numerous functions not covered by GameMaker out of box (networking, matchmaking, Steam Input, etc.).
I wrote netcode for this delightful 1-3 player snake game.
An online multiplayer mod for the jam version of Vlambeer's Nuclear Throne.
An online multiplayer mod for Vlambeer's Super Crate Box, also adding a versus mode and various options/improvements.
A short minimalistic platformer game made with pico-8.
I was hired to fix the game's netcode, subsequently hired to rewrite it to work well enough, and wrote netcode for the various releases of the game.
A web-based companion/mini-wiki web application for Terraria.
Noteworthy for extracting information directly from the game's files.
A custom Haxe compiler module to generate compact Lua code for use with pico-8.
A custom Haxe compiler module to allow generating GameMaker Language code from Haxe.
Development started in 2015 to make it feasible to write complex code for GameMaker games, and the project was publicly available since 2018.
I wrote netcode, a platformer engine, and various bits of UI for this asymmetric versus platformer game.
A web-based tool for converting bitmap fonts into BitFontMaker2-compatible format to allow exporting them to TTF. I would later improve upon the process in Pixel Font Converter.
A mod for Derek Yu's Spelunky Classic that adds online multiplayer and a number of fixes/tweaks/features.
A web-based character editor for Terraria.
With millions of pageviews, technically one of my most popular tools!
A 2-player action game where the players compete to paint the field in their color while fighting the other player.
I at some point made this little application that would dock a panel with on-screen keys to cover things that Win8 on-screen keyboard wouldn't offer out of box. Dedicated to days messing around with a x86 Win8 tablet.
Sometime in 2013 I had prototyped a lockstep netcode system without knowing what lockstep netcode is - purely on assumption that this must be how netcode in emulators works.
Me and a friend would then mess around and make various little 2P games/mods with no strong direction (first-person game, third-person race, among others), finished titles being Color Ninjas and Spelunky SD.
An IDE and a custom programming language for logical scheme simulation developed for use in local universities.
A custom HTML5 backend for OpenFL framework with focus on performance and application development - by targeting Flash+HTML5, a web app could run on more or less every desktop or mobile browser. As HTML5 support in browsers improved, this became unnecessary.
A demake of a Flash game Impasse written entirely in MCS-51 (8051) assembly.
My time "playing" Minecraft was split between:
- Writing scripts to procedurally mega-structures via WorldEdit (examples: A, B, C)
- Adding more and more automation features to a fork of Zombe's modpack to build mega-structures even without WorldEdit access.
- Writing server (Bukkit, Spigot) plugins when people paid me to (ex).
- Banning people for cheating on friends' servers and subsequently filing bugs for exploits and documenting my findings (examples: A, B)
Eventually it became too much effort to keep updating client-side mods and I stopped actively playing the game.
A predecessor of LDLS-m, written in AS3 and MinimalComps.
Primarily exists because I was sufficiently upset with a 16-bit DOS program used for the course and made an assumption that I could make a replica of it over a weekend (which I did).
Had its own assembly-like programming language (much like the original), a bytecode interpreter, and a simple debugger.
A 360-degree platformer game made for a GameMaker Community Jam.
A "Pipe Dream"-like game that I made for Kongregate's "Game in ten days" jam #13.
The restriction was that the compiled SWF must be 10KB or less. My 5KB entry took 1st place.
I helped fix a handful of issues in this HTML5 game engine, eventually being credited as co-author. Development had since ceased and the engine was open-sourced.
An ambient top-down exploration game with procedural generation made for PunkWeek game jam. Technically impressive but without much content. Took 3rd place.
For desktop and Flash Lite 4 compatible Android devices.
A short first-person 3d platformer with a "Shrinking" theme.
Written in 3d GameStudio's C dialect.
Perhaps the first game of mine to receive any real media coverage.
Posed with the task of porting a handful of client's low-complexity games from GameMaker to Flash, I decided to automate the process.
The result was a hilarious abomination:
- Resources were extracted from (then-binary) GameMaker files using gmk-splitter
and post-processed using a fairly simple application written in Java.
(e.g. levels were converted to inline code)
- Required parts of GameMaker API were recreated through a heavily modified version of FlashPunk and a variety of tricks (properties, global objects).
- GML code was converted to mostly-valid AS3 by replacing keywords and simple structures (without AST manipulation), requiring it to be fixed up by hand in some cases.
In the end, the project was successfully used for intended purposes, I did some tests with larger games, and left the idea.
A small, Flash-based icon converter tool. Received a rewrite a decade later.
My oldest attempt at doing netcode that I could find - after doing some basic tests with pong and alike, I decided to make a sandbox-ish thing where players could build/navigate a persistent world - with chunks, region ownership, and alike.
The idea was eventually abandoned as GameMaker couldn't export Linux executables back then, renting a Windows server was expensive, and I didn't want to rewrite the server in another programming language.
My earliest released game that still works, I think? A small arena shooter with AI opponents.