Игровая логика в XML-файлах

Я думаю, что проблема в android:layout_width="match_parent" в вашем теге ConstraintLayout. Поскольку диалог не имеет фиксированной ширины, использование match_parent не будет работать. Может быть, вы могли бы установить фиксированную ширину или минимальную ширину.

21
задан Firas Assaad 16 December 2008 в 22:05
поделиться

5 ответов

Если Ваша игра не будет иметь меньше чем полдюжины уникальных диалоговых окон, необходимо определенно поместить эту информацию в некоторый файл данных. XML является сильным претендентом на формат. Я не говорю Ruby, таким образом, он не может работать в этом случае, но другая опция состояла бы в том, чтобы определить диалоговое окно как данные непосредственно в коде Ruby. (Я знаю, что это работало бы вполне прилично в Lua, Python и JavaScript... Я предполагаю, что вложенные структуры данных определения также легки в Ruby.)

Мы использовали XML-файлы для определения всех статических данных в Пиратах Горящего Моря, и это был отличный способ пойти. Наличие формата данных как это позволяет непрограммистам управлять данными и освобождает программистов для работы над функциями вместо ввода данных. Наличие тех файлов данных быть текстом означает, что можно сохранить их при управлении исходным кодом, таким образом, можно сказать, когда они изменяются.

8
ответ дан 29 November 2019 в 22:02
поделиться

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

Я не обеспокоился бы DSL, карты YAML отлично.

5
ответ дан 29 November 2019 в 22:02
поделиться

Поскольку Вы пишете это в Ruby, я думаю, что выполнение его в XML должно быть достаточным. Тем путем Вы могли сделать веб-приложение, которое позволяет Вам работать над диалогом и игровой логикой отовсюду. И другие люди могут сотрудничать с Вами или возможно создать пользовательские модификации - который всегда является плюс.

Пока Вы сохраняете свои XML-файлы хорошо организованными (блок-схемы на бумаге помогут), Вы не должны сталкиваться ни с какими проблемами и могли бы даже быть благодарны за то, что себя прошли боль парсинга ее :)

1
ответ дан 29 November 2019 в 22:02
поделиться

Для получения вдохновения или возможно даже принятия, смотрят на AIML и BuddyScript. AIML является XML для чат-ботов, BuddyScript является другим вариантом - теперь принадлежавший Microsoft.

Следующее является образцом AIML из http://www.alicebot.org/aiml.html

<category>
<pattern>WHAT ARE YOU</pattern>
<template>
    <think><set name="topic">Me</set></think> 
    I am the latest result in artificial intelligence,
    which can reproduce the capabilities of the human brain
    with greater speed and accuracy.
</template>

Если необходимо было интегрировать технологию AIML (который я думаю, свободно) в игру, NPC имел бы AI, с которым могли говорить плееры. Разве это не было бы интересно?

AIML является модульным, таким образом, весь Ваш NPCs мог иметь общий файл, описывающий все стандартное знание об их мире. Затем Вы могли добавить определенные файлы для материала, который будет typic к каждой гонке, классу, месту, человеку или задаче. Существует много интересных демонстрационных файлов AIML, например, Eliza.

Ситуационная информация, может быть добавлен в начале разговора, и у Вас может быть некоторое программное обеспечение вне механизма AIML, прислушивающегося к "волшебным" словам от NPC, указывающего, что NPC хочет, чтобы что-то произошло в "реальном" игровом мире. как "*** ДАЮТ ПЛЕЕРУ 20 КРЫЛЬЕВ BUFFALO".

1
ответ дан 29 November 2019 в 22:02
поделиться

DSL был бы реализацией Mercedes-Benz для этого и будет забавой записать в Ruby. Вы правы, потребовалась бы большая работа, но это могло бы окупиться, если бы это было правильно написано, и эта игра действительно взлетела.

Одной вещью рассмотреть при хождении путем XML является синтаксический анализатор/механизм, который Вы будете использовать для рендеринга его. В последний раз я проверил, REXML был единственным шоу в городе для Rubyists. Если Вам нравится REXML затем, XML походит на хороший способ пойти, но если бы Вы не попробовали его, я предложил бы делать это прежде, чем принять это решение. Я не выбираю REXML, просто советуя небольшой осторожности, так как Вы будете абсолютно зависеть от этой библиотеки, независимо от того, что Вы используете.

1
ответ дан 29 November 2019 в 22:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: