Lexy's Labyrinth, a web-based CC1 + CC2 emulator

https://c.eev.ee/lexys-labyrinth/ — source and changelog on GitHub

Hello!  I wrote a thing to play Chip's Challenge in a web browser, due to reasons. I think it's pretty cool and I hope you do too.

Current features as of March '21:
  • Defaults to a tweaked Steam ruleset that fixes some bugs, but has compat options for switching to Steam rules (~99% compatible), Lynx rules (~95% compatible), or MS rules (lol)
  • Brand new tileset, sound effects, and music
  • Works on phones, more or less
  • Undo or rewind when you fat-finger a block into a corner, ten minutes into a horrible sokoban level
  • Lets you play any CCLP with one click
  • Also supports loading an arbitrary .DAT/.CCL, directory or zip containing a .C2G, or individual .C2M level
  • Has a built-in level editor which is fairly usable, supports all CC2 elements, and lets you share levels by URL
  • Experimental support for some new tiles and other features, inspired by CC3D and a couple ill-fated fan spinoffs
  • Tons of other nice little touches

Note that a small handful of CCLP (and canonical) levels don't work under the default rules, generally because of rule changes between Lynx/Steam (though one CC2LP1 level does rely on hook behavior that I deemed to be a bug).

1.1 is now live, not like version numbers mean anything.  Biggest change is that it can now load C2Gs, so you can now drag and drop the Steam releases' game files right in there and play them.

Gameplay fixes:
  • Brown buttons held down when the level starts now work correctly
  • Multiple brown buttons wired to the same trap work correctly
  • If CCL custom connections are present, red and brown buttons ONLY use those, rather than falling back to auto-connection rules (i.e., unconnected buttons in CCL levels stay unconnected)
  • Blue button behavior now matches Lynx/Steam behavior, queuing the reversal on each tank until it's next able to move, EXCEPT that in CCLs, tanks ignore button presses while sliding
  • Blue tanks always try to move in their current direction, even when blocked or in a trap
  • CCLs convert blue walls to recessed walls if an actor starts on top of them, preserving the intended behavior under CC2 rules
  • CCLs convert recessed walls to a new "doubly recessed wall" tile if an actor starts on top of them, preserving the intended behavior under CC2 rules
  • Monsters now eat blue keys
  • Actors now act in reverse order, matching Lynx/Steam behavior and fixing several unsolveable CCLP levels
  • CC2 gray buttons are partially implemented
  • CC2 wiring is partially implemented

Other changes:
  • Green keys/locks are somewhat more colorblind-friendly
  • Two new music tracks
  • SFX volume is kinder when there are a lot of off-screen button presses
  • If you tie a previous score that used undo, but the new score didn't use undo, the new score takes priority (so you get the star)
  • Errors that fail to load show the error and apologize profusely, rather than silently doing nothing
  • A new LL-exclusive level feature: camera regions, which restrict the camera to a given rectangle while the player is within it; essentially just made for magical so their tiny computer-generated sokobans play better
I am arbitrarily calling the current state of things 1.2 because a lot has happened.  A lot of the new stuff is still buggy, but it's usable and rapidly getting there!

I've also started writing documentation on the project wiki; most helpful at the moment is the list of known broken levels.

  • New: Added "turn-based mode" (contributed by Patashu), in which the game remains paused while you're not moving (hold spacebar to advance manually)
  • New: Added three more music tracks
  • New: Added a debug panel (middle-click on the logo in the lower left), which allows you to control time, mess with your inventory, alter the viewport size, watch a C2M's replay, teleport freely, etc.
  • New: CC2 levels now respect the viewport size option, i.e. most of them will use a 10×10 viewport
  • New: Players have a new victory pose when they reach the exit
  • New: Blobs and walkers have distinct animations in all four directions
  • New: Actors that die in slime use a custom slime splash
  • Improved: Expanded undo buffer to 30 seconds and reduced its memory usage considerably
  • Improved: Redesigned keys and doors to be more colorblind-friendly (and better-themed overall)
  • Improved: Buttons are more compact, which is especially helpful on mobile
  • Improved: Auto-scaling behavior now works better on small portrait screens, improving the chances that the game will fill the screen
  • Improved: Touch detection is now relative to the center of the viewport, not the entire play area
  • Fixed: Rewind button is now a toggle; previously it could get you stuck permanently
