Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];

Вниз

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

 
Michael Makushev   (2003-06-02 11:49) [0]

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

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

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


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

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

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

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

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

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


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

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


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

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


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

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

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

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


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

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


 
Кен   (2003-06-04 01:15) [6]

cyborg ©
> Кен ты не прав, скоро сам поймёшь.
В чём конкретно ?
Если можешь объяснить, то объясни.


NailMan ©
> Это, фактически, тебе придется писать свой Pascal. Гемор
> и еще раз гемор.

Ничего подобного. Всего три команды.
1. set - Положить в сумку вещь.
2. add - Добавить некоторое колличество вещей.
3. if - Проверить и в зависимости от этого вести диалог.
http://www.triponavtika.narod.ru/game.zip

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

Я бы был только счастлив.


 
Omar2002   (2003-06-07 17:38) [7]

Если напишете что-нить подобное, то скинте мне потом ссылочку плиз, а то времени не очень много, а проблемка такая есть.


 
aassad   (2003-06-07 19:01) [8]

Удалено модератором


 
Omar2002   (2003-06-09 11:58) [9]

Удалено модератором


 
Michael Makushev   (2003-06-09 14:02) [10]

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


 
Кен   (2003-06-10 01:39) [11]

Michael Makushev
> А почему только "сумка героя"?
Я не сказал "только", я сказал, что этого достаточно для простейшего квеста. А наворачивать можно как угодно. К каждому герою или вообще к каждой фигне можно прилепить по своей сумке. Или даже по нескольку сумок.

Само понятие сумки давольно широкое. Зависит от того, как отображать то, что в ней лежит. В ней могут лежать записки, карты местности, фотографии. Сумка может представлять из себя, например, дневник. Где каждый предмет - это запись о каком нибудь событии. Или быть списком выполненных/полученных/невыполенных заданий. И так далее.


 
Michael Makushev   (2003-06-10 10:20) [12]

Проще выражаясь это некоторая база объектов с которыми работает тот игровой объект, которому она принадлежит?


 
Кен   (2003-06-11 01:26) [13]

> Проще выражаясь это некоторая база объектов с которыми работает
> тот игровой объект, которому она принадлежит?

Помоему так не проще, а запутаннее.


 
Всеволод Соловьёв   (2003-06-11 09:11) [14]

>> Проще выражаясь это некоторая база объектов с которыми работает
>> тот игровой объект, которому она принадлежит?
>Помоему так не проще, а запутаннее.

По-моему, так проще.


 
Кен   (2003-06-12 02:01) [15]

Может тем кто меня прочитал так и проще, а тем, кто не читал фиг чё поймут.


 
Всеволод Соловьёв   (2003-06-12 09:02) [16]

2Кен
Типа ты великий учитель, пророк и объяснятель?


 
cyborg   (2003-06-12 20:19) [17]

Другими словами это называется переменные, а ты про какие-то сумки твердишь, данный сайт не принадлежит теме торговля и затаривание, поэтому говори переменные, типы, константы. :)


 
Кен   (2003-06-13 01:59) [18]

> Всеволод Соловьёв © (12.06.03 09:02)
> 2Кен
> Типа ты великий учитель, пророк и объяснятель?

Так меня называют мои фанаты. Присоединяйся !

> cyborg © (12.06.03 20:19)
> Другими словами это называется переменные, а ты про какие-то
> сумки твердишь, данный сайт не принадлежит теме торговля
> и затаривание, поэтому говори переменные, типы, константы.
> :)

То есть в Фолауте ты носишь с собой не деньги в сумке, а переменные в базе данных ? Может и в реальной жизни у тебя не кошелёк с деньгами, а база данных с переменными ?


 
cyborg   (2003-06-13 10:11) [19]

В Фаллауте персонаж много чего носит в руках, в сумке, в машине, в персонажах, в шкафах. Кстати там можно шкаф забрать, только силёнок не хватает, говорит нет места :). А в реальной жизни деньги ношу в кармане, а не в кошельке и не в базе данных, база данных у меня в голове.
А ты ничего не слышал об авоське?


 
Michael Makushev   (2003-06-16 11:51) [20]

2Кен
Вообще говоря, даже если не затрагивать конкретный язык (хотя на данном сайте/форуме это является существенным), выражения "объект/данные/база объектов..." является для программиста более понятной и более удобной для реализации нежели понятия "сумка".
А прикинь что это будет не человек, а пятиметровая машина из BattleTech? Куда ей было бы логичнее запихнуть сумку? Даже новички которые начинают писать игры, в принципе должны уже понимать основы ООП, или на крайний случай обычного программирования.
Теперь что касается парсера. Конечно понятно что этот разговор не для данной части форума, поэтому буду краток.
Где ни будь через недельку я выложу на своем сайте пример и свои наработки по использованию очень интересной, на мой взгляд, системы парсинга/интерпретации - GoldParser. Кто интересуется могут мне "намылить", я разъясню где, чего и как.
wizard@lenta.ru


 
wild_arg   (2003-06-16 17:55) [21]

