Продолжил изучать все технологии. В дополнение к уже открытым языкам, разработал ботов для Minecraft с помощью Node JS и познакомился с PHP. Ещё в этом году начал изучать Blender, но рендеров оттуда здесь не будет.
StageNumber
Когда более-менее научился верстать сайты, решил сделать страницу, которую мог бы выложить в открытый доступ. Этот проект вдохновлялся jodi.org. Я старался развернуть на сайте загадочную и странную историю.
![]() |
![]() |
---|
Разные страницы сменяют друг друга. На каждой попытался сделать какую-то тайну, чтобы общее ощущение от сайта оставалось такое, будто посетитель чего-то не понял, или не разгадал.
StageNumber стал первым сайтом, оказавшимся доступным из интернета. В то время хостинг Heroku предоставлял отличные бесплатные планы, поэтому многие проекты позже выпускались там же и заменяли собою StageNumber. Но потом Heroku закрыли эту возможность, так что пришлось переезжать. Сейчас сайт доступен здесь.
Grind
На некоторое время создание сайтов наскучило. Поэтому вернулся в Python. И разработал более-менее завершённую консольную idle игру, основанную на времени. Мысль сделать из времени валюту позже проявит себя в проекте ThousandYears, но так и не будет доведена до конца.
![]() |
![]() |
---|
В Grind есть различные ресурсы, которые можно копить до определённого лимита, прокачивать и продавать. Позже открываются красители, копящиеся без верхнего лимита. Вся игра управляется исключительно командами в терминале. Есть оффлайн прогресс. На открытие всех игровых возможностей должно уходить около месяца игры. Так же есть отдельная страница с прогрессом.
На изображениях показан мой очень старый сейв.
Исходный код игры лежит на GitHub, все ресурсы открываются постепенно. Список всех доступных команд можно посмотреть с помощью help
.
Tree
В интернете увидел ролик про L-системы. Решил на основе правил реализовать несколько своих деревьев. В результате много чего получилось, причём все системы работают по одному и тому же коду, просто для различных типов надо поменять начальное состояние и правила переходов.
![]() |
![]() |
---|
Получается своеобразный фрактальный язык, с помощью которого можно генерировать невероятно красивые узоры. В своё время код всех этих генераторов помнил практически наизусть. Так же пробовал составлять свои правила, но обычно ничего красивого из них не получалось.
Большинство законов переходов и начальные состояния систем даны на Википедии, поэтому разработка такого проекта была крайне простой. В качестве движка для отрисовки использовалась Python черепаха.
Experiment v1
Этот проект стал первым из трёх экспериментов по мониторингу свободного времени. Экзамены только приближались, поэтому всё больше времени проводил за подготовкой. В какой-то момент возникло желание узнать, сколько времени уходит на каждую из этих активностей: школу, сон и свободное время.
Написал простейший скрипт для подсчёта и затем смотрел сводку за неделю ведения этого трекера. Тогда распределение вышло весьма неожиданным, ведь оказалось, что на все активности уходит равное время.
Во второй и третьей версии проект был сильно улучшен и расширен, а я привык вести трекер каждый день.
Botting
Всегда хотел в Minecraft сделать бота, который бы мог помогать мне с рутинными вещами. С помощью Node JS и Mineflayer создал первого: бота шахтёра, способного добывать полезные руды.
Бот копал шахту в форме рёбер, автоматически избегал лаву и воду, а при заполнении инвентаря складывал ресурсы в необходимый сундук и брал кирки, факелы и еду из другого. Код проекта был открыт, но уже немного устарел. По этому проекту так же вышло видео.
Pillar killer
После открытия возможности ботоводства создал ещё двух ботов. Этот сносил колонны края. Для работы надо было выдать игроку тыкву и кирку, а потом привести к нужной колонне и задать её радиус в блоках. После чего машина автоматически и без остановки начинала точить обсидиан.
Идея для этого проекта зародилась при просмотре одного из стримов Мэла, на котором он как раз своими руками сносил все колонны. Исходный код проекта открыт.
Floor bot
Затем, уже в своём выживании с помощью гусей организовал периметр. Но замащивать зону в несколько десятков чанков своими руками мне не хотелось, поэтому создал ещё одного бота, который бы проходился змейкой по всем блокам пола и клал бы на их месте обсидиан (видимо, добытый при раскопках колонн Края).
О двух проектах: бота для столбов края и бота для укладки пола позже было записано видео. Код бота открыт, но, возможно, тоже устарел.
К сожалению, после создания трёх ботов, ни одного из них я не испытал в полевых условиях настоящего выживания.
cAutomation
Затем узнал об игре Stone Story RPG. После прохождения стал оптимизировать билд персонажа, а так же скрипты, для автоматизации прохождения уровней. Все эти скрипты пишутся на языке Stonescript (что-то среднее между JavaScript и Python) и помогают управлять персонажем.
Фиолетовым цветом на скриншоте отображены переменные для отладки работы скрипта: данные о враге и его дебафах, время прохождения уровня, координаты персонажа, состояния перезарядок различных оружий и состояние ресурсов, а так же данные о готовом зелье и активном снаряжении.
Каждый из уровней игры обладает звёздами. Чем больше звёзд, тем тяжелее проходить локацию. На последних звёздах проходить локацию без скриптов автоматизации невозможно, поэтому улучшение скриптов является первостепенной задачей игрока.
Исходный код всего кода, написанного мною на Stonescript выложен на GitHub. Но проект во время переписывания с нуля был заморожен до времён, когда интерес к игре снова не появится.
SSRPGA
После освоения всего контента Stone Story RPG, занялся внешней автоматизацией. Поскольку это гибрид idle и RPG игры, в Stone Story можно устраивать оффлайн фарм локаций. После такого фарма надо возвращаться в игру и открывать все выпавшие сундуки. Ещё в игре раз в сутки обновляется содержимое магазина.
Чтобы не выполнять все эти рутинные действия руками, написал программу, выполняющую все действия автоматически. Позже с помощью технологии распознавания экрана и перевода изображений в текст приложение было расширено и стало сохранять данные забегов.
Помимо сбора лута, позже к проекту были добавлены скрипты, позволяющие визуализировать полученные с забегов данные. Так началось моё изучение библиотеки matplotlib, с помощью которой в будущем будет написано большое множество проектов.
![]() |
![]() |
---|
Заодно для скрипта автоматизации ещё был создан демон, который автоматический выполнял все необходимые действия по запуску и мониторингу игры, лишая меня вообще от какой-либо необходимости что-то делать своими руками.
Проект обновлялся и улучшался на протяжении 4 лет и недавно был переписан с нуля. Причём все данные были сохранены и переведены в новый формат записи.
Demoscene
Сайт, где каждый пользователь может оставлять комментарии. Стал первым проектом, в котором использовались продвинутые технологии: PHP и использование базы данных (это была MySQL). Проект пережил два сезона и до сих пор остаётся активным.
Первый сезон был на Heroku. В этом сезоне каждый пользователь мог в текст комментария вставлять любые HTML теги, так что при большом наплыве пользователей страница обязательно ломалась. Зато на DS в итоге вышло огромное множество хаков, история которых была подробно описана в отдельном видео.
Второй сезон получил ограничение на HTML код, но предоставил новую тему приложения и возможность встраивать некоторые модификаторы текста в сообщения. Этот сезон сейчас доступен здесь. Исходный код сайта открыт.
StageLast
После некоторых жизненных проблем была создана грустная страница с белым трясущимся текстом на чёрном фоне. Она сейчас доступна. Стили для текста были взяты из Demoscene.
PointsMiner v2
Помимо просмотра Мэла, был подписчиком Заквиеля. Сначала писал скрипты для автоматизации его игры - Майнера базальта, а потом, когда этот майнер закрылся, стал автоматизировать баллы канала с помощью существующего репозитория. На его основе создал свой форк, в который внедрил возможность записи статистики данных о голосованиях и позже на основе этих данных проводил свою аналитику, чтобы выбрать лучшую стратегию голосования.
На графике красной линией отмечен предположительный рост баллов, если не играть на ставках, синей линией отмечена игра моего бота. Большую часть времени программа была в минусе, пока я не провёл аналитику для ставок.
Помимо этого улучшил страницу для визуализации данных о фарме баллов и натренировал небольшую нейронную сеть для попытки предсказаний результатов голосований. Хотя сеть никогда не была испытана в полевых условиях, было создано много графиков, описывающих её работу и представляющих хорошую визуализацию свойств ставок на баллы.
![]() |
![]() |
---|
Цветами отмечены исходы ставок по категориям. В то время была возможность создавать ставки только с двумя исходами. Размер кружка определяет размер выигрыша. Цветной фон - решение сети о том, на какой исход ставить баллы.
Использование проекта было прекращено с обновлениями Twitch. Я завершил проект имея более 500 тысяч баллов на канале Заквиеля.