|
Колонизация+: применение обьектно-ориентированного подхода в разработке стратегических игр
Данная статья вызвана потребностью в синхронизации подхода к разработке коллективных проектов стратегических игр и не претендует на точность в изложении существующих методик обьектно-ориентированного программирования . Наша задача состоит лишь в сведении к минимуму энтропии при обсуждении и внедрении тех или иных игровых решений и оказании помощи для начинающих разработчиков.
Итак, впредь при употребелении слова “игра” мы в первую очередь будем подразумевать некую моделируемую систему, в рамках которой и определим дальнейшую терминологию.
При объектно-ориентированном подходе анализ требований к игре сводится к разработке моделей этой игры. Моделью игры (или какого-либо другого объекта или явления) мы называем формальное описание игры, в котором выделены основные объекты, составляющие игру, и отношения между этими объектами. Построение моделей - широко распространенный способ изучения сложных объектов и явлений. В модели опущены многочисленные детали, усложняющие понимание.
Модели, разработанные и отлаженные на первом этапе разработки игры, продолжают использоваться на всех последующих ее фазах, облегчая программирование отладку, тестирование и дальнейшую модификацию.
Объектная модель описывает структуру объектов, составляющих игру, их свойства, операции, взаимосвязи с другими объектами. В объектной модели должны быть отражены те понятия и объекты реального мира, которые важны для разрабатываемой игры
По определению будем называть объектом понятие, абстракцию или любую вещь с четко очерченными границами, имеющую смысл в контексте рассматриваемой прикладной проблемы. Введение объектов необходимо в первую очередь для понмания прикладной задачи. Примерами обьектов в нашей игровой системе являются Город (Колония), Отряд, Ячейка ландшафта, Наука и т.д. - все что в совокупности составляет проектируемую игру.
Под обьектами мы будем подразумевать в первую очередь экземпляры обьекта. Экземпляры обьекта характеризуются тождественностью, но при этом их можно отличить друг от друга (представим себе два отряда фузилеров, обладающих одним и тем-же набором свойств – тем не менее это именно ДВА отряда, в чем легко убедиться, уничтожив один из них – другой останется) есть смысл ввести понятие СУЩНОСТЬ, которая впредь будет обозначать то, что в программировании называется КЛАССОМ – то есть абстрактное описание обьекта, служащее основой для создания его экземпляров.
Итак – два отряда фузилеров принадлежат к одной и той же сущности (с этим связана их одинаковость). Скорость передвижения, сила атаки и защиты, набор графических изображений для имитации действий отряда и пр. – это АТТРИБУТЫ обьекта, которые мы будем называть СВОЙСТВАМИ. Все обьекты, порожденные одной и той же СУЩНОСТЬЮ харктеризуются одинаковыми наборами СВОЙСТВ.
Однако, обьединение обьектов в игровые СУЩНОСТИ определяетсмя не набором аттрибутов, а их значением в игреовых процессах. Нпример Храм и Копейщик имеют однинаковые АТРИБУТЫ – скорость и открытие, после которого они могут быть построены. При этом они могут относитьсмя к одной СУЩНОСТИ, если мы рассматриваем их в конкретной задаче как продукты городского производства, либо к различным сущностям, что более естественно.
Объединение объектов в СУЩНОСТИ позволяет ввести в задачу абстракцию и рассмотреть ее в более общей постановке. СУЩНОСТЬ имеет имя (например ПОСТРОЙКА), которое относится ко всем объектам этого класса. Кроме того, в СУЩНОСТИ вводятся имена СВОЙСТВ, которые определены для объектов
СВОЙСТВО - это значение, характеризующее объект в его СУЩНОСТИ.
Среди СВОЙСТВ различаются ПОСТОЯННЫЕ СВОЙСТВА и ПЕРЕМЕННЫЕ СВОЙСТВА. Постоянные свойства характеризуют объект в его сущности (скорость, сила атаки…). Текущие значения переменных свойств характеризуют текущее состояние объекта (например, положение на карте, повреждения в бою и т.д.); изменяя значения этих свойств, мы изменяем состояние объекта.
ДЕЙСТВИЯ - это функция (или преобразование), которую можно применять к объектам данной сущности.
При моделировании игровой системы нам нужно подробней остановиться на ДЕЙСТВИЯХ, имеющих побочные эффекты (эти эффекты выражаются в изменении значений атрибутов объекта, т.е. в изменении его состояния), поскольку операции, которые выдают требуемое значение, не меняя состояния объекта, нас будут интересовать скорее на этапе разработки пользовательского интерфейса.
В качестве примера ДЕЙСТВИЙ с обьектами можно рассматривать: Боевое столкновение, Открытие, Производство отряда или здания, Захват города.
Кроме того, между обьектами можно установить зависимости по данным, которые выражают связи или ОТНОШЕНИЯ между сущностями указанных обьектов.
В качестве примера отношений можно назвать связь между Государством и Городом, Армией и Отрядом, Городом и Улучшениями.
На этом обзор обьектного подхода к разработке игр не исчерпывается но дальнейшая деятельность в этом направлении зависит от необходимости для команды нашего сайта.
Олег aka Сигизмунд
12-Ноя-2004
Версия для печати Обсудить в форуме
|