29 декабря 2021 29.12.21 26 2322

Новогодняя BUCTOPUHA на StopGame — Свежая игра из прошлого века

+32

Текстовые игры — отдельный, древний по меркам игровой индустрии и до сих пор процветающий жанр компьютерных игр, разнообразие поджанров которых сложно даже перечислить. Это и различные викторины, и клавиатурные тренажёры, и текстовые квесты, и ролевые игры и многое другое.

В этом блоге я расскажу о том, как и почему создавалась «новогодняя викторина» для сервера Discord «StopGame.ru», и что из этого всего вышло.

Сама Викторина проводилась каждый день с 27 по 31 декабря 2021 года на сервере Discord StopGame.ru. Блог я писал во время проведения викторины, постепенно добавляя его новой информацией.

Как мы общались в прошлом тысячелетии

Мне было лет десять (точнее не помню), когда где-то к середине 90-х годов в мой город и в мой дом пришёл Интернет, а вместе с ним культовая mIRC с DCC.

Тёмная тема интерфейса mIRC — то, как я запомнил этот чат.
Тёмная тема интерфейса mIRC — то, как я запомнил этот чат.

Первое из упомянутого выше — mIRC — праотец всех существующих ныне мессенджеров и чатов. Он, к моему удивлению, до сих пор живее всех живых: 2 октября 2021 года у него случилось свеженькое обновление до версии 7.67, о чём любезно сообщают и страница на Википедии и постоянно обновляющийся аскетичный сайт этого «Чата, транслирующегося через интернет» (Internet Relay Chat, IRC).

mIRC для меня и для многих других детей того времени стала «окном в новую реальность», где можно было общаться с друзьями, не выходя из дома. Не было тогда ни Google, ни Википедии. Даже ICQ ещё не добралась до нас. Зато была тёмная милая «Мирка», где все «посоны со двора» могли общаться чуть ли не круглосуточно (если мамка не сгонит с компьютера, конечно). Мирка, которую я помню, бесплатно (на этом настаивала реклама) работала в локальной сети моего провайдера. Поэтому каждый пользователь почти всегда мог быть уверен, что разговаривает плюс-минус с пользователями из своего же района.

Мирка имела собственный язык, используя который можно было создавать полезные скрипты. Одним из таких скриптов была DCC — надстройка, позволявшая просматривать на компьютере другого пользователя файлы, которые он любезно предоставил для общего доступа, и скачивать их. Так в локальной сети провайдеров моментально разрослась пиратская сеть. Её особенностью было то, что один пользователь качал файлы непосредственно с компа другого пользователя, не тратя серверные ресурсы провайдера. В этой сети можно было скачать всё, что требовалось пользователям интернета тех времён: игры, программы, картинки, видео, вирусы… Как сейчас помню: папки с содержимым «18+» было принято помечать в начале «xXx». Качать через mIRC приходилось долго и упорно, поэтому, как только появились торренты, сеть DCC быстро схлопнулась.

Ну, конечно же, при таких входных данных оставалось лишь вопросом времени, когда в mIRC появятся игровые боты. И они появились очень быстро.

Прообраз и причины рождения BUCTOPUHA

В один прекрасный день в mIRC моего провайдера открылся канал с загадочным названием «buktopuha», в котором заседал он — бот ураганной викторины. Мне даже не составило труда найти снимок с экрана с окном из него.

Та самая викторина в mIRC, какой я её помню
Та самая викторина в mIRC, какой я её помню

Как мне теперь известно, таких ботов было множество: каждый мало-мальский программист считал своим долгом попытаться повторить или превзойти творение других. Но, в принципе, среди викторин было несколько самых популярных и самых похожих. На снимке с экрана выше — одна из них.

Основной функционал такого бота был, как правило, следующий:

  • есть база данных с вопросами и ответами;
  • бот случайным образом берёт вопрос и задаёт в чат;
  • кто первый ответит — тот молодец;
  • первая подсказка — анаграмма (перепутаны буквы);
  • вторая подсказка — слово, часть букв которого закрыты звёздочками;
  • бот ведёт статистику угадываний, вознаграждая игроков виртуальными очками (тем больше, чем меньше подсказок прозвучало).

По моим детским ощущениям это была колоссальная игра, в которой сразу целая толпа игроков сражалась за то, чтобы успеть первым ответить на вопрос.

