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

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

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

Регистрация: Oct 2012
Сообщений: 20
По умолчанию Лаги в онлайн игре

Здравствуйте, Создаю онлайн игру, думаю танчики. Сервер перл, клиент as3.
Пока использую XMLSocket, начинал делать чат на них, теперь дополняю полем с игрой, как я понял нужно использовать Socket, но возникли проблемы с прорисовкой и мне интересно почему?
Вобщем отправляю данные своих координат таймером, ежесекундно

Код AS3:
trace("------------------"); 
	 time = new Date();
	 trace(time.getTime());
	 var myXMLtoServer:XMLDocument = new XMLDocument("<TANK x=\""+ms.x+"\" />");
	 trace(time.seconds+"::"+time.milliseconds);
	 sock.send(myXMLtoServer);
	 trace(time.seconds+"::"+time.milliseconds);
Это код функции выполняемой. Задержка прорисовки происходит ежесекундно, и усиливается со временем.

Да я ещё 1 вопрос. Почитал в похожих темах немного про интерполяцию и предсказание нашол в инете http://www.ant-karlov.ru/PlayerIO-si...a-igrokov.html
Конешно там интересно и подробно всё описывается, но хотелось бы узнать мнение знающих людей. В примере
пробовал с 2х машин заходить, вобщем координаты отличаются.

Старый 03.03.2013, 19:53
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 2  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
По-моему, вам нужно еще раз десять прочитать статьи Антона Карлова, там именно про это рассказывается и в такой форме, что вряд ли вам кто-либо еще расскажет лучше.
__________________
hauts.ru

Старый 26.03.2013, 20:05
belyjj вне форума Посмотреть профиль Отправить личное сообщение для belyjj Найти все сообщения от belyjj
  № 3  
Ответить с цитированием
belyjj

Регистрация: Oct 2012
Сообщений: 20
Хорошо спасибо)
Но вот у меня возникло ещё несколько вопросов по серверу.
1. Каждому клиенту отдельные процесс?
2. И в as3 Socket или XMLSocket?
3. Как работает sock.addEventListener(ProgressEvent.SOCKET_DATA,onGetXML);
Код AS3:
function onGetXML(doc) 
 {
	messages.text +=  "\nДанные пришли"+sock.readUTF(); 
 }
Обьект использую Socket. При нажатии стрелки данные уходят на сервер, там видно что они пришли.
Сервер отправляет обратно строку. Только както это не так работает, данные приходят реже вобщем
и вылазиет Error #2030: Обнаружен конец файла.
at flash.net::Socket/readUTF()
at game_fla::MainTimeline/onGetXML()

Код:
my $rv = $client->send("".$out_buf{$client}, 0);
readUTFBytes(10); работает норм данные приходят, только непонятня считываются данные с сокета, едесекундно отправляю одну и туже строку а она посимвольно накапливается, причём с конца. Примерно так 4,34,234,1234
Может ктото знает?

Добавлено через 39 часов 56 минут
Попробовал ещё считывать функцией readByte() получается так, что на момент возникновения события ProgressEvent.SOCKET_DATA до клиента доходят не все данные, а когда событие возникает в следующий раз с сокета считываются данные, которые могут содержать символ конца не в конце, а в середине, думаю поэтому возникает такая ошибка при использование функции readBytes().
Но вот вопрос остаются, как же мне тогда считать данные правильно? и быстро?


Последний раз редактировалось belyjj; 26.03.2013 в 23:23.
Старый 05.04.2013, 19:13
belyjj вне форума Посмотреть профиль Отправить личное сообщение для belyjj Найти все сообщения от belyjj
  № 4  
Ответить с цитированием
belyjj

Регистрация: Oct 2012
Сообщений: 20
Вроде разобрался, надо chr(0) добавлять. Только в случае если посылать последовательно 2 команды
Код:
print 1команда+chr(0);
print 2команда+chr(0);
До флеша доходит и попадает в обработчик только первая команда.
Может кто знает как быть? Или самому какойнить разделяющий команды символ вставлять?

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
chr(0) это нулевой байт. Конец строки, если говорить по-другому.
Если писать его в исходящий поток, то все остальное записанное в этот же поток, до вызова flush() (или какой там у вас метод используется) флешу будет не важно.
Примерно на таком же принципе построена уязвимость null byte injection, которая есть во многих языках.
Так что да, лучше придумать разделитель, если нужно слать команды подряд.

Старый 06.04.2013, 19:01
belyjj вне форума Посмотреть профиль Отправить личное сообщение для belyjj Найти все сообщения от belyjj
  № 6  
Ответить с цитированием
belyjj

Регистрация: Oct 2012
Сообщений: 20
Ясно, спасибо за совет)
А вот ещё один вопрос, про файл политик. Вобщем, сперва делал чат на as2, всё норм работало и в локалке и через инет и 127.0.0.1.
Переделал на as3 в локальной сети работает, 127.0.0.1 работает, а вот с инета не могу подключится..
Секьюрити еррор.

Старый 07.04.2013, 08:02
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 7  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
это вопрос для отдельной темы

Старый 07.04.2013, 22:52
belyjj вне форума Посмотреть профиль Отправить личное сообщение для belyjj Найти все сообщения от belyjj
  № 8  
Ответить с цитированием
belyjj

Регистрация: Oct 2012
Сообщений: 20
Ок, но тему новую создавать не буду) Толи антивирус, толи ещё что то не касающееся флеша блокируют запрос думаю.

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

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

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


 


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


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