2Michael Makushev:
А что ты подразумеваешь под гибкостью сценария:
1. То, что сценарий игры всегда можно будет переписать без особых временных затрат и минимальной перекомпиляции ядра?
2. То, что игра должна иметь нелинейный сюжет, т.е. имеется несколько целей в игре, которые достигаются некоторыми действиями и прийти к этим целям игрок может так, как захочет/сможет?


 
wild_arg   (2003-06-16 18:01) [22]

...в продолжение темы :)
иногда задумывался: почему скучно будет играть в самостоятельно написанную игру - потому что ТЫ(автор) будешь знать все - где что лежит или как это лучше достать, что надо отвечать в диалогах и на что это будет влиять (на уровне переменных) и т.д. и т.п. etcetera короче :)
...всегда хотелось написать что-то, где объекты будут жить по установленным правилам - а как они будут жить - это их дело...
Что же, побольше Random-а или как? Какие по этому поводу мысли?


 
NailMan   (2003-06-16 18:08) [23]

Я именно это и делаю у себя. Диалоги конечно же я буду знать заранее, но вот найти на карте то место и того кента для этого диалога и для дальнейшего развития - главная цель игрока.



 
wild_arg   (2003-06-17 00:32) [24]

:) пошла ностальгия....
кто-нибудь помнит игру Elite на Spectrum? вот где было царство Random-а....
в ZX-Ревю писалось про Elite: ...количество галактик там настолько велико, что если просматривать по одной в секунду, то на это уйдет около 70 лет...
так же прелесть ее была в недетерминированости...

...чем не сценарий для нового MUD-а?


 
Asteroid   (2003-06-17 02:40) [25]

[оффтопик]
> wild_arg (17.06.03 00:32)
А у тебя не осталось первой версии (не Elite plus, а просто Elite)?


 
Кен   (2003-06-17 02:54) [26]

> Michael Makushev (16.06.03 11:51)
> 2Кен
> Вообще говоря, даже если не затрагивать конкретный язык
> (хотя на данном сайте/форуме это является существенным),
> выражения "объект/данные/база объектов..." является для
> программиста более понятной и более удобной для реализации
> нежели понятия "сумка".

Но ведь сумка и база данных - это одно и тоже. Программист обязан увидеть в сумке базу данных. На то он и программист чтобы видеть предметы языком программирования.

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

Ждём. Напиши тут когда выложишь. Будет интересно посмотреть.


> wild_arg (16.06.03 18:01)
> ...в продолжение темы :)
> иногда задумывался: почему скучно будет играть в самостоятельно
> написанную игру - потому что ТЫ(автор) будешь знать все
> - где что лежит или как это лучше достать, что надо отвечать
> в диалогах и на что это будет влиять (на уровне переменных)
> и т.д. и т.п. etcetera короче :)
> ...всегда хотелось написать что-то, где объекты будут жить
> по установленным правилам - а как они будут жить - это их
> дело...
> Что же, побольше Random-а или как? Какие по этому поводу
> мысли?

Рандом - это тупость. Никогда хорошие диалоги рандомом не напишешь. Хороший сценарий - это всегда произведение искусства талантливого автора. Как написанная книга в докомпьютерную эпоху.


 
Michael Makushev   (2003-06-17 12:00) [27]

2wild_arg
Именно и перывй и второй пункт!
Сценарный подход при своем недостатке к быстродействию имеет ещё такое преимущество как открытость (вспомните StarCraft).
Про нелинейность и говорить-то стыдно. Именно её отсутсвием и страдает большинство приключенчиских игр (хороший пример - Privateer2 - конечно не чисто приключенческое, но кто играл тот знает про её сюжет, прямой как дедушкина клюшка).


 
NailMan   (2003-06-17 13:09) [28]

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


 
wild_arg   (2003-06-17 13:46) [29]

2Michael Makushev
...а что ты там говорил про разработку парсера? область применения можешь пояснить. А вообще язык для сценария должен быть, например, как JScript. Там что хорошо, так это то, что у объекта всегда можно запросить любое свойство, если оно null, то его нет, да еще и при этом легко добавлять свойства в объект.
Например:
Игрок.Пилить(Дерево) //не получится, т.к. нет такого метода
...
if Игрок.Пила is not Null {Игрок.Пила.Пилить(Дерево)}
...

*синтаксис чисто примерный

2Asteroid
А тебе в каком варианте? Для ZX Эмулятора? или PC-шный вариант?

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


 
Asteroid   (2003-06-17 19:36) [30]

