Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.04;
Скачать: CL | DM;

Вниз

Реализация изменцивых от ситуации диалогов в RPG:   Найти похожие ветки 

 
greenrul ©   (2003-05-19 02:55) [0]

Кажется это называется скрипты. Хочу поведать и посоветоваться - я собираюсь писать RPG и пока разработка только началась, хочу прояснить эту деталь. Я хочу все действия в игре, диалоги, события упростить - не вбивать их намертво в движок, а написать свой маленький язык, на котором я мог делать сам сюжет. Идея такая:

Есть действия, события (да/нет), объекты.
Объекты делятся на вещи для инвентаря, людей, других объектов в мире (например коробка). Действия применимы только к объектам - к каждому типу свое. Примерные действия - взять, дойти до, убить.
События - это булевские переменные. Например есть_в_инвентаре?, жив_ли?, выполнено_ли_занание? и т.д.

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

--------------------
new_dlg
* IF stone_bringed GIVE hero mega-sword SAY Hello, my friend, thank you for bringing me this fu**ing stone! Please take a gift from me!!! ANSWER_1 Thank you, and see you later ANSWER_2 Ok, now may i see your shop inventory? SHOP kuznec

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

1: SAY %5 ANSWER_1 %2 GO #4 ANSWER_2 %3 GO #5 - это значит : идет первый диалог, сперва вас привествуют пятой фразой, первый вариант ответа - вторая фраза, если я вибираю это, то идет 4 диалог, если я выбираю второй вариант ответа, идет 5ый диалог.


Уфф... надеюсь никого не запутал. Какие есть комментарии и замечания к этому творению? Хранить думаю в отдельном ini файле, не загружая его полностью, а читая/записывая его.


 
greenrul ©   (2003-05-19 03:17) [1]

дико извиняюсь за грубые опечатки - писал поздно, руки уже не повиновались


 
Кен ©   (2003-05-19 05:00) [2]

Хочешь пример диалогов ? Скачай мою мини-игру : http://www.triponavtika.narod.ru/navigame.zip
Пока всё давольно по-левому выглядит. Но речь о диалогах.

Диалоги в виде открытых текстовых файлов. Один персонаж - один файл. Каждый раз когда ты обращаешься к персонажу загружается файл и по нему ведётся беседа. Можешь не вылезая из игры подправлять файлы и смотреть что как работает.

Скрипт состоит всего из ТРЁХ команд.
set apelsin 1 - Положить в сумку героя один апельсин.
add apelsin 1 - Положить в сумку героя ещё один апельсин к уже имеющимся. ( или выложить если будет -1 )
if apelsin=1 goto 10 - Перейти к строке 10 если у героя в сумке один апельсин.
И ВСЁ ! Помоему трёх команд достаточно. Но можно обсудить.


Можно ещё добавить две команды. Для записи событий в дневник героя и проверки их наличия.
Дневник - это типа памяти. Например, герой поговорил с персонажем игры по имени Гарфельд. Пишем в дневник. "Поговорил с Гарфельдом." Далее если мы опять обратились к Гарфельду, то он сделате проверку на эту запись в дневнике и скажет "Привет, старый знакомый !"


 
cyborg ©   (2003-05-19 10:21) [3]

Кен трёх команд для RPG недостаточно, нужно не только давать и брать предметы, но и устанавливать новые персонажи, показывать карту, улучшать характеристики персонажа и т.д.

greenrul Думаю лучше ввести блоки ограничивающиеся какими либо символами, например [], у тебя так в диалоге может выполнятся только одна команда, используя блоки в них можно хранить несколько команд, например [дать пирожок;показать картуXY;дать пульки;установить флаг выполнения квеста;дать XX очков опыта]

И ещё, выкладывай исходник квест-интерпретатора, думаю всем будет интересно, может кто внесёт улучшения.


 
greenrul ©   (2003-05-19 14:23) [4]

окей, я в любом случае как более-менее демка будет - выложу


 
Кен ©   (2003-05-20 01:24) [5]

cyborg ©
> Кен трёх команд для RPG недостаточно, нужно не только давать
> и брать предметы, но и устанавливать новые персонажи, показывать
> карту, улучшать характеристики персонажа и т.д.

А как ты в реальной жизни можешь "установить новые персонажи" ? Родишь что ли ? Все персонажи устанавливаются в начале игры или уровня и всё.
Если обязательно надо ввести кого то нового в игру, то тебе могут дать ключ от комнаты, где этот кто-то сидит. Или ты сам сможешь освободить его из тюрьмы. Или ещё что-нибудь. Мало ли вариантов ?

> показывать карту,
Ну положи главному герою (то есть нам) в сумку карту. А посмотрит её он уже сам.

> улучшать характеристики персонажа и т.д.
Улучшать характеристики персонажа можно тоже через сумку. Положить ему в сумку супер отмычку или какой-нибудь супер пистолет. Вот и улучшение.

