Как стать автором
Обновить

Комментарии 63

Достаточно интересно. Спасибо. Вопрос, а фраза «У меня схватки, пока ехать». Имеет умышленно такой вид или слово «пока» — опечатка?)

Ждём про 2 часть)
Да, это опечатка, о них лучше писать в личку, исправил.
Или выделить и нажать Ctrl+Enter
Про читерство звучит как прохладная история — я могу поверить в недостаток опыта, но не в то, что все принимающие решения люди говорят «да ладно, не будут читерить». Нынче движок D является прекрасным учебным примером того, как НЕ надо делать обмен данными между сервером и клиентом (слать сообщения вида «X атаковал Y на N дамага»).
Да почему прохладная? Сейчас масса новичков так же и делают, хотя, казалось бы, информации в разы больше по всем аспектом геймдева, нежели 20 лет тому.
В 1996 году это действительно могло быть немного неочевидно (как и наличие читов у каждого, кто подключен к интернету: тогда читы чаще писались от руки и сколько людей стали бы этим заниматься?).
Кстати, в Quake2 на сервере тоже можно было читерить: играть с уроном по конкретному игроку, да и пару лет назад мылору выпустила локализацию какой-то корейской mmo-игры, где дамаг рассчитывался на клиенте — результаты довольно предсказуемы.
PS в diablo2 локальные сохранения тоже можно было спокойно править в hex-редакторе, чем я и развлекался: не выпадает новое оружие? Пфф, добавим ещё 10000 силы.
А мы с приятелем клонировали персонажей и крутой шмот или редкие предметы: копировали папку с сохранением, в сетевой игре все ценное передовалось, а потом восстанавливали сохранение.
А как же «краеугольный камень мира» и сейвы, которые можно перезаписать потом из резервной копии?
Помню передавал через него кучу шмота на свежего перса. И это не сетевая игра вроде была…

А так прекрасная игра была для своего времени. Сейчас пожалуй терпения пройти заново уже вряд ли хватит… Слишком слабая графика и её почти ничто не компенсирует.
PS в diablo2 локальные сохранения тоже можно было спокойно править в hex-редакторе

Вообще-то локальные сохранения чего угодно можно спокойно поправить.
Но в остальном да, я что-то только что осознал, насколько же стара D. В 1996 году вполне могли счесть читерство не заслуживающим внимания. Что, впрочем, потом не помешало Близзардам еще много раз облажаться с Варкрафтом и Старкрафтом, а именно — читерству через отключение тумана войны (хотя надо признать, что «честно» решить эту проблему сложнее, чем просто сделать вменяемую синхронизацию состояния игры).
В SC2 до сих пор встречаются мапхакеры. Война щита и меча.
Ну это-то решается технически (через непередавание актуальных данных о том, что скрыто под туманом войны, вместо этого можно «лениво синхронизировать» состояния клиентов с разными вариантами компромиссов между толщиной потока данных и степенью актуальности), просто близзарды не стали решать эту проблему вообще, и свели всё к административному воздействию («читеров побаним», вот только банят не всех и не всегда).

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

А я бы стал. Нет решения == не стали решать. При том, что вообще-то проблема имеет легкое решение (для SC2) — использовать клиент-серверную модель (сервер от близзардов), а не lockstep. И это при том, что SC2 и так использует центральный сервер от близзов для игр, но при этом всё равно синхронизирует игру всех клиентов по модели lockstep (что делает возможным мапхак).

