Автор Тема: [SMD] Хак Zero Tolerance  (Прочитано 329237 раз)

0 Пользователей и 3 Гостей просматривают эту тему.

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3245
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
Re: [SMD] Хак Zero Tolerance
« Ответ #2100 : 23 Февраль 2025, 12:04:13 »
Так что хоть он и чертовски умный, но балабол, и всё услышанное стоит делить на сто.
Я сконцентрировал внимание на никому не нужном порте Super Cyborg на сегу.
А сурсом сетевухи я могу и поделиться. Я помоему немезису давал часть исходников, чего он там не доразобрался и почему мне не написал? :)

Оффлайн Nemesis_c

  • Пользователь
  • Сообщений: 1344
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
Re: [SMD] Хак Zero Tolerance
« Ответ #2101 : 23 Февраль 2025, 12:12:31 »
С сетевой разобрались, всë что мне нужно было - работает. Требовалось тестировать сетевую игру на эмуле (в плане добавления новых фич и в плане ремонта старых, например ремонт телепортов при игре вдвоем).

Оффлайн perfect_genius

  • Пользователь
  • Сообщений: 1223
    • ВКонтакте
    • Steam
    • Просмотр профиля
[SMD] Хак Zero Tolerance
« Ответ #2102 : 24 Февраль 2025, 22:26:05 »
Nemesis_c, ну так что - сможешь теперь ответить на вопрос, который я задаю тут постоянно? У одного игрока куча врагов на экране и всё тормозит. У второго только один, и этот один будет тормозить или нет?
Или все данные обновляются во время HBlank, поэтому память у обоих игроков всегда одинаковая и тормоза одного не влияют на игру второго?

Оффлайн bgr

  • Пользователь
  • Сообщений: 550
    • ВКонтакте
    • Просмотр профиля
[SMD] Хак Zero Tolerance
« Ответ #2103 : 25 Февраль 2025, 09:07:47 »
perfect_genius, так разве он не отвечал, что - да?  :neznayu:
Вполне логично, что значения передаются в другую консоль и она будет работать не то, что как была, а даже хуже, ведь её нагружают инфой из другой консоли, ведь данные о расположении она должна где-то обрабатывать :ohmy:

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3245
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
[SMD] Хак Zero Tolerance
« Ответ #2104 : 25 Февраль 2025, 10:32:10 »
Nemesis_c, ну так что - сможешь теперь ответить на вопрос, который я задаю тут постоянно? У одного игрока куча врагов на экране и всё тормозит. У второго только один, и этот один будет тормозить или нет?
Или все данные обновляются во время HBlank, поэтому память у обоих игроков всегда одинаковая и тормоза одного не влияют на игру второго?
Геймплей в игре очень простой. Если отключить рендер картинки то по ощущениям игра становится раз в 8 быстрее. Имеем это ввиду.
Далее игра-сервер вместо одного игрового поля работает (клетки вокруг 1 игрока) над двумя (клетки вокруг 1 и 2 игроков).
Далее игра-клиент получает информацию об обновлениях от игры-сервера: спавн врагов, урон и так далее.
Также игра-клиент отправляет информацию о том, что делает игрок на сервер, а сервер в свою очередь обновляет всё у себя и если надо отправляет клиенту свои обновления.
Игра-клиент просто рендерит картинку, дает управлять игроком и отправляет действия на сервер, а сервер уже решает всё остальное.
Из-за простоты геймплея задержки могут быть только из-за протокола, потому что он сильно зависит от смещения битов, а это довольно дорогая операция. Например если заспавнилось 6 врагов за один юнит времени, то их отправка клиенту может сожрать фпс 6-8, зато потом все снова плавненько, хоть и меньше фпс при игре не одного.
Вообщем сетевуха инновационная, работает весьма сносно и всё вполне играбельно.
Протокол можно подшаманить, чтобы работал быстрее, например вместо битшифтов зафигарить две огромные таблицы с готовыми результатами вычислений. Так можно будет сэкономить какоето колличество циклов процессора и выиграть 1-2 фпс, но врятли оно того стоит.
А ну и главное:
  • Если тормозит сервер, то тормозит и клиент, потому что не получает сигналы об обновлении (даже пустые пакеты)
  • Если тормозит клиент, то тормозит и сервер, потому что сервер ждёт от клиента сигналы (даже пустые пакеты)
  • Если кто-то из них просрал один пакет, то виснут оба незная что делать и спустя секунд 30 севрер обрубает подключение, удаляет игрока и не дает подключиться заново, потому что не заложено в код игры. Оба при этом остаются со снапшотом того, что было на момент отключения и игра продолжается уже отдельно друг от друга. Балванчик другого игрока при этом пропадает.

