TL;DR - GameGrumpsJointJustice/courtengine GitHub Wiki

Directories

/backgrounds - All background PNGs used in the game (in any script).

/characters - Directories containing the various PNGs (poses/animations) and WAVs (sound effects) for characters used in the game (in any script).

/code - Where all the magic happens (see below).

/docs - Used for https://gamegrumpsjointjustice.github.io/courtengine/. Not hugely utilized right now. Could be used for other things.

/evidence - All sprites used for evidence in the game (in any script).

/music - All MP3s used in the game (in any script).

/scripts - All episode scripts. Currently e1s#.script files are the ones run by default, in order defined by episode1.meta.

/sounds - All other non-character-specific WAV sound effects (e.g., gavel sound, typing sound while talking, court mutters, etc.).

/sprites - PNGs for everything not captured by previous categories (e.g., court muttering animation, gavel slamming animation).

Root Files

config.lua - Global variables. Can add more or tweak to test things out (keyboard bindings, dimensions, colors, filenames, etc.).

main.lua - What’s actually called when the game is run. Currently sets a canvas and kicks off the title screen if applicable, otherwise parses arguments from the love . call to see if a specific script and/or line should be loaded, and initializes our Episode "class."

/code

/events - Contains the definitions for all of the events used by the script loader (e.g. initializing, characters, backgrounds; all assets for a given scene). Also events that dictate when evidence is added, when the witness testimony has begun, when there should be a screen shake, etc.

/screens - System for defining a “Screen” that may consist of rendering logic, key handlers, toggle conditions, and others. Currently used to display the title screen, the pause screen, and the evidence UI.

/utils - Handful of helper functions used by other files at the moment; just a catch-all to avoid copy-paste for now.

assets.lua - Pulled by main.lua to automatically load in all background, music, sprite, shout (in SFX), SFX, and font assets found in the other directories. Characters and evidence are currently initialized by the script they're used in, but there's been some debate around whether or not that makes sense, too.

episode.lua - Defines Episode as a series of scenes (whether or not it’s loaded), keeps track of which scene index we’re on, what court records and evidence are currently available.

scene.lua - Defines Scene as a series of "events" loaded from a script by name. Currently also handles drawing the characters and the text in as requested.

scriptloader.lua - Parses a script by name and identifies the sequence of "events" that should be generated to play that script.