Skip to content
View JujuAdams's full-sized avatar
🌈
🌈

Block or report JujuAdams

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
JujuAdams/README.md

You might know me from my commercial work but I spend my free time making libraries to help developers.

GML is something of a quirky language and has led me to evolve particular techniques to establish a personal "best practice". You can read some of my thoughts on the nuances of developing in GameMaker here.

 

Popular Repos

Scribble Deluxe
Powerful, fully featured text renderer
Optimised for dynamic effects and dialogue
Input
Comprehensive cross-platform input
Now maintained by offalynne
Scribble Jr.
Fast and lightweight text renderer
Optimised for UI text and performance
Vinyl
Live updating modular audio system
SNAP
Struct and array export/import and utilities
Chatterbox
Narrative scripting tool
Dynamo
Dynamic data loading
Snitch
Logging and crash handling system
iota
Miniature fixed timestep library
Bulb
2D lighting and shadows
Texan
Texture group manager
DoLater
call_later but with arguments
Clean Shapes
Antialiased primitive drawing
db
Simple savedata database

 

All The Repos

3D

Bonk 3D collision and response-to-collision. Presumes a Z up coordinate system
Ugg Basic 3D shape drawing. Useful for debugging and whiteboxing
Basic Quaternions Basic 3D quaternion functions. Useful for managing complex rotations in 3D
dotobj .obj loader. Supports out-of-spec vertex colours

Text & Localization

Scribble Deluxe Feature-packed text renderer, optimised for dynamic effects and dialogue
Scribble Jr. Lightweight text renderer. Fewer features than Scribble Deluxe but far faster
Chatterbox Branching narrative engine. Loosely based on version 2 of the YarnScript language
Buffer-based string operations Faster bulk string deletion/insertion using buffer operations
Ngram Ngram fuzzy string matching
Levenshtein Levenshtein fuzzy string matching
Ltxt Localization experiment. Probably not suitable for serious use
Text Utilities Various language processing tools for Arabic, Thai, Hindi (Devanagari), and Hebrew. Not fully explored
LoadOTF .otf file loader. Incomplete
MSDF Tool MSDF font tool. Incomplete

Camera & Resolution

PictureFrame Camera/view/GUI/window/application surface calculator
Beady Eye Camera helper. Has a selection of modes and screenshake options
Resolution Library Library of different resolutions for different devices. Useful for testing reactive interfaces etc.

Audio

Vinyl Multi-purposes sound playback. Supports live mixing
BorkBork Advanced audio emitters. Supports lots of different shapes including boxes, lines, and polygons
Waveform View Audio waveform viewer. That's all! Might be useful for games where the player can import their own music

Graphics

Clean Shapes Antialiased shape drawing. Has a nice batching mode for efficient rendering
ColorMod High performance palette swapper
Bulb 2D lighting and shadows, including "infinite range" directional lights. Has a tonemapper and HDR mode
Splat Vertex buffer-based decals
Kawase Kawase blur solution. Much faster than high radius Gaussian blur
LUT Simple 4K LUT (32-bit 1:1 colour swap) to colour grade images as a post-processing effect
Shockwave Per-pixel ripple effect
Texan TEXture mANager. Tool to help unload/load textures in a sensible and efficient way
Pixel Art Upscaling Filtered pixel art upscaler. Allows you to scale pixel art by non-integer values without distortion and with minimal blurriness
Scalers Various pixel art scaler shaders. Not general purpose. The shaders are opinionated and look very different to each other
Homographic Sprite Drawing Distortion-free sprite skewing. Solves the texture stretching problems when using skewed two-triangle primitive
Matrices Various matrix operations
Morph 2D matrix emulation. Helpful for performance-sensitive situations where full fat matrix functions would be too slow
Pinocchio State-based animation system. Was inteded for use with GUIs
Lattice Textmode-style rendering functions
gl_FragDepthEXT Simple example of gl_FragDepthEXT use

