— Roxette
26.07.2019, 8:56 PM BST оба сервера WA были остановлены навсегда.
В течение последнего месяца игры острова, медленно дрейфовавшие к центральному, опускались в нижние слои атмосферы, в облако смерти. Под конец они начали падать — сначала внешний круг, затем всё ближе и ближе к последнему, центральному острову Ishtar. Мир медленно умирал, унося в забвение нерассказанные истории и нераскрытые секреты.
В последний день жизни мира Капитаны и Путешественники собрались на этом острове, чтобы… Даже не знаю, как это описать. Попрощаться с миром?
Ну, точнее — попытались собраться. Даже с отключенными животными и сильно сократившимся миром деградировавшие сервера выдавали запредельно долгие циклы обновления. Многие пытались подвозить друг друга на кораблях, но больше пяти кораблей в окрестности острова попросту фризились. Тем не менее, вокруг костра в соборе на острове собралась почти сотня игроков.
Никто ничего не говорил. Звуковой чат умер одним из первых. Текстовый скоро последовал за ним. Единственным способом связи оставались стримы на Твиче, но много ли там скажешь? Впрочем, несколько хороших речей всё же были произнесены… Посмотрите хотя бы запись последнего стрима. Мусора много, но опытный охотник способен отловить и настоящие жемчужины.
Никто не танцевал, не прыгал и не играл на музыкальных инструментах. У многих даже трос не отцеплялся, а подпрыгивание легко могло заморозить на месте. Поэтому все просто стояли или сидели. Кто-то смотрел на языки пламени и танцующие на стенах собора тени внутри. Кто-то любовался сменой цветов неба снаружи. Игровые сутки тоже лагали и небо менялось рывками.
Опоздавшие пытались подняться к вершине острова. Но время умирающего мира останавливалось всё чаще.
Были те, кто прощался с миром, выполняя последний полёт — на корабле или на глайдере, они спускались в глубины карты, где ещё видны были утонувшие острова. Туда, где двигатели кораблей чихали и отключались, а здоровье персонажей шустро убывало — в облака смерти.
30 самоубийств. И… одна свадьба. Да! В последний день мира прошла церемония, объединившая души двух персонажей. Бессмертный акт в конце времён. Что-то, что могло пережить последний катаклизм. Странная штука. Тем не менее, она состоялась. К сожалению, не могу привести их имена — они зачитывались с бумаги, и разобрать их было сложно.
На PvP-сервере проходила последняя битва. Несколько кораблей, настоящие произведения искусства мин-максинга, сошлись в отчаянной перестрелке, медленно падая в грозовую тучу где-то далеко внизу. Грохот пушек, шипение паяльников и вой двигателей — пожалуй, самый настоящий гимн этой игры. По крайней мере, половины её — той, к которой приходили многие после завершения фазы исследования. Ведь сколь бы большим ни был запас контента — рано или поздно он заканчивается.
Даже при таком крауд-сорсинговом варианте создания контента, который использовали разработчики, размер карты мира был, к сожалению, ограничен. И был он совсем не таким большим, как могло показаться в первые часы игры. Когда-нибудь все острова были бы исследованы, а технологии получены. Что остаётся после этого? Только бесконечные сражения среди облаков и гроз…
Наконец, настал черёд последних моментов жизни. Демиурги открыли консоли управления сердцами миров — инстансами SpatialOS.
Первым был погашен PvE сервер. К тому времени стрим с него был уже невозможен, он почти наглухо висел. Войти на него также было невозможно, все желавшие просто попадали в список коннекта и никогда не доходили до загрузки персонажа. События на сервере также попадали в лимбо замедленного времени, так что клиенты жили чисто в локальном времени, где работала только анимация.
Вторым, во время трансляции стрима боя, гасился сервер PvP. Он не пошёл ко дну моментально, он тонул несколько десятков секунд — сначала зафризились корабли, но ещё работали действия персонажей. Затем остановились и они. Капитан воздушного судна в последний раз прицепился тросом к палубе и сделал несколько прыжков-петель вокруг своего корабля, прощаясь с тем, что было его жизнью последние два года.
Затем наступила тьма и Господь дал титры.
Я не хочу писать большую заметку с анализом, почему проект завершился, как завершился. В двух многочасовых стримах разработчики довольно подробно объяснили причины невозможности дальнейшей разработки.
Если очень коротко: технический долг и маркетинг. Слишком много времени и сил требовалось на починку багов вместо расширения возможностей. Слишком резко росла нагрузка на сервера при увеличении количества игроков, особенно сильно сказываясь на тех, кто рисковал подойти на расстояние прямой видимости. Это мешало поддерживать постоянный поток новых игроков. Да что там мешало — полностью останавливало! А старые не могли обеспечить достаточную выручку для обеспечения активной работы команды, так как на одной косметике много не получишь, да и сколько раз можно продать одну и ту же шляпу одному игроку?
Запись последнего стрима разработчиков: www.twitch.tv/videos/458223971
We are the Sky Captains. We will take to the sky.
Farewell Atlas. May the Foundation rise again.
P.S.: многократно звучавшие призывы передать игровой код в open source, даже в нерабочем виде, невыполнимы — глубокая интеграция SpatialOS и других проприетарных модулей не позволяет просто взять и стрипануть проект. Я знаю, что это такое. Там нужны ещё месяцы работы, и оставшийся скелет не будет представлять интереса для «возрождения», там заново написать начисто будет проще, чем рефакторить останки.
P.P.S.: аналогичное нечто: Airmen (https://store.steampowered.com/app/647740/Airmen/), но с роботами, попроще графически и геймплейно, и без лора.
26.07.2019, 8:56 PM BST оба сервера WA были остановлены навсегда.
В течение последнего месяца игры острова, медленно дрейфовавшие к центральному, опускались в нижние слои атмосферы, в облако смерти. Под конец они начали падать — сначала внешний круг, затем всё ближе и ближе к последнему, центральному острову Ishtar. Мир медленно умирал, унося в забвение нерассказанные истории и нераскрытые секреты.
В последний день жизни мира Капитаны и Путешественники собрались на этом острове, чтобы… Даже не знаю, как это описать. Попрощаться с миром?
Ну, точнее — попытались собраться. Даже с отключенными животными и сильно сократившимся миром деградировавшие сервера выдавали запредельно долгие циклы обновления. Многие пытались подвозить друг друга на кораблях, но больше пяти кораблей в окрестности острова попросту фризились. Тем не менее, вокруг костра в соборе на острове собралась почти сотня игроков.
Никто ничего не говорил. Звуковой чат умер одним из первых. Текстовый скоро последовал за ним. Единственным способом связи оставались стримы на Твиче, но много ли там скажешь? Впрочем, несколько хороших речей всё же были произнесены… Посмотрите хотя бы запись последнего стрима. Мусора много, но опытный охотник способен отловить и настоящие жемчужины.
Никто не танцевал, не прыгал и не играл на музыкальных инструментах. У многих даже трос не отцеплялся, а подпрыгивание легко могло заморозить на месте. Поэтому все просто стояли или сидели. Кто-то смотрел на языки пламени и танцующие на стенах собора тени внутри. Кто-то любовался сменой цветов неба снаружи. Игровые сутки тоже лагали и небо менялось рывками.
Опоздавшие пытались подняться к вершине острова. Но время умирающего мира останавливалось всё чаще.
Были те, кто прощался с миром, выполняя последний полёт — на корабле или на глайдере, они спускались в глубины карты, где ещё видны были утонувшие острова. Туда, где двигатели кораблей чихали и отключались, а здоровье персонажей шустро убывало — в облака смерти.
30 самоубийств. И… одна свадьба. Да! В последний день мира прошла церемония, объединившая души двух персонажей. Бессмертный акт в конце времён. Что-то, что могло пережить последний катаклизм. Странная штука. Тем не менее, она состоялась. К сожалению, не могу привести их имена — они зачитывались с бумаги, и разобрать их было сложно.
На PvP-сервере проходила последняя битва. Несколько кораблей, настоящие произведения искусства мин-максинга, сошлись в отчаянной перестрелке, медленно падая в грозовую тучу где-то далеко внизу. Грохот пушек, шипение паяльников и вой двигателей — пожалуй, самый настоящий гимн этой игры. По крайней мере, половины её — той, к которой приходили многие после завершения фазы исследования. Ведь сколь бы большим ни был запас контента — рано или поздно он заканчивается.
Даже при таком крауд-сорсинговом варианте создания контента, который использовали разработчики, размер карты мира был, к сожалению, ограничен. И был он совсем не таким большим, как могло показаться в первые часы игры. Когда-нибудь все острова были бы исследованы, а технологии получены. Что остаётся после этого? Только бесконечные сражения среди облаков и гроз…
Наконец, настал черёд последних моментов жизни. Демиурги открыли консоли управления сердцами миров — инстансами SpatialOS.
Первым был погашен PvE сервер. К тому времени стрим с него был уже невозможен, он почти наглухо висел. Войти на него также было невозможно, все желавшие просто попадали в список коннекта и никогда не доходили до загрузки персонажа. События на сервере также попадали в лимбо замедленного времени, так что клиенты жили чисто в локальном времени, где работала только анимация.
Вторым, во время трансляции стрима боя, гасился сервер PvP. Он не пошёл ко дну моментально, он тонул несколько десятков секунд — сначала зафризились корабли, но ещё работали действия персонажей. Затем остановились и они. Капитан воздушного судна в последний раз прицепился тросом к палубе и сделал несколько прыжков-петель вокруг своего корабля, прощаясь с тем, что было его жизнью последние два года.
Затем наступила тьма и Господь дал титры.
Я не хочу писать большую заметку с анализом, почему проект завершился, как завершился. В двух многочасовых стримах разработчики довольно подробно объяснили причины невозможности дальнейшей разработки.
Если очень коротко: технический долг и маркетинг. Слишком много времени и сил требовалось на починку багов вместо расширения возможностей. Слишком резко росла нагрузка на сервера при увеличении количества игроков, особенно сильно сказываясь на тех, кто рисковал подойти на расстояние прямой видимости. Это мешало поддерживать постоянный поток новых игроков. Да что там мешало — полностью останавливало! А старые не могли обеспечить достаточную выручку для обеспечения активной работы команды, так как на одной косметике много не получишь, да и сколько раз можно продать одну и ту же шляпу одному игроку?
Запись последнего стрима разработчиков: www.twitch.tv/videos/458223971
We are the Sky Captains. We will take to the sky.
Farewell Atlas. May the Foundation rise again.
P.S.: многократно звучавшие призывы передать игровой код в open source, даже в нерабочем виде, невыполнимы — глубокая интеграция SpatialOS и других проприетарных модулей не позволяет просто взять и стрипануть проект. Я знаю, что это такое. Там нужны ещё месяцы работы, и оставшийся скелет не будет представлять интереса для «возрождения», там заново написать начисто будет проще, чем рефакторить останки.
P.P.S.: аналогичное нечто: Airmen (https://store.steampowered.com/app/647740/Airmen/), но с роботами, попроще графически и геймплейно, и без лора.
16 комментариев
o7
Да, можно вспомнить задумки про китов, но, в конце концов, думаю, игроки легко бы пережили механику, не предполагающую довольно жестокую массовую китобойню, а, к примеру, только высадку на спину огромного кита ради того же исследования. Все эти попытки придумать то немотивированное PvP, то рейдбоссов прямиком из других игровых схем — как раз свидетельство отсутствия стержня у геймдизайна.
И вот что самое интересное. Игре катастрофически не хватало именно пустого пространства. Больших расстояний между островами. В десятки раз больше, чем это было в любой версии игры. Пространству не хватало тайны. Блуждания в облаках. Сложной навигации. Собственной картографии. Когда ты перелетал в новый регион и видел невооружённым взглядом почти всю коллекцию островов, это разрушало атмосферу приключения и исследования. Выглядело всё это именно как выставка. Я делал скидку на то, что это бета-тест или ранний доступ, но если уж авторы вплотную столкнулись со сложностями массового скопления игроков, как раз резкое увеличение расстояний без наращивания объектов — просто создание пустого пространства — было бы вполне логичным решением. Для игры про исследование. И для резкого снижения вероятности встречи. Но не для игры про PvP, разумеется. Только вот PvP в этой игре для себя места так и не нашло, кроме описанного в тексте оправдания в духе «просто скучно стало, всё исследовал».
Ну, и, наконец, про «достаточную выручку». Я писал об этом очень давно — авторы изначально завязались на технический сервис по подписке. SpatialOS требовал платить не один раз, а каждый месяц, в зависимости от нагрузки, создаваемой игрой. Что логично, потому что это нормальная честная схема: пользуешься — плати. Авторы Worlds Adrift посмотрели на всё это и решили — давайте мы каждый месяц будем платить, а деньги с игроков возьмём только один раз. Хм… что могло пойти не так в финансовом плане?
Стандартное вещественное число (float), лежащее в основе данных для всей математики Unity, имеет одинарную точность.
Хорошее позиционирование и верная передача динамики мира требуют от данных определенной разрешающей способности. Грубо говоря, нужно что-то принять за единицу измерения пространства. Может быть — принять метр за единицу измерений пространства. Может быть — миллиметр. От этого будет зависеть качество визуализации игры.
Так вот. В большом 3D мире, где требуется большое внимание к событиям вблизи персонажа, за единицу пространства принято считать миллиметр. При этом, одинарная точность типа float (который может содержать не больше 6 разрядов без обретения накопительной ошибки) позволяет описать не больше 10км пространства вдоль оси. 10км — это, хоть и большое, обозримое пространство.
Когда у тебя игра про свободные полеты и разрозненные острова, даже при наличии навигации, высока вероятность получить накопительную разницу между проложенным курсом и вектором фактического движения объекта. Поэтому, зачастую, чтобы в принципе не допускать возможности накопительной ошибки координат, разработчики итого сильнее сжимают пространство координатной системы мира.
Проблема с накоплением ошибки в координатах всегда мешала игровым движкам стать «чем-то большим». Многие разработчики систем симуляции управления и обучающих тренажеров (а я на эту тему разговаривал и с военными, и с их подрядчиками) упираются именно в нехватку точности позиционирования и физических расчетов. Поэтому, однажды в Томске был разработан очень полезный инструмент — Unigine.
Этот инструмент отличается прежде всего использованием типа вещественных чисел с двойной точностью (double) в качестве основы для всей математики пространства и физики. Его используют в симуляторах обучения пилотов самой различной техники, для создания VR-окружения и многих прочих проектов.
Однако для игр этот движок мало подходит потому что с двойной точностью современные процессоры работают чуть более чем в вдвое медленнее. Что GPU, что CPU.
Игры — это высокая динамика в ущерб точности модели представления. Мы ведь не хотим, ради боле точного позиционирования себя в микрометрах пространства, получить ~0,4 от текущего великолепия графики, динамично разрушаемого пространства, количества объектов и деталей вокруг нас, количества в принципе нас самих в рамках одной совместной сессии?
Это и не нужно :) Игровые движки имеют свои решения задач позиционирования и симуляции. Мое самое любимое решение — это иерархические координатные системы. В такие координатные оси можно записать всю нашу вселенную с точностью хоть в пикометр. Коротко: наша координатная система с разрешением в 10км может быть просто одним делением в другой координатной системе.
Другой прием довольно часто применяется на практике, особенно в космическом пространстве — это логарифмические интервалы осей. Коротко: все точки интереса на самом деле находятся на расстоянии вытянутой руки, но между ними находится подпространство, по которому ты будешь очень долго пилить на умопомрачительной для тебя скорости, но на черепашьей скорости для стороннего наблюдателя.
Так, так, а лицензирование предусмотрено?)))
Я им с 2012 года занимаюсь и все только переписываю да меняю архитектуру, вместо того чтобы уже закончить и начать развивать на нем свои проекты. У него цели иные — отработка решений, а не экономическая эффективность.
Я себя сегодня утром вообще «дном почувствовал»(нет) потому что развиваю его уже приличное время без видимого выхлопа.
Ок, ну ты хоть там в опенсорс выкинь лет через 5, ато посчупать-то интересное всегда хоца))
Проблемы там были на уровне пониже. Если у них неписевые сущности жрали до 80% нагрузки на сервер (trigger-based behaviour tree? Ага, щаз...), то что говорить про прочие аспекты нагрузки…
А что касается больших карт и расстояний — то я считаю, что помешал им прежде всего плохо продуманный дизайн игры в целом.
Они хотели сделать кооперативные приключения. Но при этом сильно обделили игроков инструментами, необходимыми, чтобы это было именно приключение, а не интерактивная переэкранизация «Ёжика в тумане». В игре новички зачастую падали со своих кораблей, не имея возможности ориентироваться в пространстве — и это при наличии гроздей островов поблизости!
А теперь попробуйте представить: вот вы висите посреди бескрайнего неба. Слева вдали — стена шторма. Снизу молочная пелена. Справа туман. Прямо туман. Сзади туман. Наверное сзади. Компаса один хрен нет. И горизонта. Можно
грабить корованылететь вперёд. А можно не лететь.Вопрос: зачем? Какая мотивация куда-либо двигаться?
Видимые острова хотя бы давали такую мотивацию: вон там что-то виднеется, а давайте посмотрим поближе. Если бы между ними были расстояния больше видимости — было бы абсолютно непонятно, зачем куда-то лететь. А даже если и понятно — тратить полчаса, просто жужжа двигателями ("- Are we there yet?.. — No. — Are we there yet?.. — No. — Are we there yet?.. — F**k..."), убивает мотивацию исследования очень быстро.
Нужны «маяки», Points of Interest. Но Боссы не смогли их сделать, увлекшись визуалкой и лором. Вот и вся история эксперимента.
Проблемы у Unity с технологией, безусловно, есть. И они далеко не заключаются в выбранных типах данных.
Все что я сделал — так это просто немного рассказал в ответ Атрону, что проблема точного определения координат в самом широком смысле — это не задача Unity и не задача игровых движков как таковых.
Для симуляторов — да, очень важно. Особенно точность при высоких скоростях перемещения — моделирование снарядов оружия и высокоскоростных маневренных целей. Самолётов-перехватчиков, ракет…
Когда-нибудь доживём и до двойной точности на массовых платформах.
А вот насчет double (64 БИТНЫЕ переменные, если я правильно понимаю о чем речь) вместо float это дело такое… Сначала смотришь и думаешь: «Ну что такого!? Каких-то 4 байта за х2 увеличение точности и еще большее увеличение расстояний и т.д.»
А потом понимаешь, что вектор это структура из 3х таких переменных, так еще и направление и скорость тоже определяются не одной точкой в 3х мерном пространстве. Вот и получается, что 4 байта на, скажем, 6 это 24 байта, которые на практике относятся далеко не только к векторам игроков, но и к NPC, их скелеты с 80 и блее костями, и еще есть сама физика, а если она продвинутая ( то есть не только коллизии, но и еще инерция честная, вращение и т.д.)…
Если кратко, то введение двойной точности это резкое увеличение потребляемой памяти и снижение частоты обработки данных, т.к. CPU тоже страдают от, скажем так, забитого кеша. Индустрия, на мой взгляд, пока не готова, да и, если честно world origin shifting неплохо справляется, там больше проблем с сетью ( передача данных клиента от сервера к серверу должна быть максимально плавной ), чем с флотами. ^_^