Я (и не я один), играя с этим ботом, испытывал одновременно:

  • состояние потока, когда один вопрос непрерывно сменялся другим, не давая ни минуты передохнуть;
  • напряжение от того, что мозг постоянно пытался угадать очередной ответ на вопрос;
  • адреналин в те мгновения, когда я уже знал верный ответ на вопрос, но его ещё надо было написать;
  • эйфорию от того, что был первым, самым быстрым и самым умным;
  • разочарование от опечаток, из-за которых ответил кто-то другой, но не ты;
  • ощущение несправедливости, если я только-только успевал прочесть вопрос, а другие уже ответили на него;
  • «магию общения» в моменты перерывов между вопросами, какой бы она ни была (а была всякой).

С тех пор прошло уже много лет. Отучился в школе, в институте. Умудрился поработать на разных предприятиях, дорасти до заместителя генерального директора. Переучиться на новую профессию, стать рядовым разработчиком программного обеспечения и, даже тут, сменить несколько мест работы. В общем: много воды утекло.

Но тут, сижу я где-то в начале осени на любимом сервере Discord и вспомнилась мне «старая добрая Мирка» с её поистине ураганным текстовым геймплеем. Около получаса я порылся в ботах Discord в поисках чего-то подобного и… не обнаружил ничего. Словно бы никто даже не пытался повторить культовую (по моему мнению) игру. Тут стоит оговориться, что полчаса для поиска бота — это «ну, такая себе попытка что-то найти». Однако, огонёк азарта уже зажёгся где-то в глубине души, а мысль «я могу возродить легенду» уже тешила моё самолюбие.

Были и другие причины (например: попробовать кое-какие технологии и шаблоны, на которые по работе не хватает времени), но основная движущая сила заключалась в том, чтобы поделиться с ребятами на сервере StopGame тем самым опытом безудержного текстового боя игрок-против-всех, к которому мне довелось прикоснуться в детстве. Вы только задумайтесь: «динамичная текстовая баталия»…

Версия 1.0 — Только для подписчиков

Старт разработки

Название для бота было готово с самого начала. «Буктопуха» — звучит прикольно, с юморком, и в точности отражает цель создания бота. Во времена mIRC это была необходимость, так как имена каналов не поддерживали кириллицу. Сейчас — это дань уважения «той самой» вкладке из моего детства.

Опыт написания совсем банальных ботов для Discord у меня уже был: один из них также работает на сервере StopGame, помогая мне вести партии в ДнД.

В качестве базовых технологий я взял:

  • .Net Core 5.0 — относительно свеженькую версию платформы с долгосрочной поддержкой;
  • пакет Discord Net (2.4.0) — общедоступную библиотеку для C#, позволяющую в более-менее простой форме общаться с Discord;
  • SQLite + Entity Framework — средства управления лёгкими базами данных, расположенными в файловой системе рядом с самим приложением.

Сервер я развернул на стареньком системном блоке, на который поставил Debian 10 и нужные компоненты. Можно было бы, конечно, выложить его в «облаке», но так было удобнее и интереснее.

Бот Буктопуха на тестовом полигоне (поздние сборки)
Бот Буктопуха на тестовом полигоне (поздние сборки)

Над ботом я работал по вечерам и ночам, чтобы это не мешало основной работе, и к 21 сентября у меня был глючный, но работающий прототип. От своего предшественника из моего детства он, естественно, отличался.

Во-первых, он существовал как автономное приложение, а не как скрипт-надстройка над программой. Из-за этого, используя нехитрую настройку, можно подключить его к любому удобному серверу Discord, выдав ему пару простых команд через Discord.

Во-вторых, я забыл про первую подсказку «анаграмму» в исходном боте. Из-за этого первая подсказка у меня выдаёт несколько случайных букв из ответа, скрывая остальные, а вторая — ещё несколько. Количество букв в подсказке зависит от длины самого ответа. Более того, из-за специфики названия видеоигр и терминов индустрии мне пришлось добавить несколько дополнительных подсказок в начале вопроса:

  • бот показывает схему ответа, по которой можно определить количество слов и букв в каждом слове, например: [2-3-2] — три слова, первое и последнее по две буквы, а второе — три буквы;
  • бот предупреждает о наличии знаков препинания в ответе и перечисляет их (если такие есть);
  • бот также сообщает есть ли в ответе число или же ответ сам является числом;
  • бот сообщает, если ответ приведён в латинских буквах (на английском).

В-третьих, кроме чисто текстовых вопросов, Буктопуха умеет выдавать вопросы с картинками по типу «угадай, что на изображении». mIRC-а из 90-х о таком даже не мечтала. В теории, можно было бы добавить вопросы с видео и аудио, но это сильно бы замедлило игровой процесс, поскольку игрокам пришлось бы активировать проигрывание этих файлов. Когда текстовые сообщения сыпятся одно за другим, попасть в кнопку «плей» крайне затруднительно.

