Nemesis_c, ну так что - сможешь теперь ответить на вопрос, который я задаю тут постоянно? У одного игрока куча врагов на экране и всё тормозит. У второго только один, и этот один будет тормозить или нет?
Или все данные обновляются во время HBlank, поэтому память у обоих игроков всегда одинаковая и тормоза одного не влияют на игру второго?
Геймплей в игре очень простой. Если отключить рендер картинки то по ощущениям игра становится раз в 8 быстрее. Имеем это ввиду.
Далее игра-сервер вместо одного игрового поля работает (клетки вокруг 1 игрока) над двумя (клетки вокруг 1 и 2 игроков).
Далее игра-клиент получает информацию об обновлениях от игры-сервера: спавн врагов, урон и так далее.
Также игра-клиент отправляет информацию о том, что делает игрок на сервер, а сервер в свою очередь обновляет всё у себя и если надо отправляет клиенту свои обновления.
Игра-клиент просто рендерит картинку, дает управлять игроком и отправляет действия на сервер, а сервер уже решает всё остальное.
Из-за простоты геймплея задержки могут быть только из-за протокола, потому что он сильно зависит от смещения битов, а это довольно дорогая операция. Например если заспавнилось 6 врагов за один юнит времени, то их отправка клиенту может сожрать фпс 6-8, зато потом все снова плавненько, хоть и меньше фпс при игре не одного.
Вообщем сетевуха инновационная, работает весьма сносно и всё вполне играбельно.
Протокол можно подшаманить, чтобы работал быстрее, например вместо битшифтов зафигарить две огромные таблицы с готовыми результатами вычислений. Так можно будет сэкономить какоето колличество циклов процессора и выиграть 1-2 фпс, но врятли оно того стоит.
А ну и главное:
- Если тормозит сервер, то тормозит и клиент, потому что не получает сигналы об обновлении (даже пустые пакеты)
- Если тормозит клиент, то тормозит и сервер, потому что сервер ждёт от клиента сигналы (даже пустые пакеты)
- Если кто-то из них просрал один пакет, то виснут оба незная что делать и спустя секунд 30 севрер обрубает подключение, удаляет игрока и не дает подключиться заново, потому что не заложено в код игры. Оба при этом остаются со снапшотом того, что было на момент отключения и игра продолжается уже отдельно друг от друга. Балванчик другого игрока при этом пропадает.
Добавлено позже:А ну и у обоих игр своя копия уровня в памяти загруженная из рома.
Уровни по кабелю не транслируются, только изменения этих уровней.
Например если запустить хак с измененными уровням и подключить к консоли с оригинальной игрой, у хака будут свои уровни, но спавны будут из оригинала прилетать от сервера.
Еще если подключить консоли разных регионов разницы никакой не будет. У игры все равно мало фпс, тайминги на уровне процессора у обоих регионов одинаковые, так что разница если даже и есть, то она пропадает ввиду малого колличества кадров на экране.
Ну и да, что на PAL, что на NTSC, одинаковое колличество кадров в игре
