Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programming / GameProg / RPG_Programming_2ed.pdf
Скачиваний:
240
Добавлен:
12.02.2016
Размер:
12.06 Mб
Скачать

Джим Адамс

Говорящие куклы

Простейший для использования метод общения — разговаривающие куклы (talking dummy). В каждой ролевой игре есть хотя бы один персонаж (говорящая кукла), который снова и снова повторяет одно и то же без малейшего участия интеллекта. Программировать говорящие куклы в вашей игре легко — назначьте строку текста, которая будет отображаться, когда с персонажем разговаривают.

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

Управляемые скриптами говорящие куклы

Вы знали, что это будет, не так ли? Скрипты — это сердце и душа компьютерных ролевых игр, так что вы должны пытаться использовать их в полной мере, в том числе и когда ваши персонажи общаются между собой. Путем назначения скрипта каждому персонажу вашей игры, скриптовый движок может взять базовую концепцию говорящих кукол и расширить ее.

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

Когда в дело вступает управляемая скриптом говорящая кукла, ваш скриптовый движок определяет, какой текст показать, на основании полученного флага. Такой персонаж (кукла) посоветовал бы вам посетить соседний город, или, если вы уже были там, высказался бы о населении того города. Подобный скрипт может выглядеть так (в текстовом формате):

If flag 0 is TRUE then

Print message "Я вижу, вы посетили Грэнуолл на юге!"

Else

Print message "Вы должны сходить на юг в Грэнуолл."

Endif

Как видите, в показанном выше скрипте отслеживается равно ли значение флага (flag 0) TRUE или FALSE (флаг становится равным TRUE,

всякий раз, когда игрок посещает город Грэнуолл).

Управляемые скриптами говорящие куклы относительно просты для создания и работы с ними, и я использую этот метод общения в оставшейся части книги. В идущем далее разделе «Демонстрация персонажей в программе Chars» и в главе 16 вы увидите обработку скриптов в действии и как использовать управляемые скриптами говорящие куклы в вашей игре.

netlib.narod.ru

539

Глава 12. Управление игроками и персонажами

Показ диалогов и другого текста

Независимо от того, какой путь вы изберете, вам тем или иным способом надо будет отображать беседы между персонажами. Вы знаете процедуру — каждый раз, когда ваш игрок говорит с другим персонажем, выскакивает маленькое окошко, отображающее текст. Время от времени персонаж может выбирать из списка предоставленных действий и беседа продолжается.

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

Чтобы все было проще, я разработал систему (класс текстового окна, названный cWindow), которая может визуализировать текстовое окно любого размера в любом месте экрана. Окно может быть в любой момент перемещено и может содержать произвольную строку текста, которую вы назначите. В качестве дополнительного приза текстовое окно может действовать как вариант «текстового пузыря» с указателем на говорящий персонаж. На рис. 12.6 показан класс текстового окна в действии.

Рис. 12.6. Класс текстового окна cWindow позволяет вам открыть окно любой ширины и высоты для отображения любого текста (особенно текста беседы)

Технически окно представляет собой два прямоугольника, нарисованных один поверх другого, содержащиеся в буфере вершин. Один прямоугольник белый и чуть больше внутреннего цветного прямоугольника.

540

netlib.narod.ru

Соседние файлы в папке GameProg