Вообще для этого игра должна предусматривает улучшение характеристик персонажа. Да и мало ли что она может ещё предусматривать ?


 
cyborg ©   (2003-05-20 10:34) [6]

Кен мысли глобальней, персонажи могут придти и уйти, если обидел какого-нибудь босса то появляются его слуги и т.д.

Чтобы показать карту не нужно ничего никуда ложить, нужно просто открыть место на карте игроку.

Опять сумка :), эдак у тебя не игра будет, а сумколазание.

>>Вообще для этого игра должна предусматривает улучшение характеристик персонажа.
>>Да и мало ли что она может ещё предусматривать ?

Читай cyborg © (19.05.03 10:21)


 
Soft ©   (2003-05-20 18:08) [7]

>>greenrul © (19.05.03 02:55)
>>Реализация изменцивых от ситуации диалогов в RPG: [Delphi, Windows]

Посмотри TES в Morrowind. На данный момент они создали игру, которую могут доделывать все желающие, внутренний язык круче чем в 1С, AI всех пресонажей реализован на этом скрипте, графика и модели скелеты отдельные текстуры, звуки - все реализовано в виде одной большой, редактируемой базы данных. А вот движок у них не оптимизирован:(( Для максимальных требований нужен GeForce4(Ti) и Athlon XP/P4 2500.


 
Кен ©   (2003-05-21 01:48) [8]

cyborg ©
> Кен мысли глобальней, персонажи могут придти и уйти, если
> обидел какого-нибудь босса то появляются его слуги и т.д.

Откуда появляется слуга ? Из космоса прилетает ?

Чтобы босс обиделся на разговоры нужно, чтобы через разговоры можно было менять характеристики босса. Доброжелательность/агрессивность в Фоллауте. Вопрос в том, есть ли у босса эта характеристика. В Хитмане, например, нету. Однако игра классная. Если же есть, то в принципе получится всё тоже самое. Сумка и флаги. Только не у главного героя, а у каждого персонажа.


Soft ©
> Посмотри TES в Morrowind. На данный момент они создали игру,
> которую могут доделывать все желающие,

А где её посмотреть ? Её можно где-нибудь скачать ?


 
Asteroid ©   (2003-05-21 02:13) [9]

> Кен © (21.05.03 01:48)
> А где её посмотреть ? Её можно где-нибудь скачать ?
Она целый диск занимает.


 
Кен ©   (2003-05-21 04:12) [10]

Ну и что ? За неделю скачается. Было бы откуда тянуть.


 
cyborg ©   (2003-05-21 12:54) [11]

Кен зачем же переходить из крайности в крайность, когда я говорил мысли глобальней это значит разверни своё воображение шире, а не прилетай людей из космоса.


 
TButton ©   (2003-05-21 23:57) [12]

2 Кен
Мдя... два вопроса:
1.Почему телка все время нервничает?
2.Почему такое еб****ое управление?


 
Кен ©   (2003-05-22 02:05) [13]

TButton ©
> 1.Почему телка все время нервничает?
Потому, что нету подходящей анимации. И где её взять непонятно. Хотелось бы анимацию Томб-рэйдера с такими движениями как : весение на руках, подбирание предметов, нажимание на рычаги, вождение транспорта.
Знать бы где это взять.

> 2.Почему такое еб****ое управление?
Потому, что это только начало.
Сейчас уже мышь приделал. Чтобы мышью можно было поворачивать в стороны и смотреть выше ниже. Старался сделать по типу GTA3.
Выложу чуть позже, когда изменений накопится побольше.



cyborg ©
> Кен зачем же переходить из крайности в крайность, когда
> я говорил мысли глобальней это значит разверни своё воображение
> шире, а не прилетай людей из космоса.

А куда шире ? Вот, что вообще может делать персонаж игры ? Давайте список составим :
1 ) Атаковать.
2 ) Пойти в заданную точку.
Что ещё то ? Можно ещё собирание предметов добавить или их перетаскивание. Но смысла в этом копейка.

Плюс ещё действия по умолчанию. Когда персонаж закончил атаку или пришёл в заданную точку.
1 ) стоять на месте.
2 ) гулять в заданном пространстве.
Это всё может сопровождаться любой анимацией. Можно находясь на одном месте танцевать или лежать и спать или что угодно.



Страницы: 1 вся ветка

Текущий архив: 2003.12.04;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.008 c
4-11719
MegaBass
2003-10-09 14:26
2003.12.04
Спец функции API


4-11754
otistarda
2003-10-08 16:13
2003.12.04
Консоль


1-11610
Peter
2003-11-25 22:13
2003.12.04
открытие txt-файла


6-11673
Erazzer
2003-10-06 23:15
2003.12.04
Передача звукового потока


3-11592
vlad_ir
2003-11-16 16:13
2003.12.04
очищение базы данных