Но даже и с lockstep проблема тумана войны в существенной степени разрешима, просто решение куда более сложное: синхронизировать состояние клиентов с задержкой (т.к. то, что под туманом войны — для других клиентов не так важно), синхронизировать состояние клиентов только в момент обнаружения друг друга и только в объеме, необходимом для такого обнаружения (проще говоря, если к тебе на базу пришел зилот, то игра должна синхронизировать весь объем действий другого игрока, который к этому привёл), и разные компромиссы этих вариантов.
Автосплит тоже есть в SC2.
И он работает так, что только ты появляешься в вижене опонента, он сразу автоматом сплитит войска.
Крип у зергов тянется сам собой. Даже камера не переключается у читера.
Много проблем у игры.
Ну это-то принципиально не решить, если клиент остаётся неподконтрольным. Эти штуки сродни аимботам для FPS — они делают действия, которые основаны на необходимой информации в клиенте игры (т.е. не передавать её уже не выйдет), только с идеальной точностью и скоростью.
Все данные, которые вы передали пользователю, могут быть использованы против вас.
НЛО прилетело и опубликовало эту надпись здесь
Неправда. Наоборот, с центральным сервером реплей писать не в пример проще: у сервера всегда заведомо есть единственное верное состояние игрового мира. Можно не только полный реплей составлять из этого, но и выборочные (да-да, вот с «разговорами команды»).
Решение, которое вы описываете это адский ад, как с точки зрения программирования так и гейм-дизайна. В общем случае нельзя сказать, не посчитав, влияет ли некое действие в тумане войны на состояние вне тумана войны, в результате такой подход частичной синхронизации приведет к тяжеловоспроизводимым случайным рассинхронизациям. Не говоря у ж о том что синхронизировать 10 минут игры в один кадр, когда твой зилот первый раз пришел на базу противника гарантированно приведет к просчету в пару секунд. Если бы всё было так просто это бы уже давно все сделали.
В общем случае нельзя сказать, не посчитав, влияет ли некое действие в тумане войны на состояние вне тумана войны

Нельзя. Но тут как раз можно и «посчитав» сделать.

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

Для этого и возможны компромиссы с «ленивой синхронизацией», когда всё в тумане войны синхронизируется, но не мгновенно, а спустя некоторое произвольное время. Тогда и не придётся потом обсчитывать 10 минут игры в один кадр.

Сложно? Конечно это сложно. Но далеко не невозможно.
Нельзя. Но тут как раз можно и «посчитав» сделать.

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

Сложно? Конечно это сложно. Но далеко не невозможно.


В общем случае (случайной сложности геймдизайн) невозможно.

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

Возможны максимально неполные данные вида «событие в точке X,Y». Да, на основании этого можно сделать мапхак, но далеко не такой интересный, как «вижу всё, что делает противник».

В общем случае (случайной сложности геймдизайн) невозможно.

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

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

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

А плюсы конкретно peer-to-peer локстепа в современное время и вовсе сомнительны.
Сейчас в основном используют локстеп с центральным авторитетом, а основное преимущество технологии — минимизация траффика — как был так и остается необходимым для игр с большим количеством юнитов.

Возможны максимально неполные данные вида «событие в точке X,Y». Да, на основании этого можно сделать мапхак, но далеко не такой интересный, как «вижу всё, что делает противник».


Неполных данных недостаточно, чтобы всё верно посчитать. Вы просто попробуйте сделать демку такого теха. Это нереально.
Неполных данных недостаточно, чтобы всё верно посчитать.

Неполных данных достаточно, чтоб понять, нужно ли вообще считать — это центральный вопрос, поскольку когда стороны не обмениваются полной симуляцией, им нужно достоверно определять моменты, когда таки нужно (когда А что-то видит от Б).

минимизация траффика — как был так и остается необходимым для игр с большим количеством юнитов

Да ничего подобного. Переслать десять-двадцать байт на юнит (поскольку пересылать требуется изменения, а не полное состояние) никого не раззорит даже при сотнях юнитов. На локстепе можно было играть в старкрафт по плохому adsl-модему с никакущим апстримом и даунстримом меньше мегабита. Сейчас игроков с апстримом и даунстримом меньше мегабита можно смело отбрасывать как количественно несущественную аудиторию. Сколько вы собрались передавать информации, если вам из-за «большого количества юнитов» будет мало мегабита в секунду?
Во-первых, разорит, хостинги вроде амазона очень хорошо берут за исходящий траффик.
Во-вторых, данные о сотнях юнитов (даже их изменения) не влезут в MTU (20 байт на юнит это даже для сотни юнитов уже 2кб в кадр, а там вероятно и юнитов больше и данных больше, так как кроме положения юнитов, есть ещё всякие эффекты, куллдауны и прочая и прочая), а значит пакет придется бить, а значит вероятность потери данных увеличивается, увеличивается латентность, хотя да, ширины канала вполне достаточно, притом что современный локстеп с локальным предикшном имеет практически нулевую задержку.

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

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