Также была изменена система вознаграждений: мой бот выдаёт количество балов пропорционально оставшемуся времени на вопрос. Поэтому игрок, ответивший за 3 секунды, получает больше очков, чем игрок, ответивший за 4 секунды вне зависимости от того, прозвучала ли подсказка или нет. Это мелочь, но является дополнительным стимулом к повышению темпа игры.

Более того, заранее понимая и запланировав, что у вопросов будут различные авторы, я добавил возможность боту выводить имя автора в начале вопроса.

О более мелких отличиях я не скажу… больше, даже, не потому, что их много и они мелкие, а потому, что я плохо помню функционал исходного бота для mIRC. Например, настройки: в моём боте их довольно много, но было ли их много в «том самом из детства», я не знаю.

Прототип и вопросы

И на этом этапе (в конце сентября) на сцену моего повествования выходит товарищ Ян Грибович, без которого бы моя затея бы не удалась в принципе.

Я поделился с ним идеей:

Есть идея. Я написал бота-викторину. Сейчас тестируем и отлаживаем. Параллельно составляем пак вопросов по играм и лору СГ. В итоге, собираюсь запустить с ним событие на серваке с призами… Мне нужны принципиальное согласие на авантюру и вопросы с ответами, желательно, из первых рук. Ориентировочно пару тройку тысяч (вопросов). Что думаешь?

И получил ответ:

%)
Согласие — конечно, крутая затея!
Пару-тройку ТЫСЯЧ вопросов — это сам.

Что же. Это было… ожидаемо. Но главное я достиг — принципиальное согласие было получено. Оставалось дело «за малым» — пак вопросов.

Те, кто хоть когда-либо пытался составить пак для «Что? Где? Когда?», или, хотя бы, для «Своей игры» (даже в самой шуточной манере и непритязательной форме), могут оценить, что это такое «придумать несколько вопросов». У меня стояла задача намного больше — несколько тысяч вопросов. Да, вопросы для «ураганной викторины» не должны быть сложными, а, наоборот, должны щёлкаться как орешки. Да, это не хитрые вопросы с подковыркой, где у «знатоков» есть всего одна попытка верно ответить, а вопрос должен содержать подсказки и два-три логических шага. Напротив, это вопросы, на которые, в принципе, можно (и нужно) отвечать методом «проб и ошибок» (если потребуется). Но это «ГРЁБАННЫЕ СОТНИ И СОТНИ ВОПРОСОВ».

Почему столько? Простой расчёт. Основная моя идея на тот момент была в том, что викторина будет запускаться самими игроками в любой момент, когда они захотят поиграть. Она будет отключаться ими же или в том случае, если никто не играет. Чтобы вопросы не повторялись слишком часто, нужно, чтобы вопросов было, ну, допустим, «на недельку» непрерывной работы. Предположим, что на один вопрос примерно уходит около минуты (по факту, меньше). Банальный расчёт: 7 дней * 24 часа * 60 минут = 10 080 минут. Даже если растянуть вопросы на «две минуты», то это 5 тысяч вопросов. Поиск «вопросы для викторины» также выдавал наборы вопросов размером примерно в 6-9 тысяч штук. Значит, моя догадка оказалась примерно верной. Конечно, даже 5 тысяч вопросов — это были нереальные планы. Я остановился на «паре»…

Увы, интернет — бессердечная штука. Наборов вопросов на тему «компьютерные игры» в объёмах, которые нужны были мне, найти не удалось. И в конце сентября я засел за то, чтобы ежедневно писать хотя бы несколько вопросов. Также был кинут клич в чат подписчиков на сервере Discord и в сторону авторов StopGame. Кое-кто откликнулся, но, увы, безрезультатно. Рассчитывать, как и предрёк товарищ Ян, приходилось только на себя.

Первая пара сотен вопросов пошла легко: запросы «интересные факты о…» отлично удовлетворяли и моё любопытство, и потребность в написании вопросов. Но интересные факты быстро закончились, а дальше началась рутина. Печаль была ещё в том, что не такой уж я и знаток игровой индустрии… повезло, что упорства хватило до какого-то момента.

Потихоньку доделывался и сам бот.

