Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Общие вопросы о Flash (не затрагивающие ActionScript)

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.12.2009, 17:08
progman вне форума Посмотреть профиль Отправить личное сообщение для progman Найти все сообщения от progman
  № 1  
Ответить с цитированием
progman
 
Аватар для progman

Регистрация: May 2007
Адрес: Saint-Petersburg
Сообщений: 136
Отправить сообщение для progman с помощью ICQ
По умолчанию синхронизация клиентских прог в флешовой пошаговой стратежке.

камрады. встала такая трабла:
имеется пвп турнир в котором принимают участие до 16х бойцов.
каждый боец это человек на флешовом клиенте запущенном в браузере.
все общение через собственный сокет сервер.
флешер сказал что у него все завязано на фпс и он не гарантирует синхронное протекание процессов в игровых клиентах.
тоесть у кого то перемещение юнита на 8 клеток займет 8 секунд, у кого то 4 а кого то 0,8.
менять что либо пока отказывается ибо хочет весомые аргументы услышать. А по поводу рассинхронности грит что в пошаговой игре это не трабла а фича.

какой на ваш взгляд в такой ситуации лучше всего механизм синхронизации действий применить?

поясню:
сейчас у меня на сервере отводится 30 секунд каждому игроку чтобы он начал ходить или переход хода.
если игрок начал ходить то на ход дается 30 секунд вне зависимости от длины хода. тоесть вне зависимости от того на сколько клеток пошел игрок. на 1 или на 21.

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

конечно можно предположить что на перемещение на 1 клетку при среднем фпс 30 будет тратиться к примеру 0,75 секунды и исходить из этого, но это не поможет если у клиента будет 120фпс и хождение будет идти в 4 раза быстрее рассчетного .