Для клиент-серверной архитектуры сервер не обязательно должен находиться у амазона и вообще у конторы разработчика.

(20 байт на юнит это даже для сотни юнитов уже 2кб в кадр

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

Я не зря написал про peer-to-peer lockstep — соль тут именно в том, что для избавления от мапхака у нас просто не должно быть p2p обмена данными. При этом обмен данными с сервером всё так же может идти по методу lockstep, но уже с неполнотой (присылается только то, что игрок видит). Разумеется, тут всё еще нужно доверять серверу, но в p2p доверять нужно вообще всем сразу.
мне немного интересно, а какой-то опыт в реализации предлагаемых подходов у вас есть? если да то какой?

Пока это все похоже на диванное проектирование :)
Естественно это диванное проектирование. Или вы где-то выше прочитали «я уже так делал»?
ясно :)
А у вас каждый кадр что-то в юнитах меняется? Вы пишете игру, или тонкий клиент под игру?

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

Для клиент-серверной архитектуры сервер не обязательно должен находиться у амазона и вообще у конторы разработчика.

Говорили же про старкрафт, там сервера у разработчика стоят.

Я не зря написал про peer-to-peer lockstep — соль тут именно в том, что для избавления от мапхака у нас просто не должно быть p2p обмена данными.

Так в современных стратегиях p2p трафика обычно и нет, все же за NATом сидят. Сервер просто рассылает клиентам вводы других игроков.

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

Так в современных стратегиях p2p трафика обычно и нет, все же за NATом сидят. Сервер просто рассылает клиентам вводы других игроков.

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

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

Если есть сервер, у которого симулируются полная картина мира — то это вообще тривиальная задача фильтрации («не отправлять игроку N всего того, чего он не видит»).

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


Траффика меньше, потому что вводов меньше, чем данных о мире, которые бы пришлось рассылать всем игрокам.

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

А я на сеге в road rash 3 анализировал в тетрадке текстовые сохранения, а потом изменял некоторые буквы для смены мотоцикла.

Еее, для меня это был первый опыт чего-то похожего на программирование

«action-PRG (APRG)» — исправьте опечатку, пожалуйста (или это какой-то новый жанр, о котором я не знаю?=)) )
Спасибо, исправил.
НЛО прилетело и опубликовало эту надпись здесь
Вторая версия Рагнароса.
Ехал кранч через кранч.
НЛО прилетело и опубликовало эту надпись здесь
Кранчи — это никогда не весело, но иногда, по крайней мере лично я считаю их неизбежным злом

Дэвид, ты все перепутал! Неизбежное зло — это не кранчи, а перенос сроков и увольнение менеджеров! А кранчи — это обыкновенная эксплуатация. Все-таки поганая это отрасль — игростроительство, если уж даже программистов достали настолько, что они формируют профсоюзы.

Не в отрасли дело. В любую отрасль приходят те, кто сначала определяет критерии (=право) эксплуатации одних другими, а потом с успехом воплощают это в жизнь. Сейчас "в моде" критерии экономические — ебитда там или у кого что. Но, их экономическая суть — вся одинакова. Как и одинаково всё дальнейшее: "сдохните, но обеспечьте мне выполнение этих показателей!". Другой вопрос, помогает или мешает эта "ебитда" очередному "ракетостроению" в конкретный момент его сути — именно ракетостроительности? Ответ на этот вопрос часто очевидный и грустный, т.к. эксплуататоры самоцелью имели явно другое (что читается в самих их критериях).