Отличную идею подсказал Ян, что BUCTOPUHA должна принимать «альтернативные ответы». Это тоже связано с тем, что игры, их разработчики, студии и издатели — всё в игровой индустрии — может называться по разному, сокращаться всякими хитрыми способами. Было бы максимально нечестно, если, например, один из идентичных ответов «Герои меча и магии» и «Heroes of Might and Magic» не был бы принят. Безусловно «вылечить» эту проблему теоретически невозможно, но добавить пару-тройку-пятёрку верных вариантов вместо одного — отличный компромисс.

У бота появилось приложение-компаньон — менеджер вопросов. Эта программа для Windows, состоящая из буквально пары окошек и пары вкладок, позволила более удобно и комфортно составлять вопросы для бота. Чтобы эти вопросы можно было передать боту, я придумал [велосипед] свой простенький формат файлов, который представляет собой zip-архив с вложенными в него
а) текстовым файлом с xml-сериализованными вопросами;
б) папку с картинками, сжатыми до размеров 300*300 пикселей.

— размер картинок пришлось ограничить потому, что Discord не даёт загружать файлы больше 8 Мб, а большего размера картинки для викторины, в подавляющем большинстве случаев и не требуется; зато сжатые таким образом наборы вопросов позволяют передавать их боту через сам Discord;
— примерно такую же структуру имеют файлы *.sig для SiGame и даже MS Word.
Формат файла Буктопухи
Формат файла Буктопухи

Теперь я через «Менеджер» мог создавать вопросы в большом количестве. После чего формировался компактный файл с расширением *.btp, который я уже спокойно мог передавать боту через Discord.

Бета-тестирование и поддержка Яна

Через примерно месяц, 21 октября 2021 года был готов пак из… 450 вопросов.

Это было меньше четверти от того, что что я ожидал. Но у меня кончилось и вдохновение, и желание дальше мучиться с вопросами. Я предложил Яну запустить бота в чате подписчиков StopGame в качестве простого развлечения, желая «отмучиться и забыть». В принципе, в конце октября и начале ноября так оно и прошло. В отдельном текстовом канале «склада чемоданов» бот крутился и с переменным успехом веселил местную публику.

Мы нашли много мелких и не очень багов. Я кое-как залатал дырочки, отхватывая попутно критику вечно недовольного Алексея Ермолаева. Ну, отмучился и отмучился. Подведя сухой итог, можно было сказать, что:

  • в викторину играли всего пару дней;
  • интерес к ней было не высокий, а потом вовсе пропал;
  • всего из подписчиков играло человек 10;
  • 450 вопросов катастрофически недостаточно для запуска в сколько-нибудь более серьёзном виде;
  • всё дело заглохло, когда вопросы стали не просто очевидно повторяться, а уже доставать однообразием.

Тест закрыли, и лишь идея Яна Грибовича, о которой он говорил с самого начала: запустить бота не на постоянной основе, а в качестве «события», и его настойчивая уверенность в том, что это может сработать, не дало мне опустить руки окончательно.

Спасибо ему.

Релизная версия BUKTOPUHA

Обсудив в начале ноября подробно на пару с Яном результаты бета-теста, мы договорились нацелиться с выпуском бота в народные массы на Новый Год. Я же ушёл перекраивать бота.

А требовалось сделать следующее:

  • режим работы бота, при котором он выдаёт только заданное количество вопросов;
  • вылечить выявленные ошибки и устранить недостатки;
  • погладить кота;
  • дополнить список вопросов максимально возможным их количеством (любой доступной ценой);
  • несколько дополнительных команд для управления вопросами (например, перемешивание в базе данных);
  • несколько дополнительных настроек (например, возможность запуска бота только администраторами или любым пользователем).
Часть программного кода Буктопухи
Часть программного кода Буктопухи

Времени, если честно, было в обрез: на основной работе традиционные «предновогодние завалы» задачами, о которых «внезапно вспомнили», переработка и кранч… в общем, не лучшее время для сторонних проектов. Но, кое-как время выдрать удалось, и большую часть технических проблем удалось решить.

Хуже всего обстояло дело с вопросами: несколько призывов помощи канули в лету. Лишь некоторые из ребят помогли с парой десятков вопросов. Но в требуемых масштабах это было даже не капля в море.

Выход пришлось находить в том же интернете. Поиск «пак вопросов для своей игры» выдаёт множество сайтов, в которых в совершенно открытом режиме (без регистрации и СМС) можно получить файлы формата *.sig с паком вопросов. Выбрав категорию «видеоигры», я набрал штук тридцать различных наборов вопросов.

Формат файлов, как я уже говорил ранее, был схож с тем, который я придумал под своего бота: это zip-архивы с текстовым файлом, содержащим вопросы, и папкой с дополнительными файлами. Особенно мне порадовало то, что каждый такой архивчик всегда содержал в себе автора пака. Зная, какими трудами даётся сочинение вопросов, я очень не хотел лишать авторов упоминания их в вопросе.

