Название игры
SokoJump v0.1

Описание
Идея в том, чтобы взять обычный Сокобан и привинтить к нему дополнительную механику прыжков во времени.
Эта идея возникла довольно давно, была довольно глубоко продумана, и вот наконец возник повод ее реализовать.
Благодаря этой механике можно решать уровни, который в обычном Сокобане просто неразрешимы.
Но возникает очень нетривиальная многопоточность, когда мы должны синхронно выполнять действия
вместе в копиями юнита, которые прибыли из будущего.
Просчет действий (когда и в какое время телепортироваться, чтобы подвинуть ящик до того,
как юнит из прошлого пройдет там, где был ящик для того, чтобы достичь позиции,
из которой можно телепортироваться для того, чтобы, собственно, подвинуть ящик)
просто взрывает мозг, у меня сейчас нет четких паттернов для решения подобных задач.
Я даже не знаю каким тупым переборным алгоритмом это можно решать.

Еще я не уверен, что уровень 6 возможно решить, ибо сам я его решить не успел. Уровни 1-5 точно разрешимы.

Как работает эмулятор
Шаг 1.
Игнорируем ящики и просчитываем траекторию движения юнита в пространстве-времени.
Проверяем, что юнит никогда не столкнется со стеной или сам с собой.
После этого шага нам известно где будут находиться все копии юнита во все моменты времени.
Шаг 2.
Теперь идем по всем моментам времени с самого начала и двигаем ящики в соответствии с движениями юнитов.
Проверяем, что ящики не будут сталкиваться друг с другом и другими юнитами, а также со стенами.
Важный момент: если в обычном Сокобане команда "подвинуть ящик в стену" игнорируется, то тут
это считается ошибкой: если это игнорировать, то траектория, полученная на прошлом шаге может поломаться.

Что реализовать хотел, но не успел
- Плавная анимация в режиме Run и в пошаговом режиме
- Подсветка соответствующих участков кода на текущем шаге выполнения
- Дополнительные фичи, вроде тайлов, который пропадают через некоторое время
- Сохрание прогресса (сейчас при закрытии игры все теряется)
- Больше уровней
- Всякие свистелки вроде "Поздравляем, уровень пройден, вы такой умный, возьмите с полки пирожок"

Управление
Клавиатура, мышь.
Вверху окна в выпадающем списке можно выбирать уровень.
В окошке Program нужно ввести программный код, который будет управлять юнитом.
Допустимые команды:
L,R,U,D - идти влево вправо вверх вниз
N - подождать один ход
1-9 - прыгнуть назад во времени на нужно число ходов
Все остальные символы игнорируются.
Кроме того, есть комментарии "//", в которых игнорируется все до конца строки.
Когда программа написана, нужно нажать Compile (по сути это и есть проверка правильности).
Если в окошке Console в конце выпала фраза "Final check... ok", то уровень пройден.
Кнопкой Run можно прогнать решение, или же сделать это в пошаговом режиме с помощью соответствующих кнопок.
В правой части окна будет выводиться информация обо всем, что происходит во все моменты времени.
Советую использовать кнопку Compile как можно чаще, чтобы лучше понимать, что происходит.

Особенности, экзотические системные требования
Извращенный головной мозг.

Разработчики, контактная информация
Artem Ripatti
e-mail: ripatti@inbox.ru
twitter: @ripattisoftware