Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.03.2014, 09:46
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 1  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
Post Текстовый квест: грамотная организация локаций

Всем привет.
Пробую написать шаблон для текстового квеста.

Беру нечто простейшее, например вот такую минималистичную "карту мира".
Нажмите на изображение для увеличения
Название: TextAdvScheme.png
Просмотров: 139
Размер:	14.3 Кб
ID:	30570

Конечно, можно решить эту задачу "в лоб", просто прописав в слушателе каждой кнопки:
- удаление текущих объектов и их слушателей со сцены.
- добавление новых объектов, соответствующих переходу по данной кнопке.

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

Подскажите, как, например для данной схемы, действовали бы вы?

Я могу лишь смутно догадываться об иных реализациях...
Может быть привлечение массивов мувиклипов, массивов хитрых 0-1-матриц, сторонних файлов XML...


Последний раз редактировалось Fogflasher; 10.03.2014 в 09:58.
Старый 10.03.2014, 12:00
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: 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);

Старый 11.03.2014, 07:48
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 3  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Поищите текстовую игру "Гопник". Когда школьником был, поиграл один раз, до сих пор помню. Не шучу
__________________
hauts.ru

Старый 11.03.2014, 13:14
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 4  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Код AS3:
<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>

Старый 11.03.2014, 17:54
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 5  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Я не знаю конечно, как именно у Вас сделаны эти МС..., что в них.. Голый текст на экране и кнопки, или там вообще анимации.
Да, именно так, просто голый текст и кнопки. Анимации нет пока, мне главное понять принцип переходов.

Цитата:
Конечно "крутой" разработчик попытался бы сделать универсальный движок текстовых квестов с возможностью задавать весь сценарий во внешнем файле (XML, например).
Значит всё-таки лучший выход это XML, а-ха... Этого-то я и боялся ))) Придется читать главы Мука и Щупа на эту тему.

Цитата:
Каждому Диалогу присваивается идентификатор, Диалог содержит вводный текст и варианты Ответов. К этим вариантам указаны идентификаторы Диалогов для перехода (по вашей схеме: в МС3 ответ BUT4 ведет к MC4, a BUT3 ведет к МС5. В сценарий каждого Диалога можно также добавить идентификатор фонового изображения или мувиклипа, хранящегося в библиотеке, или даже адрес подгружаемого.
ОК, в общих чертах принцип понятен.

Цитата:
Для мувиклипов (или swf-файлов) можно также указывать кадр — это позволит делать ветвящиеся диалоги с одним клипом на фоне, не заменяя объект мувиклипа на фоне (локацию) при каждой фразе и ответе, когда это не нужно. Соответственно в коде движка был бы класс сценки, или диалога, умеющий по своей ноде XML составить "кадр".
Хмм, то есть будет вообще ОДИН мувиклип, например с 80 кадрами, и каждому кадру соотвествует свой id... Хардкорно!

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

Цитата:
Код:
<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>
Идентификаторы вопросов и ответов помогут также сохранить Историю, то есть полноценный сейв игры со всеми сделанными выборами игрока.
Ок, спасибо, теперь есть на что ориентироваться.


Цитата:
Сообщение от Hauts
Поищите текстовую игру "Гопник". Когда школьником был, поиграл один раз, до сих пор помню.
Глянул на скрины : ) Судя по Гуглю она только досовская, флэш-аналоги с исходниками врядли есть.



Babylon
, хм, у вас другая структура XML... То есть так лучше, оптимальнее?
Вариант от Волша внешне кажется более простым для сборки, все объекты в одной ноде. Но как знать.

Старый 11.03.2014, 18:23
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 6  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Код AS3:
<dataset>
<коллекция классов структуры контейнеров>
<Класс контейнера>[<Класс контента></Класс контента>]
</коллекция классов структуры контейнеров>
<коллекция классов контента>
<Класс контента>
<список ids класса контейнера></список ids класса контейнера>
</Класс контента>
</коллекция классов контента>
</dataset>
Ноды контейнеров заполняются динамически, но если в ноде контейнера есть одноименная [нода контента] она перекрывает динамически заполняемое содержимое контейнера.

Создать новую тему Ответ Часовой пояс GMT +4, время: 12:36.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
квест , организация уровней , подход

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 12:36.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.