Обновить

ASCII Sandbox для красивого рассыпания в игре // Как сделано

Для того чтобы спрайты, боссы и другие объекты в игре красиво рассыпались, я сделал простой ASCII Sandbox движок. В отличие от самой игры, где символы могут рисоваться в произвольных координатах, ячейки в sandbox‑е строго выровнены по сетке. Это дает прикольный визуальный эффект. Алгоритм очень простой — вот схема:

─┼─┼─┼─┼─┼─┼─┼─┼─
│ │ │ │@│ │ │ │
─┼─┼─┼─┼─┼─┼─┼─┼─
│ │4│2│1│3│5│ │
─┼─┼─┼─┼─┼─┼─┼─┼─

А. Обходим все ячейки сетки снизу вверх (если гравитация направлена вниз).

Б. Если в ячейке есть символ, и он не в полете, то пытаемся его уронить.

В. Сначала проверяем ячейку снизу (1), если пустая — запускаем символ в полет в нее.

Г. Если снизу занято, то проверяем диагональные ячейки (2) и (3). Если обе пустые, то выбираем случайно. Запускаем символ в полет.

Д. Sandbox у меня скользкий, т.ч. символы могут скатиться и под большим углом. Поэтому проверяем еще и соседние к диагональным ячейки (4) и (5). Если там пусто, то запускаем символ в полет, как в предыдущем пункте.

Этого достаточно — символы сыпяться. Для красоты я добавил еще две штуки: ускорение и саморазрушение.

Если символ без задержек летит по ячейкам сетки вниз, то было бы красиво сделать движение с ускорением. Сделать это просто — нужно только накапливать для каждого символа время непрерывного полета. Наткнулся на другой символ — обнуляем время и ускоряемся заново.

Еще одна штука — саморазрушение. Когда спрайт помещается в sandbox, то в случае, если снизу пустые ячейки, он летит целиком. Это иногда не так эффектно. Поэтому я сделал параметр саморазрушения. Даже если снизу пустота, то отдельные частички‑символы спрайта все равно начинают взаимодействовать друг с другом. На видео я показал сравнение разных степеней саморазрушения.

Как вам эффект? Буду рад, если вам понравился стиль и вы решите поддержите мой проект на Steam страничке игры.

Теги:
Всего голосов 5: ↑3 и ↓2+5
Комментарии0

GPT-6 Astra помогла прочесть зашифрованную Enigma немецкую радиограмму 1941 года — над ней бились 21 год

Сотрудник Bloomberg Картер Леффен с помощью GPT-6 Astra расшифровал немецкую военную радиограмму MVUEH от 10 июля 1941 года. Сообщение состояло всего из 82 зашифрованных символов и находилось в коллекции исследовательского проекта CryptoCellar. По словам его куратора, специалиста по Enigma Фроде Вайеруда, попытки подобрать к нему ключ предпринимались с 2005 года — безуспешно.

Иногда эту историю уже пересказывают как «шифр не могли разгадать 83 года», но на самом деле неизвестно, пытался ли кто‑нибудь расшифровать именно эту радиограмму в течение большей части времени после войны. В современный криптоаналитический проект сообщение попало значительно позже. Вайеруд говорит вполне конкретно: MVUEH сопротивлялась попыткам расшифровки с 2005 года.

Леффен дал GPT-6 Astra в режиме Extra High довольно общую задачу — изучить оставшиеся нерасшифрованными сообщения из коллекции CryptoCellar и попробовать взломать одно из них. По рассказу самого Леффена, непосредственно работа модели до нахождения решения заняла около десяти часов. Всё исследование вместе с разбором источников, дополнительными проверками и воспроизведением результата шло 14 и 15 сентября.

GPT-6 Astra помогла прочесть зашифрованную Enigma немецкую радиограмму 1941 года — над ней бились 21 год

Публикации