Analytics & Bug Tracking

Snitch Logging and crash handling system. Can interface with sentry.io, GameAnalytics, Bugsnag, or whatever custom service you're using
Unity Analytics Unity Analytics integration. Uses the REST API so should be cross-platform
Google Analytics 4 Google Analytics 4 integration. Uses the REST API so should be cross-platform

Data Handling

SNAP Data format converters. Can read/write JSON, YAML, CSV, Messagepack, XML, INI, VDF, QML. Can read/write other formats too (pure binary, NSV, basic GML, grid and 2D arrays, GameMaker tilemaps)
Extending JSON Two JSON-like formats that are easier for a human to write
Iago JSON schemas. Doesn't have full coverage
db Simple database system that runs JSON underneath
Sphinx Simple encryption system. Not mega secure but will deter unserious attackers
Protect Your Savefiles HMAC-based savefile security. Doesn't encrypt savefiles but does prevent them from being editted
Dynamo Live data updating. Helpful to build system that allow you to edit game parameters whilst the game is running
Elephant Struct serialization system. Retains constructor type for structs when deserializing. Includes versioning system
SHA and HMAC SHA and HMAC implementations. Covers SHA-256 and SHA-512

Networking

Postie Ordered, accumulated, and simulated network packets. Very useful for emulating dodgy network connections to stress test multiplayer games

Number

PRNG Functions Suite of PRNG functions. Very helpful for networked multiplayer and procedural generation
PRNG Finder Set of macros to discover native GameMaker functions that update the internal PRNG. Useful to discover places where game behaviour might diverge due to different random seeds
BIG Big integer solution. Contains converters to and from strings and decimals

Pathfinding & Geometry

Mundi Dijkstra floodfill solution. Also contains pathfinding
Delaunay Triangulation Triangulation algorithm that tends to generate visually pleasing triangle decompositions. Also contains pathfinding
Computational Geometry My first ever piece of open source code. Covers nearest point on path, path smoothing, geometry simplification, and sprite edge tracing

Timing & Scheduling

iota Fixed timestep delta timing solution. Has variable interpolation for generating frames between logic steps
DoLater Better call_later()
Coroutines Asynchronous code execution. Useful for cutscenes

UI

Bento GUI framework. Incomplete (for now)
Textbox Monospaced multiline text entry. Not especially well tested

Other

Painfully Learned Lessons General advice for using GameMaker
Thoughts On GameMaker More specific advice for using GameMaker based on my own beliefs and experiences
GameMaker Libraries GameMaker libraries made by other people!
CrapPointer Crappy pointers. Maybe you need these but you probably don't
Gumshoe Cross-platform file finder
Mobile Haptics Very basic haptics for mobile devices. Probably obsolete these days
MemTrack Memory usage tracking. Records when and where data structures, vertex buffers, surfaces etc. were created and whether they have been destroyed or not
A Message from Amalthea Music toy made for the 2019 Meditations project (9th September). Designed to run in the browser on multiple platforms
GitHub Release Notifications Silly system for checking for repo updates on GitHub

Popular repositories Loading

  1. Scribble Scribble Public

    Efficient, internationalized, multi-effects text renderer for GameMaker

    Game Maker Language 383 46

  2. Chatterbox Chatterbox Public

    GameMaker 2022 LTS implementation of the Yarn narrative design language

    Game Maker Language 157 22

  3. GameMakerLibraries GameMakerLibraries Public

    A big ol' list of GameMaker libraries, extensions, tools etc.

    JavaScript 110 14

  4. Bulb Bulb Public

    2D lighting and shadows for GameMaker 2022 LTS

    Game Maker Language 99 9

  5. SNAP SNAP Public

    Data format converters for GameMaker LTS 2022

    Game Maker Language 94 16

  6. Coroutines Coroutines Public

    Coroutines for GameMaker Studio 2.3.6+

    Game Maker Language 82 4