В игростроительстве эксплуатация, по-моему, еще на большом энтузиазме держится: результат-то осязаем и нереально крут. Вот и появляются коммунистические элементы (давайте работать и перерабатывать, это ж общее дело, мы же сделаем классную штуку) в капиталистическом базисе (всем зарплата и никаких процентов с продаж, а за переработки — в лучшем случае фиксированный бонус, в худшем — кукиш с маслом).
Самое интересное: как они придумали свою автогенерацию уровней?
Это же было невероятно просто!
Так источником вдохновения были рогуе-лайки, а там это как бы ключевая особенность жанра.
Уже была такая статья про генерацию уровней diablo. За тем же авторством, если память не изменяет.
В 2003 году я учился в 11-м классе. В кабинете информатики стояли старые (уже тогда) компьютеры. Какой Пентиум это был я уже не помню. Однако, помню, что на уроках мы писали алгоритмы в тетрадях. Иногда проходили «свободные уроки», когда все садились за свободные машинки и занимались чем попало, например, скачивали интересные картинки. Я в это время пытался запустить на компьютере Diablo — каким-то чудом эта игра там была. Ни разу у меня не получилось, но само ощущение, что вот-вот произойдет чудо и я смогу поиграть в легендарную игру, о которой читал в журналах, было потрясающе. До сих пор, когда где-то проскальзывает Diablo, ловлю флэшбеки этого чувства. Ни тогда, ни после этого, в Diablo я так и не поиграл, к сожалению.
Ни тогда, ни после этого, в Diablo я так и не поиграл, к сожалению.
Зря. Одна из тех игр, которые я прохожу раз в несколько лет. К тому же на GOG сейчас можно купить адаптированную под современные ПК/ОС версию.
Текстуры и спрайты под нормальное разрешение? Хотя бы фулхд?
Обязательно попробую, спасибо)
Сейчас есть довольно крутой мод для D1, называется The Hell. Делает в одиночку чеченский парень. Только что посмотрел — даже в этом году выходили обновления для него. Сам играл несколько лет назад. Самое то для ценителей олдскула, которые D1 прошли вдоль и поперёк (оригинальная игра очень лёгкая, к тому же, в ней невозможно умереть, если хотя бы пару дней наиграл и понял механику боя).

А Diablo 4 на текущей стадии выглядит очень печально. Буквально вчера внимательно посмотрел ролик с близзкона, где стример какой-то играл пару часов. Существует куча качественно сделанных клонов, от всяких корейских Lost Ark, до хорошо зарекомендовавшей себя Path of Exile. Непонятно чем 4-ая часть планирует от них отличаться, пока что только красивый вступительный ролик порадовал людей. Работать им придётся не только долго, но и старательно, привлекая талантливых разработчиков. Вон Diablo 3 изначально разрабатывала довольно слабая команда во главе с Джеем Вилсоном, получился просто кошмарный и сырой продукт (на момент выхода), который уже другие люди доводили до более-менее приличного состояния.
Не так сложно придумать новые игровые механики, как понять аудиторию, на которую рассчитывать игру. Вот смотрите, предлагаю готовую фишку для Д4. Глобальная карта, на которой по мере прогресса игроков «зло» отступает. На освобожденных областях меняется визуальный стиль, цены становятся дешевле и прочее. Сезон заканчивается когда игроки очищают весь Санктуарий. В новом сезоне делают злее монстров, добавляют другие мировые ивенты и т.д.

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

