TGViewer
Channel Public Channel
Любопытный Код

Любопытный Код

@curious_code

Технический канал квест-бота про котиков: @Cat_game_bot

Канал квест-бота: @Curios_Cat
Subscribers
115
Photos
43
Videos
6
Links
4

Showing posts older than #40 · Back to latest

Older Posts 15 shown
Post #39 116
Я, кажется, еще не хвалился своим фреймворком для написания юнит-тестов под ботов?
Хотелось реализовать декларативный стиль, а как вы пишите тесты для своих ботов?
  • ❤‍🔥 1
  • 👍 1
Post #37 112
Раз в неделю приходилось перезагружать бота, из-за утечки памяти в одной из библиотек.
Когда последний раз вы анализировали дамп памяти чтобы найти утечку?

Костыльное решение так же прилагаю
  • ❤‍🔥 3
Post #36 135
О да! 😌
  • 🔥 10
Post #35 385
  • 😁 8
Post #34 336
  • ❤‍🔥 3
  • 👍 3
  • 🙏 1
  • 👾 1
Post #33 210
Семян тоже нафармили прилично 🌱
  • ❤ 3
  • 👍 3
  • 🎃 2
Post #32 202
Количество полученных компасов 🧭
Так что, если вы один из них - гордитесь 😎
  • 👍 6
  • 👀 2
Post #31 235
Никогда мем еще так хорошо не описывал мою текущую работу 🥺
  • 🤣 3
Post #30 203
Expression.g4.txt3.7 KB
Делюсь самой грамматикой, вдруг кому-то захочется попробовать.
  • ❤ 3
Post #29 360
Я большой сторонник постепенного развития продукта - сначала делаем MVP(Minimum Viable Product), выпускаете его в мир, а потом дорабатываете наиболее востребованные места.

Есть цитата, ярко характеризующая этот подход:
Если тебе не стыдно за твой 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
Post #28 305
  • 😁 3
  • ❤ 2
Post #27 286
Доброе утро!
  • 👍 2
  • 😁 2
  • ❤ 1
Post #26 283
О да, ещё вот думал спойлеры выложить, но пойдут они пока только сюда. Есть идеи?
  • ❤ 5
Post #22 265
И ещё немного отсеянного
Post #19 173
Нагенерил вот. Выбрали 3ью
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →