A downloadable asset pack

Buy Now$9.99 USD or more

Zelda-style dungeon puzzles for GameMaker without scripting each block: push-blocks, ice, pits, water, boulders, pressure plates and light beams bent by mirrors. And every room draws itself.

Describe a room in a few strings. The player walks and shoves, and one rule book decides what every shove does: a block moves one square and keeps sliding on ice, a boulder rolls until something stops it and breaks against a wall, anything that falls into a pit or water becomes a crossing, plates press under weight, and light travels from emitters across mirrors to receivers. One call draws the whole room as a lit three quarter view of worked stone. No image files.

my_room = pzw_room_from_strings([
    "#########",
    "#@..BO..#",
    "#.......#",
    "#>.....\\#",
    "#....P..#",
    "#......T#",
    "#########"]);
var my_move = pzw_try_move(my_room, my_px, my_py, 0);   // walk, or shove and follow
my_beams = pzw_beams(my_room);                          // re-trace when the room changes
pzw_room_draw(my_room, 40, 40, 48, { beams: my_beams, player_x: my_px, player_y: my_py });

The rules

  • One rule book, in one place. pzw_push is the only place the interaction matrix lives. pzw_preview_push runs the real push and puts it back, so a preview can never disagree with the push.
  • Pits and water that stay filled. A fallen block becomes a bridge by derivation: your map is never changed, and saving only the objects brings the bridge back with them.
  • Light that cannot hang your game. A beam's whole state is its square and direction, so a beam that never ends must repeat one. The tracer stops the moment it does and reports a loop. A ring of four mirrors is detected, not timed out.
  • Reset that tells you when it pulls the floor away, so a player standing on a bridge that is a pit again can be sent back to the entrance.

The look

  • 45 distinct things, every one drawn by the package: blocks in stone, wood, iron, ice, gold and crystal, boulders in granite, basalt and sandstone, mirrors, plates that press, receivers that light, emitters in four directions, flagstone floors varied per square, walls, pits, water and ice, and what every block and boulder becomes when it falls into a pit or sinks into water.
  • Relief, not flat icons. Every block has a top face, a front face and a cast shadow from one lamp; light is drawn as light.

Tested

  • Igor package build clean on the shipped source, and proven able to fail on it.
  • 52 in engine assertions on a real built exe: the push matrix square by square, the preview matching the push, a self crossing beam, a four mirror loop, reset stranding, saves, and all 45 drawn things measured pixel by pixel as different from each other.
  • 21 more in a blank project that installed the package the way you will and ran the Readme's own code, asserting that the room really draws.
  • 144 adversarial calls against all 36 documented functions with zero crashes.

Requirements

GameMaker 2024.14 or newer (built and tested against runtime 2024.14.4.268). Pure GML: no extensions, no DLLs, no shaders, no sprites. Import the .yymps, open rm_pzw_demo, press Play, and solve the room.

One commercial licence, unlimited games, no attribution required. Everything the package draws in your game is yours to ship.

Also from this studio: Cogwheel for RPG Maker MZ, the same rules for MZ projects; Loopwork, a time loop engine for GameMaker; MAKE YOUR NUMBER, a free browser deduction game whose case is generated and proven to have one answer; and more GameMaker systems at csaf.itch.io.

AI disclosure: the code and the generated artwork in this package were produced with AI assistance. Every store image except the cover illustration was rendered by the product itself. Fonts: IM Fell DW Pica (SIL OFL 1.1) and Open Sans (Apache-2.0), notices included.

Purchase

Buy Now$9.99 USD or more

In order to download this asset pack you must purchase it at or above the minimum price of $9.99 USD. You will get access to the following files:

Puzzlework_GameMaker.zip 1.3 MB

Development log

Leave a comment

Log in with itch.io to leave a comment.