MazezaM is a puzzle game with mechanics that may be reminiscent of those of Sokoban. Your goal is to make your way through each room; there are carts in the middle that impede you to do it straight away. The carts are connected row by row (you can only move one row at a time horizontally). In this version, rather than having separate screens, the levels are rooms in a map, which is editable in the LIKO-12 editor (however the camera centre for each room is hard-coded into the program).

Would this be considered for addition to the LIKO-12 games collection?

I saw that PICO-8 had a MazezaM version, so I thought that LIKO-12 should have one too!

mazezam-snapshot.png

Here's the .lk12:

mazezam.zip

MazezaM is a puzzle game with mechanics that may be reminiscent of those of Sokoban. Your goal is to make your way through each room; there are carts in the middle that impede you to do it straight away. The carts are connected row by row (you can only move one row at a time horizontally). In this version, rather than having separate screens, the levels are rooms in a map, which is editable in the LIKO-12 editor (however the camera centre for each room is hard-coded into the program).

Would this be considered for addition to the LIKO-12 games collection?

Thanks for sharing this !
Yes, I will add it to LIKO-12 games collection.

Just looked at the code, it's very clean and nice, but just 2 things to say:
- Please make the license comment block use --[[ instead of --[=[, It doesn't highlight correctly in LIKO-12
- I saw some TileMap:export(), is it for cloning the map ? If so it would be better to just call TileMap:cut(), without any arguments, which would clone the map.

Thanks for sharing this !
Yes, I will add it to LIKO-12 games collection.

Just looked at the code, it's very clean and nice, but just 2 things to say:
- Please make the license comment block use --[[ instead of --[=[, It doesn't highlight correctly in LIKO-12
- I saw some TileMap:export(), is it for cloning the map ? If so it would be better to just call TileMap:cut(), without any arguments, which would clone the map.

I've also been working on a sokoban clone for LIKO-12

Thanks for looking into it! I'll change the comment style and look into whether cut() is appropriate here, then submit a PR. Better to discuss this there I think.

I have looked into it, but I'm not sure if it can be used to save/restore the map state. export/import seemed straightforward for that purpose. I guess I could do checkpoint.map = TileMap:cut() to save and then TileMap = checkpoint.map to restore. Is that what you meant? Is it OK to modify the global TileMap?

Thanks! I'm not happy about hardcoding the resolution. I forgot to clean that up. I'll send a PR to fix these two issues when I can.

I'd appreciate if you post an update when a LIKO-12 version that includes MazezaM is released on itch.io, so I can notify Malcolm Tyrrell and it can be added to the MazezaM page.

Edit: I've finally decided against both changes. The export/import code is pretty straightforward, and using Map:cut() involves many clones, as it has to be cloned both on save and on load as well as on game initialization and start. On the other hand, the print() calls use hardcoded positions, and changing the code to use an automatic text centring function seems a bit overkill, so since these positions are hardcoded, it already depends on a specific resolution anyway.