2013-07-29 2 views
2

Я хотел бы создать RPG в JavaScript. В RPG будет много диалога. Я слышал XML is the way to go..., но у меня нет опыта использования XML и большой опыт работы с PHP и MySQL.Веб-RPG - диалог сохранения

Мои вопросы:

  • было бы лучше, чтобы сохранить диалог в базе данных MySQL и доступ к нему с PHP с использованием идентификаторов? Или я должен просто сохранить все это на передней панели, обратившись к файлам XML с помощью Javascript?
  • Если я использую XML, мне нужно запустить javascript на веб-сервере (например, WAMP)? Или я могу разобрать его локально:

    function parseXML() { 
        xmlhttp=new window.XMLHttpRequest(); 
        xmlhttp.open("GET","dialog.xml",false); 
        xmlhttp.send(); 
        xmlDoc=xmlhttp.responseXML;    
    } 
    

(который в настоящее время дает ошибку XMLHttpRequest cannot load file:///C:/Users... Cross origin requests are only supported for HTTP.

  • Даже после прочтения на XML, я до сих пор не знаю, как я могу интегрировать его с JavaScript. Может ли кто-нибудь помочь мне привести пример того, как я могу взять пример XML-диалога rpg и осмысленно разобрать его на JavaScript?

Спасибо

+5

Вы можете посмотреть JSON и базы данных документов, ориентированных на. Было бы удобно хранить объект JS и обращаться к ним без преобразования в XML. –

+0

Я бы ответил на вопросы @SerjZaharchenko. JSON гораздо более компактен и работает с javascript. Кроме того, если у вас будет целая серия диалогов, которые будут находиться в древовидной структуре, и вам нужно получить все дерево с одним ID, то база данных NoSQL может быть действительно хорошим вариантом. –

+1

Нет, ошибка Cross-origin связана с ним, используя протокол file: //, и браузер запрещает такие запросы. Я предполагаю, что он только что открыл HTML-страницу с помощью своего веб-браузера, но он не видит место, фактически обслуживаемое любым HTTP-сервером. AFAIK, Firefox позволит ему выполнять запросы «AJAX» в файле: // протокол тоже. – jmc

ответ

0

Дайте входному файлу базовый url как http://localhost/rpgame/dialog.xml.

3

Почему вы не используете JSON вместо этого? Это намного проще в использовании из кода JavaScript. Пока вы на нем, избегайте использования XMLHttpRequest вручную и используйте некоторую библиотеку, которая обрабатывает плохие вещи для вас (например, jQuery).

Для части «диалога» я не уверен, для чего вы собираетесь использовать MySQL. В любом случае, вы можете использовать любую форму хранения на стороне сервера, при условии, что ваши скрипты PHP дают хорошо сформированные ответы на код на стороне клиента.

+0

Я собирался использовать MySQL для хранения ссылок на текст диалога по идентификатору, к которому можно было получить доступ на основе логики игры PHP, а затем вывести JQuery. Во всяком случае, можете ли вы привести пример того, как я могу использовать JSON для хранения диалогового окна, доступ к которому можно получить на основе логики, определенной в Javascript? Например ... У меня есть набор условных скриптов для ответа, если NPC просит меня что-то сделать. И какой тип файла я храню внешний JSON как? – Growler

+1

Подумайте о том, чтобы отделить ваш * транспорт * формат от вашего * хранилища * формата. JSON отлично подходит для транспорта, но не обязательно для хранения, а XML на самом деле не очень хорош. Вам понадобится способ преобразования ваших данных, хранящихся в базе данных, в JSON для целей рендеринга, но так работает большинство приложений. – tadman

+0

Ну, JSON - это просто формат сериализации, такой как XML, но с другим обозначением, которое в значительной степени заимствовано из JavaScript (как само название предлагает, поскольку JSON означает «Обозначение объекта JavaScript»). Вы можете организовать структуру, как дерево, где каждый узел представляет собой объект, содержащий поле 'question', которое будет объектом' String', содержащим фактический вопрос, и поле 'отвечает', которое будет связывать словарь ответы на другие «объекты вопроса» и т. д. Помните, что это будет работать только в том случае, если ваши данные вопроса не имеют циклов (или это не будет сериализуемо). – jmc

1

Было бы лучше сохранить диалог в базе данных MySQL и получить к нему доступ с использованием PHP-идентификаторов? Или я должен просто держать все это на переднем конце на доступ к файлам XML с помощью Javascript?

Главное преимущество наличия базы данных здесь в том, что вы получаете большую гибкость. Вы можете легко создавать и редактировать/удалять фрагмент диалога и его отношения и не должны каждый раз поддерживать/регенерировать огромный файл данных (как вы это делаете с форматом XML или JSON или w/e, который вы выбираете).

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

Поскольку вы собираетесь делать игру в Javascript, и если ваш контент не так сильно меняется, вы можете рассмотреть кодировку JSON для ваших диалогов. Вы можете анализировать данные мгновенно через Javascript и все еще иметь возможность создавать все сложные отношения между диалогами, как в XML.

Если я использую XML, мне нужно запустить javascript на веб-сервере (например, WAMP)? Или я могу разобрать его локально с помощью: ...

У вас есть эта ошибка, потому что вам действительно нужно запустить сервер здесь.Если вы просто хотите сделать некоторые тесты, не нужно использовать WAMP или какой-нибудь большой веб-сервер, просто запустите python-сервер, и это будет делать трюк.

cd /yourProject 
python -m SimpleHTTPServer 

Дайте сервер и открыть браузер по адресу:

http://127.0.0.1:8000 
Смежные вопросы