Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   PvP игра, php&MySQL&AS v3.0 (http://www.flasher.ru/forum/showthread.php?t=143382)

JackLondon 15.08.2010 03:35

PvP игра, php&MySQL&AS v3.0
 
Вобщем есть игра, требующая информирования одним пользователем другого и в обратном порядке.

Решение: сервер с парой пхп файлов get и set функционала, к которым обращаются оба пользователя, они пишут и читают из БД.

Проблема: скорость, даже при передаче просто координат х, у, rotation = это около 10-ти запросов на запись своих данных и 10-ти запросов на считывание данных противника каждым из клиентов. Получается не очень быстрое слайдшоу.

Вопрос: как можно оптимизировать?

Я в флеш разработке новенький, сильно не пиннайте :)

Добавлено через 3 минуты
Да, забыл. В игре нет и 10-й части требуемого функционала, т.е. дальше fps будет только падать.
Тормоза связаны только со скоростью загрузки/выгрузки с серва/на серв, т.е. код выполняется моментально.

Запросы строю с помощью URLLoader, через URLLoaderDataFormat.VARIABLES..

e_gamer 15.08.2010 04:02

AMFPHP в помощь.
Так же советую пересмотреть серверный код - 10 запросов это не много.
Если база планируется большая, может стоит поставить PostgreSQL.

Как программист из game-dev`а, хотел поинтересоваться:
Игра реал-тайм?

JackLondon 15.08.2010 04:20

Спасибо за быстрый ответ, сегодня будем пробовать интегрировать. Если честно, оба эти слова сегодня впервые прочитал :)
Да, естественно реалтайм, поэтому и не хватает 10-ти слайдов в секунду.. Иначе можно было бы хотя бы поочереди ждать полной загрузке произведенных противником действий за ход и только тогда демонстрировать..

e_gamer 15.08.2010 04:26

10 кадров в секунду - это скорость?

JackLondon 15.08.2010 04:50

Именно!
И да, приложение лежит ВКонтакте. Хотя про контакт это оффтоп, так что извиняюсь. Из за чего такая низкая производительность? Php скрипты простейшие, их просто нельзя никак оптимайзить. СПб-й хостинг, скорость на нем хорошая.
Сегодня как проснусь попробую использовать вместо БД то место, отведенное самим контактом, собственно стал писть это все в БД потому что не разобрался в вконтакте API. Аааа, опять оффтоплю :) Вобщем разберусь с AMFPHP и PostgreSQL и отпишусь как прошло..
Если у кого еще есть какие советы как качественно и быстро организовать PvP - буду благодарен :)

ShockWave512 15.08.2010 12:17

очень странно что при довольно высокой плотности запросов (10/сек) рассматривается вариант с php/get-set !!!

только сокет, причем однозначно пересматривать архитектуру, для снижения кол-ва запросов (допустим передавать не координаты, а вектор движения раз в секунду, не текущий угол поворота, а конечный/целевой, и т.д., ну и там - всякие разбития игрового поля на ячейки)

но это надо смотреть на месте, так это абстрактные мысли

e_gamer 15.08.2010 18:32

Но 10 запросов в секунду в базу - я бы не сказал, что это много.
Игровой сервер не должен виснуть от такого.
Другое дело - как они построены и действительно ли нужны некоторые из них?

Ходы во время игры можно обсчитывать с помощью PHP, даже для реал-тайм игры.
Как показывает практика, я даже по своему опыту знаю, оптимизация запросов и скриптов помогает решить такую ситуацию.

ShockWave512 15.08.2010 19:48

10 на одного пользователя, зайдет сотня и понадобится выделенный сервер, зайдет 1000 нужен будет довольно крутой сервер и т.д.

только отдельный процесс, который в реалтайме обсчитывает каждую сессию, желательно без запросов к базе, то есть каждая сессия/пвп игра это отдельный компактный объект в памяти

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

Котяра 15.08.2010 22:47

10 запросов в секунду - однозначно сокет и посылать надо только дельты и апдейты.

Psycho Tiger 15.08.2010 23:15

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


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

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