![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Oct 2012
Сообщений: 20
|
Здравствуйте, Создаю онлайн игру, думаю танчики. Сервер перл, клиент as3.
Пока использую XMLSocket, начинал делать чат на них, теперь дополняю полем с игрой, как я понял нужно использовать Socket, но возникли проблемы с прорисовкой и мне интересно почему? Вобщем отправляю данные своих координат таймером, ежесекундно 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х машин заходить, вобщем координаты отличаются. |
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
По-моему, вам нужно еще раз десять прочитать статьи Антона Карлова, там именно про это рассказывается и в такой форме, что вряд ли вам кто-либо еще расскажет лучше.
__________________
hauts.ru |
|
|||||
|
Регистрация: Oct 2012
Сообщений: 20
|
Хорошо спасибо)
Но вот у меня возникло ещё несколько вопросов по серверу. 1. Каждому клиенту отдельные процесс? 2. И в as3 Socket или XMLSocket? 3. Как работает sock.addEventListener(ProgressEvent.SOCKET_DATA,onGetXML); Обьект использую Socket. При нажатии стрелки данные уходят на сервер, там видно что они пришли. Сервер отправляет обратно строку. Только както это не так работает, данные приходят реже вобщем и вылазиет Error #2030: Обнаружен конец файла. at flash.net::Socket/readUTF() at game_fla::MainTimeline/onGetXML() readUTFBytes(10); работает норм данные приходят, только непонятня считываются данные с сокета, едесекундно отправляю одну и туже строку а она посимвольно накапливается, причём с конца. Примерно так 4,34,234,1234 Может ктото знает? Добавлено через 39 часов 56 минут Попробовал ещё считывать функцией readByte() получается так, что на момент возникновения события ProgressEvent.SOCKET_DATA до клиента доходят не все данные, а когда событие возникает в следующий раз с сокета считываются данные, которые могут содержать символ конца не в конце, а в середине, думаю поэтому возникает такая ошибка при использование функции readBytes(). Но вот вопрос остаются, как же мне тогда считать данные правильно? и быстро? Последний раз редактировалось belyjj; 26.03.2013 в 23:23. |
|
|||||
|
Регистрация: Oct 2012
Сообщений: 20
|
Вроде разобрался, надо chr(0) добавлять. Только в случае если посылать последовательно 2 команды
До флеша доходит и попадает в обработчик только первая команда. Может кто знает как быть? Или самому какойнить разделяющий команды символ вставлять? |
|
|||||
|
chr(0) это нулевой байт. Конец строки, если говорить по-другому.
Если писать его в исходящий поток, то все остальное записанное в этот же поток, до вызова flush() (или какой там у вас метод используется) флешу будет не важно. Примерно на таком же принципе построена уязвимость null byte injection, которая есть во многих языках. Так что да, лучше придумать разделитель, если нужно слать команды подряд. |
|
|||||
|
Регистрация: Oct 2012
Сообщений: 20
|
Ясно, спасибо за совет)
А вот ещё один вопрос, про файл политик. Вобщем, сперва делал чат на as2, всё норм работало и в локалке и через инет и 127.0.0.1. Переделал на as3 в локальной сети работает, 127.0.0.1 работает, а вот с инета не могу подключится.. Секьюрити еррор. |
|
|||||
|
Регистрация: Oct 2012
Сообщений: 20
|
Ок, но тему новую создавать не буду) Толи антивирус, толи ещё что то не касающееся флеша блокируют запрос думаю.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 10:57. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|