Работа над вопросами сдвинулась с мёртвой точки. Новые данные потихоньку переезжали в менеджер вопросов, а оттуда — в базу данных бота. Долгая и кропотливая, но вполне понятная и созидающая работа. Вопросы приходилось часто адаптировать и местами править, но это было не в пример быстрее и проще чем придумывать и находить новые.

21 декабря бот был готов к бою, а в вооружении у него было около 900 вопросов.

Выпускайте Кра… бота!

Запуск новогодней-викторины под руководством бота BUKTOPUHA был назначен на 27 декабря в 16:00. Бот должен был отыграть 150 вопросов, после чего мы бы подвели итоги дня, а игроки бы побежали смотреть стрим на StopGame в 18:00. Затем ежедневно бы бот возвращался в назначенное время и продолжал бы предновогоднее забавное безумие.

И знаете, что? — Это получилось ровно так, как я помнил по детству. В целом, дух той самой викторины из mIRC удалось передать с её достоинствами и некоторыми недостатками: многие ребята подключились и вовлеклись в жестокий водоворот вопросов, выдавая и получая целый спектр ярких эмоций. Иные же не выдержали накала страстей или просто не справились со скоростью ответов других участников игры, и покинули соревнование.

После первого дня игры бот получил от игроков около 10 дополнительных вопросов. На второй день — почти 70! Да, это ещё одна фишка бота — можно добавлять вопросы, которые после предварительной модерации попадают в базу к игровым вопросам.

Что касается ответов, то выборку из 200 вопросов ребята «закрывали» за пару часов.

Я, наблюдающий за этим со стороны, испытывал одновременно зависть от того, что не могу побиться с ними за победу, восхищение скоростью и познаниями лидеров викторины, радость от проделанного пути и полученного результата и долгожданное чувство небольшого предновогоднего чуда…

Результаты викторины

Было бы не честным не упомянуть тех, без кого бы успех BUKTOPUH-ы был бы невозможен — без игроков, которые ревностно бились за лидерство в эти дни.

Глобальная статистика

Всего зарегистрировано 71 игрок, 69 из которых ответили хотя бы на один вопрос.
Вместе они ответили на 1061 из 1080 вопросов, заданных ботом, и заработали вместе 87 113 чемоданов.

День 1 — 27 декабря (150 вопросов)

№ 1 — mooduck: 1877 чемоданов (за 21 ответ), максимальная серия — 2 ответа.
№ 2 — Hospitaller (Володя): 1581 чемодан (за 21 ответ), максимальная серия — 2 ответа.
№ 3 — NightSentinel: 1061 чемодан (за 12 ответов), максимальная серия — 2 ответа.
№ 4 — DianteSs: 979 чемоданов (за 12 ответов), максимальная серия — 1 ответ.
№ 5 — JKonst: 703 чемоданов (за 9 ответов), максимальная серия — 1 ответ.

День 2 — 28 декабря (200 вопросов)

№ 1 — mooduck: 3641 чемодан (за 40 ответов), максимальная серия — 3 ответа.
№ 2 — JKonst: 3078 чемоданов (за 34 ответа), максимальная серия — 3 ответа.
№ 3 — Armando Bloom: 1619 чемоданов (за 22 ответа), максимальная серия — 2 ответа.
№ 4 — DianteSs: 1618 чемоданов (за 20 ответов), максимальная серия — 2 ответа.
№ 5 — Zidane: 783 чемодана (за 10 ответов), максимальная серия — 1 ответ.

День 3 — 29 декабря (200 вопросов)

№ 1 — mooduck: 3665 чемоданов (за 34 ответа), максимальная серия — 5 ответов.
№ 2 — Гранд-Совье: 1611 чемоданов (за 20 ответов), максимальная серия — 2 ответа.
№ 3 — Zidane: 1462 чемодана (за 20 ответов), максимальная серия — 2 ответа.
№ 4 — Armando Bloom: 1365 чемоданов (за 18 ответов), максимальная серия — 3 ответа.
№ 5 — DianteSs: 1127 чемоданов (за 16 ответов), максимальная серия — 2 ответа.

День 4 — 30 декабря (200 вопросов)

