♦ schizm and amalgamation of adventurer's probability distribution across multiverse 2D maze on a single screen. In Rust, uses SDL2 ♦
You have probably played several maze games, in which you navigate some adventurer through 2D cellular maze viewed from the top, avoiding or eliminating dangers and aiming to reach an exit.
When you, as such adventurer, come to a crossroads, — say, where you can turn left or right, — you have to make a choice and move in that single direction: left, right, or maybe turn back, and deal with determined consequences of your choice. This is “classical” picture.
What if you could observe all possible outcomes at the same time? In general case, they have different probabilities, whose sum is 1 (adventurer turns left with probability 0.3, turns right with probability 0.6, or turns back with probability 0.1). Mapping such probability to opacity of adventurer's picture, we should see many semi-transparent adventurers around the crossroads. Then they continue to walk, and at the next crossroads one of them splits further... comes back partially...
aSmCaHlIgZaMaze presents this “quantum” picture and lets you control it. To the classical environment we introduce splitters: when you step to one, you are moved simultaneously and equiprobably to all free adjacent cells. To be more precise, the probability of adventurer's instance that steps to a splitter is divided equally, and each part is added to probabilities at free cells adjacent to this splitter, in the directions outward from it. Here, “free” simply means “not a wall and not another splitter”.
You therefore control not the single adventurer in a single universe, but the probability distribution of adventurers across a multiverse. All of them (try) to follow your commands, turn or move, synchronously. You goal does not change though: avoid holes and reach an exit. (No active enemies yet.) Only now, as much as possible of you should reach an exit (blue indicator at the top of the screen), and as little as possible of you should fall into a hole (red indicator).
Go to Download, get data and binaries for your OS, unpack them. Put the binaries into the data dir. Edit "config.json" in any text editor to adjust the settings; in particular, lang option switches the language of interface between English (eng) and Ukrainian (ukr).
On Linux, install the dependencies (we assume Ubuntu here):
$ sudo apt install libsdl2-2.0-0 libsdl2-mixer-2.0-0 libsdl2-ttf-2.0-0
Then run the binary. At any time, ESC pauses the game and shows the main menu, where Help section may be of interest.
Open "mazes" dir and add more mazes, yours or the ones you have got somewhere. Each maze is defined in corresponding dir, named from "0000" to "9999", via the following files:
• objects.map — types of objects in cells, such as none (.), wall (X), exit (E), chasm/hole (C), splitter (S), player's initial position (P);
• sprites_floors.map — sprites of floor cells, indexed by symbols from 0123456789abcdefghijklmnopqrstuvwxyz set;
• sprites_objects.map — sprites of objects in cells, indexed in the same way;
• title — well, title of the maze, displayed at the bottom;
• music — filename (with extension) of music file to be played;
• ambient — filename (with extension) of ambient file to be played.
See existing mazes for example.
Sprites ("_/sprites"), fonts ("_/fonts"), and sounds ("_/sounds") can be replaced as well. You may also add localisation of the game interface in your language ("_/lingua").
All changes described here do not require engine recompilation. Alternatively, you can compile the game from source (if, for example, there are no binaries for your OS) or modify it more intensively and distribute (according to GNU GPLv3 or later), — download the source from Download or from crates.io/crates/asmcahligzamaze.
Copyright © 2014–2022 Sunkware
〈VisitIPs is 👁watching👁 you〉