Sorting Center Savant by ZungryWare

[raw]
made by ZungryWare for Ludum Dare 53 (COMPO)

A puzzle game about sorting shipping crates. Has twelve challenging levels to play and support for custom levels!

Play it in browser

level6c.png

Post-Deadline Changes

  • Removed unused files
  • Fixed favicon on GitHub Pages
  • Fixed some text being unreadable at certain resolutions
  • Fixed an infinite loop with cyclical conveyor belts
  • Edited and fixed broken controls
  • Added gamepad support

Custom Levels

To play a custom level, simply copy the level data to clipboard and press 'L' while in-game. You will probably get a popup asking if you want to allow clipboard. Once you press "Allow", the level should load in. Some browsers (such as Firefox) disable clipboard access entirely, so you will need to use a different browser.

To make custom levels, you will need this base JSON file. Use it as a jumping-off point. But here are what all of the different keys mean:

Root Keys

levelTitle: Level title that will display on the top of the screen.

cratesRequired: How many correct crates need to be deposited to beat the level.

cameraPosition: The location the camera will look towards. This should be roughly the center of your level.

cameraDistance: How far back from cameraPosition the camera will sit.

cameraStartAngle: Yaw and Pitch the camera should start at.

floorHeight: Used for destroying falling elements if they fall out of the level. I recommend setting this to about 3 spaces below the lowest element in the level.

elements: A list of objects, each representing an element in the level. See below for the keys of those elements.

Element Keys

type: What type of element it is. Legal values are block, crate, chute, conveyor, fan, and laser.

position: Coordinates of the element. z is the vertical axis.

angle: Rotation of the element. Legal values are 0, 1, 2, and 3.

color: The element's color, used by conveyors, fans, and lasers. Legal values are red, green, blue, yellow, cyan, purple, orange, and white.

letter: The letter used by crates and chutes. Legal values are a, b, c, d, and e. You can also put an empty string if you want a blank crate that can't be used to score points.

Warning: There is no state validation whatsoever for these custom levels. If you are getting funky bugs or errors, double check your values, refresh the page, and try again.

If you make any custom levels, please share them in the comments below! :) You can use this JSON compressor to put it all in one line.

Ratings

Overall 18th 4.195⭐ 43🧑‍⚖️
Fun 19th 4.22⭐ 43🧑‍⚖️
Innovation 12th 4.366⭐ 43🧑‍⚖️
Theme 93th 4.159⭐ 43🧑‍⚖️
Graphics 272th 3.268⭐ 43🧑‍⚖️
Audio 298th 2.638⭐ 42🧑‍⚖️
Given 79🗳️ 64🗨️

Feedback

LDJam user 259859
01. May 2023 · 04:30 UTC
This game is super neat! The level designs and puzzle system are really well designed, and it's super innovative too! I do think a simpler art style, and a way to pan the camera around instead of just orbiting in degrees would help a lot more. The lighting feels a little drab and dark for the mood of the game and the skybox and textures also make it feel like that, but other than that great game!
osullivp
01. May 2023 · 18:40 UTC
Great puzzle design. Very tight.
LDJam user 141701
01. May 2023 · 18:48 UTC
What a great game! It feels incredibly old-school to me. Everything from the art style to the camera controls. I'm shocked at how well it runs as well -3D and the web is usually a mess.

I couldn't solve level 4 with 6/6 :(

Edit: I solved it! I just had to use my brain -once again, really nice job.
candlesan
01. May 2023 · 18:56 UTC
This game is super cool! I love how you made a totally unique game from a set of mechanics in a way that I haven't seen before. The puzzles had a very nice difficulty ramp to them. They were hard but also very fair.
Loved:
* Learning how all the different components interact
* The different colored objects reacting to activating the corresponding color was very intuitive
* Seeing new objects that I could interact with over time
* Figuring out how the sequencing of elements was done (conveyor, pushing, handling collisions, fans, etc.)

Small QoL requests:
* would like to pan the camera
* had some trouble figuring out that advancing to the next level is done with the + button (the font rendering of the + looked strange for me and was hard to read)
LDJam user 336676
01. May 2023 · 19:05 UTC
That was fantastic, I thought level 6 was impossible but made it all the way to 10 :D
riboprotein
01. May 2023 · 21:30 UTC
Great puzzle game! I think I played to lvl 5 or 6
Flaterectomy
02. May 2023 · 01:07 UTC
What a great puzzler, Zungry! You are once again hurting my brain. I've been so close on level 9 twice now, but after the reset I lose track the order of operations I had just executed. Also it's 3am.