№ 1 — mooduck: 3374 чемодана (за 38 ответов), максимальная серия — 2 ответа.
№ 2 — JKonst: 2661 чемодан (за 32 ответа), максимальная серия — 3 ответа.
№ 3 — Гранд-Совье: 2002 чемоданов (за 26 ответов), максимальная серия — 2 ответа.
№ 4 — Armando Bloom: 1850 чемоданов (за 24 ответа), максимальная серия — 2 ответа.
№ 5 — WizarDiger: 1307 чемоданов (за 17 ответов), максимальная серия — 2 ответа.

День 5 — 31 декабря (330 вопросов)

№ 1 — mooduck: 7886 чемоданов (за 84 ответа), максимальная серия — 4 ответа.
№ 2 — JKonst: 5025 чемоданов (за 57 ответов), максимальная серия — 4 ответа.
№ 3 — Гранд-Совье: 3557 чемоданов (за 42 ответа), максимальная серия — 2 ответа.
№ 4 — Armando Bloom: 2831 чемодан (за 38 ответов), максимальная серия — 3 ответа.
№ 5 — тоже Гранд-Совье: 2774 чемодана (за 34 ответа), максимальная серия — 2 ответа.

Пятёрка лидеров глобального рейтинга:

№ 1 — mooduck: 20 443 чемодана (за 217 ответов), максимальная серия — 5 ответов.
№ 2 — JKonst: 11 467 чемоданов (за 132 ответа), максимальная серия — 4 ответа.
№ 3 — Armando Bloom: 7 871 чемодан (за 105 ответов), максимальная серия — 3 ответа.
№ 4 — Гранд-Совье: 7 609 чемоданов (за 94 ответа), максимальная серия — 2 ответа.
№ 5 — GitKrip: 4 960 чемоданов (за 60 ответов), максимальная серия — 3 ответа.

Общая таблица результатов

Сводная таблица результатов викторины за все дни проведения
Сводная таблица результатов викторины за все дни проведения

О наградах и победителях

Как формировался призовой фонд

Важным для меня вопросом в викторине было привлечение внимания к ней: ведь, если не удастся привлечь к конкурсу достаточное количество игроков, то и сам конкурс будет унылым и предсказуемым.

Очевидным решением были для меня два пункта:

  • информационная кампания, то есть, тупо реклама на максимально доступном уровне;
  • награды победителям как материальный и моральный стимул принять участие в событии.

Если с первым вопросом не было проблем даже в самом начале пути: вдохновение, с которым Ян подхватил идею, лучше всяких обещаний говорило о том, что с рекламой всё будет хорошо. Конечно же, я бы хотел видел анонс и на сайте, и в «инфакте», и на каком-нибудь стриме; но губозакатывательную машину мне давно подарили — ничего страшного от того, что анонсы были только в Discord не случилось. Хотя, судя по комментариям ниже (а этот раздел я дописываю многим позже первой публикации), кое-кто, всё же, хотел бы более широкой огласки.

А вот с призами победителям, естественно, вышла накладка. Здесь максимально подходит фраза «инициатива еб… имеет инициатора». В самом начале пути даже Грибович не высказывал энтузиазма вкладываться материально в весьма сомнительную авантюру. Оно и понятно: случайный человек что-то там хочет сделать и просит в редакции денег — «падазрительна». Поэтому долгое время в BUKTOPUHA не было финансирования вовсе.

После бета-теста, когда я при поддержке друже Яна окончательно понял, что викторине быть; для себя я определил, что готов отдать для этого дела не только время и силы, но и собственные средства — лишь бы всё выгорело и было супер. Уже тогда я назначил себе цель — 10 000 рублей и стал откладывать потихоньку. И тогда же озвучил размер призового фонда Яну.

Реакция последовала почти незамедлительно: он, как я понял, дёрнул ребят в рабочем сервере, поговорил с Димой Кунгуровым (глав.ред. на момент написания блога), и через несколько дней к моему фонду прибавилось обещание «что-то добавить от редакции». Что ж… уже лучше чем ничего.

На момент запуска викторины в боевой режим мы так и не знали, что и как дарить победителям. Идей было несколько, но каждая из них имела свои недостатки:

  • игры из списка Steam — там есть ограничения на подарки (например, нужно быть друзьями определённое время), к тому же у каждого свои предпочтения в играх, а дарить «любую игру на выбор» — слишком дорого: мой бюджет это не потянет;
  • сертификаты в Steam — да, но там тоже свои замарочки (строго определённые суммы);
  • подписка на twitch канал StopGame (моя изначальная идея) — там тоже запутанные правила: например, нельзя подарить подписку тому, кто уже является подписчиком;
  • майки StopGame — бюджет не потянет и двух-трёх, судя по официальному магазину, а мне бы хотелось наградить намного больше людей;
  • были и другие варианты, но уже многим хуже.

