|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Mar 2013
Сообщений: 290
|
Текстовый квест: грамотная организация локаций
Всем привет.
Пробую написать шаблон для текстового квеста. Беру нечто простейшее, например вот такую минималистичную "карту мира". Конечно, можно решить эту задачу "в лоб", просто прописав в слушателе каждой кнопки: - удаление текущих объектов и их слушателей со сцены. - добавление новых объектов, соответствующих переходу по данной кнопке. Так я могу сделать. Но, понятно, что для более сложных схем, с кучей ветвлений и локаций, такой подход неприемлем. Подскажите, как, например для данной схемы, действовали бы вы? Я могу лишь смутно догадываться об иных реализациях... Может быть привлечение массивов мувиклипов, массивов хитрых 0-1-матриц, сторонних файлов XML... Последний раз редактировалось Fogflasher; 10.03.2014 в 09:58. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Я не знаю конечно, как именно у Вас сделаны эти МС..., что в них.. Голый текст на экране и кнопки, или там вообще анимации. Конечно "крутой" разработчик попытался бы сделать универсальный движок текстовых квестов с возможностью задавать весь сценарий во внешнем файле (XML, например).
Каждому Диалогу присваивается идентификатор, Диалог содержит вводный текст и варианты Ответов. К этим вариантам указаны идентификаторы Диалогов для перехода (по вашей схеме: в МС3 ответ BUT4 ведет к MC4, a BUT3 ведет к МС5. В сценарий каждого Диалога можно также добавить идентификатор фонового изображения или мувиклипа, хранящегося в библиотеке, или даже адрес подгружаемого. Для мувиклипов (или swf-файлов) можно также указывать кадр — это позволит делать ветвящиеся диалоги с одним клипом на фоне, не заменяя объект мувиклипа на фоне (локацию) при каждой фразе и ответе, когда это не нужно. Соответственно в коде движка был бы класс сценки, или диалога, умеющий по своей ноде XML составить "кадр". Ну, это все как я себе представляю, не зная Ваш проект на самом деле. То есть абстрактно)) <dialogue id="D003"> <background mc="MC3" frame="1" /> <quest id="Q003">Ты руки помыл?</quest> <answer id="A" target="D004">Ага. Вода только ледяная, брр..</answer> <answer id="B" target="D005">Нет. Вода же ледяная!</answer> </dialogue> <dialogue id="D004"> <background mc="MC3" frame="14" /> <quest id="Q004">Тогда садись за стол. Что будешь пить?</quest> <answer id="A" target="D006">Водку со льдом!</answer> <answer id="B" target="D007">Ананасовый сок!</answer> </dialogue> <dialogue id="D005"> <background mc="MC3" frame="6" /> <quest id="Q004">Найди кипятильник и согрей воду.</quest> <answer id="A" target="D003">Да я уж как-нибудь так помою.. холодненькой</answer> <answer id="B" target="D008">ОК. Где он лежит? В кладовке?</answer> <answer id="С" target="D004">Да пошутил я. Вот, руки чистые!</answer> </dialogue>
__________________
Reality.getBounds(this); |
|
|||||
[+1 25.10.13]
[+4 18.03.14] |
<root> <dialogues id="1"> <Dialogue id="D003"> </Dialogue> <Dialogue id="D004"> </Dialogue> <Dialogue id="D005"> </Dialogue> <Dialogue id="D006"> </Dialogue> <Dialogue id="D007"> </Dialogue> <Dialogue id="D008"> </Dialogue> </dialogues> <backgrounds> <Background id="1" mc="MC3" frame="1"><dialogues>D003</dialogues> </Background> <Background id="2" mc="MC3" frame="14"><dialogues>D004</dialogues> </Background> <Background id="3" mc="MC3" frame="6"><dialogues>D005</dialogues> </Background> </backgrounds> <quests id="1"> <Quest id="1" text="Ты руки помыл?"><dialogues>D003</dialogues></Quest> <Quest id="2" text="Найди кипятильник и согрей воду."><dialogues>D004</dialogues></Quest> <Quest id="3" text="Тогда садись за стол. Что будешь пить?"><dialogues>D003</dialogues></Quest> </quests> <answers id="1"> <Answer id="1" case="A" text="Да я уж как-нибудь так помою.. холодненькой"><dialogues>D003</dialogues></Answer> <Answer id="2" case="B" text="ОК. Где он лежит? В кладовке?"><dialogues>D008</dialogues></Answer> <Answer id="3" case="С" text="Да пошутил я. Вот, руки чистые!"><dialogues>D004</dialogues></Answer> <Answer id="4" case="A" text="Водку со льдом!"><dialogues>D006</dialogues></Answer> <Answer id="5" case="B" text="Ананасовый сок!"><dialogues>D007</dialogues></Answer> </answers> </root> |
|
||||||||
Регистрация: Mar 2013
Сообщений: 290
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Но она начальная, в реале конешно дерево выборов должно быть круче и ветвистей. Ну да, я абстрактный движок и хочу написать. Цитата:
Цитата:
Babylon, хм, у вас другая структура XML... То есть так лучше, оптимальнее? Вариант от Волша внешне кажется более простым для сборки, все объекты в одной ноде. Но как знать. |
|
|||||
[+1 25.10.13]
[+4 18.03.14] |
<dataset> <коллекция классов структуры контейнеров> <Класс контейнера>[<Класс контента></Класс контента>] </коллекция классов структуры контейнеров> <коллекция классов контента> <Класс контента> <список ids класса контейнера></список ids класса контейнера> </Класс контента> </коллекция классов контента> </dataset> |
Часовой пояс GMT +4, время: 12:36. |
|
« Предыдущая тема | Следующая тема » |
Теги |
квест , организация уровней , подход |
|
|