Reading view
Jimmy Sprite Inventory and Drop-In Replacement Guide
Jimmy Sprite Inventory and Drop-In Replacement Guide
This document lists the Jimmy-specific sprite resources in the original GameMaker project and explains the safest way to replace Jimmy with a new character while staying inside the existing game architecture.
How Jimmy is wired into the project
char_jimmyis character id1inscripts/macros/macros.gml.controller_main/Step_0.gmlspawnsobj_jimmywhen a player slot is set tochar_jimmy.obj_jimmyinherits fromclass_playerand binds Jimmy's gameplay sprites inobjects/obj_jimmy/Create_0.gml.obj_jimmy/Other_10.gmlequipsobj_pistol_jimmyas the default starting weapon when no saved weapon exists.menu_char_jimmy/Create_0.gmlbinds Jimmy's character-select button art.obj_swap_jimmy/Create_0.gmlbinds Jimmy to the in-run character swap system.controller_main/Draw_64.gmlusesspr_hud_face_jimmyfor the HUD portrait.menu_char_playerCard/Draw_0.gmlusesspr_card_jimmyfor the large character card.menu_char_playerStat/Step_0.gmlusesspr_pistol_jimmyas Jimmy's featured weapon icon.obj_revival_hologram/Create_0.gmlusesspr_jimmy_holofor revive presentation.
Important replacement rule
If you want a true drop-in replacement with minimal code changes, keep Jimmy's existing resource names and object names and only replace the art inside those resources. That means:
- Keep
char_jimmy,obj_jimmy,menu_char_jimmy,obj_swap_jimmy, andobj_pistol_jimmy. - Keep the same sprite resource names such as
spr_jimmy_idle,spr_jimmy_walk, andspr_hud_face_jimmy. - Preserve frame order in each sprite's
.yyfile. GameMaker uses the frame order defined insprites/<resource>/<resource>.yy, not alphabetical filename order.
Jimmy sprite inventory
Core gameplay body sprites
These are the sprites directly assigned in objects/obj_jimmy/Create_0.gml.
| Sprite resource | Directory | Frames | Size | Origin | Purpose |
|---|---|---|---|---|---|
spr_jimmy_idle | sprites/spr_jimmy_idle/ | 12 | 114x94 | (57,91) | Base idle animation |
spr_jimmy_walk | sprites/spr_jimmy_walk/ | 6 | 114x94 | (57,91) | Standard locomotion |
spr_jimmy_sprint | sprites/spr_jimmy_sprint/ | 6 | 114x94 | (57,91) | Sprint animation |
spr_jimmy_dash | sprites/spr_jimmy_dash/ | 2 | 114x94 | (57,91) | Dash body pose |
spr_jimmy_hit | sprites/spr_jimmy_hit/ | 2 | 114x94 | (57,91) | Damage reaction |
spr_jimmy_death | sprites/spr_jimmy_death/ | 11 | 114x94 | (57,91) | Death and corpse state |
spr_jimmy_melee | sprites/spr_jimmy_melee/ | 7 | 114x94 | (57,91) | Melee attack animation |
spr_jimmy_dash_fx | sprites/spr_jimmy_dash_fx/ | 1 | 114x94 | (57,91) | Dash visual effect |
spr_jimmy_dig | sprites/spr_jimmy_dig/ | 3 | 114x94 | (57,91) | Digging state |
Revive, spawn, and swap presentation sprites
| Sprite resource | Directory | Frames | Size | Origin | Purpose |
|---|---|---|---|---|---|
spr_jimmy_holo | sprites/spr_jimmy_holo/ | 27 | 114x94 | (57,91) | Revive hologram and character swap preview |
spr_jimmy_teleport_in | sprites/spr_jimmy_teleport_in/ | 8 | 114x94 | (57,91) | Teleport-in sequence art |
spr_jimmy_teleport_out | sprites/spr_jimmy_teleport_out/ | 8 | 114x94 | (57,91) | Teleport-out sequence art |
Character select and menu sprites
| Sprite resource | Directory | Frames | Size | Origin | Purpose |
|---|---|---|---|---|---|
spr_char_jimmyOff | sprites/spr_char_jimmyOff/ | 1 | 320x72 | (0,0) | Character button inactive state |
spr_char_jimmyOn | sprites/spr_char_jimmyOn/ | 1 | 320x72 | (0,0) | Character button active state |
spr_char_jimmySel | sprites/spr_char_jimmySel/ | 11 | 320x72 | (0,0) | Character button hover/selected animation |
spr_char_jimmyFinal | sprites/spr_char_jimmyFinal/ | 5 | 320x72 | (0,0) | Character button confirmed/final state |
spr_card_jimmy | sprites/spr_card_jimmy/ | 1 | 261x333 | (136,288) | Large character card portrait |
HUD and weapon presentation sprites
| Sprite resource | Directory | Frames | Size | Origin | Purpose |
|---|---|---|---|---|---|
spr_hud_face_jimmy | sprites/spr_hud_face_jimmy/ | 3 | 96x81 | (16,36) | HUD portrait with healthy, hurt, critical frames |
spr_pistol_jimmy | sprites/spr_pistol_jimmy/ | 3 | 60x22 | (20,10) | Jimmy's starter weapon art and menu stat icon |
What is strictly required for a drop-in Jimmy replacement
If you are replacing Jimmy in-place and want the game to keep working without extra architecture changes, treat the following as the compatibility contract:
- Keep all nine core gameplay body sprites listed in
objects/obj_jimmy/Create_0.gml. - Keep
spr_jimmy_holobecause revive and swap code expect it. - Keep
spr_hud_face_jimmywith exactly 3 frames because the HUD chooses frame0,1, or2based on health. - Keep the character-select button strip resources because
menu_char_jimmy/Create_0.gmluses them directly. - Keep
spr_card_jimmyif you want the menu card art to stay correct. - Keep
spr_pistol_jimmyif you want Jimmy's stat card and starter weapon icon to match the replacement.
Recommended art constraints
For the lowest-risk replacement, match Jimmy's existing sprite contract instead of changing code:
- Keep all core body sprites at
114x94. - Keep the core body origin at
(57,91). - Keep the same frame counts for idle, walk, sprint, dash, hit, death, melee, dig, hologram, and HUD face.
- Keep menu strips at
320x72. - Keep the HUD face at
96x81. - Keep the weapon sprite at
60x22.
These constraints matter because Jimmy's collision feel, shadow placement, digging draw logic, corpse placement, and menu layout were authored around this footprint.
Fastest drop-in replacement workflow
- Pick whether you are replacing Jimmy's art only or replacing Jimmy's art and starter weapon presentation.
- Open each Jimmy sprite resource in GameMaker and replace the frame images while preserving the existing resource name.
- If you edit on disk instead of through the IDE, keep the same sprite directory and either:
- overwrite the existing frame PNGs in place, or
- update the
framesorder insprites/<resource>/<resource>.yy.
- Preserve the existing origin and bounding behavior unless you are also auditing gameplay collision and draw offsets.
- Check
objects/obj_jimmy/Create_0.gmland confirm your new art still fits the intended semantics for idle, walk, sprint, dash, hit, death, melee, dash fx, and dig. - Replace
spr_hud_face_jimmy,spr_card_jimmy, and thespr_char_jimmy*menu sprites so the menu and HUD match the new body art. - Replace
spr_jimmy_holoso revive and swap visuals match the replacement character. - Replace
spr_pistol_jimmyif the starter weapon visual should change too.
Code files to review if the replacement is more than a reskin
If your replacement changes gameplay stats, starter weapon, or menu text, these are the main files to edit:
scripts/macros/macros.gmlJimmy's character id is defined here.objects/obj_jimmy/Create_0.gmlJimmy's stats and sprite bindings live here.objects/obj_jimmy/Other_10.gmlJimmy's initial weapon spawn logic lives here.objects/obj_pistol_jimmy/Create_0.gmlJimmy's default pistol stats live here.objects/menu_char_jimmy/Create_0.gmlCharacter-select label and button sprites live here.objects/obj_swap_jimmy/Create_0.gmlCharacter swap configuration lives here.objects/menu_char_playerStat/Step_0.gmlCharacter select stats and featured weapon icon live here.objects/menu_char_playerCard/Draw_0.gmlThe large menu portrait card selection lives here.objects/controller_main/Step_0.gmlRuntime spawn dispatch mapschar_jimmytoobj_jimmy.objects/controller_main/Draw_64.gmlHUD portrait selection mapschar_jimmytospr_hud_face_jimmy.objects/obj_revival_hologram/Create_0.gmlRevive hologram selection mapschar_jimmytospr_jimmy_holo.
If you want a new slot instead of replacing Jimmy
That is not a pure drop-in replacement anymore. At that point you should duplicate Jimmy's pattern and introduce a new character id, new player object, new menu object, new swap object, new HUD face, new card art, new character-select art, and new spawn mappings. Jimmy is a good template for that, but the low-risk path is to keep Jimmy's slot and replace his assets in place.