Simple but pretty clear art-I wasn't *sure* whether the laser was a laser when I first saw it, but with the restart mechanics being so ingrained in the concept it's not really an issue.

With some polish this has a lot of post-LD potential!
Lex
02. May 2023 · 01:22 UTC
I love puzzles so I had to go until the end! All levels up to 12 beaten. I saw some of your posts during the jam and was really curious about what you were creating. Making puzzles is really hard!

I always wondered how to make puzzles like this efficiently. Did you make the puzzles by trial and error or do you have a kind of script/algorithm/math for that?

Anyway, thanks for this entry! I really enjoyed it!
🎤 ZungryWare
02. May 2023 · 02:01 UTC
@lex Most of my technique came from a video called "What Makes a Good Puzzle?" by Game Maker's Toolkit. To summarize, it's all about creating a "catch", where the player thinks the level is impossible because of some sort of contradiction. (I need to do A and B, but doing A prevents me from doing B.) To overcome the contradiction, the player must come to some new revelation about the game's mechanics. In level 6, the catch is that you need to activate the blue fans to move the A crate into its respective chute, but doing so pushes the B crate off the edge of the level. The revelation is that you can use that right side B crate to shield the left side B crate from being pushed by the blue fans. The rightmost B chute is there to create the assumption that you should use it to collect that right side B crate. But if you solve the level correctly, that chute is never used. Consider how much easier the level would be without that chute there to guide the player into a false assumption.

When filling out the set of levels, I tried to come up with the catch first and then design a level that exploited it. For level 4, I knew before I started what the catch would be. It was just a matter of playing around with it on graph paper until I came up with something that made the revelation a requirement to beat the level without making it too obvious that it's what you need to do.

For the last four levels, I didn’t start with the catch, I just had a vague concept for the level. I came up with some elements interacting with each other in interesting ways (like a laser that’s the same color as a fan), then I put it into the game and played around with it. The catches evolved from there. I would see which kinds of board states I could achieve that would require clever use of the game’s mechanics and then adjust the level to make that board state the goal. And if achieving that board state is too trivial, I would try to throw a wrench into the player’s plans that made that trivial solution impossible. Or I would add new things to make new board states possible. In level 9, the cyan fan is the last thing I added, since I wanted the end board state to be that the yellow fan has been moved downward. Adding the cyan fan was a cool way to make that possible.

Level 11 was a particularly lucky one. I didn't edit it whatsoever after constructing it in-game. I just had a feeling it was beatable despite not actually being 100% sure that it was. It took me a good fifteen minutes of playing around until I figured it out!

So yeah, I just started with an idea and played around with it, making changes to mold it into a finished puzzle. Thanks for playing and I'm glad you enjoyed!
Lex
02. May 2023 · 02:25 UTC
@zungryware Thanks for the sharing this knowledge! That's part of what makes Ludum Dare so fun. Actually, I highly recommend that you share this text as a post for everyone as it seems you're not only good at creating puzzles but also at explaining things too.
kimau
02. May 2023 · 16:22 UTC
Amazing you got 12 levels out in this time and such a solid concept.
Game-mon
02. May 2023 · 16:34 UTC
Great game! Really unique puzzle mechanics here. Looks somewhat like a sokoban at first, but plays really differently--i think controlling conveyor belts and fans instead of a player character is quite rare. (Quick ergonomy tip: you may wanna consider having a 'undo' button in these kinds of puzzle games.) Congrats!
🎤 ZungryWare
02. May 2023 · 20:23 UTC
@thomas-bringer Crate-sorting is definitely not a new concept in puzzle games. But I'm glad I was able to do it in a unique way.

Also, there is an undo button. It's listed on the bottom-right of the screen. I would have become too frustrated to play my own game if I didn't implement that. :)
Nathan Franck
03. May 2023 · 00:51 UTC
Gave it a shot! Definitely working good and running well 🙂 The keyboard controls were a bit to get used to, but I managed. I'd have to take longer to understand solutions --- the fan on-top of the block not blowing a block underneath I realized late, would have to reset - etc. Any time I try these grid-based puzzle games I bemoan linear interpolated state transitions, but seems like it's pretty standard, to me it just slows down solution discovery.

