Способ сохранения / загрузки игровых уровней в Python - PullRequest
2 голосов
/ 12 февраля 2011

Я пишу игру, используя Python и PyGame.(Это прописано в задании, поэтому бесполезно предлагать другую библиотеку разработчиков игр со встроенным парсингом уровней)

Я сейчас на стадии завершения игровой физики и т. Д., Но яМне еще предстоит разработать способ сохранения и загрузки уровней в игру.Вот что я об этом подумал:

1.Метод Brainstorm

  • Было предложено YAML (следовательно, PyYAML ) для обработки ввода / вывода уровня.
    • Хранится в виде обычного текста, но в структурированном маннаре.
    • Легко редактировать и т. Д. - одна из основных особенностей YAML заключается в том, что его легко читать человеком.
  • Использование pickle
    • То, что я использовал в прошлом - сохранить список как отдельные элементы с разделителем, чтобы различать их.
    • Опять же, сохраняет как обычный текст,но использование элемента разделителя (например, {> <}, как в случае с Журналом драйверов для учащихся, усложняет понимание. </li>

2. Представление данных

  • Каждый уровень требует анализа следующих данных. Рядом с ним выделены жирным шрифтом типы данных.
    • Исходные позиции и характеристики шаров и окружностей [Два списка]
    • Ограничение на круги [Целое число]
    • Допустимые цвета [Цвет списка определений: True / Color: False]
    • The ObsessiveЗавершение Критерии различия [Целое число]
    • Любой сюжет или учебникВесь текст должен отображаться на уровне [Список строк]
    • Имя и номер уровня [Список строк]

Все, что я ищу, - это предложения о наилучшем способе достижения этой цели.

TL; DR - Лучший способ для анализа уровней игры из файла в Python / PyGame.

Ответы [ 4 ]

8 голосов
/ 12 февраля 2011

Если вам не нужно редактировать вручную или читать уровни в любой другой программе, просто используйте pickle.

Храните данные своего уровня в одном объекте Python, и это (почти) строка в вашем коде для чтения и записи.

2 голосов
/ 12 февраля 2011

Рассол сделан для такого рода вещей.Вам не нужен разделитель, чтобы различать элементы в списке;просто рассортируйте весь список.

1 голос
/ 31 января 2013

Как насчет простого подхода файла .txt?

Например, если это была 2D-игра, имейте идентификаторы, поэтому 3 = камень, 4 = трава, а затем просто читайте построчно и передавайте на дисплей.

Это хорошо дляредакторы уровней, так как им легко сохранять данные.Это не очень хороший вариант, если его важные данные требуют шифрования.

0 голосов
/ 12 февраля 2011

Проведение тестирования на устойчивость в вашей программе может быть чрезвычайно сложным. Например, можете ли вы проверить, что каждый уровень будет сохранять и загружать одно и то же состояние? (Или относительно того же состояния - в некоторых играх могут быть состояния таймера, которые не будут точно дублироваться.)

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

...