![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2010
Сообщений: 347
|
Здравствуйте, есть задача в написании сетевой игры- где и как хранить состояние пользователя- уровень, баллы, приобретения и т.д.. когда он не онлайн:
1. Хранить на сервере папку с именем пользователя а там xml? 2. Или хранить все в MySQL, и во время игры создавать с использованием Java из базы xml файл, работать с ним во флеш и обратно через Java кидать в базу? Мне кажется при выборе первого решения облегчится переносимость игры, али нет? |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Если файл на диске, то надо гарантировать, что одновременно в него может писать только один поток и во время записи из него никто не читает. Иначе у вас появятся редкие и практически невоспроизводимые ошибки с очень широким спектром действия. Вот собсно от такого спасает MySQL, переносимость тут ни при чем.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Lorem ipsum
|
Нет, не облегчится.
К тому же запись в файл медленнее записи в бд. Другой вопрос — кэширование последних результатов. 1. [много_случайных_цифр].xml в доступном по http:// месте для каждого пользователя. 2. [пофиг].xml в недоступном по http:// месте. транслируется Java скриптом после проверок аутентификации. 3. в MySQL доп. табличка типа user_summary, в которой все хранится 1. никаких скриптов, никаких MySQL выборок, но, однажды узнав имя файла юзера, можно всегда видеть его результаты. 2. скрипт проверки авторизации/прав доступа — нагрузка на проц сервера + чтение из файла. 3. скрипт проверки авторизации/прав доступа — нагрузка на проц сервере + чтение из базы. Ну я бы так рассуждал. может кто дополнит/отбракует. Я, в свою очередь, выбрал вариант 3. Потому что (при прочих равных с вариантом 2) читать из бд вроде должно быстрее. Да и писать в процессе активности пользователя тоже быстрее. К варианту 1 прибегаю при больших нагрузках для кэширования/верстки и без того публичных данных. Добавлено через 2 минуты +1 в пользу MySQL (и варианта 3 в частности) замечание от -De-
__________________
Поймай яблоко 2! |
|
|||||
|
Регистрация: May 2010
Сообщений: 347
|
Тогда другой вопрос: ведь из флеш напрямую нельзя писать и читать из бд, как вы тут делаете?
И при активности пользователя не лучше ли работать с (временным хотя бы) xml файлом, чем 100 раз обращаться к базе? |
|
|||||
|
С помощью PHP можно связать Flash и СУБД.
О какой активности идет речь?
__________________
$world->answer_for_request($_REQUEST['hello,world!']); ICQ: 336637242 |
|
|||||
|
Lorem ipsum
|
Цитата:
т.е. при определенной активности нужно будет обновить бд + xml — где выигрыш по скорости?
__________________
Поймай яблоко 2! |
|
|||||
|
Цитата:
То есть пых-пыхом тут не обойтись =)
__________________
...вселенская грусть |
|
|||||
|
Регистрация: May 2010
Сообщений: 347
|
1.Записывать лучше не только "при выходе"- оборвалась связь- бедный игрок теряет нажитое-записывать надо по-моему постоянно
2. Как хранить все данные игры (КУЧА!!) "в оперативной памяти сервера"- с использованием переменных сеанса?? 3.Я понимаю что писать и читать в базу надо с использованием скриптового языка или Java- вопрос как именно(можно ли обойтись при этом без xml) |
|
|||||
|
1) оборванная связь и есть выход
2) для этого нужен сервер на [язык, нормально работающий с сокетами] (JAVA, C++ ...) 3) писать и читать из базы можно в любом виде. Главное - обрабатывать данные после чтения / перед записью, приводя их в удобный вид. Вы скажите, что конкретно будете делать?
__________________
...вселенская грусть |
|
|||||
|
Регистрация: May 2010
Сообщений: 347
|
Буду писать игру как ферма в одноклассниках, помогите пожалуйста правильно начать- не изобретать колеса. На стороне сервера работаю на Java. Ну как хранить информацию о поле конкретного игрока, как ее обновлять- не знаю.
Что касается конфигурации самой игры(общей для всех- там какие товары есть в магазине и т.д.)-тут сделаю xml- тогда игру легко будет расширять и редактировать, али нет? |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:00. |
|
|
« Предыдущая тема | Следующая тема » |
|
|