Good luck! 👋
🎤 ZungryWare
03. May 2023 · 01:08 UTC
@nathan-franck The animations are pretty useful to understand what is going on. I was playing (an early version of) level 7 before I added animations and it was definitely harder. It's an extra step in your brain, since it's not just "here's what happened", it's "here's the beginning state and the end state, now figure out what happened to cause that end state". And that becomes an annoying problem when one control both shifts a stack of boxes and activates a fan which blows one of those boxes all on the same frame. And figuring out the mechanics of the game is not part of the game.

I certainly could have made the animations a bit snappier, but there are very few points in the game where you have to sit there waiting for animations for longer than a second. And the undo button reduces this as well, since one missed input doesn't require restarting the level.

Thanks for playing!
Wompus
03. May 2023 · 10:03 UTC
Best puzzle game I played so far. I read your piece about creating a catch and after you said that I realized that is what made the puzzles so good. Caught me off guard on level 4 but after that I caught on that I had to find new mechanics. It was introduced so good that it felt natural to the game.
JamesW
03. May 2023 · 12:13 UTC
Best puzzle game in this LD so far! 12/12 cleared with the burnout of my brain!

Might be better if level 5 comes before level 4 (to introduce a new hiding mechanism).

Also very helpful for sharing the process of how you come up with the game! Looking forward to make my own puzzle game like this one in the future!
soundgnome
03. May 2023 · 18:17 UTC
Fantastic game! Easy to understand and really nailed the fun factor, very well executed.
Team Gaivot
03. May 2023 · 18:19 UTC
Pretty good game, I had a bit of a hard time with the controls, having to move two hands quite a bit to play is a bit cumbersome.
Luke Parker
03. May 2023 · 18:42 UTC
Quite enjoyed playing this! Was really interesting with how the puzzles were built, even more so after seeing the comment on how you designed them.
Fuse in a Bowl
03. May 2023 · 18:43 UTC
I struggled but managed it! Got a couple of aha moments - 9 and 12 really made me work for it!

I found in levels 10 and 11 the camera angles added a bit of unneeded difficulty, I prefer having all the information at the start of a puzzle level so I can solve it in my head (or at least make an attempt!)

Other than that, I really enjoyed it! Great game
ugly_robot
03. May 2023 · 20:53 UTC
I had a ton of fun with this! Maybe the game I've spent the most time with.
Love to see GameMakersToolkit referenced here - it shows! The puzzle design is excellent.

Level 6 was, in my option, by far the hardest puzzle - not from complexity, but because I was not fully introduced to the 'shielding' mechanic, and the decoy bin was more confusing because you had not used 'fake' components so far in your design.

But predominantly each puzzle rewarding, well thought-out, and fun!
The assets are very well made - clear and readable. And each mechanic performs beautifully! Not a single bug, despite how complex the interactions can be.

Really excellent work!
blotosaur
04. May 2023 · 03:09 UTC
Really great game! And done only with webgl, canvas and javascript, from what I can see. That's really awesome! It took me a while to finish them all (specially the last 4), but it was really rewarding after each one. Great entry!
LDJam user 364744
04. May 2023 · 03:43 UTC
this is a wonderfully designed puzzle game! as the other comments have stated, it's clear how much attention you gave to the level design & artfully teaching the mechanics to the player. well done! would have liked mouse support (both in camera and control of gameplay elements), and i didn't really love the gun mechanic (or at least the destroying of conveyor belts felt awkward to me), but otherwise really enjoyed my time with this one
kierogi
04. May 2023 · 13:09 UTC
I had to stop myself playing I was enjoying it too much. I liked the controls though did find myself not moving the camera much. Nice work!
Asieke
05. May 2023 · 16:10 UTC
Really fun 3d puzzle game. Having multiple triggers tied to the same button made for some really interesting levels. Also really appreciate the ability to skip to a level. Personally stuck on level 11 currently but might come back and give it another go since I can just jump straight to it.
AlpalcaLad
05. May 2023 · 18:36 UTC
Awesome game even without the fact you did it as a compo. I kind of suck at puzzles but did get those aha moments every puzzle dev strives for so you succeeded there. freely rotating the camera would have been appreciated and the controls got a bit weird at times with rgb letters for the objects and backspace etc to restart but It wasn't a big issue with the always on screen keybinds. The fans could have also benefitted from some kind of wind animation etc so It didn't just feel like i was pushing the crates but actually blowing them across. Literally all the feedback I can come up with lol its a great jam game
🎤 ZungryWare
05. May 2023 · 21:26 UTC
@kent-lizardo The art style definitely wasn't something I could afford to focus on too much. I went for 'functional' rather than 'artistic'. As long as the player can easily tell what's what at a glance and it's generally okay look at, it's fine with me for a Jam setting. That skybox was something I wanted to change for the game's entire life, but I never got around to figuring out what to replace it with.

