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_jimmy is character id 1 in scripts/macros/macros.gml.
  • controller_main/Step_0.gml spawns obj_jimmy when a player slot is set to char_jimmy.
  • obj_jimmy inherits from class_player and binds Jimmy's gameplay sprites in objects/obj_jimmy/Create_0.gml.
  • obj_jimmy/Other_10.gml equips obj_pistol_jimmy as the default starting weapon when no saved weapon exists.
  • menu_char_jimmy/Create_0.gml binds Jimmy's character-select button art.
  • obj_swap_jimmy/Create_0.gml binds Jimmy to the in-run character swap system.
  • controller_main/Draw_64.gml uses spr_hud_face_jimmy for the HUD portrait.
  • menu_char_playerCard/Draw_0.gml uses spr_card_jimmy for the large character card.
  • menu_char_playerStat/Step_0.gml uses spr_pistol_jimmy as Jimmy's featured weapon icon.
  • obj_revival_hologram/Create_0.gml uses spr_jimmy_holo for 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, and obj_pistol_jimmy.
  • Keep the same sprite resource names such as spr_jimmy_idle, spr_jimmy_walk, and spr_hud_face_jimmy.
  • Preserve frame order in each sprite's .yy file. GameMaker uses the frame order defined in sprites/<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 resourceDirectoryFramesSizeOriginPurpose
spr_jimmy_idlesprites/spr_jimmy_idle/12114x94(57,91)Base idle animation
spr_jimmy_walksprites/spr_jimmy_walk/6114x94(57,91)Standard locomotion
spr_jimmy_sprintsprites/spr_jimmy_sprint/6114x94(57,91)Sprint animation
spr_jimmy_dashsprites/spr_jimmy_dash/2114x94(57,91)Dash body pose
spr_jimmy_hitsprites/spr_jimmy_hit/2114x94(57,91)Damage reaction
spr_jimmy_deathsprites/spr_jimmy_death/11114x94(57,91)Death and corpse state
spr_jimmy_meleesprites/spr_jimmy_melee/7114x94(57,91)Melee attack animation
spr_jimmy_dash_fxsprites/spr_jimmy_dash_fx/1114x94(57,91)Dash visual effect
spr_jimmy_digsprites/spr_jimmy_dig/3114x94(57,91)Digging state

Revive, spawn, and swap presentation sprites

Sprite resourceDirectoryFramesSizeOriginPurpose
spr_jimmy_holosprites/spr_jimmy_holo/27114x94(57,91)Revive hologram and character swap preview
spr_jimmy_teleport_insprites/spr_jimmy_teleport_in/8114x94(57,91)Teleport-in sequence art
spr_jimmy_teleport_outsprites/spr_jimmy_teleport_out/8114x94(57,91)Teleport-out sequence art

Character select and menu sprites

Sprite resourceDirectoryFramesSizeOriginPurpose
spr_char_jimmyOffsprites/spr_char_jimmyOff/1320x72(0,0)Character button inactive state
spr_char_jimmyOnsprites/spr_char_jimmyOn/1320x72(0,0)Character button active state
spr_char_jimmySelsprites/spr_char_jimmySel/11320x72(0,0)Character button hover/selected animation
spr_char_jimmyFinalsprites/spr_char_jimmyFinal/5320x72(0,0)Character button confirmed/final state
spr_card_jimmysprites/spr_card_jimmy/1261x333(136,288)Large character card portrait

HUD and weapon presentation sprites

Sprite resourceDirectoryFramesSizeOriginPurpose
spr_hud_face_jimmysprites/spr_hud_face_jimmy/396x81(16,36)HUD portrait with healthy, hurt, critical frames
spr_pistol_jimmysprites/spr_pistol_jimmy/360x22(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_holo because revive and swap code expect it.
  • Keep spr_hud_face_jimmy with exactly 3 frames because the HUD chooses frame 0, 1, or 2 based on health.
  • Keep the character-select button strip resources because menu_char_jimmy/Create_0.gml uses them directly.
  • Keep spr_card_jimmy if you want the menu card art to stay correct.
  • Keep spr_pistol_jimmy if 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

  1. Pick whether you are replacing Jimmy's art only or replacing Jimmy's art and starter weapon presentation.
  2. Open each Jimmy sprite resource in GameMaker and replace the frame images while preserving the existing resource name.
  3. 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 frames order in sprites/<resource>/<resource>.yy.
  4. Preserve the existing origin and bounding behavior unless you are also auditing gameplay collision and draw offsets.
  5. Check objects/obj_jimmy/Create_0.gml and confirm your new art still fits the intended semantics for idle, walk, sprint, dash, hit, death, melee, dash fx, and dig.
  6. Replace spr_hud_face_jimmy, spr_card_jimmy, and the spr_char_jimmy* menu sprites so the menu and HUD match the new body art.
  7. Replace spr_jimmy_holo so revive and swap visuals match the replacement character.
  8. Replace spr_pistol_jimmy if 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.gml Jimmy's character id is defined here.
  • objects/obj_jimmy/Create_0.gml Jimmy's stats and sprite bindings live here.
  • objects/obj_jimmy/Other_10.gml Jimmy's initial weapon spawn logic lives here.
  • objects/obj_pistol_jimmy/Create_0.gml Jimmy's default pistol stats live here.
  • objects/menu_char_jimmy/Create_0.gml Character-select label and button sprites live here.
  • objects/obj_swap_jimmy/Create_0.gml Character swap configuration lives here.
  • objects/menu_char_playerStat/Step_0.gml Character select stats and featured weapon icon live here.
  • objects/menu_char_playerCard/Draw_0.gml The large menu portrait card selection lives here.
  • objects/controller_main/Step_0.gml Runtime spawn dispatch maps char_jimmy to obj_jimmy.
  • objects/controller_main/Draw_64.gml HUD portrait selection maps char_jimmy to spr_hud_face_jimmy.
  • objects/obj_revival_hologram/Create_0.gml Revive hologram selection maps char_jimmy to spr_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.