Повесть о том как я сделал самую лучшую новостную ленту в своей игре (халява внутри)
Не стесняйся подписаться на мой телеграм - это абсолютно бесплатно можно сделать по ссылке:
А еще в ходе статьи я запрятал пару ключей от игры, так что приятного чтения! И вот первый от стима: XNMW5-XAAXI-09D2J
Идея
Один из важнейших аспектов в разработке SPACERIFT - создать интерактивный живой мир, который реагирует на действия игроков. Мне всегда нравилась симуляция мира в игре Космические рейнджеры: постоянное ощущение что жизнь кипит вокруг тебя, а когда ты развиваешься и начинаешь сам влиять на мир- он дает тебе обратную связь. Одна из механик, которые на это работают- внутриигровая новостная лента.
О чём писать новости?
Поскольку SPACERIFT - онлайн игра, то и новости должны быть, в первую очередь, о том, что происходит в игровом мире. И в центре внимания должны быть события, связанные с действиями игроков. Поэтому первое что я сделал - набросал для себя список событий, на которые будут реагировать СМИ в системе Арканум. Это уничтожение пиратских баз, открытия новых звездных секторов игроками, постройка заводов игроками и корпорациями и другие события.
Просто генерировать текст - недостаточно
Когда я представил себе новостную ленту с постоянным потоком текстовых новостей, мне показалось это достаточно скучным. В такой реализации блок с новостями может оказаться никому не нужным разделом.
Нужно придать интересные особенности внутриигровым СМИ. Итак, вашему вниманию представляю все мои шаги по реализации механики СМИ.
1. Генерация текста
Естественно, я видел множество роликов о том, как нейросеть интегрируют в какую либо игру, и чаще всего это попытки оживить НПС, заставив их генерировать ответы через нейросеть. На мой взгляд это самое скучное применение нейросетей, т.к. вы никаким образом не сможете придать живой характер персонажу такими средствами.
Но идея использовать нейросеть как основу для новостной ленты - мне показалась неплохой.
Сперва генерируется основной текст новости события. Сервер как можно чаще использует доступные данные об игроке, чтобы новость называла имена игроков, названия их кораблей, принадлежность к клану, локацию в которой всё произошло и т.д. Для удобства редактирования промтов я создал внутри игры отдельный редактор, в котором заполняю различные заготовки, которые сервер потом комбинирует и создает уникальный текстовый запрос к нейронке. Плюс добавил обработчик некорректных ответов (нейросеть часто морозится, если у игрока матерный ник, а внутриигровые события воспринимает как недопустимую тему для разговора, вроде войны).
2. Скрытый внутриигровой фотограф, который снимает интересные события
Это, на мой взгляд, самая интересная часть всей механики. Я решил что каждая новость должна сопровождаться фотографией. На снимке должно быть видно корабль игрока, или любой другой объект, к которому относится новость.
Когда происходит ключевое событие - клиент игрока в фоновом режиме создает снимок и хранит в памяти до тех пор, пока сервер не решит сгенерировать новость о событии. В этот момент сервер обращается к игроку, о котором будет написана новость, и компьютер игрока отправляет снимок новости, если такой у него имеется. В противном случае - новость выходит без привязанного скриншота.
(ключ от VK PLAY: PWIN25CTA5Q356TPQCSSG2HB7HR4E)
Чтобы снимки получались хорошо, я написал алгоритмы для отслеживания ключевых событий, а так же прописал в коде базовые правила ракурсов и фокусировки, чтобы мой искусственный фотограф соблюдал такие вещи, как правило третей, мог взять в кадр несколько объектов и разместить их в пространстве кадра так, чтобы это выглядело гармонично.
Таким образом, я получил еще и неплохой инструмент для создания симпатичных скриншотов для маркетинга игры:
Затем я приступил к созданию вкладки "События", на которой будут размещены новости. Получилась вот такая "газета" :)
Ключ от VK PLAY: IZD2Z7JL89KEEN1L2XKS8B81E9Y9Y
А так выглядит новостная лента на лайв-сервере
3. Радиопередача "Новостная"
Заключительный штрих в этой эпопее - внутриигровая радиостанция, в которой ведущий голосом озвучивает последние события в системе "Арканум". Сразу придумал имя радиоведущей - это будет Мария Иванова! (ключ от стима: GV546-HR0J9-3TFKJ)
Радиостанцию игрок может услышать когда прилетает в центральные населённые сектора. Текст и голос радиоведущего - это работа нейросети по написанию текста и синтеза речи в одной связке. Это должно обратить внимание игрока на события, да и кайфануть можно, если в новостях внезапно произнесут твое имя. (Да, никнеймы из спецсимволов нейросеть произносит как непонятный набор звуков, но я решил забить на этот нюанс).
Работает это следующим образом - когда готов текст новости, сервер отправляет нейросети запрос с этим текстом, с пометкой "Представь что ты радиоведущий - расскажи коротко об этом событии". В итоге получаем краткую сводку новостей с ключевыми именами и событиями. Затем всё это я скармливаю нейросетке по синтезу речи и получаю звуковой файл. Его кеширую на сервере и рассылаю игрокам в нужные моменты, вместе с самими новостями и картинками к ним.
Естественно, чтобы всё это оформить, была написана музыка (джингл) для новостной передачи. По итогу получилось как-то так:
Было приятно наблюдать за реакцией стримера Bess161rus, который периодически заходит к нам в игру:
Заключение
На этом мой рассказ можно считать завершенным. Потратил на всё это дело я примерно 2-3 недели, было много сложностей о которых я не стал здесь распинаться, т.к. всё-таки стараюсь вести около-геймдев рубрику, без душных нюансов и подробностей. Некоторые коллеги скептически отнеслись к идее подобной механики, но я всё-же очень загорелся и хотел это сделать, а дальше - будь что будет.
Эта фича появилась в игре перед новым годом - в крупном обновлении 2025, и многие игроки оценили механику по достоинству. А многие новички действительно удивлялись и писали в игровой чат сообщения в духе "Мама я в телеке!!!". Этого эффекта я и хотел достичь.
Конечно, были и те, кому фича не зашла - для них в настройках я специально сделал функцию "отключить новостные радиоэфиры".
Из моих наблюдений - надо наполнять большим количеством контента механику, делать больше разнообразия событий, т.к. сейчас новости часто бывают однотипные, хоть и содержат информацию только о том, что реально происходит в игре. Буду над этим работать!
Да, кстати, заголовок новости я решил специально написать настолько вызывающий и глупый, насколько это вообще возможно - конечно же я не считаю свою работу выдающейся или самой лучшей в мире. Просто решил проверить насколько работает кликбейтное название.
Спасибо за внимание!
Буду рад вас видеть у нас в соцсетях и в игре!)))
SPACERIFT в Steam: https://store.steampowered.com/app/1148480/SPACERIFT_Arcanum_System/
SPACERIFT в VK Play: https://vkplay.ru/play/game/spacerift/
АКТИВНО ВЕДУ Telegram:
SPACERIFT: Arcanum System в VK https://vk.com/spacerift
Поддержать и подписаться на Boosty: https://boosty.to/arcanumteam
Youtube: https://www.youtube.com/@ArcanumTeam