Поэтому мы решили сделать так. Во-первых, просто пообещать, что «символические награды будут», а какие — подумать ещё, взглянув на то, как играется игра. Во-вторых, добиться-таки от редакции StopGame какой-либо конкретики.

А тем временем мы сформировали «фонд» в виде текстового документа, куда скинули весь наш «бюджет» из моего «чирика» и расплывчатых обещаний главного редактора. Из авторов StopGame кое-кто тоже захотел поучаствовать, вкинув в этот список несколько промо кодов для игр.

Мы стали наблюдать за игрой и размышлять над тем, кого и как награждать. А понаблюдать было за чем. Самые для меня запоминающиеся моменты были:

  • в первый же день игры в самом начале друже SpeechPill сумел ответить на вопрос «в самый последний момент» таким образом, что ответ на вопрос ему бот засчитал, а «чемоданы» не выдал (механика такая, что чем позже отвечаешь на вопрос, тем меньше чемоданов за это получаешь); то есть, человек попал правильным ответом на вопрос в 1/100 долю секунды до закрытия вопроса — вероятность настолько мизерная, что я не ожидал в принципе такого исхода;
  • феноменальная способность друже mooduck отвечать на вопросы со скоростью молнии и обширные познания во всех областях заставили и игроков, и организаторов задуматься о честности его игры; предположений было несколько: от «он просто знает и умеет» и «он просто много играл в викторины» (многие вопросы, как я писал ранее, взяты из интернета) до «он каким-то образом читерит»; думали, предполагали, отвергали нереальные варианты — пришли к выводу, что, в принципе, ничего предосудительного пользователь не делал, и, даже если «он — нейросеть» (наиболее вероятный вариант), то «законом не запрещено — играет во что хочет»;
  • друже GitKrip ни разу не попал в пятёрку лидеров ни в один из дней, но, зато «тихой сапой» показывая стабильно хорошие результаты, попал-таки в пятёрку лидеров в глобальном зачёте — молодец!

Викторина прошла, а к вечеру 31 декабря очки были подсчитаны и записаны в анналы истории — настало время Нового Года. Все ушли кушать салаты и бездельничать, и мы с Яном не стали исключением. К тому же: пять предновогодних дней для меня выдались не сладкими: следить за викториной было той ещё выматывающей задачей.

Ближе к 5 января 2022 года Ян достучался до небес (главного редактора) с табличками результатов викторины и выбил у него призы.

Победители и их награды

Покумекав в последний раз за подарки, мы пришли к следующему выводу:

  • фонд из 10 килорублей разделили так: всем тем, кто попал в топ 5 лидеров в какой-либо из дней — «новогодний косарь»; одну награду в одни руки; таких призёров набралось — 10 штук;
  • футболки StopGame уходят пятёрке лидеров глобального рейтинга (набравших в сумме за все дни больше всех очков);
  • а промо коды авторов StopGame — товарищам, которые по мнению организаторов оказались «яркими звёздочками» во время игры.

Основные призы распределились так:

Бонусные награды достались:

  • SpeechPill за «невероятную вероятность» — заработать 0 чемоданов, верно ответив на вопрос;
  • GitKrip за «я тут мимо крокодил» — попасть в пятёрку глобальных лидеров, не заняв призовых мест в топ-5 отдельных дней.

«Раздачу слонов» начали 6 января. Как по мне, это было отличным дополнением к концу новогодних праздников.

Открытый исходный код BUKTOPUHA

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

Исходники полностью открытые со свободным распространением: используйте их в рамках лицензии X11 License (MIT).

Буду рад, если BUKTOPUHA «уйдёт в народ»; и ещё больше рад, если при этом будет сохранена ссылка на авторство исходного проекта. Заранее благодарю.

Текущая версия программы — 1.4. Дорабатывать не планирую.

Специально для StopGame.ru
dmicher abathur kubrow
29.12.2021 — 08.01.2022

Лучшие комментарии

Эх, с ностальгией воспоминаю те давние времена, когда о проведении подобных штук в Дискорде были какие-то анонсы в Блогах, что бы те, кто там не сидит, их не пропускали. Ибо тогда Дискорд был лишь вспомогательным средством общения… Не говоря уже о тех временах доисторических, когда, если в Блогах писалось «Игра на Стопгейм», то именно в этом Блоге эта игра и проводилась (пусть примитивная, вроде угадываний по скриншотам фильмов, но все же) *кряхтит, кашляет и вытирает слезы по безвозвратно ушедшим дням платочком*