> wild_arg (17.06.03 13:46)
PC. Просто я играл давно в него - очень понравилось, даже тетрадка с расценками на планетах осталась :) В инете нашел только Elite Plus - но он...не такой какой-то...


 
Кен   (2003-06-18 02:39) [31]

> wild_arg (17.06.03 13:46)
> Рандом вовсе не тупость, а очень полезный инструмент при
> умелом использовании,

Продемонстрируй это при написании диалогов.

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

Тогда расскажи нам о чём пойдёт речь в третей части Матрицы ?


 
Alek Aaz   (2003-06-18 07:11) [32]

2Кен
>Тогда расскажи нам о чём пойдёт речь в третей части Матрицы ?
Легко. Нео начнет лепить машины в "реальности". Середина фильма - Нео лепится в "реальности" с типом который выжил после падения Зеона и у которого в мозгах сидит мистер Смит (оба крутые кунфуисты). Убивает. Проникает в "новую" "матрицу". Все там ломает и добирается до Архитектора. Диктует ему свои условия. Машины и люди заключают перемирие. Люди вылазят на поверхность. Хеппи Енд.
Последние кадры. Камера отъезжает от Нео, Тринити, Морфея стоящих на скале, картинка раскладывается на символы и оказывается что "реальность" в которой они победили всего лишь новая "матрица" а Нео, Тринити и Морфей мирно дрыхнут в коконах.
Скучно...

2Asteroid
http://www.elitegames.ru/ - лучший сайт по элитоподобным играм. На нем собственно есть Elite для PC и Plus и Кладовская Elite 3 для Спектрума(с эмульготором спектрума) плюс несколько современных вариантов. ИМХО - РС версия фуфло. Спектрумовская версия намного лучше.
http://letalka.sourceforge.net/ - ребята пытаются своять свою Елиту. Особенно ценен был форум. Накрылся :) красной шляпкой. Но может быть что-нибудь востановят.
http://ionblade.narod.ru/ - ребята также пытаются своять свою Елиту. Пока получается у них плоховато.

PS.Сам ее делаю :)


 
wild_arg   (2003-06-18 10:13) [33]

2Alek Aaaz
:) Матрица 3 в твоем сценарии - круто!....сам придумал? Если да, тогда еще круче


 
Alek Aaz   (2003-06-18 10:32) [34]

2wild_arg
Сам, сам... в сентябре посмотрим какой из меня пророк :)

2Michael Makushev
Ребята на леталке вроде частично восстановили форум. "Старый программерский". Вроде мелькали интересные идеи и про скрипты что-то мелькало(правда кажется про скриптование движений корабля в демках).


 
wild_arg   (2003-06-18 17:24) [35]

Кен © (18.06.03 02:39)
> Продемонстрируй это при написании диалогов.
Ты не видел такую программу как Болтун? Поищи по Яндексу, скачай и поговори с ним - диалог на рандоме


 
Кен   (2003-06-19 03:59) [36]

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


> wild_arg (18.06.03 17:24)
> Кен © (18.06.03 02:39)
> > Продемонстрируй это при написании диалогов.
> Ты не видел такую программу как Болтун? Поищи по Яндексу,
> скачай и поговори с ним - диалог на рандоме


Конечно просчитать сценарий Болтуна практически невозможно. Но я уж как-нибудь помучаюсь от сценария талантливого автора.


 
Asteroid   (2003-06-20 23:22) [37]

Между прочим, Nailman подкинул любопытную идею. Если случайным образом генерировать карту и расставлять объекты по определенным правилам (например, между артефактом и получателем должно быть не менее трех монстров второго уровня), может получиться весьма неплохая вещь. А если еще для получения очередного предмета нужно будет достать три случайных из десятка - игру будут проходить по несколько раз :) (была подобная игра - Freddy Fish)


 
Michael Makushev   (2003-06-23 12:41) [38]

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


 
ффф   (2003-07-03 02:19) [39]

HTTP://www.tetki.ru


 
J911   (2003-07-03 21:29) [40]

Робята, а как насчет нелинейности с помощью нейронных сетей?



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

Форум: "Игры";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.57 MB
Время: 0.008 c
1-72776
alexnmsk
2004-01-12 16:07
2004.01.23
Динамические массивы


1-72753
Anton.
2004-01-13 16:43
2004.01.23
TGetExtentsFunc = function(Index: Longint): Integer of object;


1-72718
Kelvin
2004-01-12 01:22
2004.01.23
Взаимодействие с html


6-72855
Closer
2003-11-19 12:55
2004.01.23
TFTP


7-72958
buba
2003-11-08 01:35
2004.01.23
читать из ps/2 порта?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский