Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Реалтайм игра, cirrus и передача данных (http://www.flasher.ru/forum/showthread.php?t=177642)

sstotenkopf 04.04.2012 22:50

Реалтайм игра, cirrus и передача данных
 
Добрый вечер, появилась мысль сделать для общего развития простую многопользовательскую игрушку, пользователи должны будут отбивать мячик. Для этого решил использовать cirrus и соответственно p2p соединение. Тут у меня появился вопрос, каким образом передавать координаты мяча, т.е. Допустим пользователь отбил мяч и инициировал передачу его координат, соперник отбил мяч, 1ый пользователь прекратил передавать данные мяча и это начал делать соперник. Либо передавать данные о координатах одновременно, чтобы добиться корректировки (не могу просчитать, что получиться но я думаю очч криво) или последний вариант - выбрать главного игрока который будет передавать координаты мяча и передавать от 2го только координаты устр-ва которым он будет его отбивать (тогда возможны погрешности у 2го игрока, так как все расчеты траектории будут происходить у первого). Посоветуйте пожалуйста оптимальный вариант...

strangedk 05.04.2012 00:37

Странно вы мыслите. Зачем передавать координаты мяча, если достаточно передавать положение биты.

А мяч пусть преспокойно тем же box2D просчитывается в каждой флешке.

sstotenkopf 05.04.2012 01:18

Цитата:

Сообщение от strangedk (Сообщение 1073166)
Странно вы мыслите. Зачем передавать координаты мяча, если достаточно передавать положение биты.

А мяч пусть преспокойно тем же box2D просчитывается в каждой флешке.

Интересно, что будет если сравнить координаты мяча, после потери пары пакетов и хотя бы минуты такой игры)

ramshteks 05.04.2012 09:57

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

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

Проблема в том, что из-за отсутствия централизованного сервера лаги будут в любом случае. Минимальных лагов я добился только в одном случае: это один из клиентов является "ведущим", второй только передает координаты своей ракетки. К слову сказать, лаги все равно присутствуют, как их скомпенсировать я знаю. От самого простого и идиотского(увеличить размер ракетки-физический а не визуальный) до учета примерного пинга до второго игрока с целью скомпенсировать этот косяк.

С целью пощупать эту технологию: Вперед.
С целью сделать приложение, не советую. Только как вспомогательная технология и то, чтобы ее функциональность была не критичной.

Aquahawk 05.04.2012 12:10

Цитата:

А мяч пусть преспокойно тем же box2D просчитывается в каждой флешке.
Нельзя! Box2d недетерминирован!
Горячо советую автору прочитать Синхронные движки RTS и история рассинхронизаций и Как стреляет шутер

Добавлено через 12 минут
Причём комментарии к тем статьям ценны не менее самих статей.

-De- 05.04.2012 12:26

Недетерминированность обычно лезет из неодинаковости вычислений с числами с плавающей запятой (т.е. на разных компьютерах получаются разные результаты). Но на флэш оно всё одинаково (Floating Point Determinism есть просто на халяву). Потому конкретно от Box2d ничего такого не будет. Только всё равно там много чего из-за задержек вылезет.

Aquahawk 05.04.2012 12:36

-De- Никогда не слышал о том что во флеше по умолчанию включена строгая работа FPU. Ну если включено то отлично. Хотя надо будет проверить. И кстати. Box2d может быть детерменированным если шаг обсчета фиксирован, а если выравнивать скорость симуляции при просадках fps то точно разойдётся, причём существенно.

-De- 05.04.2012 13:57

Флэш слишком прост, чтоб там оно было включено/не включено %) Просто есть, как и в яве.
Естесственно, что число шагов должно строго совпадать (как и вообще всё, что относится к общей модели).

Aquahawk 05.04.2012 14:02

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

sstotenkopf 05.04.2012 16:04

Цитата:

Сообщение от ramshteks (Сообщение 1073184)
суть в том, что я писал пинг понг на п2п флешевом, который даже есть в продакшене во вконтакте. Могу сказать, что использовать п2п для игр наверное гиблое дело.
п2п работает не так хорошо на больших расстояних и при учете, что скорость интернета все таки у всех не так велика как может казаться, лаги при доставке пакетов достаточно большие.

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

Проблема в том, что из-за отсутствия централизованного сервера лаги будут в любом случае. Минимальных лагов я добился только в одном случае: это один из клиентов является "ведущим", второй только передает координаты своей ракетки. К слову сказать, лаги все равно присутствуют, как их скомпенсировать я знаю. От самого простого и идиотского(увеличить размер ракетки-физический а не визуальный) до учета примерного пинга до второго игрока с целью скомпенсировать этот косяк.

С целью пощупать эту технологию: Вперед.
С целью сделать приложение, не советую. Только как вспомогательная технология и то, чтобы ее функциональность была не критичной.

Хм. Я думал использование direct connection без нет групп спасет) Ну да ладно, я думаю победим... Спасибо за советы, буду реализовывать идею с главным игроком, хотя конечно еще немного поэкспериментирую)


Часовой пояс GMT +4, время: 08:17.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.