Добавлено позже:
А ну и у обоих игр своя копия уровня в памяти загруженная из рома.
Уровни по кабелю не транслируются, только изменения этих уровней.
Например если запустить хак с измененными уровням и подключить к консоли с оригинальной игрой, у хака будут свои уровни, но спавны будут из оригинала прилетать от сервера.
Еще если подключить консоли разных регионов разницы никакой не будет. У игры все равно мало фпс, тайминги на уровне процессора у обоих регионов одинаковые, так что разница если даже и есть, то она пропадает ввиду малого колличества кадров на экране.
Ну и да, что на PAL, что на NTSC, одинаковое колличество кадров в игре  :)
« Последнее редактирование: 25 Февраль 2025, 10:53:23 от Segaman »

Оффлайн Nemesis_c

  • Пользователь
  • Сообщений: 1344
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
[SMD] Хак Zero Tolerance
« Ответ #2105 : 25 Февраль 2025, 11:11:36 »
И ты забыл упомянуть про баг, когда одновременно спавнится много врагов и на клиенте и на сервере то может заспавниться больше врагов чем предусматривает карта. Это проявляется если оба игрока идут рядом и доходят до массового спауна врагов. Пока мастер шлëт слэйву, что он заспавнил например 10 врагов, слейв еще не успев получить информацию об этом (или в момент получения) успевает тоже заспавнить некоторых из этих-же врагов и шлет мастеру. В итоге вместо 10 врагов могут появиться 12-13....

Оффлайн perfect_genius

  • Пользователь
  • Сообщений: 1223
    • ВКонтакте
    • Steam
    • Просмотр профиля
[SMD] Хак Zero Tolerance
« Ответ #2106 : 25 Февраль 2025, 19:38:20 »
perfect_genius, так разве он не отвечал, что - да?  :neznayu:
Не отвечал, были непонятки:
Пока не совсем понятно как влияет на всё это дело статус приставки - мастер или слэйв.
нужен соображающий человек, который поможет добить сетевую игру

Цитата
Вполне логично, что значения передаются в другую консоль и она будет работать не то, что как была, а даже хуже, ведь её нагружают инфой из другой консоли, ведь данные о расположении она должна где-то обрабатывать :ohmy:
Не логично, там может быть что угодно. Расчёт ИИ тоже может быть дорогим, а тут координаты врагов приходят готовенькие и считать ИИ уже не надо.
P.S.: или ты про сервер? Тогда да, ему нагрузка от клиента. Но это не совсем мой вопрос, я про клиента же.
Цитата
Странный конец коммента - зачем-то под спойлером и злобный смайлик. Если эта часть предназначалась таки мне, то идея с тем, что при сетевой игре игра должна работать быстрее - интересная :thumbup: Надо бы будет подумать как можно распределить нагрузку на две консоли.

Добавлено позже:


Segaman, что происходит при прерывании VBlank? Там ведь что-то отправляется другому? Там код буквально копипаст от основного потока, только инструкции доступа к памяти уже абсолютные, а не относительные.




Добавлено позже:
мастер шлëт слэйву, что он заспавнил например 10 врагов, слейв еще не успев получить информацию об этом (или в момент получения) успевает тоже заспавнить некоторых из этих-же врагов и шлет мастеру
игра-клиент получает информацию об обновлениях от игры-сервера: спавн врагов, урон и так далее.
Игра-клиент просто рендерит картинку, дает управлять игроком и отправляет действия на сервер, а сервер уже решает всё остальное.
Если клиент тоже отправляет данные про появление врагов, то зачем сервер
Цитата
вместо одного игрового поля работает (клетки вокруг 1 игрока) над двумя (клетки вокруг 1 и 2 игроков)
?
« Последнее редактирование: 25 Февраль 2025, 19:55:48 от perfect_genius »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2560
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] Хак Zero Tolerance
« Ответ #2107 : 25 Февраль 2025, 20:14:20 »
а хто его знает зачем там сервер... при запуске двух слейвов такое, что враги клонятся - нормальное явление. вот интересно погонять в три игрока. там наверное будет втройне порой враги спавнится :)

Оффлайн bgr

  • Пользователь
  • Сообщений: 550
    • ВКонтакте
    • Просмотр профиля
[SMD] Хак Zero Tolerance
« Ответ #2108 : 25 Февраль 2025, 23:21:15 »
тут координаты врагов приходят готовенькие и считать ИИ уже не надо.
Так в любом случае чтобы отправить/принять - нужно данные обработать, передать/принять. Немезис даже про баг отписался, а если бы были дополнительные проверки, чтобы этот баг не допустить, то это же насколько осложнило бы жизнь процессорам?
Странный конец коммента - зачем-то под спойлером и злобный смайлик.
Это типа альтер-версия моего коммента, но более злая :lol: Но, по-ходу смайлик не помог и альтернатива оказалась не такой уж и злой :lol:
Надо бы будет подумать как можно распределить нагрузку на две консоли.
Это надо у сегамена исходники украсть, чтобы всю игру переписать :lol: