Truth on Stage

Credits and outside assets - TruthOnStage

Every asset, plugin, sound, font or code sample that was not made by us during the jam goes here, the moment it is added.

ItemWhere it is usedSource (URL)LicenceAdded
Engine basic shapes (Plane, Cylinder, Cube, from /Engine/BasicShapes) and their default materialGrey-box stage: floor, turntable, pegsShips with Unreal Engine 5.9Unreal Engine EULANov 11, jam hour 0.5
The engine's default font (Roboto, /Engine/EngineFonts)The digits 0 to 9 on every screen (Roboto Bold, since jam hour 19.4), and the set names lying on the stage; all text before the pixel font came inShips with Unreal Engine 5.9Unreal Engine EULA (the font itself is Apache 2.0)In use since Nov 11, jam hour 0.5; listed Nov 12, jam hour 10.1
Pixelify Sans, Regular and Bold (/Game/UI/Fonts, files in SourceArt/fonts/PixelifySans)All on-screen textgithub.com/eifetx/Pixelify-Sans at commit 39df74a (the source Google Fonts builds from); chosen by the userSIL Open Font License 1.1; OFL.txt is kept beside the files and its notice has to go with the gameNov 12, jam hour 12.8
Engine basic shape Cone (/Engine/BasicShapes/Cone)Part of each peg figureShips with Unreal Engine 5.9Unreal Engine EULANov 12, jam hour 13.2
Engine basic shape Sphere (/Engine/BasicShapes/Sphere)The dust motesShips with Unreal Engine 5.9Unreal Engine EULANov 12, jam hour 12.5
Paper2D's sprite material (/Paper2D/MaskedUnlitSpriteMaterial)Every spriteShips with Unreal Engine 5.9 (Paper2D plugin)Unreal Engine EULANov 12, jam hour 10.5
Kenney "Impact Sounds" 1.0: footstep_wood_001, footstep_wood_004, impactWood_light_003, impactWood_medium_000, impactWood_heavy_000, impactWood_heavy_002, impactPlank_medium_001 (copies in SourceAudio/kenney/impact-sounds)Footsteps (SFX_step_a, SFX_step_b), picking up and standing a figure (SFX_peg_pick, SFX_peg_drop), the gavel (SFX_gavel), "Cut" (SFX_cut), the thud in the stage that will not turn (SFX_stage_stuck)kenney.nl/assets/impact-sounds; chosen by the user ("Yes, Kenney CC0")Creative Commons Zero (CC0 1.0); License.txt is kept beside the filesNov 12, jam hour 23.4
Kenney "Casino Audio": card-place-2, card-slide-2 (copies in SourceAudio/kenney/casino-audio)Playing a card (SFX_card_play), the device printing a card (SFX_card_print)kenney.nl/assets/casino-audio; chosen by the userCreative Commons Zero (CC0 1.0); License.txt kept beside the filesNov 12, jam hour 23.4
Kenney "RPG Audio": bookFlip2, creak2 (copies in SourceAudio/kenney/rpg-audio)Paper: the dropped reckoning, the notes badge, a swapped card, the title cards (SFX_page); the creak in the stage that will not turn (SFX_stage_stuck)kenney.nl/assets/rpg-audio; chosen by the userCreative Commons Zero (CC0 1.0); License.txt kept beside the filesNov 12, jam hour 23.4
Kenney "Interface Sounds": click_001, scratch_005 (copies in SourceAudio/kenney/interface-sounds)Button clicks (SFX_ui_click), a claim struck out (SFX_strike_line)kenney.nl/assets/interface-sounds; chosen by the userCreative Commons Zero (CC0 1.0); License.txt kept beside the filesNov 12, jam hour 23.4
GeneralUser GS 2.0.3, a General MIDI SoundFont by S. Christian Collins (kept at C:\Jam\Tools\soundfonts\GeneralUser-GS, not in the project)The instrument sounds of all four pieces of music in the game since jam hour 23.9 (MUS_preamble, MUS_stage_waltz, MUS_fight_tango, MUS_questioning), rendered by SourceAudio/midi_tracks.pygithub.com/mrbumpy409/GeneralUser-GS (the author's repository; schristiancollins.com); chosen by the userIts own licence, v2.0: "You may use GeneralUser GS without restriction for your own music creation, private or commercial." The licence also says the author cannot be fully sure where every sample came from. LICENSE.txt is kept beside the fileNov 12, jam hour 23.7

Made during the jam, and with what

Everything below was made inside the building window. It is listed so the tools are on record.

ItemWhere it is usedMade withWhen
All Blueprints and Widget Blueprints (/Game/Stage, /Game/Fight, /Game/Court, /Game/UI), from the text sources in SourceBlueprints/The whole gameClaude Code, through the Unreal editor's MCP server and its Blueprint DSL toolsNov 11 to 12, jam hours 0.5 to 1.4
The grey-box level /Game/Maps/Stage and the flat-colour materials in /Game/Stage/MatThe stageClaude Code, with Python in the editorNov 11 to 12, jam hours 0.5 to 1.2
All in-game text so far (card names, fight lines, the questioning, the card, the four endings)Fight and court screensWritten by Claude as a draft for the user to rewriteNov 11 to 12, jam hours 0.8 to 1.2
16 sound effects, /Game/Audio/SFX_* (click, peg pick and drop, stage turn, card print, nothing printed, card play, her reply, cigarette, cut, confession, tear, strike, gavel, win, lose)Carousel, fight and courtJamKit/sfx.py from the recipes in SourceAudio/sfx_recipes.json, written by ClaudeNov 12, jam hour 1.3
The carousel's three sets, ten pegholes, walk mode and the preamble screen (WBP_Intro), with their textCarouselClaude Code, through the Unreal editor's MCP server; layout from SourceBlueprints/stage_layout.pyNov 12, jam hours 9.7 to 10.1
Stand-in sprite sheets for the Investigator (idle, walk) and the baroness (idle), /Game/SpritesWalk mode and the fight scene, until the real sprites existDrawn by SourceArt/make_standins.py, a Python script with Pillow written by Claude; imported with JamKit/jam.py spritesNov 12, jam hour 10.5
The fight's side-on scene (figures, camera)The fightClaude Code, through the Unreal editor's MCP serverNov 12, jam hour 10.5
The prop star model (/Game/Stage/Models/PropStar)Beside the stage; trial T5, the look testMeshy text to 3D, model meshy-t2 (smart topology, 1,500 faces), then its texture refine. Prompt: "a theatre stage prop star, five points, hand-cut from plywood and painted gold with visible brush strokes, mounted upright on a short black iron stand with a round weighted base, one point of the star snapped off, low poly, flat colours, a hand-made miniature for a scale model of a stage". Texture prompt: "a theatre prop star hand-painted gold on plywood with visible flat brush strokes, matte, no gloss, a black painted iron stand and base, flat colours like a hand-made stage scale model". 15 creditsNov 12, jam hour 10.9
The baroness's sprite (/Game/Sprites/Baroness)The fightConcept by the user in Midjourney (SourceArt/concepts/baroness.png); redrawn as pixel-style art by Codex's image tool on the user's ChatGPT plan; converted with PixelLab /image-to-pixelart (256x256, seed 7), 1 generation; cleaned and laid out by SourceArt/make_sheets.pyNov 12, jam hour 11.1
The Investigator's sprite and 16-frame walk (/Game/Sprites/Investigator)Walking the stage, and the fightConcept by the user in Midjourney (SourceArt/concepts/investigator.png); redrawn by Codex's image tool with the baroness's sprite as a style reference; PixelLab /image-to-pixelart, 1 generation; walk by PixelLab /animate-pixminimax (16 frames, text only, seed 7), 2 generations; sheet by SourceArt/make_sheets.pyNov 12, jam hour 11.2
Twelve set pieces (/Game/Stage/Models): balcony, backdrop flat, hero's blade, viewing device, turntable, weapon rack, rampart flat, headsman's block, axe on a stand, witness rail, rose bower, dividing wallThe three setsMeshy text to 3D, model meshy-t2 (smart topology), each with its texture refine; prompts in ART_PROMPTS.md sections 2 and 6 and task ids in SourceArt/meshy/tasks.json; 15 credits each, 180 in allNov 12, jam hour 11.1
Pixel-art surface tiles: stone, canvas, wood, and the stage's boards (/Game/Stage/Models/Tiles)The stage floor, rampart, balcony, headsman's block, witness railDrawn by SourceArt/pixel_tiles.py, a Python script with Pillow written by Claude; laid on by two materials built with Python in the editorNov 12, jam hour 11.8
Pixel versions of the Meshy models' own textures (T_*_pixel). Replaced at jam hour 11.9 by the baked pictures below; no longer on any model(first attempt) Weapon rack, rose bower, backdrop, blade, axe, device, star, dividing flatsSourceArt/pixel_textures.py: each Meshy texture cut to 64 to 256 pixels and 12 to 24 coloursNov 12, jam hour 11.6
The picture on the card "I ran him through" (/Game/UI/Cards/T_Card_RanHimThrough)The carousel screenPainting by the user in Midjourney (SourceArt/concepts/hero_blade.png); converted with PixelLab /image-to-pixelart (256x256, seed 7), 1 generationNov 12, jam hour 11.7
Baked pixel pictures of eight props (T_*_front, T_*_side, T_*_top): weapon rack, rose bower, backdrop, blade, axe, device, star, dividing flatThose props on the three setsFlat pictures of the Meshy models taken in the editor, turned into pixel art by SourceArt/pixel_bake_process.py, laid on by materials built in Python (SourceBlueprints/pixel_bake.py)Nov 12, jam hour 11.9
Normal maps for the Investigator's and the baroness's sprite sheets (T_Investigator_n, T_Baroness_n)Lighting on both figuresSprite Fusion Sprite Normals 0.1.0 (MIT licence, github.com/Hugo-Dz/spritefusion-sprite-normals, built from source at commit d14b067) run on the sheets made in this jam; lit material built with Python in the editorNov 12, jam hour 12.1
The theatre round the stage: stage floor, back curtain, wings and legs, footlights, and their tiles (curtain, floor, brass)Background of every viewPlain engine shapes placed by stage_layout.build_level; tiles drawn by SourceArt/pixel_tiles.pyNov 12, jam hour 12.3
Normal maps for the seven drawn tiles and the 24 baked prop views (T_Tile_*_n, T_*_front_n and so on)Lighting on every set surfaceSprite Fusion Sprite Normals 0.1.0 (MIT) run by SourceArt/make_normals.py; materials built by SourceBlueprints/pixel_materials.pyNov 12, jam hour 12.3
Stage lighting, haze, dust motes, glow and camera focusEvery viewPlaced and set by stage_layout.build_level (Claude Code, Python in the editor); engine lights, height fog and post-process settingsNov 12, jam hour 12.5
The three peg figures (/Game/Stage/Pegs), the peghole rings and the coloured home rings, with their tiles (pegwood, paint_*, socket, home_*)The model viewFigures merged from engine basic shapes by stage_layout.build_level; pictures drawn by SourceArt/pixel_tiles.py; normal maps by Sprite Fusion Sprite NormalsNov 12, jam hour 13.2
The fourth peg figure (Aleo), his green home ring, and the dropped paper, with their tiles (paint_green, home_green, note)The model view and the walkFigure merged from engine basic shapes by stage_layout.build_level; pictures drawn by SourceArt/pixel_tiles.py; normal maps by Sprite Fusion Sprite NormalsNov 12, jam hour 13.7
Seven card pictures (/Game/UI/Cards: Press, Ask, Listen, The fall, The headsman, the confession, The jealous son)The fight's cardsPixelLab /create-image-pixflux, 192x128, seed 11, started from the user's painting for "I ran him through" with its sword painted out and held to its palette; 10 generations in all (2 trials, 7 kept, 1 retry not used); prompts in SourceArt/make_card_art.py, requests in SourceArt/cards/*.request.json; two corner scribbles painted out by the same scriptNov 12, jam hour 14.1
The card window for "I ran him through" (T_Card_i_ran_him_through)The fight's cardsCut from the user's painting as converted earlier (see its own row) by SourceArt/make_card_art.pyNov 12, jam hour 14.1
The first set of screen pieces (SourceArt/ui/: card frames, plates, ribbon, caption, bars, buttons, eleven icons); only its bar fills, band marks and card glow are in the game nowThe fightDrawn by SourceArt/ui_art.py (Claude Code, Python with Pillow)Nov 12, jam hour 14.1
The fight's screen (/Game/UI/WBP_Battle)The fightBuilt by SourceBlueprints/ui_battle.py and the WBP_Battle.*.wdsl graphs through the editor's tools (Claude Code)Nov 12, jam hour 14.1
The screens' pieces (/Game/UI/Art: card frame, plate, ribbon, button, red plate, bar track, caption strip, nine round badges)Every screenPixelLab /create-ui-asset, one 512x512 template of 16 labelled shapes, seed 11, 25 generations; request in SourceArt/ui_pl/kit.request.json. Cut into pieces by SourceArt/make_ui_pl.py, which also makes from them: the blue and red card frames (recoloured), the button's other states (lightened, darkened, greyed), the discard and From-the-top badges, and the parchment pages. The bar fills, band marks and card glow in the set are drawn by SourceArt/ui_art.py. Chosen by the user over the script-drawn setNov 12, jam hour 14.6
The carousel's and the court's screens (/Game/UI/WBP_Carousel, WBP_Hearing)The carousel, the courtBuilt by SourceBlueprints/ui_screens.py and the .wdsl graphs through the editor's tools (Claude Code)Nov 12, jam hour 14.6
Eiry's sprite and hover (/Game/Sprites/Eiry, four colours)The carousel, the walk, the fightPixelLab /create-image-pixflux (96x96, seed 7), 1 generation, then /animate-pixminimax (8 frames, seed 7), 1 generation; requests in SourceArt/sprite-runs/eiry/; the loop chosen, laid out and recoloured to violet, red and gold by SourceArt/make_eiry.pyNov 12, jam hour 14.9
The trace marks on the stage (/Game/Stage/Marks: smear, red on the block, notch, scuff, scrape, the star's point)The carousel and the walkPictures drawn by SourceArt/pixel_marks.py (Claude Code, Python with Pillow); laid on as engine decals by SourceBlueprints/pixel_decals.pyNov 12, jam hour 15.1
The E key over a thing that can be looked at (/Game/Sprites/Prompt)The walkDrawn by SourceArt/make_prompt.py (Claude Code, Python with Pillow)Nov 12, jam hour 20.9
Three animation clips: the Investigator's idle and kneel, the baroness's idle (rows of /Game/Sprites/Investigator and /Game/Sprites/Baroness)The walk and the fightPixelLab /animate-pixminimax on each finished sprite, seed 7, first and last frame the same; requests in SourceArt/sprite-runs/*/idle-request.json and kneel-request.json; 7 generations. Laid out by SourceArt/make_sheets.pyNov 12, jam hour 23.3
SFX_found_all; softer SFX_step_a and SFX_step_bThe walkMade by JamKit/sfx.py from SourceAudio/sfx_recipes.jsonNov 12, jam hour 23.3
Two badges for the carousel screen's fold-away boxes (T_UI_icon_eiry, T_UI_icon_notes)The carousel and the walkDrawn by SourceArt/make_ui_pl.py on the PixelLab kit's empty badgeNov 12, jam hour 22.5
SFX_stage_stuckThe stage that will not turnMade by JamKit/sfx.py from SourceAudio/sfx_recipes.jsonNov 12, jam hour 22.5
The set names over the rim (/Game/Stage/Marks/T_Mark_name_*)The carousel and the walkDrawn by SourceArt/pixel_marks.py in Pixelify Sans Bold (the outside font already listed)Nov 12, jam hour 21.2
The prop star and the headsman's block, remade (/Game/Stage/Models/PropStar, /Game/Stage/Models/headsman_block)The stageMeshy image-to-3d (meshy-t2, smart topology), from drawings made by SourceArt/make_prop_refs.py; 45 credits (one star, two blocks; the first block was not used). Task ids in SourceArt/meshy/tasks_remake.json. They replace the first star and block, which were Meshy text-to-3DNov 12, jam hour 21.2
The splash painting behind the preamble (/Game/UI/Art/T_Splash)The preamblePainted by the user in Midjourney during the jam (their prompt is in ART_PROMPTS.md, section 9), SourceArt/concepts/splash.png; converted with PixelLab /image-to-pixelart (1456x816 to 480x270, seed 7, strength 200, fixer on), 2 generations (once from the chat's copy, once from the original, which is the one used); a 128x71 trial with /image-to-pixelart-pro-flash (6 generations) was not usedNov 12, jam hour 19.4
Music: "unfinished waltz", "Duel de Tango", "Question in the Air", "Question Mark" (/Game/Audio/Music)The carousel and walk; the fight; the court and endings; the preambleMade by the user with Suno during the jam from prompts drafted by Claude (ART_PROMPTS.md, section 8; the prompts finally used are the user's to fill in). The user checks that their Suno plan's terms cover a jam entryNov 12, jam hour 19.7
Ten paintings: the preamble's four pages (the body, the confession, the Investigator, the model) and the six endings (/Game/UI/Art/T_Splash_*; the user's originals in SourceArt/concepts/splash/STAGE1..10.png, the pixel versions in SourceArt/splash)The preamble; the ending screensPainted by the user in Midjourney during the jam, from the prompts in ART_PROMPTS.md, section 9. Made into pixel art by PixelLab /image-to-pixelart (1456x816 to 480x270, strength 200, fixer on, seed 7), 10 generations; requests in SourceArt/sprite-runs/splash/*/request.jsonNov 12, jam hour 24.9
Music, four pieces: the preamble, the stage waltz, the fight tango, the questioning (/Game/Audio/Music/MUS_preamble, MUS_stage_waltz, MUS_fight_tango, MUS_questioning; notes in SourceAudio/midi_tracks.py, MIDI files and renders in SourceAudio/midi)The preamble; the carousel and walk; the fight; the court and endingsWritten note by note by Claude Code during the jam, on the user's word ("Yes, write the tracks"). Rendered by FluidSynth 2.6.2 (LGPL, a tool) through the GeneralUser GS SoundFont, which is an outside asset (first table): the notes are the jam's work, the instrument sounds are notNov 12, jam hour 23.9
Superseded at jam hour 23.9: the four Suno pieces in the row above are no longer played by the game. Their files stay in SourceAudio/music and /Game/Audio/Music, unused, and are not packed. To hear them again, put their names back in SourceBlueprints/BP_Music.dsl(not in the game)The user's choice of the MIDI routeNov 12, jam hour 23.9
Five more sound effects (footsteps, look closely, page, Eiry's bell) and the music player BP_MusicThe walk, the preamble, EiryJamKit/sfx.py from SourceAudio/sfx_recipes.json; the Blueprint written through the editor's tools (Claude Code)Nov 12, jam hour 19.7
Superseded at jam hour 23.4: SFX_step_a, SFX_step_b, SFX_peg_pick, SFX_peg_drop, SFX_card_play, SFX_card_print, SFX_page, SFX_gavel, SFX_cut, SFX_strike_line, SFX_ui_click and SFX_stage_stuck are no longer the script-made sounds named in the rows of this table. They are Kenney's recordings (outside assets, first table). The script-made versions' recipes are kept in SourceAudio/sfx_recipes_replaced.jsonCarousel, walk, fight, courtSourceAudio/make_kenney.py (ffmpeg: trim, gain, one mix)Nov 12, jam hour 23.4
The picture on the card "Cornered" (/Game/UI/Cards/T_Card_cornered)The fight, the court, the carousel's trayPixelLab /create-image-pixflux, 192x128, seed 11, same starting image and palette as the other seven; 1 generation; prompt in SourceArt/make_card_art.pyNov 12, jam hour 19.9
A card back, the confession torn in two, and two hit bursts (T_UI_card_back, T_UI_tear_l, T_UI_tear_r, T_UI_burst, T_UI_burst_red in /Game/UI/Art)The fight: cards flying to the deck and the discard, the confession being ripped up, a star where a card or her reply landsMade by SourceArt/make_card_fx.py from pieces already in this table: the PixelLab kit's card frames and the confession's own picture. The back's lattice and the tear line are drawn by the script. No generationNov 13, jam hour 33.5