Но хиты прошлого зарабатывали гораздо меньше нынешних. Особенно на PC. Сейчас рынок вырос по сравнению с датой выхода D1 просто безумным образом. Да, выросла и конкуренция, но это ожидаемо. Но при реально крутой идее можно сорвать куш даже без вкладывания огромных ресурсов. Вон как создатель Minecraft стал очень богатым, не вкладывая почти никаких денег в разработку. В 90-ые такие прибыли были физически невозможны даже если ты самый талантливый игродел в мире.
Стоимость разработки также выросла в десятки раз. Пиксель арт игры это удел инди конторок, а чтобы сделать графику и дизайн уровней на уровне Лары Крофт новой нужны десятки художников, 3д-моделлеров, левел дизайнеров и прочего. Даже на движок уходит в разы меньше сил, вполне возможно что какой-нибудь UE допиливается в пару человек.
Не так сложно придумать новые игровые механики, как понять аудиторию, на которую рассчитывать игру.
— и что же тут сложного?
В новом сезоне делают злее монстров, добавляют другие мировые ивенты и т.д.
— близзы примерно это и делают, и все скатилось в следующее (относительно предложенного) — каждый сезон монстры злее — (передвигают коэффицент снижения урона и исходящего дамака и хитов), правят предметы что бы 1 из 3-х сетов был более эффективен чем 2 других (опять передвинем ползунки % бонуса), мировые эвенты сделают так: будет 10-к эвентов (как викли из вов) которые будут в каждом сезоне и опять передвинут ползунки что бы одни были реже другие чаще или равноценными оставят. как и задания в сезонном походе диаблы 3 (ага 17 сезонов а задачи идентичны).
близзы уже лет 15-20 занимаются самокопированием. делать игры для них давно уже просто бизнесс, а не творчество.
то есть они просто не заморачиваются, что бы что то сделать. ведь всем и так понятно — что игроки схавают это в любом случае. что diablo immortal отменили несмотря на недовольства?
Как раз с аудиторий сложно: на Diablo 3 большинство забило, и если сделают ещё одно дьябло 34 с ошибкой 42 на старте, смертью на ХК с дисконнектами и развлечением «новый сезон — он как позапрошлый, только новый! Смотрите, ваши циферки увеличились на 18%!!! А ещё вы получите новый фон и баннер!!!» — серия захоронится окончательно.
Серия с одной из самых продаваемых игр в мире захоронится? Это вряд ли. Насчет большинства — оно убило дьяблу на нормале и успокоилось, дальше продолжило играть как раз-таки меньшинство. На это же большинство будет рассчитана и четвертая часть.
Сколько дополнений и какое время жизни было у Diablo2 (хинт: it's alive!) и сколько в третьей?
Почему отложили второй контент-патч D3?
Да и до сих пор в D2 играет на оффе больше людей, чем в тройку, я уже не говорю про приватные сервера.
Не уверен, что именно так выглядит успех и развитие серии.
У меня нет статистики ни по онлайну D2, ни по D3, чтобы сравнить их в лоб, но я не думаю, что в D2 прямо много играет, а вот в D3 рубятся в Китае, там даже донат шоп есть, думаю там порядочно людей в нее бегает, а в D2 только полтора анонимуса.

Насчет почему забросили D3 — это знает только руководство Blizzard, странно забрасывать игру с такими продажами, ведь по ним она лютый вин и могла бы приносить прибыль еще долго. Лично бы побежал покупать второй аддон, выпусти они его, но увы. чего нет, того нет.
Ролики очень напомнили dungeon siege, почему-то, с конём из Lost Ark.
Задумался, что раньше в другие игры заходил с мыслью «ребяты, вы недавно из анабиоза? Удивите меня, какие у вас отличия от diablo, кроме текстурок?», а сейчас на diablo смотрю с теми же чувствами.
Было бы грустно закопать и эту серию, как убики закопали Героев. И да, они недавно анонсировали продолжение Героев на мобилках, с сундучками и микротранзакциями.
А мне всегда в Diablo нравилась именно уникальная атмосфера. Музыка, сюжет. Похожих игр сейчас куча, и среди них с такой атмосферой трудно найти. Более всего сейчас похожа Grim Dawn, как мне показалось.
Да, музыка, особенно тема в Тристраме отличная — поставил её себе на будильник ))
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации