PDA

Просмотр полной версии : MySQL запросы в online играх


altoff
03.09.2008, 18:27
Вообщем проблема такова, начал писать движок для on-line игры RPG типа Ragnarok. Сделал самые основы: генерация локации, расстановка преград, персонаж бегает и т.д.
Решил пока на этом остановиться т.к. один вопрос вышел у меня на первый план:
Получается, что flash клиент должен постоянно передавать данные и очень часто т.к. персонажи постоянно бегают, и надо отслеживать их движения, причем всех сразу...

в коде AS это происходит таким образом
onEnterFrame = function() {
.... КОД ....
loadVariables("update.php?id="+user_id+"&x="+x+"&y="+y , "_root", "POST");
}
Все это дело заноситься в базу а в обратку идет запрос из базы, "типа что еще твориться на локации" (P.S. Все это делалось на Denwer)
Запустил Flash вроде как все заработало, залогинился, побегал по карте, проверил БД координаты обновляются, НО не прошло и минуты как flash начал тормозить, и апач начал очень сильно грузиться...
Теперь у меня тупиковая ситуация, проект забрасывать неохота, а реального выхода пока не вижу, может есть на форуме люди которые занимались этим или может кто-нить знает другие варианты решения этой проблемы?

Predtech
07.09.2008, 18:53
не зная точно что вы делаете трудно дать однозначный совет, но думается мне курить надо в сторону изменения логики сохранения данных. Например, не сохранять каждую точку положения объекта в базе, а только начальную и конечную координту объекта. промежуточные значения хранить и обрабатывать во флеше

terbooter
08.09.2008, 11:59
Получается, что flash клиент должен постоянно передавать данные и очень часто т.к. персонажи постоянно бегают, и надо отслеживать их движения, причем всех сразу...
?

А мне кажется что этот момент ключевой.
Я бы начал думать о конкретной реализации игры исходя из того как
решить проблему большого потока данных.
Например, игра может быть не такой динамичной, видимая облать малой (герой шарахается по темным узким подземельям - разгулятся негде), передвижение крипов обновляется не с сервера а зашито во флешке...

altoff
08.09.2008, 17:14
terbooter

совершенно верно, это и есть игра, но походу реализовать я ее не смогу...
за это время я связался с etc и он объяснил мне, что такие серверная часть для таких игр пишется через C++ либо C# , но никак не php...

Обмен в таких игрушках идет таков Flash <=> Socket <=> MySQL иначе никак...

Например, игра может быть не такой динамичной
Сразу меняется смысл игры
видимая облать малой
Это большую роль не играет
передвижение крипов обновляется не с сервера а зашито во флешке...
пробывал не помогает (((

terbooter
15.09.2008, 16:21
Я бы тоже прошел легбез от __etc на тему "Архитектура MMORPG игр: Flash <=> Socket <=> MySQL".

А чем плохи (хуже сокета на C) потоковые серваки? (Red5)

__etc, может откроешь раздел в блоге и помещать туда самые интересные и полезные свои ответы -)

Сразу меняется смысл игры
Вот именно это я и хотел сказать, что проблема которую вы назвали (большой трафик),
не какой-то баг который надо фиксить, а самый первый вопрос который надо решать когда вы
задумываете какую-то игру.

Air_mAn
15.09.2008, 19:20
А чем плохи (хуже сокета на C) потоковые серваки? (Red5) Они не плохи, просто для конкретной задачи свое решение, Red5 это для передачи потока видео или аудио, у игры своя специфика и есть специально для этого движки типа SmartFoxServer (http://www.smartfoxserver.com/)