Я большой сторонник постепенного развития продукта - сначала делаем MVP(Minimum Viable Product), выпускаете его в мир, а потом дорабатываете наиболее востребованные места.
Есть цитата, ярко характеризующая этот подход:
Если тебе не стыдно за твой MVP, то ты выпустил его слишком поздно.
В середине этого года я начал переделывать бота на принцип движка. Если раньше каждый квест был классом, то теперь это конфигурационный файл. Про это я уже частично писал.
И т.к. квесты штука вариативная и ещё и statefull, то в какой-то момент пришлось добавлять выражения. И, разумеется, сразу делать красиво и правильно я не стал. Разрабатывать и реализовать грамматику, а потом ещё и поддерживать её с самого начала? Пфф!
Тем более мне был необходим простейший минимум для начала:
Все реализовано на простых, но составных выражениях, которые парсятся регулярными выражениями.
Присваивание, инкрементация, сравнения. В условиях только и/или. Никаких скобок, или даже составных арифметических выражений. И этого было достаточно для того чтобы перевести все квесты на новый движок.
И, наконец, пришел момент, когда это стало недостаточно. Имея 100+ квестов перед собой, я понимаю какая грамматика мне нужна.
Реализовать я это решил с помощью ANTLR, и теперь готов приступить к следующему шагу.
P.s. в примере с узлом есть, бросающаяся в глаза, ошибка. Работающая на начальных этапах, но не попавшая в грамматику, найдёте?
Есть цитата, ярко характеризующая этот подход:
Если тебе не стыдно за твой MVP, то ты выпустил его слишком поздно.
В середине этого года я начал переделывать бота на принцип движка. Если раньше каждый квест был классом, то теперь это конфигурационный файл. Про это я уже частично писал.
И т.к. квесты штука вариативная и ещё и statefull, то в какой-то момент пришлось добавлять выражения. И, разумеется, сразу делать красиво и правильно я не стал. Разрабатывать и реализовать грамматику, а потом ещё и поддерживать её с самого начала? Пфф!
Тем более мне был необходим простейший минимум для начала:
get_money_reward:
expression: "TMP_PUMPKIN_SIZE=U.PUMPKIN_SIZE;MONEY_REWARD=34*U.PUMPKIN_SIZE;G.MONEY+=MONEY_REWARD;U.PUMPKIN_SIZE=null"
publicText:
- "${USERNAME} вырастил${FEMALE?а} ${TMP_PUMPKIN_SIZE==1?маленькую тыковку}${TMP_PUMPKIN_SIZE==3?среднюю тыкву}${TMP_PUMPKIN_SIZE==9?большую тыкву} 🎃"
text:
- "Внутри тыквы вы обнаруживаете горсть золотых монет (+${MONEY_REWARD} 💰)"
choices:
"🌾 Назад": [ "pumpkin_field" ]
Все реализовано на простых, но составных выражениях, которые парсятся регулярными выражениями.
Присваивание, инкрементация, сравнения. В условиях только и/или. Никаких скобок, или даже составных арифметических выражений. И этого было достаточно для того чтобы перевести все квесты на новый движок.
И, наконец, пришел момент, когда это стало недостаточно. Имея 100+ квестов перед собой, я понимаю какая грамматика мне нужна.
Реализовать я это решил с помощью ANTLR, и теперь готов приступить к следующему шагу.
P.s. в примере с узлом есть, бросающаяся в глаза, ошибка. Работающая на начальных этапах, но не попавшая в грамматику, найдёте?
👍3❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Никогда мем еще так хорошо не описывал мою текущую работу 🥺
🤣3
Раз в неделю приходилось перезагружать бота, из-за утечки памяти в одной из библиотек.
Когда последний раз вы анализировали дамп памяти чтобы найти утечку?
Костыльное решение так же прилагаю
Когда последний раз вы анализировали дамп памяти чтобы найти утечку?
❤🔥3
Вы знали, что после удаления бота из группы ему всё равно приходят callback'и на его кнопки в этой группе? 🤔
⚡2👍2❤🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Когда добираешься до Котобота после работы
😁5
У телеграмма есть ограничения на размер файлов, что интересно он отличается на отправку и на получение:
📁 Отправка 50мб
📁 Получение 20мб
Как я раньше писал, БД Котобота растёт, сейчас она хранит записи более 150к игроков. И как раз 12 января размер архивированного дампа превысил 50 мб.
Только сейчас у меня дошли руки до этой задачи. Теперь бот снова раз в сутки отправляет мне нарезанный на кусочки дамп БД. И точно так же в одну команду я могу восстановить её.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2