CC2 support:
  • New: Finished CC2 tileset
  • New: Added the drop/cycle/swap actions
  • New: All tiles now load, so any C2M should be playable (if not necessarily solveable)
  • New: Implemented "no" signs, orange buttons, frame (directional) blocks, light switches, railroad tracks, timid teeth, the bribe, the lightning bolt, and the foil
  • New: Added support for the common form of item bestowal, where an actor starts on an item and a force floor facing a wall
  • New: Mostly implemented logic gates, rovers, and green/red/yellow teleporters
  • New: Partially implemented flame jets, doppelgangers, and wired blue teleporter behavior
  • New: Force floors are now toggled by a gray button or a pulse
  • New: Swivel doors are now rotated by a gray button or a pulse
  • Improved: Switched to using the CC2 PRNG, so the behavior of blobs/walkers/green teleporters/RFFs should now be replay-compatible
  • Improved: Slime now destroys actors as appropriate
  • Improved: Gliders don't sink lilypads/turtles
  • Improved: Canopies now render
  • Improved: Teeth now run away from Cerise/Melinda
  • Improved: Collision rules are much closer to correct; notably, ghosts generally pass through the right things and CC2 blocks can go in the right places
Other gameplay changes:
  • New: When the player starts on a hint tile, the hint is shown immediately
  • New: Actors that start on force floors immediately start sliding
  • New: Sliding blocks can now be pushed
  • New: Invisible walls reveal themselves briefly when bumped, as in CC2
  • Improved: Thief sound only plays if you lost either items or points
  • Fixed: Standing in an open trap and pushing a block off of the brown button holding it open no longer softlocks you
  • Fixed: Stepping onto a cell containing both flippers and water no longer drowns you
  • Fixed: The main loop no longer has a "finish movement" pass at the beginning, which fixes some obscure timing issues (albeit introduces others)
  • Fixed: Monsters attempt to move in their least preferred direction even if they're blocked in every direction
  • New: Levels can be saved to browser storage
  • New: Editor has its own level browser that shows maps of every level in a pack
  • New: Tools show basic usage hints on hover
  • New: Right-click with the pencil to erase
  • New: Ctrl-click with the pencil to pick up a tile
  • New: Adjust tool can toggle many more tiles
  • New: Right-click with the adjust tool to rotate counter-clockwise
  • New: Ctrl-click with the adjust tool to edit properties of specific tiles; currently works on letter tiles, hints, railroad tracks, and frame blocks
  • New: Current tile appears in the upper left; press ,/. to rotate it, or click it to edit it (like ctrl-click with the adjust tool)
  • New: Railroad track tool (right-drag to erase)
  • New: Wire tool (right-drag to erase)
  • New: Edit the title, author, size, and time limit of a level
  • Improved: Pencil behavior is consistent across layers; it will always replace only tiles on the same layer, but hold Shift to replace everything
  • Improved: Almost all CC2 tiles are available in the palette; only canopy and thin walls are missing, for technical reasons
  • Improved: C2M saving now supports hints and most level metadata
  • Improved: Level is now centered and padded
  • Fixed: C2M compression occasionally lost the last byte, resulting in a corrupted level
  • Fixed: Large levels are no longer cut off
  • Fixed: All tiles now always have a direction
  • Fixed: Drawing is more robust and will no longer freak out in edge cases or when drawing outside of the level
  • New: Added a custom tile, gift bow, which goes on the same layer as the "no" sign and causes an item to be able to be picked up by any actor
  • New: Added a custom tile, circuit block, which contains wires
Very great project! Thanks for your effort!

Forum Jump:

Users browsing this thread: 1 Guest(s)