Комментарии 63
Ждём про 2 часть)
Кстати, в Quake2 на сервере тоже можно было читерить: играть с уроном по конкретному игроку, да и пару лет назад мылору выпустила локализацию какой-то корейской mmo-игры, где дамаг рассчитывался на клиенте — результаты довольно предсказуемы.
PS в diablo2 локальные сохранения тоже можно было спокойно править в hex-редакторе, чем я и развлекался: не выпадает новое оружие? Пфф, добавим ещё 10000 силы.
Помню передавал через него кучу шмота на свежего перса. И это не сетевая игра вроде была…
А так прекрасная игра была для своего времени. Сейчас пожалуй терпения пройти заново уже вряд ли хватит… Слишком слабая графика и её почти ничто не компенсирует.
PS в diablo2 локальные сохранения тоже можно было спокойно править в hex-редакторе
Вообще-то локальные сохранения чего угодно можно спокойно поправить.
Но в остальном да, я что-то только что осознал, насколько же стара D. В 1996 году вполне могли счесть читерство не заслуживающим внимания. Что, впрочем, потом не помешало Близзардам еще много раз облажаться с Варкрафтом и Старкрафтом, а именно — читерству через отключение тумана войны (хотя надо признать, что «честно» решить эту проблему сложнее, чем просто сделать вменяемую синхронизацию состояния игры).
Принципиально неустранимы только читы, основанные на компенсации слабостей кожанных мешков — то есть, когда у клиента игры точная информация однозначно есть, и её не может не быть, а вот игроку надо что-то сделать без доступа к этой информации. Например, навести прицел на противника и выстрелить. Тут, естественно, будут возможны читы, делающие это за игрока, и принципиально от этого не избавиться.
просто близзарды не стали решать эту проблему вообщеЯ бы не стал так утверждать, кто его знает из-за чего они оставили все так как есть, к примеру в том же WoT информацию о противнике, клиент получает лишь когда его обнаружит радаром, из-за чего бывают случаи что можно смотреть на противника, и не видеть его, так как радары его еще не заметили.
Я бы не стал так утверждать
А я бы стал. Нет решения == не стали решать. При том, что вообще-то проблема имеет легкое решение (для SC2) — использовать клиент-серверную модель (сервер от близзардов), а не lockstep. И это при том, что SC2 и так использует центральный сервер от близзов для игр, но при этом всё равно синхронизирует игру всех клиентов по модели lockstep (что делает возможным мапхак).
Но даже и с lockstep проблема тумана войны в существенной степени разрешима, просто решение куда более сложное: синхронизировать состояние клиентов с задержкой (т.к. то, что под туманом войны — для других клиентов не так важно), синхронизировать состояние клиентов только в момент обнаружения друг друга и только в объеме, необходимом для такого обнаружения (проще говоря, если к тебе на базу пришел зилот, то игра должна синхронизировать весь объем действий другого игрока, который к этому привёл), и разные компромиссы этих вариантов.
И он работает так, что только ты появляешься в вижене опонента, он сразу автоматом сплитит войска.
Крип у зергов тянется сам собой. Даже камера не переключается у читера.
Много проблем у игры.
В общем случае нельзя сказать, не посчитав, влияет ли некое действие в тумане войны на состояние вне тумана войны
Нельзя. Но тут как раз можно и «посчитав» сделать.
Не говоря у ж о том что синхронизировать 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 анализировал в тетрадке текстовые сохранения, а потом изменял некоторые буквы для смены мотоцикла.
Кранчи — это никогда не весело, но иногда, по крайней мере лично я считаю их неизбежным злом
Дэвид, ты все перепутал! Неизбежное зло — это не кранчи, а перенос сроков и увольнение менеджеров! А кранчи — это обыкновенная эксплуатация. Все-таки поганая это отрасль — игростроительство, если уж даже программистов достали настолько, что они формируют профсоюзы.
Не в отрасли дело. В любую отрасль приходят те, кто сначала определяет критерии (=право) эксплуатации одних другими, а потом с успехом воплощают это в жизнь. Сейчас "в моде" критерии экономические — ебитда там или у кого что. Но, их экономическая суть — вся одинакова. Как и одинаково всё дальнейшее: "сдохните, но обеспечьте мне выполнение этих показателей!". Другой вопрос, помогает или мешает эта "ебитда" очередному "ракетостроению" в конкретный момент его сути — именно ракетостроительности? Ответ на этот вопрос часто очевидный и грустный, т.к. эксплуататоры самоцелью имели явно другое (что читается в самих их критериях).
Это же было невероятно просто!
А Diablo 4 на текущей стадии выглядит очень печально. Буквально вчера внимательно посмотрел ролик с близзкона, где стример какой-то играл пару часов. Существует куча качественно сделанных клонов, от всяких корейских Lost Ark, до хорошо зарекомендовавшей себя Path of Exile. Непонятно чем 4-ая часть планирует от них отличаться, пока что только красивый вступительный ролик порадовал людей. Работать им придётся не только долго, но и старательно, привлекая талантливых разработчиков. Вон Diablo 3 изначально разрабатывала довольно слабая команда во главе с Джеем Вилсоном, получился просто кошмарный и сырой продукт (на момент выхода), который уже другие люди доводили до более-менее приличного состояния.
Старых игр было достаточно мало, и нормальные игры сразу становились хитами. Сейчас есть куча игр с более крутой графикой/более интересным геймплеем или же более хардконрными. Поэтому угодить очень сложно. А если это еще и сиквел, то тебя всегда будут сравнивать «раньше трава была зеленее».
Старых игр было достаточно мало, и нормальные игры сразу становились хитами.
Но хиты прошлого зарабатывали гораздо меньше нынешних. Особенно на PC. Сейчас рынок вырос по сравнению с датой выхода D1 просто безумным образом. Да, выросла и конкуренция, но это ожидаемо. Но при реально крутой идее можно сорвать куш даже без вкладывания огромных ресурсов. Вон как создатель Minecraft стал очень богатым, не вкладывая почти никаких денег в разработку. В 90-ые такие прибыли были физически невозможны даже если ты самый талантливый игродел в мире.
Не так сложно придумать новые игровые механики, как понять аудиторию, на которую рассчитывать игру.— и что же тут сложного?
В новом сезоне делают злее монстров, добавляют другие мировые ивенты и т.д.— близзы примерно это и делают, и все скатилось в следующее (относительно предложенного) — каждый сезон монстры злее — (передвигают коэффицент снижения урона и исходящего дамака и хитов), правят предметы что бы 1 из 3-х сетов был более эффективен чем 2 других (опять передвинем ползунки % бонуса), мировые эвенты сделают так: будет 10-к эвентов (как викли из вов) которые будут в каждом сезоне и опять передвинут ползунки что бы одни были реже другие чаще или равноценными оставят. как и задания в сезонном походе диаблы 3 (ага 17 сезонов а задачи идентичны).
близзы уже лет 15-20 занимаются самокопированием. делать игры для них давно уже просто бизнесс, а не творчество.
то есть они просто не заморачиваются, что бы что то сделать. ведь всем и так понятно — что игроки схавают это в любом случае. что diablo immortal отменили несмотря на недовольства?
Почему отложили второй контент-патч D3?
Да и до сих пор в D2 играет на оффе больше людей, чем в тройку, я уже не говорю про приватные сервера.
Не уверен, что именно так выглядит успех и развитие серии.
Насчет почему забросили D3 — это знает только руководство Blizzard, странно забрасывать игру с такими продажами, ведь по ним она лютый вин и могла бы приносить прибыль еще долго. Лично бы побежал покупать второй аддон, выпусти они его, но увы. чего нет, того нет.
Задумался, что раньше в другие игры заходил с мыслью «ребяты, вы недавно из анабиоза? Удивите меня, какие у вас отличия от diablo, кроме текстурок?», а сейчас на diablo смотрю с теми же чувствами.
Было бы грустно закопать и эту серию, как убики закопали Героев. И да, они недавно анонсировали продолжение Героев на мобилках, с сундучками и микротранзакциями.
История создания первой Diablo