Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Представление о структуре игры (часть 2)


Страницы:   1 2 3

Michael Makushev ©   (2003-06-02 11:49:00) 

Продолжая тему логичеких структур в игре поднимаю следующий вопрос: Кто и как реализует логические сценарии? И как их сделать более гибкими?
Опять выскажу свое мнение: Использование своего скриптового языка? Или может быть какие-то структуры записей?

Есть интересные решения на триггерно-семафорных структурах. То есть допустим ИО (игровой объект) совершает какое-то действие 1 и срабатывает триггер, устанавливающий семафор 1 (вообще следовало их назвать флагами, но просто так звучит лучше, хотя разница есть). Затем пытается сделать действие 2 и срабатывает другой триггер, который проверяет установлен ли семафор 1. Если нет, то действие запрещается. И к тому же в перфом тригерре есть такая же проверка (на запрет повторного действия).

Это так навскидочку...может ещё кто ...?


cyborg   (2003-06-03 10:42:00) [41]

Кен ты не прав, скоро сам поймёшь.


NailMan   (2003-06-03 09:45:00) [42]

Alek Aaz ©
Не совсем. Если эти переменные описаны в самом скрипте.
ИМХО. Можно сделать набор правил и им следовать
Типа IF %obj and %obj.nastroenie> 20 then %obj.say(20)

Это, фактически, тебе придется писать свой Pascal. Гемор и еще раз гемор.
Я у себя буду делать проще - как в IW2-EOC. Я уже говорил про отдельные DLL, и вот что надумал:
вся логика миссии(задания) хранится в DLL, которая обменивается с ядром через сеть флагов в составе структуры переменной или статической размерности. DLL юзает текстовый файл со строчками диалогов просто как с контейнером. Такой подход к сценарию немножко негибок, но зато избавляет от написания интерпретатора скрипт-языка и геморройной ручной связки событий и написания этого здоровенного скрипта. Тем более скорость при юзании DLL-миссий будет на порядок выше чем скрипт.

Типа это даже лучше для дальейшего юзания игры - если будет скрипт, то кто-то(пираты какие-нить) смогут легко сделать свою игру на основе твоей с вытекающими последствиями. А с использованием DLL-миссий все жестко "прошито" и придется уже с тобой контактировать, чтобы иметь SDK твоей игры для написания новых DLL-миссий. Хотя я могу на этот счет ошибаться.


Alek Aaz   (2003-06-03 03:48:00) [43]

> Использование каких-либо переменных-триггеров - это однозначно жесткая привязка к коду программы.
Не совсем. Если эти переменные описаны в самом скрипте.
ИМХО. Можно сделать набор правил и им следовать
Типа IF %obj and %obj.nastroenie> 20 then %obj.say(20)
Как пока еще не придумал. Лучше(для гибкости) конечно скриптами, но боюсь тормозить будет...


Кен   (2003-06-03 03:19:00) [44]

Опять эта тема поднимается. Обсуждалось же пару недель назад.
Через сумку героя можно всем управлять. Этого вполне достаточно чтобы игру написать.
Есть у него в сумке пистолет, значит может им пользоваться. Нету, значит нету.
И диалоги с персонажами игры. Чтобы получать задания и брать у них одни вещи и отдавать другие.
Тестер диалогов мой : http://www.triponavtika.narod.ru/game.zip
Если кто невидел и если кому надо.


NailMan   (2003-06-02 17:20:00) [45]

Сейчас я в своей игре к самой реализации сценария не приступал, но расскажу как делал в первой своей(трагически погибшей) ДОСовской игре-РПГхе.

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

Очень гибкий и легкий механизм создания сценария. Можно изменять что угодно не изменяя код программы.

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

Собсно сейчас так и делают.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо