Общие вопросы проектирования

Материал из Клуб любителей рогаликов
Перейти к: навигация, поиск

Вот список вещей, которые вы должны сделать в первую очередь, перед тем, как добавите что-то ещё.

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

Время

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

  • Задача 1. Определять, чей в данный момент ход.
  • Задача 2. Отслеживать будущие события и запускать их в соответствии с их порядком.
  • Задача 3. Управление действием эффектов, действующих через интервалы: либо в некотором абсолютном времени, либо каждый ход игрока, либо каждый ход существа.
  • Задача 4. Удостовериться, что всё это работает правильно даже в тех случаях, когда игрок или монстры двигаются с увеличенной скоростью или, наоборот, заморожены/шокированы на время.

Пространство

У вас должны быть чёткие решения первых четырёх проблем "пространства". Пятая задача, если будет в вашей игре, тоже должна иметь чёткое решение. Шестая и седьмая задачи решаются стандартными алгоритмами, но если хотите, можете сделать что-то своё и, обычно, это не вызовет проблем и не повлияет на остальной код игры. Восьмая задача также решается стандартными методами и, к тому же, сюда можно добавлять новые решения.

  • Задача 1. Создание и отображение карты
  • Задача 2. Сохранение и загрузка карты
  • Задача 3. Дистанционные эффекты, прицеливание, препятствия.
  • Задача 4. Площадные эффекты и то, как они взаимодействуют с определёнными зонами
  • Задача 5. Влияние игрока и/или монстров на карту.
  • Задача 6. Планирование и поиск пути.
  • Задача 7. Освещение, FOV, LOS.
  • Задача 8. Генерация уровня.

Вещи

Вы должны реализовать все указанные стандартные действия с вещами.

  • Задача 1. Поднятие.
  • Задача 2. Выбрасывание.
  • Задача 3. Экипировка.
  • Задача 4. Использование вещи как оружие или боеприпасы.
  • Задача 5. Возможность есть и пить.
  • Задача 6. Складывание в контейнер.
  • Задача 7. Использование как контейнер.
  • Задача 8. Возможность испортить/сломать её (если вы собираетесь это реализовать).
  • Задача 9. Превращение в другую вещь.

Прочее

  • Написание кода для новых вещей/монстров (в вашей программе должны быть определены стандартные места, куда должен дописываться такой код, и места, где он должен вызываться в определённых случаях).
  • Реализация действия эффектов вроде: времени, маны, выносливости и т.п. (в вашей программе должны быть определены места, где будут указаны параметры этих эффектов и места для хранения функций, которые определяют действия эффектов).
  • Чёткая реализация того, как вещи и монстры будут представлены в игре (без вот этого запутывания ссылок, когда несколько указателей ссылаются на одну вещь; или монстр существующий сразу в нескольких местах, из-за чего его совершенно невозможно будет убить/уничтожить! В вашей программе должны быть реализованы стандартные методы для этих объектов. В идеале, сохранение/загрузка без дополнительных действий).
  • Реализация сохранения/загрузки вещей и монстров в файлы сохранения (ваша программа должна уметь без проблем сохранять и загружать из файла; в идеале, автоматическое сравнивание со "стандартизированной" структурой данных).



Автор: Ray Dillinger.
Источник: Code design basics.
Перевел: Sanja, 21.03.2010.