![]() |
PvP игра, php&MySQL&AS v3.0
Вобщем есть игра, требующая информирования одним пользователем другого и в обратном порядке.
Решение: сервер с парой пхп файлов get и set функционала, к которым обращаются оба пользователя, они пишут и читают из БД. Проблема: скорость, даже при передаче просто координат х, у, rotation = это около 10-ти запросов на запись своих данных и 10-ти запросов на считывание данных противника каждым из клиентов. Получается не очень быстрое слайдшоу. Вопрос: как можно оптимизировать? Я в флеш разработке новенький, сильно не пиннайте :) Добавлено через 3 минуты Да, забыл. В игре нет и 10-й части требуемого функционала, т.е. дальше fps будет только падать. Тормоза связаны только со скоростью загрузки/выгрузки с серва/на серв, т.е. код выполняется моментально. Запросы строю с помощью URLLoader, через URLLoaderDataFormat.VARIABLES.. |
AMFPHP в помощь.
Так же советую пересмотреть серверный код - 10 запросов это не много. Если база планируется большая, может стоит поставить PostgreSQL. Как программист из game-dev`а, хотел поинтересоваться: Игра реал-тайм? |
Спасибо за быстрый ответ, сегодня будем пробовать интегрировать. Если честно, оба эти слова сегодня впервые прочитал :)
Да, естественно реалтайм, поэтому и не хватает 10-ти слайдов в секунду.. Иначе можно было бы хотя бы поочереди ждать полной загрузке произведенных противником действий за ход и только тогда демонстрировать.. |
10 кадров в секунду - это скорость?
|
Именно!
И да, приложение лежит ВКонтакте. Хотя про контакт это оффтоп, так что извиняюсь. Из за чего такая низкая производительность? Php скрипты простейшие, их просто нельзя никак оптимайзить. СПб-й хостинг, скорость на нем хорошая. Сегодня как проснусь попробую использовать вместо БД то место, отведенное самим контактом, собственно стал писть это все в БД потому что не разобрался в вконтакте API. Аааа, опять оффтоплю :) Вобщем разберусь с AMFPHP и PostgreSQL и отпишусь как прошло.. Если у кого еще есть какие советы как качественно и быстро организовать PvP - буду благодарен :) |
очень странно что при довольно высокой плотности запросов (10/сек) рассматривается вариант с php/get-set !!!
только сокет, причем однозначно пересматривать архитектуру, для снижения кол-ва запросов (допустим передавать не координаты, а вектор движения раз в секунду, не текущий угол поворота, а конечный/целевой, и т.д., ну и там - всякие разбития игрового поля на ячейки) но это надо смотреть на месте, так это абстрактные мысли |
Но 10 запросов в секунду в базу - я бы не сказал, что это много.
Игровой сервер не должен виснуть от такого. Другое дело - как они построены и действительно ли нужны некоторые из них? Ходы во время игры можно обсчитывать с помощью PHP, даже для реал-тайм игры. Как показывает практика, я даже по своему опыту знаю, оптимизация запросов и скриптов помогает решить такую ситуацию. |
10 на одного пользователя, зайдет сотня и понадобится выделенный сервер, зайдет 1000 нужен будет довольно крутой сервер и т.д.
только отдельный процесс, который в реалтайме обсчитывает каждую сессию, желательно без запросов к базе, то есть каждая сессия/пвп игра это отдельный компактный объект в памяти дальше: - хттп запросы/ответы не гарантируют правильную последовательность доставки - топик кастер сказал что нет и 10-й части функционала, ждем еще запросов - обменн данными в сокете быстрее хттп запросов, не скажу на сколько, но разница очень существенная |
10 запросов в секунду - однозначно сокет и посылать надо только дельты и апдейты.
|
Крутые сервера не обращаются к базе так часто: они оперируют в памяти, а сохраняют результаты игры по запросу (а ля игрок вышел) и например каждую минуту.
|
| Часовой пояс GMT +4, время: 08:38. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.