Не очень понимаю, чем ты руководствовался, когда выбрал для «своего формата» плохой во всех отношениях и морально устаревший XML, вместо JSON или YAML.

А в остальном, ты, конечно, крут.

Руководствовался:
— действующим стандартом OpenDocument;
— сериализатором, вшитым в стандартные библиотеки .Net;
— отсутствием строгих требований к быстродействию и оптимизации по объёму текстовой части файла;
— личным представлением об удобстве чтения человеком (т.е. мной).

В основном, было не принципиально, но xml проще реализовывать. На пару-тройку кликов и несколько внешних библиотек… но мне было лень. А лень — двигатель прогресса.

А за общую оценку спасибо.
С наступающим.

Мне хоть и 33 почти, я застал фтп сервера, до торрентов, где можно было копаться в файлах с чужого ПК и не знал наперед, что ты там отыщешь. Прикольное время было)) Но вот Миркой я совсем не пользовался, у нас были свои городские локальные форум-чаты, а потом уже пошла Аська. 

Ещё в нашем чате можно было ставить вместо текстовых ников ники-картинки и я многим худо бедно фотошопил такие)) Осталось ещё на память, вот немного. Да, раньше я был просто Android, а потом жадный Гугл украл мое имя, эх...

Насчет вопросов — это да, жесть полная. Сам раньше занимался созданием паков для Своей Игры. В целом сделано только 4 пака, но вопросы подбирались по 2, а то и по 3 дня (неполных). Но что уж греха таить, что сделано, то сделано, поэтому +rep)

*подаёт свежий сухой платочек*

Просто StopGame это не только и не столько сайт, сколько все мы, где бы мы ни общались: на сайте, в дискорде, на твиче, на трубе, в вк… в тиктоке(?) — я не делаю разницы в платформах. Игры в комментариях на сайте тоже прикольные. Их популярность немного утихла в последнее время, но «чем чёрт не шутит», авось и вернётся...¯\_(ツ)_/¯

А по поводу анонса тут, наверное, ты прав. Наверное, стоило бы. Но я до последнего не был уверен, что вообще что-то «взлетит». Блог написал уже больше под впечатлением о том, что происходит, нежели как «анонс».

Первую часть твоего ответа я прекрасно понимаю, просто грущу о том, что все пропустил — я Дискордом очень редко пользуюсь)

Дак ты не всё пропустил. Викторина будет продолжаться ещё три дня.

Каждый день в 16:00 по московскому времени до 31 числа забегай в дискорд и участвуй/наблюдай.

Спасибо. С наступающим.

Всего зарегистрировано 58 игроков.

Вместе они ответили на 339 из 550 вопросов, заданных ботом

Наверное, 539. Мы точно не могли провалить 200 вопросов :)

Спасибо. Понимаю. Сочувствую.

Но ничего… в следующий раз что-нибудь ещё придумаем… помедленнее и повдумчивее.

С наступающим.

На пакет в стопгеймовском стиле (т.е. 3 раунда и 3 интермедии, суммарно 180 вопросов + 6 на финал) у меня ушло часов 20 чистого времени. Правда со случайным удалением куска работы в процессе… Так что 2-3 неполных дня не то чтобы долго. Если сам процесс нравится, то, считаю, это того стоит. Пока есть энтузиазм, даже рутинный поиск информации приносит удовлетворение. Ну и, конечно, есть в этом какая-то тяга «реализовать себя».

К сожалению, тот самый энтузиазм быстро заканчивается, потому что существенную часть самых интересных идей ты сразу же вкладываешь. И более глубокий поиск и анализ информации будет требовать существенно больше времени.

P.S. Меня даже посетила грешная мысль подписаться на твич, просто чтобы попасть в соответствующий чат дискорда и предложить ребятам поиграть. Но, все-таки, нежелание оставлять твичу свои личные данные победило )

Код на месте, по ссылке. Обновил правила доступа. Проверяй.

*P.S. пресвятые макаронины… 2 года прошло уже.*

Респект за огромный объем работы, который был вложен во всё это дело!

Последние новости викторины:

— объявлены победители и награды (начинаем отправлять);

— исходный код бота стал достоянием общественности;

— соответствующие изменения внёс в блог.

Всем ещё раз огромное спасибо за игру.

Прекрасная инициатива и отличный мотивирующий текст) *за погладить кота отдельный лайк, это действительно важная часть любого чеклиста*

Низкий поклон)

Спасибо! работает теперь

А где же код? По ссылке пусто :(

Читай также