MCPcopy Index your code
hub / github.com/ShamylZakariya/Platformer

github.com/ShamylZakariya/Platformer @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
710 symbols 1,302 edges 47 files 81 documented · 11%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Platformer

A remake of the first level of the delightful 1990 Gamebody platformer Gargoyle's Quest.

https://github.com/user-attachments/assets/6b2ec470-99ec-4767-b534-59aec8785461

Dependencies

Most dependencies are managed by cargo, but men plan and god laughs; on linux libudev is required to build gilrs. Probably more, but I developed this on Ubuntu and Fedora with a ton of dev libs already installed.

# play the game
cargo run

# start at an arbitrary checkpoint
# checkpoint 0 is level start, 1 is about halfway, and 2 is the boss
cargo run -- -c 1

# play with original gameboy aspect ratio and viewport zoom
cargo run -- --gameboy

Controls

  • A/D Move left and right
  • W Jump, hold to jump higher. Press again while in-air to hover briefly.
  • Space Fire
  • F1 Pause
  • Esc Quit

Note: Gamepad input is supported, and much more fun.

Why?

To learn wgpu, and to get more experience in Rust - which is why I didn't use any of the the eminently capable rust game engines out there such as Bevy.

Architecture

See Architecture

TODO

  1. Continuously update to whatever is current wgpu
  2. Ensure current sprite pipeline is better named to make clear it's for rendering individual quads, even if in a batch of thousands
  3. Implement single-quad stage rendering using a sprite table texture which indexes into the spritemap.

Extension points exported contracts — how you extend this code

Entity (Interface)
(no doc) [18 implementers]
src/entity.rs
MessageHandler (Interface)
(no doc) [1 implementers]
src/event_dispatch.rs
VertexBufferDescription (Interface)
(no doc) [1 implementers]
src/sprite/rendering.rs

Core symbols most depended-on inside this repo

context
called by 48
src/state/debug_overlay.rs
iter
called by 23
src/entities/util.rs
set_model_position
called by 21
src/sprite/rendering.rs
get_property
called by 14
src/tileset.rs
broadcast
called by 14
src/event_dispatch.rs
hash
called by 14
src/collision.rs
position
called by 14
src/entities/bat.rs
write
called by 12
src/util.rs

Shape

Method 573
Class 72
Function 39
Enum 23
Interface 3

Languages

Rust100%

Modules by API surface

src/collision.rs68 symbols
src/entities/firebrand.rs48 symbols
src/sprite/rendering.rs33 symbols
src/state/lcd_filter.rs32 symbols
src/state/game_state.rs32 symbols
src/entity.rs30 symbols
src/util.rs22 symbols
src/camera.rs22 symbols
src/entities/util.rs20 symbols
src/entities/boss_fish.rs20 symbols
src/audio.rs20 symbols
src/map.rs18 symbols

For agents

$ claude mcp add Platformer \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page