ЗЫ повторюсь хотелось бы красивое решение без привязки от фпс. к таймерам и времени флешер не хочет привязываться ибо грит что это все от сатанистов. :-(

или таки нужно как то железобетонно аргнументировать чтобы он ушел от привязки к фпс.
__________________
fast restart: *((int*)0) = 0;

Старый 27.12.2009, 17:37
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 2  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
уволь нахрен своего флешера
__________________
мой пустой блог

Старый 27.12.2009, 17:58
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 3  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
Привязываться к FPS можно только при неизменной конфигурации и производительности аппаратуры, как на игровых консолях. На компьютерах это неправильный подход.

Старый 27.12.2009, 19:12
zurkis вне форума Посмотреть профиль Отправить личное сообщение для zurkis Найти все сообщения от zurkis
  № 4  
Ответить с цитированием
zurkis
 
Аватар для zurkis

Регистрация: Nov 2008
Адрес: Атланта
Сообщений: 1,271
а зачем делать завязку на сокеты? когда можно спокойно использовать под Red5 сервер, ведь игра будет работать быстрей
__________________
Пока я жив, Вы горем обеспечены

Старый 27.12.2009, 19:17
CrazyFlasher вне форума Посмотреть профиль Отправить личное сообщение для CrazyFlasher Найти все сообщения от CrazyFlasher
  № 5  
Ответить с цитированием
CrazyFlasher
 
Аватар для CrazyFlasher

Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,181
2 zurkis : а что тогда по-твоему red5 ?
__________________
Flash Developer
Папа TDP4 Team Battle

Старый 27.12.2009, 20:30
progman вне форума Посмотреть профиль Отправить личное сообщение для progman Найти все сообщения от progman
  № 6  
Ответить с цитированием
progman
 
Аватар для progman

Регистрация: May 2007
Адрес: Saint-Petersburg
Сообщений: 136
Отправить сообщение для progman с помощью ICQ
Цитата:
Сообщение от zurkis Посмотреть сообщение
а зачем делать завязку на сокеты? когда можно спокойно использовать под Red5 сервер, ведь игра будет работать быстрей
потому что сервер на С++ будет быстрее сервра на Java работать (холиварить на данную тему не тут!!)
это раз. во вторых Java тоже на сокетах работает.

Добавлено через 14 минут
Цитата:
Сообщение от iflamberg Посмотреть сообщение
уволь нахрен своего флешера
нельзя. он отличный С++ программист, неплохой АС3 и до кучи просто хороший человек и мой друг.
мне надо объяснить ему почему к фпс нельзя. а своих знаний флеша у меня крайне мало. потому и стукнулся сюда.
__________________
fast restart: *((int*)0) = 0;


Последний раз редактировалось progman; 27.12.2009 в 20:46.
Старый 27.12.2009, 20:48
CrazyFlasher вне форума Посмотреть профиль Отправить личное сообщение для CrazyFlasher Найти все сообщения от CrazyFlasher
  № 7  
Ответить с цитированием
CrazyFlasher
 
Аватар для CrazyFlasher

Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,181
визуальное обновление (рендеринг) должен зависеть от скорости компьютера в multiplayer играх...т.е. грубо говоря если игра тормозит у одного из клиентов, то скажем, вместо 5 пикселей за единицу времени, персонаж должен проходить 10...по такому принципу работают TweenLite, TweenMax и т.д. Так же нормальные физические движки... пример можешь посмотреть в моей игрушке в подписи.

Если игра написана с нормальной ООП моделью, то такие вещи меняются быстро. Ну а если криво, то вы попали
__________________
Flash Developer
Папа TDP4 Team Battle

Старый 27.12.2009, 21:05
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 8  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
Ну, если так подумать - твой флешер-то прав по большому чету. На сервере у тебя должно стоять ограничение на скорость хода(как перемещение за период не более, чем скорость за период), так ведь? Взломан или не взломан клиент у юзера - тебя не должно волновать, это его проблемы. А флешеру с другой стороны - не заморачиваться с пересадкой логики с фпс на таймер.
Но вообще, конечно, на таймере обновление должно висеть и перемещение(dx,dy) должно зависеть не от фпс (+1 за кадр), а от таймера (+cкорость*(текущее время-предудущее время)).
Но в данном случае - пошаговая игра и на это можно забить. Главное на сервере предусмотреть проверку!
Потому, что даже если клиент привязан к таймеру - я ломаю клиента, и заставляю его отправлять запросы в десять раз чаще, и вуаля!, я бегаю в десять раз быстрее. Когда-то такой эксплоит даже в WoW работал, можно было, даже не ломая клиент, написать скрипт, повесить его на снифер tcp-ip пакетов(простая замена - заменяем один пакет на десять таких же) и бегать аки конь по карте.
__________________
мой пустой блог

Старый 27.12.2009, 22:58
progman вне форума Посмотреть профиль Отправить личное сообщение для progman Найти все сообщения от progman
  № 9  
Ответить с цитированием
progman
 
Аватар для progman

Регистрация: May 2007
Адрес: Saint-Petersburg
Сообщений: 136
Отправить сообщение для progman с помощью ICQ
Цитата:
Сообщение от iflamberg Посмотреть сообщение
Ну, если так подумать - твой флешер-то прав по большому чету. На сервере у тебя должно стоять ограничение на скорость хода(как перемещение за период не более, чем скорость за период), так ведь?
не так. щас сервер шлет всем участникам пвп команду - переместить юнита из точки А в точку Б и ждет от клиентов сигнал что юнит перемещен. как только получит от всех такой сигнал - ход считается законченым и сервер готов выполнить следующую команду клиента.
если клиент не ответит за отведенный временной интервал то его серер дропает.
__________________
fast restart: *((int*)0) = 0;

Старый 28.12.2009, 07:56
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 10  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
ну проверка есть на сервере, чтобы клиент не переместился на расстояние, превышающее возможное расстояние за это время есть?

или это игра типа черяков, где перемещаешься сколько угодно, лишь бы за отведенное время? всё равно нужно придумывать именно на сервере защиту от "ускорения". Может быть что-то типа не более n-пакетов в секунду, или что-то то в роде. А на фпс клиента я бы забил, если чесно.
__________________
мой пустой блог

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:35.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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