Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   xml или MySQL (http://www.flasher.ru/forum/showthread.php?t=143783)

Anig 25.08.2010 16:59

xml или MySQL
 
Здравствуйте, есть задача в написании сетевой игры- где и как хранить состояние пользователя- уровень, баллы, приобретения и т.д.. когда он не онлайн:
1. Хранить на сервере папку с именем пользователя а там xml?
2. Или хранить все в MySQL, и во время игры создавать с использованием Java из базы xml файл, работать с ним во флеш и обратно через Java кидать в базу?
Мне кажется при выборе первого решения облегчится переносимость игры, али нет?

-De- 25.08.2010 17:16

Если файл на диске, то надо гарантировать, что одновременно в него может писать только один поток и во время записи из него никто не читает. Иначе у вас появятся редкие и практически невоспроизводимые ошибки с очень широким спектром действия. Вот собсно от такого спасает MySQL, переносимость тут ни при чем.

Zebestov 25.08.2010 17:29

Нет, не облегчится.
К тому же запись в файл медленнее записи в бд.
Другой вопрос — кэширование последних результатов.

1. [много_случайных_цифр].xml в доступном по http:// месте для каждого пользователя.
2. [пофиг].xml в недоступном по http:// месте. транслируется Java скриптом после проверок аутентификации.
3. в MySQL доп. табличка типа user_summary, в которой все хранится

1. никаких скриптов, никаких MySQL выборок, но, однажды узнав имя файла юзера, можно всегда видеть его результаты.
2. скрипт проверки авторизации/прав доступа — нагрузка на проц сервера + чтение из файла.
3. скрипт проверки авторизации/прав доступа — нагрузка на проц сервере + чтение из базы.

Ну я бы так рассуждал. может кто дополнит/отбракует.

Я, в свою очередь, выбрал вариант 3. Потому что (при прочих равных с вариантом 2) читать из бд вроде должно быстрее. Да и писать в процессе активности пользователя тоже быстрее.
К варианту 1 прибегаю при больших нагрузках для кэширования/верстки и без того публичных данных.

Добавлено через 2 минуты
+1 в пользу MySQL (и варианта 3 в частности) замечание от -De-

Anig 25.08.2010 17:59

Тогда другой вопрос: ведь из флеш напрямую нельзя писать и читать из бд, как вы тут делаете?
И при активности пользователя не лучше ли работать с (временным хотя бы) xml файлом, чем 100 раз обращаться к базе?

e_gamer 25.08.2010 18:00

С помощью PHP можно связать Flash и СУБД.

О какой активности идет речь?

Zebestov 25.08.2010 18:23

Цитата:

Сообщение от Anig (Сообщение 931357)
Тогда другой вопрос: ведь из флеш напрямую нельзя писать и читать из бд, как вы тут делаете?

e_gamer ответил. в твоем случае это будет Java + MySQL (или что там у тебя)
Цитата:

Сообщение от Anig (Сообщение 931357)
И при активности пользователя не лучше ли работать с (временным хотя бы) xml файлом, чем 100 раз обращаться к базе?

т.е. при определенной активности нужно будет обновить бд + xml — где выигрыш по скорости?

gloomyBrain 25.08.2010 18:27

Цитата:

есть задача в написании сетевой игры
Если имеется в виду real-time игрушка, то лучше все данные хранить в оперативной памяти сервера, и только при входе считывать из БД, а при выходе - записывать конечное состояние.
То есть пых-пыхом тут не обойтись =)

Anig 25.08.2010 18:37

1.Записывать лучше не только "при выходе"- оборвалась связь- бедный игрок теряет нажитое-записывать надо по-моему постоянно
2. Как хранить все данные игры (КУЧА!!) "в оперативной памяти сервера"- с использованием переменных сеанса??
3.Я понимаю что писать и читать в базу надо с использованием скриптового языка или Java- вопрос как именно(можно ли обойтись при этом без xml)

gloomyBrain 25.08.2010 18:44

1) оборванная связь и есть выход
2) для этого нужен сервер на [язык, нормально работающий с сокетами] (JAVA, C++ ...)
3) писать и читать из базы можно в любом виде. Главное - обрабатывать данные после чтения / перед записью, приводя их в удобный вид.

Вы скажите, что конкретно будете делать?

Anig 25.08.2010 18:54

Буду писать игру как ферма в одноклассниках, помогите пожалуйста правильно начать- не изобретать колеса. На стороне сервера работаю на Java. Ну как хранить информацию о поле конкретного игрока, как ее обновлять- не знаю.

Что касается конфигурации самой игры(общей для всех- там какие товары есть в магазине и т.д.)-тут сделаю xml- тогда игру легко будет расширять и редактировать, али нет?


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

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