Повесть о том как я сделал самую лучшую новостную ленту в своей игре (халява внутри)

Повесть о том как я сделал самую лучшую новостную ленту в своей игре (халява внутри)

Не стесняйся подписаться на мой телеграм - это абсолютно бесплатно можно сделать по ссылке:

А еще в ходе статьи я запрятал пару ключей от игры, так что приятного чтения! И вот первый от стима: XNMW5-XAAXI-09D2J

Идея

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

О чём писать новости?

Поскольку SPACERIFT - онлайн игра, то и новости должны быть, в первую очередь, о том, что происходит в игровом мире. И в центре внимания должны быть события, связанные с действиями игроков. Поэтому первое что я сделал - набросал для себя список событий, на которые будут реагировать СМИ в системе Арканум. Это уничтожение пиратских баз, открытия новых звездных секторов игроками, постройка заводов игроками и корпорациями и другие события.

Просто генерировать текст - недостаточно

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

Нужно придать интересные особенности внутриигровым СМИ. Итак, вашему вниманию представляю все мои шаги по реализации механики СМИ.

1. Генерация текста

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

Но идея использовать нейросеть как основу для новостной ленты - мне показалась неплохой.

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

2. Скрытый внутриигровой фотограф, который снимает интересные события

Повесть о том как я сделал самую лучшую новостную ленту в своей игре (халява внутри)

Это, на мой взгляд, самая интересная часть всей механики. Я решил что каждая новость должна сопровождаться фотографией. На снимке должно быть видно корабль игрока, или любой другой объект, к которому относится новость.

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

(ключ от VK PLAY: PWIN25CTA5Q356TPQCSSG2HB7HR4E)

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

Процесс работы над алгоритмом
Результат работы - скрины для новостей генерируются в низком разрешении, чтобы игрок не чувствовал фризы от работы оператора, но для себя сделал возможность генерить скриншоты  в высоком разрешении. (окно со скриншотами - тестовое, игрок его не увидит)

Таким образом, я получил еще и неплохой инструмент для создания симпатичных скриншотов для маркетинга игры:

Затем я приступил к созданию вкладки "События", на которой будут размещены новости. Получилась вот такая "газета" :)

В левой колонке - события связанные с игроками, справа - реклама (оранжевым цветом) и "обычные" события, информирующие игроков о том, что в целом происходит на сервере (появление новых пиратских станций, текущие спецзадания и тд). 
В левой колонке - события связанные с игроками, справа - реклама (оранжевым цветом) и "обычные" события, информирующие игроков о том, что в целом происходит на сервере (появление новых пиратских станций, текущие спецзадания и тд). 

Ключ от VK PLAY: IZD2Z7JL89KEEN1L2XKS8B81E9Y9Y

А так выглядит новостная лента на лайв-сервере

Я и не думал что они будут генериться настолько часто!

3. Радиопередача "Новостная"

Заключительный штрих в этой эпопее - внутриигровая радиостанция, в которой ведущий голосом озвучивает последние события в системе "Арканум". Сразу придумал имя радиоведущей - это будет Мария Иванова! (ключ от стима: GV546-HR0J9-3TFKJ)

Радиостанцию игрок может услышать когда прилетает в центральные населённые сектора. Текст и голос радиоведущего - это работа нейросети по написанию текста и синтеза речи в одной связке. Это должно обратить внимание игрока на события, да и кайфануть можно, если в новостях внезапно произнесут твое имя. (Да, никнеймы из спецсимволов нейросеть произносит как непонятный набор звуков, но я решил забить на этот нюанс).

Работает это следующим образом - когда готов текст новости, сервер отправляет нейросети запрос с этим текстом, с пометкой "Представь что ты радиоведущий - расскажи коротко об этом событии". В итоге получаем краткую сводку новостей с ключевыми именами и событиями. Затем всё это я скармливаю нейросетке по синтезу речи и получаю звуковой файл. Его кеширую на сервере и рассылаю игрокам в нужные моменты, вместе с самими новостями и картинками к ним.

Естественно, чтобы всё это оформить, была написана музыка (джингл) для новостной передачи. По итогу получилось как-то так:

Поскольку это более ранний видео-файл, здесь новостная лента выглядит как черновой набросок. А вот тебе ключ от стима: 4L5TB-5QK5E-KY74K

Было приятно наблюдать за реакцией стримера Bess161rus, который периодически заходит к нам в игру:

Я решил сделать сюрприз и сгенерил в реальном времени новость о том что популярный журналист зашел в игру :) Реакция превзошла все мои ожидания

Заключение

На этом мой рассказ можно считать завершенным. Потратил на всё это дело я примерно 2-3 недели, было много сложностей о которых я не стал здесь распинаться, т.к. всё-таки стараюсь вести около-геймдев рубрику, без душных нюансов и подробностей. Некоторые коллеги скептически отнеслись к идее подобной механики, но я всё-же очень загорелся и хотел это сделать, а дальше - будь что будет.

Эта фича появилась в игре перед новым годом - в крупном обновлении 2025, и многие игроки оценили механику по достоинству. А многие новички действительно удивлялись и писали в игровой чат сообщения в духе "Мама я в телеке!!!". Этого эффекта я и хотел достичь.

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

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

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

Спасибо за внимание!

Буду рад вас видеть у нас в соцсетях и в игре!)))

АКТИВНО ВЕДУ Telegram:

SPACERIFT: Arcanum System в VK https://vk.com/spacerift

Поддержать и подписаться на Boosty: https://boosty.to/arcanumteam

15
1
1
9 комментариев

забрал последний, спасибо

2

Забрал первый от вк плей, стимовский уже увели(

Будем посмотреть!

2

Ты кто

А ты

2

Да, лента получилась интересная! Спасибо!)

1

Здравствуйте, я пишу Лонги об инди играх, ваш проект мне интересен , если вам интересно , чтобы я написал и о вас , отпишите в лс

1

привет, интересно конечно)