@sirlich @blotosaur I used my friend's javascript game engine. It's missing many features you would expect from modern engines, but it implements the basics really well so I didn't have to muck around with rendering individual triangles or handling UV or look vectors.

@jamesw Level 5 is definitely one of the weaker levels. It serves its purposes, which were to A) Give the player a bit of a pacing break from the difficulty of the previous puzzle and B) Get the player more comfortable with using fans to push other fans in preparation for level 9. But it fails as a puzzle because the answer is just too obvious. It was supposed to be easy, but not *this* easy. The reason I put it after level 4 is because I wanted the "fan pushes fan" thing to be the big revelation for that level. And that would just be too obvious if they had already played level 5. I think it's fine to not directly tell the player fans can push other fans because you can indirectly figure that out from the fact that fans can be moved by conveyors, thus making it logical that they might be moved by fans as well.

@ugly-robot In a future version, I might make the fan-shielding thing something that happens in a previous level but isn't part of the revelation to solve it. That way, the player can understand the mechanics of fans better coming in. Although for the fake components thing, level 4 does have a chute that doesn't get used. Maybe I could make it more obvious, like having a second C chute in that level, where there's only one C crate.

@dishwand What did you find awkward about the lasers? Was it that conveyors' visual models don't quite fill up the entire space?

@asieke Ordinarily I would lock the progression of the levels so that you can't skip more than n levels ahead. But doing this was easier than implementing a localstorage save and load system for a jam game. Either way, I would hate for someone to want to continue where they left off but be unable to because they closed the tab.

@alpalcalad @team-gaivot The control scheme was something I struggled with. For a post-jam version, I'm thinking of also having colored levers as part of the UI that you can click on (or tap on for mobile). That also opens me up to having multi-colored levers!

Thanks to everyone who has played so far! I really appreciate all the feedback!
Retrisma
06. May 2023 · 01:13 UTC
Very cool game! I loved the puzzles, and the number and complexity of interactive elements was perfect. The puzzles were very well-crafted. I think the sound effects could have been a bit more interesting, though. That is a small nitpick, though, and overall I really enjoyed it!
LDJam user 364744
06. May 2023 · 01:39 UTC
@zungryware i think just from a cohesion perspective, your game had a good focus on just a few simple mechanics, and the destruction of conveyor belts felt unnecessary almost? firstly i didn't expect it (perhaps because of the model size), and secondly i didn't think it added as much depth as the other mechanics. i'm totally nitpicking here but just elaborating because you asked haha. still love the game and the lasers were a net positive overall!
🎤 ZungryWare
06. May 2023 · 01:54 UTC
@dishwand The lasers were in fact the last element I added because they definitely have less design space than the fan or conveyor. But I came up with some fun puzzle designs that required them and I had the extra time, so I figured it was worth it. I also thought it would be cool to introduce something new later on in the game and lasers felt perfect for that.
OldDog
06. May 2023 · 03:39 UTC
nice puzzle design,I like the RGB idea ,It spent me quite a while to solve those levels nice work!!!hoping the camera angle and lighting can do better,makes me feel wield
fractalsunrise
07. May 2023 · 02:15 UTC
This game has spectacular puzzle design; thanks for explaining your design process in the comments! This is my favorite puzzle game of LD53 so far. The laser sound was a bit harsh and I kept wanting to use R for restart, but I still really enjoyed this one. Great job!
devook
17. May 2023 · 03:36 UTC
Great puzzle design for the timeframe! Would love to see a version of this game built out with graphics and sound
picross
17. May 2023 · 03:46 UTC
Oh MAN I loved this. I'm a big Stephen's Sausage Roll fan so i'm always on the lookout for fun new sokoban ideas, and you nailed it. Very little criticism to give.... but maybe throw in some ambient tunes and zoom the camera out a little perhaps? Seriously great work!
Pawciu
18. May 2023 · 14:35 UTC
Wow, this game got me hooked
kiv
19. May 2023 · 23:04 UTC
This is the most complicated yet interesting game in this LD. I do not know how you accomplished it in such short time but it is a masterpiece of puzzle games as is.