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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.05.2010, 12:39
YFred вне форума Посмотреть профиль Отправить личное сообщение для YFred Найти все сообщения от YFred
  № 81  
Ответить с цитированием
YFred

Регистрация: Apr 2008
Сообщений: 26
Отправить сообщение для YFred с помощью ICQ
Цитата:
А вообще, пишите как хотите, вас же не заставляют писать правильно.
Насколько я понял никто и не знает как правильно.
"В споре рождается истина!!!"

Старый 07.05.2010, 12:43
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 82  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от YFred Посмотреть сообщение
Насколько я понял никто и не знает как правильно.
"В споре рождается истина!!!"
Правильно будет в зависимости от особенностей.

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
Считайте исходящий с клиента, а не с сервера
Где-то такой же. Может, чуть меньше.
Цитата:
вас же не заставляют писать правильно
Простите мне мой юношеский максимализм. Но я правда стараюсь сделать так, чтобы нагрузка на сервер была минимальной. Более никаких (в том числе похоливарить) целей не преследую.
__________________
...вселенская грусть

Старый 07.05.2010, 13:26
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 84  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
gloomyBrain, минимальная нагрузка в оффлайн играх =)

Добавлено через 18 минут
gloomyBrain, и ещё Вы в своих расчётах трафика забыли про TCP-заголовки.

Старый 17.05.2010, 11:49
YFred вне форума Посмотреть профиль Отправить личное сообщение для YFred Найти все сообщения от YFred
  № 85  
Ответить с цитированием
YFred

Регистрация: Apr 2008
Сообщений: 26
Отправить сообщение для YFred с помощью ICQ
Продолжаем разговор
Написал сервер на Delphi(пока на том, что знаю...так что не надо говорить, что это не есть хорошо). Сделал как мне показалась по самому простому варианту:
1.Данные (нажатие клавиш управления) от всех клиентов поступают на сервер
2.Сервер расчитывает новое местоположение игроков и состояние анимации
3.По таймеру отправляет данные всем клиентам.
3.Клиент получает новые координаты и состояние игроков и перемещает их в нужное местоположение.

В результате получаем тормоза даже по локальной сети...что в принципе я и ожидал.

Вопрос: как сгладить скачки анимации?

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
Сервер расчитывает новое местоположение игроков и состояние анимации
Зачем? Если клиенты ходят плавно, достаточно отправить направление, скорость и дату начала движения. Для анимации - просто дату начала.
Цитата:
По таймеру отправляет данные всем клиентам.
Как-то странно. Проще так - получил от одного => посчитал => отправил всем
То есть обновление происходит как только данные получены, а не по таймеру
__________________
...вселенская грусть

Старый 17.05.2010, 13:29
YFred вне форума Посмотреть профиль Отправить личное сообщение для YFred Найти все сообщения от YFred
  № 87  
Ответить с цитированием
YFred

Регистрация: Apr 2008
Сообщений: 26
Отправить сообщение для YFred с помощью ICQ
Цитата:
Зачем? Если клиенты ходят плавно
что ты под этим понимаешь - ходят плавно?
У меня персонаж движется так:
нажал вправо он идет в право(+10пикс за кадр), отпустил кнопку сразу останавливается. И с датами не особо понятно как привязать дату сервера и дату на клиентах.
Мне надо чтобы при столкновении играков один из них погибал. Соответственно все клиенты должны видеть реальную картину, иначе получится так что игрок не толкнул другого, а он помер.
Как я понимаю картинка на клиентах всегда должна отставать от времени сервера на какое то время (например пинг*2 самого медленного соединения)

Старый 17.05.2010, 13:40
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 88  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
что ты под этим понимаешь - ходят плавно?
я понимаю под этим, что перемещение из А в Б происходит за какое-то время, а не моментально
Цитата:
Как я понимаю картинка на клиентах всегда должна отставать от времени сервера
Вовсе нет. Она может отставать, но это отставание должно длиться недолго - клиент должен восстановить картину мира, чтобы она совпадала с картиной на сервере. Для этого нужно использовать даты.
Цитата:
как привязать дату сервера и дату на клиентах
Узнать пинг клиента (сколько времени сигнал идет в одну сторону). Например отправлять некое сообщение клиенту и, если это "pingMessage" - тут же отвечать на сервер. Время между отправкой с сервера и получением на сервере "pingMessage" - это лаг. Поделив лаг на 2 получаем пинг (примерно).
Когда знаем пинг - отправляем на клиент сообщение "сейчас *системное время сервера + пинг клиента* времени". Когда сообщение дойдет до клиента, на сервере будет именно столько времени.
Таким образом, на сервере и клиенте одинаковое время. Далее можем пользоваться датами начала и конца каких-либо событий
__________________
...вселенская грусть

Старый 17.05.2010, 16:54
YFred вне форума Посмотреть профиль Отправить личное сообщение для YFred Найти все сообщения от YFred
  № 89  
Ответить с цитированием
YFred

Регистрация: Apr 2008
Сообщений: 26
Отправить сообщение для YFred с помощью ICQ
Сервер должен просчитывать перемещение за каждый кадр?
Если нет... тогда как на сервере узнать было столкновение с картой или нет в определенный момент времени.
Например: игрок стоит на платформе и падает с нее и в падении не нажимает ни каких кнопок т.е. на сервер ничего не передается:
Цитата:
Проще так - получил от одного => посчитал
соответственно сервер не расчитывает и игрок проваливается через пол карты
или как?
Я хочу на клиенте свести к минимуму расчет. Т.е. как я это себе представляю. Я каждый кадр на сервере расчитываю положение игроков и передаю клиентам ,допустим каждые 100мс, новое местоположение.
А на клиенте использую экстрополяцию для плавности анимации
http://www.gamedev.ru/code/articles/?id=4257

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
тогда как на сервере узнать было столкновение с картой или нет в определенный момент времени
Персонаж двигается с какой-то скоростью. Зная скорость и начальное положение, можно узнать, когда персонаж пересечется с чем-либо, если не предпримет никаких действий. Если персонаж предпринимает действия до предрасчетного момента пересечения - значит вычисляем новый момент пересечения. Если не предпринимает никаких действий - сообщаем о пересечении.

Я бы все равно отсылал данные реже, чем раз в 100 мс без необходимости.
__________________
...вселенская грусть

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

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

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


 


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


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