Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   MySQL запросы в online играх (http://www.flasher.ru/forum/showthread.php?t=115574)

altoff 03.09.2008 18:27

MySQL запросы в online играх
 
Вообщем проблема такова, начал писать движок для 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

Цитата:

Сообщение от altoff (Сообщение 762079)
Получается, что 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

Цитата:

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

Они не плохи, просто для конкретной задачи свое решение, Red5 это для передачи потока видео или аудио, у игры своя специфика и есть специально для этого движки типа SmartFoxServer


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

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