Камрад
|
Черт бы побрал эту работу - такую дискуссию чуть не пропустил!!! Спешу присоединиться!
Итак, во-первых, давайте не путать три вещи:
1. Нелинейность сюжета
2. Разветвленность сюжета
3. Интерактивность игрового мира.
По пунктам в обратном порядке.
Третий пункт - способность игры адекватно реагировать на действия играющего, изменять граничные условия игровой ситуации, принуждая его к определенным действиям (или не принуждая, хотя это уже не игра.) Интерактивность определяет тип игры (теория игр - есть часть теории вероятности) игра против активного (злонамеренного) противника или игра против пассивного противника. Пример: Lines, Tetris и т.д. - это игра с пассивным противником. Активный противник в компьютерных играх дело редкое поскольку придется писать самообучающийся AI. Высокая интерактивность свойственна многопользовательским играм, поскольку там она во многом создается самими игроками. Интерактивность, возведенная в ранг идеи фикс способна привести игру к хаосу. Кроме того, следует отметить, что интерактивность мира вляется базой нелинейности
Разветвленность сюжета - это своеобразные костыли, которыми разработчики подпирают туповатый AI и недостаток воображения сценаристов. Разветвленность сюжета - есть наличие в сюжете некого множества событий, переключающих мгрока с одной ветви повествовательного алгоритма на другу, на основе триггерного (да/нет) определения некого параметра (например выполнена миссия или провалена и т.д.). Лучшим примером разветвленности сюжета считаю Wizardry, где начало зависит от того, какую партию вы импортировали из прошлой серии (для новой партиии отдельная завязка) и потом события развиваются весьма различно. Концовки тоже принципиально разные. Существует и псевдоразветвленность (используемая, кстати, в серии BG) когда сюжетная линия одна, а иллюзию разветвленности создаеют побочные квесты.
Нелинейность же - есть способность игровой механики генерировать случайные события (именно генерировать, а не подсовывать из заранне заготовленного набора) не противоречащие набору заданных законов, основываясь на анализе текущей игровой ситуации. Это весьма сложная задача с точки зрения программирования и требует прорву вычислительной мощности. Истинно нелинейных игр я не знаю. Посему попробую сформулировать задачу создания истинно нелинейной игры.
Необходимо создать экспертную систему, способную генерировать решения (события) сообразуясь с заданными ограничениями (законы игрового мира) на динамически возникающие запросы (совокупность поступков ВСЕХ персонажей) и подставлять эти решения в качестве параметров следующих запросов (учитывать произошедшее в будущих событиях). Как видим сложность вычислений зависит от количества персонажей, их активности и количества произошедших событий. Соотвественно и возрастают требования к логике движка. Естественно, что определенные методы оптимизации могут снизить сложность вычисленй, но все равно задача весьма сложная. Сложность ее заключается и в том, что собственно сюжет игры должен быть "запрограммирован" в тех самых ограничительных законах игрового мира, ибо ничего другого, что было бы предопределено заранее, в такой игре нет. Сделать это так, чтобы ограничения не бросались в глаза игроку, а мягко подталкивали его вперед по сюжетной линии через генерируемые события - задача весьма нетиривиальная. Переходя в математические термины: финал игры - это целевая функция,определяющая приемлемость полученного решения, законы игры - оптимизирующая функция, а генерируемые события - поправочные коэффициенты. Тогда вся игра - есть итерационный процесс последовательных пересчетов значения оптимизирующей функции с целю приведения этого значения к заданному целевой функцией при помощи введения поправочных коэффициентов. Игра завершается когда решение полученное при очередном пересчете оптимизирующей функции будет также и решением целевой функции. Ясное дело, что в таком случае оптимизирующая функция - есть некий степенной ряд и его сходимость на неком пределе критична, ибо несходящаясся функция не будет двигать сюжет (а соотвественно приближаться ко множеству решений целевой функции), а будет просто болтать игрока туд-сюда (это еще если девиация стабильная, а то и вообще начнет генерировать неадекватные решения). Вот так-то, други-камрады!
Надеюсь не очень загрузил? ;-)))
|