Недавнее событие, организованное двумя летсплеерами, вызвало в сообществе Факторио некоторое шевеление. Девелоперы сами поучаствовали в эвенте, чтобы своими глазами посмотреть на фактический стресс-тест. Буквально сразу же они включили в новый апдейт несколько изменений тех недочётов, что обнаружились только при большом скоплении людей. Если говорить числами, то зафиксированный максимум одновременных подключений составлял около 400 человек, играбельно было не более чем при сотне, но причиной этого, по словам kovarex — ведущего разработчика, была только недостаточная мощность сервера, а точнее — CPU. Так можно ли превратить кооперативную игру, заточенную под одного-пять друзей, в полноценную ММО, как осторожно предположил kovarex в последнем девблоге?
Структура мира
Из технических изменений игре прежде всего потребуется изменить структуру генерируемого мира. В Факторио карта создается с помощью сравнительно простого процедурного кода, основанного на шуме Перлина и симплекс. С его помощью нельзя сгенерировать объекты, которые для своего существования требуют информации от соседних областей, зато можно генерировать карту, сектор за сектором, фактически бесконечно. Таким образом размер сейва напрямую зависит от открытой карты (открытой — значит сгенерированной). Это допустимо для однопользовательской или кооперативной игры, где игроки сами контролируют этот параметр. Но в многопользовательской игре со свободным входом кучность в центре подталкивает игроков искать свой угол, где они могли бы развернуться. Это хорошо заметно в видео, где очень быстро было построено несколько независимых аутпостов. Кроме того, это потенциальная уязвимость для грифинга — открывать большие территории и тем самым нагружать не только сервер, но и все клиенты, ведь все расчёты ведутся на каждом клиенте, а сервер занимается только передачей тех изменений, что вносят игроки.Из-за особенностей геймплея нельзя выгружать из памяти открытые секторы, так как там могут быть структуры, которые должны обсчитываться вне зависимости от того, есть там кто-то или нет: копалки должны добывать руду, конвейеры должны перемещать вещи, генераторы должны производить ток, а разведанные базы с жуками должны этих жуков выращивать. Так что в Факторио падающее дерево всё-таки трещит, даже если никто его не слышит.
Выгрузка из памяти неиспользованных секторов может немного снизить нагрузку, но не избавит от грифинга, ведь можно поставить одинокую солнечную панель где-то в лесу, и сектор не сможет выгрузиться. Необходимо ввести «параллельные миры», соединяющиеся друг с другом в ключевых точках, но не требующие «постоянного присмотра». И такая технология в игре уже есть, она называется «Слои». Разработчиками в ванилле она не используется, и была сделана на будущее, зато активно используется моддерами. Самый популярный мод с её использованием — Factorissimo.
Геймплейно это можно представить так: вам дают отдельный регион на планете, который для всех остальных будет представлять из себя Чёрный ящик. Он будет обсчитываться только на сервере и тех клиентах, которые локально в нём присутствуют, и через сервер обмениваться входящими и выходящими данными с соседними регионами.
Такое изменение хоть и привносит границы карт (не то чтобы это было явным недостатком), но зато решает множество проблем, связанных в том числе с покинутыми регионами. Чисто теоретически можно было бы брать плату с игроков за аренду таких регионов, в том числе давать возможность арендовать несколько из них, но я не осмелюсь сейчас рассуждать о монетизации и о том, насколько продуманным и честным может быть такой подход. Для этого лучше подходит коллективное обсуждение в комментариях.
Читы
Как я уже заметил, абсолютно все расчёты ведутся на клиенте. Поэтому для предотвращения читерства, неизбежного в ММО, нужны очень сильные инструменты. Моих знаний недостаточно для того, чтобы предложить какое-либо решение, но этот вопрос нужно обязательно поднимать, если вы собираетесь делать ММО-игру.Темп игры
Это одно из самых важных геймплейных изменений, которое должно быть введено в игру. Все рецепты должны стать на порядок дороже, скорость добычи ископаемых уменьшена, ручной труд должен стать намного более бесполезным. Частично можно взять пример с Marathon мода. Ещё неплохо бы ввести качественные изменения в строительство структур, чтобы большинство из них не ставилось мгновенно. Это даст больше значимости постройкам, продлит общее время игры (да, это дешёвый приём, но он работает) а также позволит видеть воочию, кто чем занят с помощью проигрываемой анимации. Взаимодействие click-n-hold должно быть заменено на простой click, чтобы дать возможность печатать в чат.Социализация
Кроме обычных и привычных нам по множеству ММО списка присутствующих в игре людей и друзей нужны отдельные чаты для разных групп. В игре уже существуют концепция сил («forces» или по-простому «фракции, кланы, корпы, гильдии»), которые могут быть враждебны и нейтральны друг к другу, с независимым развитием технологий и независимыми «военными» структурами типа автоматических ворот и турелей. А также концепция «сквадов» (squads или группы). Их нужно развить и добавить удобный интерфейс, чтоб пользоваться ими.Между разными корпорациями должна быть возможность заключения контрактов. Контракты на продажу, покупку, перевозку, разведку, оборону и нападение, аренду земли — вот несколько примеров. Контракты должны быть формализованы в рамках игровых правил и за их выполнением должна следить игра. Нужно тщательно подойти к их реализации и минимизировать возможность и последствия абьюза.
Долгосрочные цели и самоподдерживающийся геймплей
На основе взаимодействия разных сил можно развить очень крутой долгосрочный геймплей с политикой, договорами, союзами, войнами и так далее. Основная цель, которую ставит сейчас игра — запустить ракету со спутником в космос — выполняется за промежуток от 2 до 20 часов одним человеком. Это не только быстро, но и не имеет никакого смысла в ММО. Нужна более глобальная цель, например построить большую производственную империю, стать единственным на планете производственником, стать самым лучшим производственником, объединить под своим крылом множество независимых производственников и так далее. Цель должна быть одновременно:- труднодостижимой — месяцы, а может и годы работы, но не считанные дни
- достаточно размытой — нечёткие критерии, которые можно исправлять и корректировать по ходу дела
- требующей объединения множества людей — а иначе зачем нам делать ММО?
- эксклюзивной — не бывает двух самых лучших
Людям нужен смысл чтобы объединяться, но также нужен повод для возникновения конфликтов. Конфликты возникают в условиях нехватки ресурсов, союзы нужны в условиях жёсткой среды и для объединения сил над крупным проектом, где одной недостаточно.
Развитие и специализация
Необходимо настроить геймплей так, чтобы единолично управлять фабрикой, выполняющей все производственные циклы было невозможно. Дерево технологий, которое обуславливает развитие в игре, должно быть перестроено и расширено. Оно должно давать выбор в различных специализациях: добыча полезных ископаемых, логистика, доставка, дорожное и железнодорожное строительство, сортировка, литьё металлов, нефтепереработка, химическая промышленность, электроника, машиностроение, металлообработка, военная промышленность. Технологии должны быть привязаны к корпорации, а не к персонажу и лучше полностью переделать способ эти технологии прокачать.В текущей игре игроку нужно тратить часть ресурсов на производство специальных «научных пакетов», которые затем тратятся в лабораториях при прокачке технологий. Этот подход ориентирован на синглплеер и намеренно позволяет игроку выучить всё. В ММО игре важна глубокая специализация, которая вызывает зависимость друг в друге, а значит, в социальных связях, которые двигают самую интересную часть игры — политику. Поэтому его нужно полностью заменить на такой, чтоб не позволить корпорациям выучить все технологии, плюс дать возможность углублять специализацию перками и улучшениями. Мои поверхностные наброски включают в себя «патенты» добывающиеся большими ресурсными вложениями, опытом и достижениями, а также их покупкой на рынке, если конечно кто-то решит их продать.
Контент
Как видите, количество контента в игре должно существенно увеличиться. Производственные цепочки нужно углубить и расширить в несколько раз. Также необходимо организовать геймплей, в котором фабрику нельзя «построить и забыть». Её мощности должны подстраиваться под постоянно меняющиеся условия, новые контракты, новых соседей, новые расходы.Нужно увеличить разнообразие ландшафта, добавить биомов, реки, холмы. Водоёмы и массы суши должны быть более разнообразны по форме и размерам. Биомы должны влиять на функционирование машин: грунтовые воды и дожди должны усиливать коррозию, снег и песок — заносить всё собой и так далее.
Разнообразить врагов также не помешает. В некоторых местах их может совсем не быть, но это балансируется редкостью ресурсов или суровыми условиями обитания. В других местах напор местных агрессивных форм жизни будет представлять суровое испытание для тех, кто хочет челленджа и возможность отхапать побольше.
Война
Война должна быть последним, а не первым способом решения всех конфликтов (хотя кого я обманываю, некоторые всегда найдут повод докопаться). В любом случае, я бы не хотел декларировать на геймплейном уровне войну как главенствующий геймлей, потому что считаю, что в этой игре достаточно механик для поддержания интереса. Это не Ева на земле. Однако ПВЕ-война предусмотрена геймплеем — агрессивная фауна имеет сильную тенденцию к экспансии. Тут либо постоянно пассивно обороняться, тратя ресурсы и организуя линии снабжения, либо нанимать по контракту отряды охотников и отгонять врагов на расстояние. Тех же самых охотников можно нанимать для войны с другой корпорацией, если не удаётся договориться миром.Каждая фабрика слишком уязвима для любого вида саботажа, где один отсутствующий элемент может остановить всё производство, а если хозяина ещё нет онлайн, то пиши пропало. Это просто очень лёгкое средство испортить геймплей себе и другим, что не раз обсуждалось в комментариях на ММОзговеде. Поэтому саботаж в игре должен отсутствовать, а каждое нападение во имя геймплея и здоровой личной жизни может быть совершено только во время, удобное для защищающегося. Игры по КТА — не наш путь. Ганк как явление отсутствует — на чужой территории вне времени осады просто нельзя напасть первым, а ничейных территорий не существует.
Два варианта сценария игры
1) В игре существует некая нейтральная могущественная сила, назовём её Империей. В начале игры игрок попадает именно туда, в условный имперский промышленный город, в условный туториал. Ему империя дала льготный кредит на основание и развитие своей фабрики — кусочка земли, где он должен отработать кредит, построив завод по производству условных деталей. Ему дают определённый поток ресурсов на вход и он должен получить прибыль, продавая готовый продукт на экспорт. Туториал может иметь несколько стадий сложности и из него фактически можно не выходить, так как площадка, которую игроку дали, не инстанцирована и расположена на реальной карте города, но представляет из себя вышеописанный чёрный ящик, а потоки экспорта и импорта вещей идут через настоящий имперский рынок, где происходят сделки между игроками. Правда, всё это не совсем выгодно, ведь размер этого участка сильно ограничен, а сделки происходят по имперским условиям с высокими налогами. Поэтому нужно как можно скорее арендовать землю далеко от Империи, где нет таких жёстких лимитов и развивать производство самому. Либо…2) Либо присоединиться к одной из существующих корпораций и встать под их патронаж. Это можно сделать даже не проходя туториал, но тогда корпорация должна будет выплатить кредит сама. Обучение в этом случае также ложится на плечи самой корпорации.
Уход из игры
Уход из игры рядовых участников не сильно скажется на производительности целой фабрики, но если уйдёт глава корпорации, то владение должно например через 30 дней перейти в руки одного из участников. Это решается голосованием. Если так случается, что уходят все участники корпорации, то фабрика выставляется Империей на аукцион по минимальной рыночной стоимости. Аукцион длится не меньше одной недели и продолжается до последней ставки плюс 3 часа. Прирост ставок не может быть меньше 10% ставки. Если через неделю никто не выразил желания купить фабрику, она удаляется.Итог
Для того, чтобы стать не просто кооперативной игрой, где возможен большой мультиплеер, а настоящей ММО, которая не закончится через два дня, игре нужно очень сильно измениться, а количество добавленного контента и социальных механик должно увеличиться многократно. И это будет уже совсем другая игра. Игра, которую я жду©.Спасибо что не уснули от долго чтения. :)
21 комментарий
Так как Факторио — игра про конвейерное производство, то и потребление должно быть конвеерным, боеприпасы первыми приходят в голову(неосторожному жуку). Если использовать НФ концепцию «мир смерти» с окружающей средой, целенаправленно изничтожающей человека, то боеприпасов понадобится много: патроны, напалм, гербициды, и прочее.
Он не будет больше, он просто добавится плюсом.
На счет защиты думаю все просто, если общет идет на клиенте. А сервер выступает только маршрутизатором, то можно у группы игроков в одной локации сверять передаваемые параметры.
Такой подход позволяет генерировать мир постепенно по мере надобности и фактически бесконечно (ограничение только в разрядности), а это никак нельзя отнести к недостаткам. :)
Или ты имеешь ввиду сетевой код именно в factorio?
Но не суть.
Нельзя ничего на стороне клиента считать. Совсем нельзя.
Даже не расчетным данным с клиента верить нельзя. Совсем нельзя.
Клиент передает серверу ровно сырые данные типа «я стою в этой точке и бъю по этому мобу»
И сервер проверяет все. Если там ты, если там моб, мог ли ты в этой точку попасть из предыдущего известного серверу положения и т.д. и т.п.
И сервер считает все — ага что у тебя там в руке? как это ударит по мобу? какие там у моба ресисты? и т.д. и т.п.
Если хоть чему-то со стороны клиента верить — всё. «хаки» появятся мгновенно.
Как работает классика жанра «спид хак» во всех «доверчивых» MMO? — наивный сервер просто верит, данным от клиента «я теперь тут». Ха ха.
Это кстати реально сложно сделать по уму. Проверка и обсчеты взаимодействия массы персонажей с массой действий в одной точке — та еще тема.