Сообщений: 1,563
Тем: 96
Зарегистрирован: Dec 2001
В файле на картинке главная структура нашей версии всей базы данных ПЗ. Это основное дерево всех ресурсов и всех данных вообще, кроме динамических, создаваемых во время игры. Мы переработали некоторые понятия и представили глобальные переменные как объектные переменные. Например, переменные заданий могут принимать четыре состояния.
1). «Delete» – отсутствует (удалена, не инициализирована. Значение = 0)
2). «Init» - Инициализирована (задание выдано. Значение = 1)
3). «Done» - Выполнено (Значение = 2)
4). «Cancel» - Отменено (Значение = 3)
Это всё! Других состояний у переменных типа: «Заданий», «Диалогов», «Управление переходов зон» - не будет! Так же мы вводим новый тип объектной переменной: «Events» Мы искусственно и умышленно ограничиваем возможности движка ПЗ, чем собственно и добиваемся создание стройной структуры связи между различными игровыми событиями и состояниями. По нашему плану, Дизайнер уровней сможет управлять двумя видами обработки данных: события, состояния, по принципу линейной и не линейной связи. В сущности, в данном контексте, «Линейная связь» - это безусловный и единственный указатель действия (связь один-к-одному), где связь может быть установлена между: «Событием-и-Состоянием», а также между «Состоянием-и-Состоянием» у объектных переменных. К слову сказать, исходя из предполагаемой структуры нового представления данных - другой комбинации связи, в принципе, не должно быть вообще! Так, например связь по принципу «Состояние-и-Событие» или «Событие-и-Событие» вызовет каскадную «реакцию» инициализации других объектных переменных без участия игрока, а это равносильно тому, что этот участок нужно разделить и представить отдельными блоками, либо как отдельную функцию или тип. В ПЗ есть один такой сложный момент. Для понимания моего этого сообщения, я приведу такой пример из игры. Когда Зак разговаривает со старым Некромансером и последний вызывает «Дух» во время диалога (присоединяет диалог). То есть, сначала игроком инициализирован один диалог, где в диалоге участвует Зак и Некромансер, а потом по окончанию первого диалога стартует второй диалог, где участвуют уже три персонажа. Вот этот момент и есть момент, когда одно событие инициализирует другое. Вообще, таким образом, Дизайнер уровней использует свой художественный замысел, разумеется, наша структура позволяет создавать любые подобные нелинейные конструкции сюжета игры и гораздо более сложные, а главное легкое восприятие созданной задумки, но структуру при этом «обходить» нежелательно. То есть, конструировать нужно в рамках установленных правил.
Еще немного о понятии «Событие» и «Состояние» у объектных переменных. «Событие» у объектных переменных может обрабатываться как ожидание инициализации объектной переменной в момент установки «Состояние»: «Done» это событие у нас есть некое виртуальное состояние переменной: «Complete». Кратко можно сформулировать так, что у всех связей в этой базе данных есть только два свойства: «IsComplete» и «IsDone». Мы поддержали и другие свойства линейной связи, как, например инициализация «IsInit» или более сложные связи, (всего 14), но по нашим предлагаемым правилам, для лучшего восприятия структуры, не желательно использовать другие связи кроме этих двух.
И последнее: установка объектным переменным типа «Заданий» состояния: «Done». Эта установка будет производиться по правилам нелинейной связи между событиями и состояниями в различных конфигурациях. В этом случае будут употр######ться все возможные в ПЗ варианты условий и логических проверок. Таких как, например, получил ли задание игрок и попал ли в какую-то зону, или убил квестого юнита. Так же и переменная типа «Events» может принимать два состояния: ««Delete» и «Done». По состоянию «Done» этого типа объектной переменной, да и любых других…, может быть установлена любая связь (свойства связи «IsComplete» и «IsDone») с переменными диалогами, или любыми другими объектными переменными, кроме тех, что устанавливают числовые значения. Таблица линейной связи есть на картинке, имя: “VarLineRelation”