Форум » » живой игровой мир » Ответить

живой игровой мир

noname: это особое направление для УРК-работ: пусть все NPC живут своей жизнью, а не ждут ГГ. я подготовил пример, где они могут ходить по всем доступным локациям или не ходить (всего 4-ре персонажа, номер персонажа, которым будет управлять игрок задан в переменной 'игрок')

Ответов - 136, стр: 1 2 3 4 5 6 7 All

noname: :инициализация // начало инициализации invkill perkill игрок = 2 ; номер актёра // актёры instr актёр1имя = Честный Галантный Рыцарь актёр1место = 11; номер поля instr актёр2имя = Умиротворённый Обаятельный Мудрец актёр2место = 21 instr актёр3имя = Нежная Добрая Принцесса актёр3место = 22 instr актёр4имя = Бесшабашный Развязный Дракон актёр4место = 12 актёров = 4; обязательно должен быть хотя бы один актёр // поля instr поле11вид = на яркой солнечной поляне поле11_се = 12; куда переход, если 0- перехода нет поле11_за = 0 поле11_юг = 0 поле11_во = 21 instr поле21вид = у красивого, освежающего водопада поле21_се = 22 поле21_за = 11 поле21_юг = 0 поле21_во = 0 instr поле22вид = под отвесной величественной скалой поле22_се = 0 поле22_за = 12 поле22_юг = 21 поле22_во = 0 instr поле12вид = в удивительно прозрачном мелком ручейке поле12_се = 0 поле12_за = 0 поле12_юг = 11 поле12_во = 22 полей = 22;максимумы по горизонтали и по вертикали // завершение инициализации goto ГЛАВНАЯ_ЛОКАЦИЯ end :ГЛАВНАЯ_ЛОКАЦИЯ proc мотор ; ходят все остальные proc отображение goto идёт_игрок ; вне очереди, иначе- невероятно усложнится алгоритм end :отображение pln Вы #%поле#актёр#игрок$место$вид$ pln Здесь находятся: pln счётчик = 0 :loop_2 счётчик = счётчик + 1 if актёр#счётчик$место = актёр#игрок$место then pln - #%актёр#счётчик$имя$ if счётчик<актёров then goto loop_2 end :мотор // начало движения идёт_кто = 0 :loop_1 идёт_кто=идёт_кто+1 дел = 0 if поле#актёр#идёт_кто$место$_се <> 0 then дел=дел+1 & идёт_куда#дел$=поле#актёр#идёт_кто$место$_се if поле#актёр#идёт_кто$место$_за <> 0 then дел=дел+1 & идёт_куда#дел$=поле#актёр#идёт_кто$место$_за if поле#актёр#идёт_кто$место$_юг <> 0 then дел=дел+1 & идёт_куда#дел$=поле#актёр#идёт_кто$место$_юг if поле#актёр#идёт_кто$место$_во <> 0 then дел=дел+1 & идёт_куда#дел$=поле#актёр#идёт_кто$место$_во if игрок <> идёт_кто then proc идёт_актёр if идёт_кто < актёров then goto loop_1 // конец всех действий pln end :идёт_актёр дел=дел+1 ; добавляем ожидание выбранное_дело = rnd#дел$ ; от 1 до 'дел' включительно if выбранное_дело = дел then goto skip if актёр#идёт_кто$место = актёр#игрок$место then pln #%актёр#идёт_кто$имя$ вышел актёр#идёт_кто$место = идёт_куда#выбранное_дело$ if актёр#идёт_кто$место = актёр#игрок$место then pln вошёл #%актёр#идёт_кто$имя$ :skip end :идёт_игрок if поле#актёр#игрок$место$_се <> 0 then xbtn идёт,{идёт_куда1 = поле#актёр#игрок$место$_се}, пойти на север if поле#актёр#игрок$место$_за <> 0 then xbtn идёт,{идёт_куда1 = поле#актёр#игрок$место$_за}, пойти на запад if поле#актёр#игрок$место$_юг <> 0 then xbtn идёт,{идёт_куда1 = поле#актёр#игрок$место$_юг}, пойти на юг if поле#актёр#игрок$место$_во <> 0 then xbtn идёт,{идёт_куда1 = поле#актёр#игрок$место$_во}, пойти на восток btn ГЛАВНАЯ_ЛОКАЦИЯ, ждать end :идёт актёр#игрок$место = идёт_куда1 goto ГЛАВНАЯ_ЛОКАЦИЯ end

noname: что дальше: 1. персонажи должны выполнять дейсвтия наугад одно из доступных действий важно научиться составлять списки доступных действий 2. дифференцировать персонажей по свойствам может ли некто сдвинуть шкаф зависит от его силы я абсолютно против того, что бы в действии явно прописывалось, кто его может сделать. взаимодействия персонажей и действия с вещами должны строиться на обработке значений их свойств. 3. добавить чуточку интеллекта. очень просто: у каждого персонажа будет список желаний и список страхов,персонаж не станет делать действия из списка страхов, а если в списке доступных действий есть то, что он хочет- он делает это (в данном случае все желания одинаково желанны) 4. добавить экономику: расставим в мире прилавки с товарами действия персонажей могут приводить к увеличению или уменьшению кол-ва товаров на прилавках. при смене дня продавец уменьшает на 1 цену тоаров, которых стало больше и увеличивает на 2 цену товаров, которых стало меньше. это ориентировочно. 5. добавить особые свойства персонажей например: дракон наступил на ногу торговцу теперь торговец не любит дракона(свойство отношение к) теперь он не станет дарить дракону подарок, а при встрече с рыцарем сможет сделать заказ: "вызвать дракона на дуэль". здесь действие подарить подарок зависит от отношения действие заказать на кого-либо дуэль возможно, если рыцарь рядом и так же сависит от отношения. ну или усложнить их поведение можно так: рыцарь может поцеловать принцессу только после того, как она ему улыбнётся 6. это всё для обычных тупых NPC, что бы создать взаимосвязанный социум, а для некоторых NPC поведение будет дописано дополнительно, если они задействованы в сюжетной линии.

Хломидоманад: У меня в "Корпорации" был, кажется, один (а может, больше, но я забыл) действительно автономный актер - турист на вокзале. Был, кроме того, народец у лифта и еще кучка "псевдоавтономных"... А в 300,000 евро был Гэри, который таскался следом за гг и тоже претендовал на некоторую самостоятельность... не совсем такую, как пишешь ты, но тоже вносящую определенный оживляж в геймплей. Особого направления, соответственно, здесь не вижу. Ни для урки, ни, тем более, для текстовых игр в целом. Просто никто пока не брался написать на урке игру, где эти элементы автономии нпц играли бы существенную роль в игровом процессе. Если ты хочешь этим заняться - обеими руками поддерживаю инициативу. Только тогда нет смысла выкладывать какой-то промежуточный код:). Пункты в последнем посте забавные, неплохо бы еще в последствии проработать для каждого обитателя специфический маршрут (скажем, дракон не потащится в город, а принцесса - к дракону в пещеру). Главное - не делать идею "своей жизни" самоцелью. Все равно в первую очередь важна нормальная игра с полноценным сюжетом. А "живые" нпц - только средство для достижения эффекта погружения в эту игру.


noname: на самом деле мне хочется сделать не игру, а некоторую фэнтезюшную модель социума. поэтому пункт 6 меня не интересует напрочь (скажем, дракон не потащится в город, а принцесса - к дракону в пещеру). она не войдёт к нему в пещеру, если у неё по свойствам будет прописано, что она порядочная девушка и в правилах поведения будет прописано что порядочные девушки не заходят в жилище плохих парней и для дракона будет прописано что он плохой парень и для пещеры будет прописано, чьё это жилище... фууу-ух! P.S. ну до такой проработки мира дойдёт не скоро, но по чуть-чуть улучшать ИИ можно меня интересуют общие правила, программирование конкретных событий- нет впрочем просчёт маршрута исходя из конечной цели- тоже задача (штоп не болтались туда-сюда, а шли куда-то конкретно) P.P.S. 1 больше всего меня интересуют самоорганизующиеся процессы 2 ещё меня интересует моделирование социума 3 разве не здорово создать живой мир?

noname: у меня проблема: следующий код досурка понимает, а акурка- нет: qqq = "ждать" if qqq = "ждать" then pln horray pln ok досурка даёт оба сообщения, акурка- ни одного... это катастрофа! см кусок моего следующего примера: if поле#актёр#чей_ход$место$_во <> 0 then дел=дел+1 & дело#дел$="идти на" & арг1#дел$="восток" // ждать - всегда доступное действие без аргументов (необходимо всегда иметь хотя бы одно доступное действие) дел=дел+1 & дело#дел$="ждать" в этом примере делоN хранит действие, которое надо делать арг1N, арг2N и арг3N - аргументы, например дело №73: дело73="привязать"&арг173="лошадь"&арг273="верёвкой"&арг373="к забору" в приведённом куске я составляю список доступных дел потом из них выбираю одно и запускаю на исполнение в досурке мне не хватает xbtn акурка мне начала нравиться, но пусть, блин она работает, и ПОЖАЛУЙСТА- поближе к досурке по системе комманд, чтоб не учить два языка (я с досуркой еле разобрался, а на акурку описалова похуже будут)

Platov: noname, ничего личного, но меньше паники. ) Зачем дублировать сообщение во все темы которые хоть как-то соприкасаются с проблемой? Темы на форуме обновляются нечасто, народ особо не флудит, потому проблем с прочтением всех новых сообщений обычно не возникает. )

Хломидоманад: noname пишет: qqq = "ждать" if qqq = "ждать" then pln horray pln ok С точки зрения правил хорошего тона досурки код присвоения должен выглядеть так: instr qqq=ждать А акурка не выдает ни одного сообщения, потому что повисает... лично у меня. В последних версиях действительно что-то веселое со строками (не работает даже код Корва из учебника, оказывается). Пинать Акелу по этому поводу (и по любому другому) в ближайшую вечность совершенно бесполезно, так как Акурка нынче находится, что называется, on a hiatus. Без xbtn можно прописать абсолютно все, уверяю тебя.

Korwin: Xbtn в досурке сделать можно. Виктор делал программу, которая обрабатывала код квеста и преобразовала xbtn в понятные интерпретатору подпрограммы. По-моему в upload можно ее найти. Идея живого мира очень нравится, хотя сделать ее сложно. Пробовал.:)

Евгений: Вообще, в досурке, по-моему, правильнее писать так instr qqq =ждать if qqq == "ждать" then pln horray pln ok Идея живого мира, меня тоже всегда занимала, но там и правда сложновато. Например, взять перемещение, тот же маршрут нпцов - скорее всего для его создания придется и всю карту со всеми связями между локациями держать в какой-то хитрой структуре. Далее, по нарастающей появляются другие проблемы - двери(и ключи от них), препятствия, по какому маршруту идти нпц если невозможно идти по этому маршруту.. Что делать если гг задержал нпц на пути, отдал ему цель маршрута и теперь он неактуален и т.д. Придется так же прописать реакции нпц на все эти события и перемены. В итоге получится, что на одного нпц уйдет кода больше чем на среднюю игру :)

Хломидоманад: Евгений пишет: if qqq == "ждать" then pln horray Тоже всегда писал так и собирался было поправить, но глянул на код Корва в "Джинне" и, в общем, осекся:). Живой мир - это, конечно, интересно, но вне какого-то конкретного сюжета лично я вряд ли мог бы наслаждаться его живостью больше минут 10-15. Учитывая, что других по-настоящему живых обитателей, кроме меня, там нет, проще выйти на улицу:).

noname: Хломидоманад пишет: Без xbtn можно прописать абсолютно все, уверяю тебя. скажи- как и буду писать в досурке. и будет ли понят "instr qqq =ждать" после "then"? например, как надо было писать вот эти четыре строчки: (делоN= действие номерN, арг1N= его первый аргумент, .. ,аргMN= его аргумент номер M переменная "дел" - счётчик возможных для данного персонажа дел) " if поле#актёр#чей_ход$место$_се <> 0 then дел=дел+1 & дело#дел$="идти на" & арг1#дел$="север" if поле#актёр#чей_ход$место$_за <> 0 then дел=дел+1 & дело#дел$="идти на" & арг1#дел$="запад" if поле#актёр#чей_ход$место$_юг <> 0 then дел=дел+1 & дело#дел$="идти на" & арг1#дел$="юг" if поле#актёр#чей_ход$место$_во <> 0 then дел=дел+1 & дело#дел$="идти на" & арг1#дел$="восток" "

noname: Евгений пишет: Идея живого мира, меня тоже всегда занимала, но там и правда сложновато описанные тобой сложности- далеко впереди. путь в тысячу ли начинается с одного шага - китайская поговорка (для сравнения- путь вокруг китайской стены около 30 ли) что я УЖЕ сделал: см второй пост темы. 1.герои не просто ходят(и ждут)- они ходят везде, где ВОЗМОЖНО, а не там, где им положено 2.человек может играть за ЛЮБОГО персонажа что я ПОЧТИ сделал: переписал свою прогу. мир стал больше, больше персонажей (- мой код ЛЕГКО расширяем), у персонажей появились АТРИБУТЫ сила и ловкость, персонажи :(могли_бы:( брать и выкладывать предметы, а главное- прога переписана в новом стиле- теперь можно будет(когда я пойму, как заставить это работать) ЛЕГКО добавлять новые действия. добавил действие - и все персонажи умеют делать это добавил персонажа - он умеет делать всё, что возможно добавить локацию? - запросто!

noname: Евгений пишет: - скорее всего для его создания придется и всю карту со всеми связями между локациями держать в какой-то хитрой структуре. Далее, по нарастающей появляются другие проблемы - двери(и ключи от них), препятствия, по какому маршруту идти нпц если невозможно идти по этому маршруту.. таких хитрых неписей пока не сделала ни одна фирма ни гражданская ни (можешь поверить на слово) военная. можно пока расширять прогу по чуть-чуть. явления самоорганизации должны проявляться после реализации вычисления изменения отношений персонажей друг к другу и ранжирования действий по отношениям- это делаем только плохим, это- только для хороших и т п Евгений пишет: В итоге получится, что на одного нпц уйдет кода больше чем на среднюю игру :) что уйдёт на одного- тем будут пользоваться все. просто у разных персонажей будут разные свойства, разное отношение к одному и тому же, возможно, какие-то личные воспоминания.(как в симах2: вспомнил про пожар и- заплакал)

noname: Хломидоманад пишет: Учитывая, что других по-настоящему живых обитателей, кроме меня, там нет, проще выйти на улицу:). там их тоже нет. Сократ, чи Диоген ходил днём по улицам с факелом и кричал: "ищу человека!" я ищу в интернете. на ariom.ru. результат поиска пока в процессе обработки.

noname: да, про строки я уже спросил, а как обойтись без xbtn в данном примере: " :идёт_игрок if поле#актёр#игрок$место$_се <> 0 then xbtn идёт,{идёт_куда1 = поле#актёр#игрок$место$_се}, пойти на север if поле#актёр#игрок$место$_за <> 0 then xbtn идёт,{идёт_куда1 = поле#актёр#игрок$место$_за}, пойти на запад if поле#актёр#игрок$место$_юг <> 0 then xbtn идёт,{идёт_куда1 = поле#актёр#игрок$место$_юг}, пойти на юг if поле#актёр#игрок$место$_во <> 0 then xbtn идёт,{идёт_куда1 = поле#актёр#игрок$место$_во}, пойти на восток btn ГЛАВНАЯ_ЛОКАЦИЯ, ждать ..... end "

noname: прошу учесть, что вместо идёт_куда будет дело#дел$="идти на" & арг1#дел$="север" аналогично примеру со строками

Korwin: noname пишет: а как обойтись без xbtn в данном примере: " :идёт_игрок if поле#актёр#игрок$место$_се <> 0 then xbtn идёт,{идёт_куда1 = поле#актёр#игрок$место$_се}, пойти на север if поле#актёр#игрок$место$_за <> 0 then xbtn идёт,{идёт_куда1 = поле#актёр#игрок$место$_за}, пойти на запад if поле#актёр#игрок$место$_юг <> 0 then xbtn идёт,{идёт_куда1 = поле#актёр#игрок$место$_юг}, пойти на юг if поле#актёр#игрок$место$_во <> 0 then xbtn идёт,{идёт_куда1 = поле#актёр#игрок$место$_во}, пойти на восток btn ГЛАВНАЯ_ЛОКАЦИЯ, ждать ..... end Например так: :идёт_игрок if поле#актёр#игрок$место$_се <> 0 then btn идётсе, пойти на север if поле#актёр#игрок$место$_за <> 0 then btn идётза, пойти на запад ... btn ГЛАВНАЯ_ЛОКАЦИЯ, ждать ..... end :идётсе идёт_куда1 = поле#актёр#игрок$место$_се goto #%previous_loc$ end :идётза идёт_куда1 = поле#актёр#игрок$место$_за goto #%previous_loc$ end

noname: Korwin пишет: if поле#актёр#игрок$место$_се <> 0 then btn идётсе, пойти на север тут ты прав. я бестолково обрисовал проблему и решение получилось простое, НО суть глубже: идти так реализовано, потому что направлений мало и их проще перечислить, чем создавать переменную направление_N, а что с остальными командами? команда взять что-либо генерит все кнопки в одном ифе: if ... then xbtn ход_игрока,{дело#дел$="взять" & арг1#дел$=вещь#счётчик$_имя},#%...$ это позволяет легко добавлять вещи в разделе инициализации, не затрагивая кода. какую именно из вещей игрок решил взять- ясно будет только ПОСЛЕ нажатия кнопки. а если аргумент не один, а три?- как тогда? создавать массив процедур NхMxK? теоретически можно в локации ход_игрока выцепить название вещи из btn_caption, НО это уже сложности- прийдётся писать парсер, разбирающий, что НАЖАЛ игрок. в-общем, мысль была такова: с помощью xbtn можно делать то, что без него- нельзя.

noname: а что если в моём примере получится 90 кнопок, как досурка на это отреагирует? да и текст с учётом отображений кто/что сделал в локации, где сидит игрок может быть длиннее 90 строк. но выход - есть! а мэтры пусть мучаются и дописывают досурку с акуркой, а то пишут милену, которая с ними совместима, в то время, как в них не поддерживаются заявленные в описании возможности. если бы милена была не ПОЧТИ а совсем совместима- я бы проверил на ней свою прогу.

Korwin: Спроси у Виктора его программу по конвертации xbtn в подпрограммы.

Korwin: noname пишет: если бы милена была не ПОЧТИ а совсем совместима- я бы проверил на ней свою прогу. не смеши мои тапочки, дружище... задача установления полной совместимости является НЕТРИВИАЛЬНОЙ. Проще сразу писать на Милене, благо автор "жив" и работает над системой регулярно. Или уж тогда правда на QSP, где много действий на одной кнопке присутствуют изначально. Но QSP работает только с целыми числами - если это важно, то надо думать.

Борщевский: noname пишет: а что если в моём примере получится 90 кнопок, как досурка на это отреагирует? Я знаю как я на это отреагирую Если я увижу игру в которой 90 кнопок, я закрою ее сразу же, и больше никогда не буду даже пытаться в нее играть noname пишет: а то пишут милену, которая с ними совместима, она совместима никогда не будет, это даже теоретически невозможно, потому что досурка и акурка несовместимы между собой, а акурка еще и между версиями

noname: Korwin пишет: Спроси у Виктора его программу по конвертации xbtn в подпрограммы. такая прога или невозможна, или не сработает в моём случае. и где спросить Виктора? впрочем, я придумал, как выкрутиться из положения. обойдусь со скрипом без xbtn. уменя на подходе новый концепт - в старом слишком много проблем предвидится на горизонте. буду теперь изучать текстовый ввод и работу со строками. предполагаемая платформа- досурка. хотя, хорошо бы и QSP изучить...

noname: ознакомился с описанием QSP, и вот что я про него скажу: в отличие от урки это НЕ универсальный язык. в урке я могу смело игнорировать их инвентарь и неточное сравнение строк, которые, если я и буду использовать, то не так, как это предполагалось авторами. в QSP я не могу(ведь так?)игнорировать их систему добавления объектов и действий и писать всё по своему. почему это важно: я не терплю ограничений, так как из-за них на каком-то этапе окажется, что я не в состоянии реализовать очередной этап своего замысла. поэтому до урки я выбирал либо C++ либо Delphi. побаловавшись с уркой я понял, что некоторые вещи писать на ней быстрее и проще. При этом моё видение игрового мира таково, что RTADS меня не устроил (это было около полутора лет назад). в моём видении игрового мира персонажи не перемещаются по локациям. даже ГГ. они только думают, что перемещаются. такая иллюзия создаётся переменной "актёр#номер_актёра$_место", которая хранит предполагаемое местонахождение данного персонажа(аналогично и для других объектов). создание иллюзии игрового мира заключается в правильной обработке набора таких переменных каждого объекта. такой подход даёт максимальные возможности автору. вплоть до создания и удаления объектов, персонажей, локаций во время игры, как результат их взаимодействия.(например, если у пары рождается ребёнок- даём ему наугад имя из списка имён его пола, фамилию родителей и отчество, задаём некоторые отношения с родителями и его личные характеристики- и так может смениться сколь угодно много поколений).(или например игрок может редактировать игровой мир в процессе игры, пользуясь мастер-командами, как это делается в MUD-ах, а затем сохранить получившийся квест). когда я писал предыдущий пост, я склонялся к QSP, думая, что он похож на урку... я не могу сказать, что я определился с выбором языка окончательно, но повторюсь, что и RTADS недостаточно универсален для меня. хорошо бы изучить Милену... но есть ли на неё описание, и насколько она страдает багами?

noname: а ещё посты Guest и Борщевского мне не нравятся то ли своим духом антирекламы, то ли какой-то въедливой ехидцей... ну как-то не увидел я рыцарей РИЛ в сверкающих доспехах. в урк-сообществе общение как-то более приятно.

noname: вроде всё продумал, но жаль отказываться от самого начала моего второго примера. полюбуйтесь, как удобно использовать xbtn в этом куске программы: ... instr актёр6имя = Выносливый Пещерный Гном актёр6место = 33 актёр6сила = 4 актёр6ловкость = 3 актёр6вещей = 0 поле33_актёров = поле33_актёров+1 макс_актёров = 6; обязательно должен быть хотя бы один актёр // игрок pln Выбери своего персонажа: выбор =0 счётчик=0 :инициализация_метка_1 счётчик=счётчик+1 xbtn предварительный_выбор_игрока_локация,{выбор=#счётчик$},#%актёр#счётчик$имя$ if счётчик<макс_актёров then goto инициализация_метка_1 // завершение инициализации end ;------------------------------------------------ :предварительный_выбор_игрока_локация pln Твой выбор - #%актёр#выбор$имя$ pln Сила = #актёр#выбор$Сила$ pln Ловкость = #актёр#выбор$Ловкость$ btn окончательный_выбор_игрока_локация, играть этим персонажем xbtn инициализация_метка_1,{счётчик=0 & pln Выбери своего персонажа:}, вернуться в меню выбора end ;------------------------------------------------ :окончательный_выбор_игрока_локация игрок = выбор goto главная_локация end ;------------------------------------------------ ;************************************************ :главная_локация proc мотор_локация ; ходят все NPC proc отображение_локация goto ход_игрока_локация ; последний в очереди end ;************************************************ ... да, два удобных xbtn: коротко и ясно! ну ничего, мучиться буду не я, а игроки... да, и вот ещё что: ну сделай Victor переключение на русский! представь: скачал новый посетитель твою досурку, поиграл в игру про Таню Одел (Горафовская вроде бы), и раз- надо вводить текст по русски. что делать? вышел из игры, почитал тексты- ага, нужен unikbd. что можно сказать по этому поводу? даже если чел вкурсе, что такое unikbd и как его запустить под винду в батнике с игрой, всё равно его это напряжёт. а большинство после такой засады вообще забьёт на досурку. а мой игровой мир с текстовым вводом (делаю) напряжёт его ещё раз. и не раз.

noname: да, кстати: у меня нет unikbd.com... и в и-нете я не смог его скачать (нашёл только образ загрузочной дискеты с ним, но у меня нет дисковода) и в комп фирме не в любой нынче есть досовские утилиты... кто даст ссылку на работающий unikbd.com - тот даст мне возможность продолжать работу над примером№2 в эту тему. я щёлкну спасибо... P.S. видать не часто новички доходят до этапа "попытаться-таки ввести слово по русски" а ведь квесты с русским текстовым вводом в ваших архивах имеются... P.P.S. вот, как кто считает: полезно ли было бы сделать так, что бы в досурке можно было переключаться на русский ввод горячей клавишей?

Евгений: Можно использовать любой переключатель клавиатуры, начиная с keyrus( http://ru.wikipedia.org/wiki/KeyRus ). А если запускать игры в фаре, то там раскладка переключается вместе с виндовской. А ещё я как то написал для досурки декодер в кирилицу через аски коды и anykey. Правда, он не совсем корректен, но его даже использовали. Кажется, Корвин в своем "Джинне из машины".

Mioirel: Смелая задумка. Желаю успехов noname. Кстати, qsp достаточно универсален, и на нем в принципе можно реализовать текстовую игру любой сложности задумки. От cya до roguelike и “чистокровной парсерной if”.

noname: Евгений пишет: Можно использовать любой переключатель клавиатуры, начиная с keyrus Евгений пишет: А ещё я как то написал для досурки декодер в кирилицу через аски коды и anykey. Правда, он не совсем корректен, keyrus тоже несовсем корректен. давным-давно он подглючивал на 386-ых, но и сейчас я слыхал, с ним могут быть проблемы. Евгений пишет: А если запускать игры в фаре, то там раскладка переключается вместе с виндовской. хорошая новость! буду пробовать... вообще-то можно и винду так настроить, что б в дос-окне раскладка переключалась особыми клавишами, но там свои заморочки.

noname: Mioirel пишет: Кстати, qsp достаточно универсален, и на нем в принципе можно реализовать текстовую игру любой сложности задумки. От cya до roguelike и “чистокровной парсерной if”. когда я постнул (год - полтора назад) про трудности в реализации кой-чего на досурке, мне через час-два кинули ссылку на свежеиспечённый qwerty-bench-vic. что касается QSP, то с первого взгляда его описалово выглядит непривычно, а фэны QSP только расхваливают его и хвастаются хорошей технической поддержкой, но кода я не вижу. P.S. на RTADS тоже быстро отвечали на мои запросы, что очень приятно P.P.S. что мне нужно от QSP-мастера (если есть такой, заинтересованный в продвижении этого языка): код проги, в которой будет возможность перемещаться, брать/выкладывать предметы, игрок выбирает любого персонажа для игры, каждый персонаж на своём ходу выбирает любое из возможных действий (наугад с равной вероятностью) и выполняет его. у игрока столько же возможностей, сколько у любого другого персонажа (собственно игрока там и нет- есть номер управляемого им персонажа). только сравнив краткость и читаемость полученного кода с тем, что у меня получается на URQL я смогу оценить QSP, а заодно это будет хорошим пособием для изучения его языка.

noname: Mioirel пишет: Смелая задумка. Желаю успехов noname. пока что моя очередная моя задумка полностью описана в предыдущем посте. у меня там 6-ть персонажей, 9-ть локаций(3х3), предметы пока толком не сделал, но для тестинга их нужно штук 9-ть (а то один из персонажей может утащить их сразу 6-ть за раз). действительно смелая задумка. сейчас долблюсь с вводом игрока, а как доделаю- станет возможным доделать работу с предметами- тогда и выложу полный код.

Byte: noname пишет: в урке я могу смело игнорировать их инвентарь и неточное сравнение строк, которые, если я и буду использовать, то не так, как это предполагалось авторами. в QSP я не могу(ведь так?)игнорировать их систему добавления объектов и действий и писать всё по своему. Не понял, что ты имеешь в виду, но в куспе изначально "система добавления предметов и действий" реализована так, что ты можешь использовать это как угодно. Про "сравнение строк" - вообще без комментариев..

noname: что я могу ответить на все хвалебные статьи о QSP см в моём посте чуть выше: Отправлено: Сегодня 09:07. Заголовок: Mioirel пишет: Кста.. к этому мне нечего добавить. обещаю, что буду изучать QSP, но особого энтузиазма его описание не вызывает. пока склоняюсь к URQL. может сам когда-нибудь напишу на него интерпретатор под винду.

noname: Евгений пишет: А если запускать игры в фаре, то там раскладка переключается вместе с виндовской. эт правда... только, если из-под фара запустить досурку, то ей это переключение раскладки нипочём... а я тебе уже спасибо ляпнул. P.S. прошу проверять свои советы до того, как их постить- всяких непроверенных идей у меня у самого вагон. а я, блин с этим фаром времени хоть и мало потерял, но всё равно жалко. да ладно, пригодится мне Far ещё не раз- знатная программулина. P.P.S. unikbd.com должен лежать в одном архиве с досуркой, или хотя бы поблизости.

noname: читал в другой теме этого форума, что Акурка1.28pre1 нормально работает... слухи не подтвердились. то, что нормально прокатывало в pre6, первая не хавает. неправильно работает такой кусок кода: ... instr актёр6имя = Выносливый Пещерный Гном актёр6место = 33 актёр6сила = 4 актёр6ловкость = 3 актёр6вещей = 0 поле33_актёров = поле33_актёров+1 макс_актёров = 6; обязательно должен быть хотя бы один актёр ; игрок pln Выбери своего персонажа: выбор =0 счётчик=0 :инициализация_метка_1 счётчик=счётчик+1 xbtn предварительный_выбор_игрока_локация,{выбор=#счётчик$},#%актёр#счётчик$имя$ if счётчик<макс_актёров then goto инициализация_метка_1 ... вроде и xbtn отдельно работает и всё остальное, запускаю на pre6- выводит список персонажей, на pre1 - синтакс ерроры, а если обрубить остальную часть программы и дать кусок сначала досюда(см выше), то даёт одну кнопку с капчионом "0". может {выбор=#счётчик$} не так понимает? вобщем, плюнул я на Акурку. попробую доделать свой пример№2 на досурке, а затем начну свой интерпретатор URQL под винду. 100% совместимый с досуркой + некоторые доп возможности.

noname: прошу прощения, что засыпал вас постами. боюсь, из-за их обилия никто не будет их читать. но на следующий мой пост стоит обратить внимание. что я изменил в своём примере: (у меня был почти доделан 2-й пример, но не работал) переделал его концепт дважды расширил игровой мир и пару раз запутался в наполовину переделанной программе доделал обработку ввода игрока (простейший парсер) убрал пока все вещи и действия с ними (опустился до 1-го примера) оттестил прогу и убрал все баги (странности интерфейса- не баг!) и сейчас выложу его следующим постом. просьба: опишите, кто как запускает досовские квесты с русификатором я, блин, мучаюсь с keyrus.com, который виснет в Far-е и с VC, который не понимает длинных имён и вообще не любит мой большой винт. продолжу работу до полностью работающего примера№2 и подумаю, то ли писать пример№3, то ли интерпретатор URQL

noname: ;ex1pars.qst ;первый пример. парсерная версия ;------------------------------------------------ :инициализация_локация ; начало инициализации invkill perkill ; поля instr поле11вид = на яркой солнечной поляне поле11_се = 12; куда переход, если 0- перехода нет поле11_за = 0 поле11_юг = 0 поле11_во = 21 поле11актёров = 0 поле11вещей = 0 instr поле21вид = у красивого, освежающего водопада поле21_се = 22 поле21_за = 11 поле21_юг = 0 поле21_во = 31 поле21актёров = 0 поле21вещей = 0 instr поле31вид = на холме, покрытом множеством цветов поле31_се = 32 поле31_за = 21 поле31_юг = 0 поле31_во = 0 поле31актёров = 0 поле31вещей = 0 instr поле12вид = в лесу, наполненном весёлым щебетом поле12_се = 13 поле12_за = 0 поле12_юг = 11 поле12_во = 22 поле12актёров = 0 поле12вещей = 0 instr поле22вид = в удивительно прозрачном мелком ручейке поле22_се = 23 поле22_за = 12 поле22_юг = 21 поле22_во = 32 поле22актёров = 0 поле22вещей = 0 instr поле32вид = в лесу, устланном ароматными листьями поле32_се = 33 поле32_за = 22 поле32_юг = 31 поле32_во = 0 поле32актёров = 0 поле32вещей = 0 instr поле13вид = в уютном домике лесного эльфа поле13_се = 0 поле13_за = 0 поле13_юг = 12 поле13_во = 0 поле13актёров = 0 поле13вещей = 0 instr поле23вид = под отвесной величественной скалой поле23_се = 0 поле23_за = 0 поле23_юг = 22 поле23_во = 0 поле23актёров = 0 поле23вещей = 0 instr поле33вид = в богато украшенной гномьей пещере поле33_се = 0 поле33_за = 0 поле33_юг = 32 поле33_во = 0 поле33актёров = 0 поле33вещей = 0 макс_полей = 33;максимумы по горизонтали и по вертикали ;просматриваем прямоугольник от 11 до 33. он может и не весь быть заполнен локациями ;пришла в голову идея составлять таблицу переходов отдельным редактором, как в Adrift. ; актёры instr актёр1имя = Честный Галантный Рыцарь актёр1место = 12; номер поля актёр1сила = 5 актёр1ловкость = 6 актёр1вещей = 0 поле12_актёров = поле12_актёров+1 ; актёр добавлен instr актёр2имя = Умиротворённый Обаятельный Мудрец актёр2место = 21 актёр2сила = 2 актёр2ловкость = 1 актёр2вещей = 0 поле21_актёров = поле21_актёров+1 instr актёр3имя = Нежная Добрая Принцесса актёр3место = 32 актёр3сила = 1 актёр3ловкость = 2 актёр3вещей = 0 поле32_актёров = поле32_актёров+1 instr актёр4имя = Бесшабашный Развязный Дракон актёр4место = 22 актёр4сила = 6 актёр4ловкость = 5 актёр4вещей = 0 поле22_актёров = поле22_актёров+1 instr актёр5имя = Ловкий Лесной Эльф актёр5место = 13 актёр5сила = 3 актёр5ловкость = 4 актёр5вещей = 0 поле13_актёров = поле13_актёров+1 instr актёр6имя = Выносливый Пещерный Гном актёр6место = 33 актёр6сила = 4 актёр6ловкость = 3 актёр6вещей = 0 поле33_актёров = поле33_актёров+1 макс_актёров = 6; обязательно должен быть хотя бы один актёр ; игрок выбор = rnd#макс_актёров$ :инициализация_метка_1 goto предварительный_выбор_игрока_локация ; завершение инициализации end ;------------------------------------------------ :предварительный_выбор_игрока_локация выбор = выбор+rnd#макс_актёров-1$ ; выбираем любого персонажа, кроме того же самого if выбор>макс_актёров then выбор=выбор-макс_актёров pln Имя : #%актёр#выбор$имя$ pln Сила = #актёр#выбор$Сила$ pln Ловкость = #актёр#выбор$Ловкость$ btn окончательный_выбор_игрока_локация, играть этим персонажем btn инициализация_метка_1, выбрать другого персонажа btn выбор_персонажа_с_клавиатуры_локация, ввести имя персонажа end ;------------------------------------------------ :окончательный_выбор_игрока_локация игрок = выбор pln #%игрок$ goto главная_локация end ;------------------------------------------------ :выбор_персонажа_с_клавиатуры_локация instr name= input name выбор = 0 счётчик = 0 :выбор_персонажа_с_клавиатуры_метка_1 счётчик = счётчик+1 if name=актёр#счётчик$имя then выбор=счётчик if счётчик<макс_актёров then goto выбор_персонажа_с_клавиатуры_метка_1 ;в следующей строчке "выбор = rnd#макс_актёров$" добавлено, что бы следующий персонаж был выбран из всего списка с равной вероятностью (подумайте сами) if выбор=0 then pln нет такого персонажа в нашем мире & pln & выбор = rnd#макс_актёров$ & goto предварительный_выбор_игрока_локация else goto окончательный_выбор_игрока_локация end ;------------------------------------------------ ;************************************************ :главная_локация proc мотор_локация ; ходят все if (vvod="конец")or(vvod="end") then end else goto главная_локация end ;************************************************ ;------------------------------------------------ :мотор_локация ;начало движения чей_ход = 0 :мотор_метка_1 чей_ход = чей_ход+1 ;if (rnd12)>(актёр#чей_ход$ловкость+6) then goto мотор_метка_2; пропуск хода дел = 0 ;идти по направлению if поле#актёр#чей_ход$место$_се <> 0 then дел=дел+1 & дело#дел$="идти на" & арг1#дел$="север" if поле#актёр#чей_ход$место$_за <> 0 then дел=дел+1 & дело#дел$="идти на" & арг1#дел$="запад" if поле#актёр#чей_ход$место$_юг <> 0 then дел=дел+1 & дело#дел$="идти на" & арг1#дел$="юг" if поле#актёр#чей_ход$место$_во <> 0 then дел=дел+1 & дело#дел$="идти на" & арг1#дел$="восток" ;ждать - всегда доступное действие без аргументов (необходимо всегда иметь хотя бы одно доступное действие) дел=дел+1 & дело#дел$="ждать" ;взять предмет ;выложить предмет ;пускаем список на обработку if игрок = чей_ход then proc ввод_игрока_локация else proc ход_актёра_локация ;:мотор_метка_2 if чей_ход < макс_актёров then goto мотор_метка_1 ;конец всех действий end ;------------------------------------------------ :отображение_локация pln pln Вы #%поле#актёр#игрок$место$вид$ pln Здесь находятся: счётчик = 0 :отображение_метка_1 счётчик = счётчик + 1 if актёр#счётчик$место = актёр#игрок$место then pln - #%актёр#счётчик$имя$ if счётчик<макс_актёров then goto отображение_метка_1 end ;------------------------------------------------ :ход_актёра_локация выбор = rnd#дел$ if дело#выбор$="ждать" then proc ждать_актёр_локация if дело#выбор$="идти на" then proc идти_на_актёр_локация end ;------------------------------------------------ :ввод_игрока_локация instr vvod= proc отображение_локация ; игрок должен видеть текущую ситуацию pln pln Введите, что сделать: input vvod tokens vvod if token1="ждать" then proc ждать_игрок_локация if token1="идти" then proc идти_на_1_игрок_локация end ;------------------------------------------------ :ждать_актёр_локация if актёр#чей_ход$место = актёр#игрок$место then pln + #%актёр#чей_ход$имя$ чего-то ждёт end ;------------------------------------------------ :ждать_игрок_локация pln #%актёр#игрок$имя$ чего-то ждёт end ;------------------------------------------------ :идти_на_актёр_локация if актёр#чей_ход$место = актёр#игрок$место then pln + #%актёр#чей_ход$имя$ ушёл на #%арг1#выбор$$ if арг1#выбор$="север" then актёр#чей_ход$место = поле#актёр#чей_ход$место$_се if арг1#выбор$="запад" then актёр#чей_ход$место = поле#актёр#чей_ход$место$_за if арг1#выбор$="юг" then актёр#чей_ход$место = поле#актёр#чей_ход$место$_юг if арг1#выбор$="восток" then актёр#чей_ход$место = поле#актёр#чей_ход$место$_во if актёр#чей_ход$место = актёр#игрок$место then pln + вошёл #%актёр#чей_ход$имя$ end ;------------------------------------------------ :идти_на_1_игрок_локация if token2="на" then goto идти_на_2_игрок_локация end ;------------------------------------------------ :идти_на_2_игрок_локация pln #%актёр#игрок$имя$ ушёл на #%token3$ if (token3="север")and(поле#актёр#игрок$место$_се<>0) then актёр#игрок$место = поле#актёр#игрок$место$_се if (token3="запад")and(поле#актёр#игрок$место$_за<>0) then актёр#игрок$место = поле#актёр#игрок$место$_за if (token3="юг")and(поле#актёр#игрок$место$_юг<>0) then актёр#игрок$место = поле#актёр#игрок$место$_юг if (token3="восток")and(поле#актёр#игрок$место$_во<>0) then актёр#игрок$место = поле#актёр#игрок$место$_во pln и оказался #%поле#актёр#игрок$место$вид$ end

noname: сейчас доделываю пример№2 (с вещами) стажируюсь на новой работе и что я хочу сказать: с xbtn работа шла бы гораздо быстрее- игрок бы выбирал действие из списка действий, который я полюбому готовлю для каждого персонажа. а так- приходится долбиться с обработкой ввода игрока. код удваивается- отдельно обработка персонажей и- другая обработка игрока хочется, что бы проги на URQL выглядели покороче и попроще вот сделаю пример№2 потом сделаю ему более дружественный интерфейс (ничего слишком крутого- информация о выходах из локации, реакция на недопустимые действия, более корректное отображение локации) и когда он будет доведён до ума у меня будет три пути: 1.постепенно улучшать этот игровой мир. приоритет- больше доступных действий. цель- создать мир, в котором приятно побродить, понаблюдать. 2.создать мир в стиле кибер-панк. больше по размерам, локации и прочая генерить случайно по шаблонам, минимум работы над детализацией мира- максимум работы над алгоритмом. приоритет- интеллект персонажей. цель- создать мир другого плана, где опасно бродить, где умные и жестокие персонажи объединяются в кланы в борьбе за выживание. 3.делать свой интерпретатор URQL. я понимаю, что у меня уйдёт уйма времени, что бы хотя бы приблизиться к тому, что уже сделано, но я не могу писать криво, а прямо меня текущие интерпретаторы не поймут.

noname: кроме xbtn нужна ещё bpause, которая будет приостанавливать работу программы до выбора игроком btn . пример: :процедура pln ответьте ДА или НЕТ btn вложенная_процедура_да , да btn вложенная_процедура_нет, нет end такая ПРОЦЕДУРА невозможна в нынешней досурке (угадайте, что произойдёт?) а с кнопкой xbtn вместо вложенная_процедура_да и вложенная_процедура_нет можно было бы использовать одну и ту же процедуру. это удобно, если кол-во кнопок у нас меняется в зависимости от ситуации. работа над пример№2 по-любому затормозится: мне не нравится получающийся код- он должен быть более кратким и простым, буду думать над новым концептом.

noname: новый концепт не придумался: хотел уместить обработку ввода игрока в одну маленькую локацию, а потом отослать полученную команду на исполнение как для обычного актёра. НО вышел облом из-за того, что сообщения выводятся по-разному (т.е. они выводятся именно для игрока) как бы вывод убрать в отдельную процедуру? думай голова, шапку куплю... P.S. вот сделал вещи- неписи их могут брать и выкладывать. если сила=N значит непись может нести N вещей, если их больше- не сможет сдвинуться с места. если ловкость=6 значит непись никогда не пропустит ход (ждать- не пропуск хода, а действие. если непись пропускает ход то, в отличие от ожидания, о его действиях в локации на этом ходу никаких комментариев не выводится).если ловкость=1 значит непись ходит с вер-тью 1/6 и пропускает ход с вер-тью 5/6. P.P.S. игрок пока не может ничего делать с вещами. он может ждать идти на север , а так же в других направлениях.

noname: ; ex2alpha.qst ; пример№2 игрок пока не может выполнять действий с вещами ; (неписи могут взять... и выложить... ) ; его команды остались теми же, что и в предыдущем примере ;------------------------------------------------ :инициализация_локация ; начало инициализации invkill perkill ; поля instr поле11вид = на яркой солнечной поляне[св] поле11_се = 12; куда переход, если 0- перехода нет поле11_за = 0 поле11_юг = 0 поле11_во = 21 поле11актёров = 0 поле11вещей = 0 instr поле21вид = у красивого, освежающего водопада[сзв] поле21_се = 22 поле21_за = 11 поле21_юг = 0 поле21_во = 31 поле21актёров = 0 поле21вещей = 0 instr поле31вид = на холме, покрытом множеством цветов[сз] поле31_се = 32 поле31_за = 21 поле31_юг = 0 поле31_во = 0 поле31актёров = 0 поле31вещей = 0 instr поле12вид = в лесу, наполненном весёлым щебетом[сюв] поле12_се = 13 поле12_за = 0 поле12_юг = 11 поле12_во = 22 поле12актёров = 0 поле12вещей = 0 instr поле22вид = в удивительно прозрачном мелком ручейке[сзюв] поле22_се = 23 поле22_за = 12 поле22_юг = 21 поле22_во = 32 поле22актёров = 0 поле22вещей = 0 instr поле32вид = в лесу, устланном ароматными листьями[сзю] поле32_се = 33 поле32_за = 22 поле32_юг = 31 поле32_во = 0 поле32актёров = 0 поле32вещей = 0 instr поле13вид = в уютном домике лесного эльфа[ю] поле13_се = 0 поле13_за = 0 поле13_юг = 12 поле13_во = 0 поле13актёров = 0 поле13вещей = 0 instr поле23вид = под отвесной величественной скалой[ю] поле23_се = 0 поле23_за = 0 поле23_юг = 22 поле23_во = 0 поле23актёров = 0 поле23вещей = 0 instr поле33вид = в богато украшенной гномьей пещере[ю] поле33_се = 0 поле33_за = 0 поле33_юг = 32 поле33_во = 0 поле33актёров = 0 поле33вещей = 0 макс_полей = 33;максимумы по горизонтали и по вертикали ;просматриваем прямоугольник от 11 до 33. он может и не весь быть заполнен локациями ;пришла в голову идея составлять таблицу переходов отдельным редактором, как в Adrift. ; актёры instr актёр1имя = Честный Галантный Рыцарь актёр1место = 12; номер поля актёр1сила = 5 актёр1ловкость = 6 ;актёр1вещь1=2 ; так устроен местный инвентарь актёр1вещей = 0 поле12_актёров = поле12_актёров+1 ; актёр добавлен instr актёр2имя = Умиротворённый Обаятельный Мудрец актёр2место = 21 актёр2сила = 2 актёр2ловкость = 1 актёр2вещей = 0 поле21_актёров = поле21_актёров+1 instr актёр3имя = Нежная Добрая Принцесса актёр3место = 32 актёр3сила = 1 актёр3ловкость = 2 актёр3вещей = 0 поле32_актёров = поле32_актёров+1 instr актёр4имя = Бесшабашный Развязный Дракон актёр4место = 22 актёр4сила = 6 актёр4ловкость = 5 актёр4вещей = 0 поле22_актёров = поле22_актёров+1 instr актёр5имя = Ловкий Лесной Эльф актёр5место = 13 актёр5сила = 3 актёр5ловкость = 4 актёр5вещей = 0 поле13_актёров = поле13_актёров+1 instr актёр6имя = Выносливый Пещерный Гном актёр6место = 33 актёр6сила = 4 актёр6ловкость = 3 актёр6вещей = 0 поле33_актёров = поле33_актёров+1 макс_актёров = 6; обязательно должен быть хотя бы один актёр ; вещи instr вещь1вп = свежее зелёное яблоко вещь1место = 11 ; если в чьём-то инвентаре, то место=0 поле11_вещей = поле11_вещей+1 ; вещь добавлена instr вещь2вп = пожелтевший кленовый лист вещь2место = 11 поле11_вещей = поле11_вещей+1 instr вещь3вп = апетитный белый гриб вещь3место = 11 поле11_вещей = поле11_вещей+1 instr вещь4вп = лёгкое белое перо вещь4место = 31 поле31_вещей = поле31_вещей+1 instr вещь5вп = душистый полевой цветок вещь5место = 31 поле31_вещей = поле31_вещей+1 instr вещь6вп = небольшую искривлённую веточку вещь6место = 31 поле31_вещей = поле31_вещей+1 instr вещь7вп = плоский камешек с отверстием вещь7место = 23 поле23_вещей = поле23_вещей+1 instr вещь8вп = крупную каплю росы вещь8место = 23 поле23_вещей = поле23_вещей+1 instr вещь9вп = древний волшебный свиток вещь9место = 23 поле23_вещей = поле23_вещей+1 макс_вещей = 9 ; игрок выбор = rnd#макс_актёров$ :инициализация_метка_1 goto предварительный_выбор_игрока_локация ; завершение инициализации end ;------------------------------------------------ :предварительный_выбор_игрока_локация выбор = выбор+rnd#макс_актёров-1$ ; выбираем любого персонажа, кроме того же самого if выбор>макс_актёров then выбор=выбор-макс_актёров pln Имя : #%актёр#выбор$имя$ pln Сила = #актёр#выбор$Сила$ pln Ловкость = #актёр#выбор$Ловкость$ btn окончательный_выбор_игрока_локация, играть этим персонажем btn инициализация_метка_1, выбрать другого персонажа btn выбор_персонажа_с_клавиатуры_локация, ввести имя персонажа end ;------------------------------------------------ :окончательный_выбор_игрока_локация игрок = выбор pln #%игрок$ goto главная_локация end ;------------------------------------------------ :выбор_персонажа_с_клавиатуры_локация instr name= input name выбор = 0 счётчик = 0 :выбор_персонажа_с_клавиатуры_метка_1 счётчик = счётчик+1 if name=актёр#счётчик$имя then выбор=счётчик if счётчик<макс_актёров then goto выбор_персонажа_с_клавиатуры_метка_1 ;в следующей строчке "выбор = rnd#макс_актёров$" добавлено, что бы следующий персонаж был выбран из всего списка с равной вероятностью (подумайте сами) if выбор=0 then pln нет такого персонажа в нашем мире & pln & выбор = rnd#макс_актёров$ & goto предварительный_выбор_игрока_локация else goto окончательный_выбор_игрока_локация end ;------------------------------------------------ ;************************************************ :главная_локация instr vvod="начало" ; почему-то без этого оставался "конец" от предыдущей игры proc мотор_локация ; ходят все if (vvod="конец")or(vvod="end") then end goto главная_локация end ;************************************************ ;------------------------------------------------ :мотор_локация ;начало движения чей_ход = 0 :мотор_метка_1 ; выполняем для каждого актёра чей_ход = чей_ход+1 дел = 0 if (rnd6)>(актёр#чей_ход$ловкость) then goto мотор_метка_2; пропуск хода ;идти по направлению if актёр#чей_ход$вещей > актёр#чей_ход$сила then goto мотор_метка_5 if поле#актёр#чей_ход$место$_се <> 0 then дел=дел+1 & дело#дел$="идти на" & арг1#дел$="север" if поле#актёр#чей_ход$место$_за <> 0 then дел=дел+1 & дело#дел$="идти на" & арг1#дел$="запад" if поле#актёр#чей_ход$место$_юг <> 0 then дел=дел+1 & дело#дел$="идти на" & арг1#дел$="юг" if поле#актёр#чей_ход$место$_во <> 0 then дел=дел+1 & дело#дел$="идти на" & арг1#дел$="восток" :мотор_метка_5 ; если актёр перегружен - не может двигаться ; хорошо бы использовать этот список для сверки с вводом игрока, чтоб всё было по-честному: ; что можно игроку, то можно и актёру- полное равенство ;ждать - всегда доступное действие без аргументов (необходимо всегда иметь хотя бы одно доступное действие) дел=дел+1 & дело#дел$="ждать" ;взять вещь счётчик = 0 :мотор_метка_3 ; перебираем вещи на поле счётчик = счётчик + 1 if актёр#чей_ход$место=вещь#счётчик$место then дел=дел+1 & дело#дел$="взять" & арг1#дел$=вещь#счётчик$вп & арг1#дел$n=счётчик if счётчик<макс_вещей then goto мотор_метка_3 ;выложить вещь счётчик = 0 :мотор_метка_4 ; перебираем вещи в инвентаре счётчик=счётчик+1 if актёр#чей_ход$вещей>=счётчик then дел=дел+1 & дело#дел$="выложить" & арг1#дел$=вещь#актёр#чей_ход$вещь#счётчик$$вп & арг1#дел$n=счётчик & goto мотор_метка_4 ;пускаем список на обработку if игрок = чей_ход then proc ввод_игрока_локация else proc ход_актёра_локация :мотор_метка_2 ; если был пропуск хода if чей_ход < макс_актёров then goto мотор_метка_1 ;конец всех действий end ;------------------------------------------------ :отображение_локация pln pln Вы #%поле#актёр#игрок$место$вид$ pln Вы видите: счётчик = 0 :отображение_метка_1 счётчик = счётчик + 1 if вещь#счётчик$место = актёр#игрок$место then pln . #%вещь#счётчик$вп$ if счётчик<макс_вещей then goto отображение_метка_1 pln Здесь находятся: счётчик = 0 :отображение_метка_2 счётчик = счётчик + 1 if актёр#счётчик$место = актёр#игрок$место then pln - #%актёр#счётчик$имя$[#актёр#счётчик$вещей$] if счётчик<макс_актёров then goto отображение_метка_2 end ;------------------------------------------------ :ход_актёра_локация if дел=0 then end ; бывает из-за пропусков хода выбор = rnd#дел$ if дело#выбор$="ждать" then proc ждать_актёр_локация if дело#выбор$="идти на" then proc идти_на_актёр_локация if дело#выбор$="взять" then proc взять_актёр_локация if дело#выбор$="выложить" then proc выложить_актёр_локация end ;------------------------------------------------ :ввод_игрока_локация vvod="пустой ввод" proc отображение_локация ; игрок должен видеть текущую ситуацию pln pln Введите, что сделать: input vvod tokens vvod if token1="ждать" then proc ждать_игрок_локация if token1="идти" then proc идти_на_1_игрок_локация end ;------------------------------------------------ :ждать_актёр_локация if актёр#чей_ход$место = актёр#игрок$место then pln + #%актёр#чей_ход$имя$[#актёр#чей_ход$вещей$] чего-то ждёт end ;------------------------------------------------ :ждать_игрок_локация pln #%актёр#игрок$имя$ чего-то ждёт end ;------------------------------------------------ :идти_на_актёр_локация if актёр#чей_ход$место = актёр#игрок$место then pln + #%актёр#чей_ход$имя$[#актёр#чей_ход$вещей$] ушёл на #%арг1#выбор$$ if арг1#выбор$="север" then актёр#чей_ход$место = поле#актёр#чей_ход$место$_се if арг1#выбор$="запад" then актёр#чей_ход$место = поле#актёр#чей_ход$место$_за if арг1#выбор$="юг" then актёр#чей_ход$место = поле#актёр#чей_ход$место$_юг if арг1#выбор$="восток" then актёр#чей_ход$место = поле#актёр#чей_ход$место$_во if актёр#чей_ход$место = актёр#игрок$место then pln + вошёл #%актёр#чей_ход$имя$[#актёр#чей_ход$вещей$] end ;------------------------------------------------ :идти_на_1_игрок_локация if token2="на" then goto идти_на_2_игрок_локация end ;------------------------------------------------ :идти_на_2_игрок_локация pln #%актёр#игрок$имя$ ушёл на #%token3$ if (token3="север")and(поле#актёр#игрок$место$_се<>0) then актёр#игрок$место = поле#актёр#игрок$место$_се if (token3="запад")and(поле#актёр#игрок$место$_за<>0) then актёр#игрок$место = поле#актёр#игрок$место$_за if (token3="юг")and(поле#актёр#игрок$место$_юг<>0) then актёр#игрок$место = поле#актёр#игрок$место$_юг if (token3="восток")and(поле#актёр#игрок$место$_во<>0)then актёр#игрок$место = поле#актёр#игрок$место$_во pln и оказался #%поле#актёр#игрок$место$вид$ end ;------------------------------------------------ :взять_актёр_локация if актёр#чей_ход$место = актёр#игрок$место then p + #%актёр#чей_ход$имя$[#актёр#чей_ход$вещей$] взял #%арг1#выбор$$ вещь#арг1#выбор$n$место = 0 актёр#чей_ход$вещей = актёр#чей_ход$вещей + 1 актёр#чей_ход$вещь#актёр#чей_ход$вещей$=арг1#выбор$n proc список_актёра_локация end ;------------------------------------------------ :выложить_актёр_локация ; внимание! арг1#выбор$n в данном случае хранит номер вещи в инвентаре актёра if актёр#чей_ход$место = актёр#игрок$место then p + #%актёр#чей_ход$имя$[#актёр#чей_ход$вещей$] выложил #%арг1#выбор$$ ; ложим вещь в локацию: вещь#актёр#чей_ход$вещь#арг1#выбор$n$$место = актёр#чей_ход$место ; убираем вещь из инвентаря: актёр#чей_ход$вещь#арг1#выбор$n$=актёр#чей_ход$вещь#актёр#чей_ход$вещей$ актёр#чей_ход$вещей = актёр#чей_ход$вещей - 1 proc список_актёра_локация end ;------------------------------------------------ :список_актёра_локация if актёр#чей_ход$место <> актёр#игрок$место then goto список_актёра_метка_2 if актёр#чей_ход$вещей = 0 then goto список_актёра_метка_2 p .теперь он несёт: счётчик=0 :список_актёра_метка_1 счётчик=счётчик+1 p #%вещь#актёр#чей_ход$вещь#счётчик$$вп$. if счётчик<актёр#чей_ход$вещей then goto список_актёра_метка_1 pln :список_актёра_метка_2 end

noname: оставлена отладочная информация о выходах из локаций а так же о кол-ве вещей у неписей а так же о том, что же у непися в кармашке (последнее-только когда он изменяет содержимое инвентаря). ВНИМАНИЕ! как бы соблазнительно ни выглядели буковки [сзюв] в списке выходов, необходимо писать команду целиком: идти на восток (к примеру) P.S. долго ловил баги. вроде бы всех выловил. не удержался до окончательной версии- выложил, что есть

noname: жду рекомендаций по оптимизации кода (как же, станет кто-нить в этом коде разбираться) доделки остались элементарные, жаль из-за работы(стажируюсь) времени остаётся мало. иначе я б уже давно всё закончил.

noname: да, кстати, noname - это забывший свой пароль qwerty. мне всё равно, кем быть, пусть останусь noname, но хотелось бы просуммировать(или как там ещё учесть) рейтинги и кол-во постов. в-общем, объединить как-то два в одно. а если когда сделаю полноценный квест- назову его qwerty03

noname: живой игровой мир включает в себя два момента: собственно мир, в котором персонажи равны (с учётом их качеств) персонажу игрока (точнее игрок играет за любого из персонажей) & логика поведения персонажей логично начать с первого пункта, чтоб было где оттачивать второй... задача не так уж и сложна, если разделить её на под-задачи p.s. неписи вполне могут быть умнее игрока, так как "знают", где чего в соседних локациях лежит (где-то крутой непись шмотку выбросил, где-то на рынок подешёвке что-то выкинули, или наоборот- дорого покупают) . сложных алгоритмов я буду избегать как огня: разумного поведения персонажей можно добиться введением отношений (друг к другу) и ещё всяких отношений(к клану, ...) а так же смысловыми ограничениями: ну там, полить огород можно только если он уже засеян, а так же введением страхов и желаний (об этом я уже постил в этой теме) p.p.s. 19-го сделал пример№1 22-го после долгих метаний сделал парсерный пример№1 24-го сделал недоделанную версию примера№2 с учётом того, что я работал над каждым из проектов не более 2-х часов- неплохо сейчас я продолжаю метаться м/ду платформами везде что-нить не так... на qsp аналогичный проект движется с большим скрипом, но я стараюсь. ИМХО настоящий текстоквестописец должен знать более одной платформы.

noname: да и вот ещё что: пару дней назад акурка(скачал пре1 вместо пре6) стала выдавать сообщение, что файл richtxt32.ocx неверно инсталлирован в системе(либо отсутствует). и не запускается. в-общем мрак полный.

Nex: noname я лечил акурку так: сделал батник (.bat файл), в котором написал akurq.exe regsvr32 /u /s richtx32.ocx То есть после каждого вызова акурки "удаляется" из системы richtx32.ocx, а при запуске - устанавливается. Вот такой костыль к этой кривой программе. Сам файл richtx32.ocx нужно скачать (например, по этой ссылке), и положить в папку WINDOWS/System32.

noname: уррра! заработала! я как-то слишком быстро отказался от использования акурки...пре1 только из-за того, что она непоняла одну сомнительную конструкцию с xbtn, которую понимала пре6. может, попробую на акурке... с кейрусом задалбывает ещё одна интересная особенность: требуется очень высокая скорость нажатия клавиш переключения режима. я себе чуть кнопки не раздолбал постараюсь делать версию URQL совместимую и с досуркой и с акуркой, а unikbd.com когда-нибудь обязательно достану (может под фаром будет работать)

noname: что-то Акурка меня не понимает. из описания в хелпе я пока не понял, что её не устраивает в досурковской версии дело было явно не в xbtn какие возможности ловли багов существуют на Акурке(пре1)???

noname: после того, как заменил все 'ё' на 'е' прога кое-как заработала на Акурке_пре1 буду разбираться дальше. вопрос дебагинга остаётся открытым

AlSid: Думаю, что ув. noname заслужил победу сразу в трех номинациях - самое большое количество постов подряд (14!), самый длинный пост и самый бесполезный пост (оба - за пост под названием "; ex2alpha.qst ; при.."). И, кажется, это только начало...

noname: AlSid ну у меня же до этого проекта были тока совсем простые квесты qwerty01 и qwerty02. я осваиваюсь с URQL. лучше бы про дебагинг Акурки постнул чего-нибудь, а то я воюю с интерпретаторами, как с ветряными мельницами. уже в отчании полез rtads авторский комплект качать(почему его нельзя взять отдельно от проигрывателя?) но, чё-то не качается... у меня к томуж комп новый недавно после большого перерыва и флэшгета у меня нет. и вообще много чего полезного нет.

Korwin: Qwerty, кинь почту в личку только пиши вместо собаки "гав" для спам-роботов, отправлю тебе что нужно для tads. Вообще привет :)

GooseMan: Для Noname Посмотрите URQ Arena. там именно набросок ОБЪЕКТНОГО мира. писалось сие под Досурку, посему весьма коряво обойдено отсутствие xBtn. Однако монстры (ака боты), вещи и локации задуманы и реализованы как объекты. Ессно, в данной реализации игра весьма тупа, но в свое время у мну были думки заставить ботов двигацо самостоятельно, и брать, например, вещи, "просматривать" локации, соседние со своей в поисках Персонажа. Поройтесь в кишках, я там подробное описание оставил. А вообще, самостоятельный мир на Урке вполне возможно построить, в частности, описать не только свойства объектов, но и так скэть, их методы: всемогущий #$ творит чудеса. Наброски реализации методов я делал в DoA (лежит в аплоде, перманентно не закончена) - правда, опять же, без алгоритма обработки самостоятельных действий НПС, но сие можно реализовать элементарно, прописываем в метод объекту имя метки, ответственной за некое действие, и обрабатываем эту метку процем в коммоне при каждом ходе...

noname: GooseMan твою Арену смотрел и ковырял и она- одна из прог, которые вдохновили меня начать писать Ж.И.М. стараюсь писать не просто в ООП стиле, но и давать такие имена, чтоб не запутаться, когда прога станет непомерно большой и на куски логические разделять разве из последней выложенной здесь проги не видно? #$ мне ооочень нравится, но ненравится работа интерпретаторов а свой писать- долго, да и наверняка непредвид трудности возникнут а вообще, в конце-концов напишу свой интерпретёр p.s. привинтить интеллект персонажам- не проблема. могу сделать их хоть умнее гамера, причём без гандикапа, чисто чесным мухлежом: они-то знают где что находится, а игрок-нет. пока проблема в интерпретаторах и неудобствах p.p.s. за своё пропадание дико извиняюсь- не виноватый я. меня жизнь так перевернула, что ваааще.

GooseMan: noname пишет: давать такие имена, чтоб не запутаться, когда прога станет непомерно большой и на куски логические разделять Это дааааааа, это верноооооо :-D/ кстати - непомерная большесть - это главная трудность имитации ООП на УРКЛ. Хотя ЖИМЪ на УРКЛ при должном умении будет живее чем на специализированных ООП-платфоромах, которые обладают хоть и развитой, но жесткой системой объектов, связанных вполне определенными связями. А вот в УРКЛ мы до поры до времени используем псевдо-ООП, а потом РРРАЗ, и задвигаем его в дальний ящик, возвращаясь к вольному линейно-командному алгоритмическому стилю. Если бы был нормально реализованный механизм инклюда - тогда запросто можно было бы разбивать игру на отдельные файлы - механизм (движок), карты, монстры, аддоны ))) - что упростило бы навигацию в коде впоследствии

noname: ну а пока можно разделять ;--------------------------------------- комментариями p.s. а ещё, по-моему в досурке нет работы с файлами

Korwin: include

GooseMan: вот если бы работало такое: res.qst ------- :pseudo-function <code> end ------- main.qst -------- include res.qst :label <code> proc pseudo-finction <code> end ----- пока вроде не работает?

GooseMan: Прет. Построение внутри-игровых (мировых) взаимоотношений НПС по принципу Рыцарь_ОтношениК_Принцесса - слишком прямолинейно(разве что для каких либо особых отношений). Оценка персов по принципу Плохой-Нейтральный-Злой - нет простора для фантазии. Понятие харизма-слава-карма - не слишком показательно... Итак, почему бы принцессе не иметь склонность к грубым но не пошлым (обаяние от Х до У) и сильным (сила не менее Х) громилам (класс=варвар, пол=м), которых в свою очередь реально тошнит от слишком умных (интеллект выше Х) дам (класс=не важно, пол=ж)? Далее, можно дать персам такую интегрированную характеристику, отражающую попросту его индивидуальную внешность-характер-привычки-интересы (тип личности, иначе). В виде диапазона (от Х до У) на определенной условной шкале. Совпадение диапазонов у разных персов означает их предрасположенность/совместимость друг с другом, причем чем больше область совпадения - тем больше совместимость. Более широкий диапазон означает большее обаяние, однако и обаятельный перс вполне может нарваться на того, кто его не поймет. В принципе, можно иметь два таких диапазона - свой собственный тип личности, и предпочитаемый. Тогда свойства разных героев будут сравниваться "вперехлест". Поступки, влияющие на карму/харизму/обаяние - соответственно уменьшают или увеличивают граничные значения диапазонов, изменяя обаяние количественно, но не слишком затрагивая его ТИП. Предпочтения, в свою очередь, тоже могут меняться. Далее. Разнополые герои с подходящей совместимостью вполне могут сгенерить нового перса, а его собственные личностне характеристики будут сформированы по определенным правилам из показателей папы-мамы. Таким образом, не обязательно заранее описывать кучу НПС. Достаточно нарисовать подходящую карту и заселить ее двумя подробно прописанными Адамом и Евой. И почить в день седьмый, устроив себе просмотр Матрицы или 13 этажа :-D UPD Да и карту можно не создавать. Совместив типаж Колумба с некоторыми нестандартными философскими взглядами на мир, вполне можно генерить крату по ходу истории...

noname: твой пост- о том, какими будут отношения между персонажами на момент начала игры мой пост был- о том, что 1 отношения м/ду персонажами могут меняться 2 можно задавать разные отношения (напр отношение к клану или группе) GooseMan пишет: почему бы принцессе не иметь склонность к грубым не конкретно принцессе, а скорее правило притяжение противоположностей или что-то в этом духе, что бы правило применялось не к конкретному персу, а к любому персу с подходящими атрибутами.

noname: карту генерить можно и нужно. мой вариант карты планеты(карта вселенной-другой вопрос): квадратный мир разделён на 64 сектора от a1 до h8 (как в шахматах) каждый сектор имеет 15х15 полей (как в m&m) на каждом поле может что-нить находиться дом, церковь, дерево, фонтан и т п при этом очень желательно, что бы препятствий не было совсем (проще будет делать интеллект) например : " координаты: сектор d4, x=7, y=8 Вы находитесь перед величественным храмом древних богов - идти на север ... - идти на восток - войти в храм " внутри построек (или на дереве) или т п в общем, во вложенном пространстве- всегда всего 1-на локация (проще будет делать интеллект) p.s. идеи дарю бесплатно- воруйте, сколько унесёте

noname: что я делаю сейчас: -основы игрового мира, поэтому на данном этапе отношения персонажей и их интеллект меня мало интересует, хотя могу подкинуть идею, что отношений по 100-бальной шкале м/ду двумя персонажами может быть много: а боится б если б сильнее и лучше вооружён, а доверяет б если б всегда держит слово, а ненавидит б если б убивал членов клана а. вычисляем начальные значения каждого отношения и модифицируем по ходу игры. -общий принцип: интеллект один на всех персонажей, игрок может играть за любого, персонажи (торговцы, священники, чиновники, воины и т п) стремятся максимизировать выгоду. что считать выгодой и каким путём проще её увеличить- зависит от характеристик обрабатываемого персонажа. интеллект на всех один.

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

Mioirel: noname, ты можешь показать пример того, какая может выйти игра, если она будет использовать твою систему с живым миром? Представим, что она готова на порядочном уровне. Пример, лог игры, также может быть полезен для дальнейшего планирования кода. Возможно, он заранее поможет предупредить подводные камни. Задумка смелая, но может стать нереальной если ты замахнешься на симуляцию популяции хотя бы небольшой деревни в 50-100 человек. Не говоря уже о чем-то... большем. Платформы не предназначены для расчетов больших количеств массивов.

noname: Mioirel пишет: Платформы не предназначены для расчетов больших количеств массивов. хорошее предупреждение! из описания к новой акурке сделал вывод, что массивы могут быть нереально большие, НО неплохо бы испытать на каком-нить примере. это совершенно несложно: сгенерить 1000 бродячих персонажей на поле 10х100 и посмотреть быстродействие. выводить стоит просто кол-во персонажей... так, надо этим заняться...

noname: :начало pln 'приступаю к фазе №1' x=0 y=1 n=0 :цикл n=n+1 x=x+1 if x>100 then x=1 & y=y+1 поле#x$_#y$ = 1 персгор#n$ = x персвер#n$ = y if n<1000 then goto цикл pln 'инициализация успешно завершена' игрок=501 pln 'приступаю к фазе №2' goto вывод end :вывод pln pln 'координаты персонажа №#игрок$: x=#персгор#игрок$$, y=#персвер#игрок$$' pln 'он видит здесь #поле#персгор#игрок$$_#персвер#игрок$$-1$ таких же болванов' btn перемещение, дальше btn конец, выход end :конец end :перемещение n=0 :цикл2 n=n+1 k=rnd4; сзюв if (k=1) and (персвер#n$<10) then поле#персгор#n$$_#персвер#n$$=поле#персгор#n$$_#персвер#n$$-1 & персвер#n$=персвер#n$+1 & поле#персгор#n$$_#персвер#n$$=поле#персгор#n$$_#персвер#n$$+1 if (k=2) and (персгор#n$>1) then поле#персгор#n$$_#персвер#n$$=поле#персгор#n$$_#персвер#n$$-1 & персгор#n$=персгор#n$-1 & поле#персгор#n$$_#персвер#n$$=поле#персгор#n$$_#персвер#n$$+1 if (k=3) and (персвер#n$>1) then поле#персгор#n$$_#персвер#n$$=поле#персгор#n$$_#персвер#n$$-1 & персвер#n$=персвер#n$-1 & поле#персгор#n$$_#персвер#n$$=поле#персгор#n$$_#персвер#n$$+1 if (k=4) and (персгор#n$<100)then поле#персгор#n$$_#персвер#n$$=поле#персгор#n$$_#персвер#n$$-1 & персгор#n$=персгор#n$+1 & поле#персгор#n$$_#персвер#n$$=поле#персгор#n$$_#персвер#n$$+1 if n<1000 then goto цикл2 goto вывод end

noname: на urq_dos быстродействие нормальное НО реально расчётов будет больше, отсюда получим: 1 персонажей не 1000, а 100 2 из этих 100 "умных" чел 10 остальные 90 могут быть тупыми монстрами а насчёт деревни в 50-100чел: 50-100 "живых" персонажей- это население крупного города, такого как Тарант в Arcanum а для хорошей деревни хватит и десяти p.s. а жаль... мне бы 15000 умных персонажей и ещё 150000 хитрых монстров иещё1500000 мелких тварей в пищу монстрам (не одними же героями им питаться) p.p.s. и при десяти персонажах, если сделать их поумнее можно наблюдать самоорганизацию, НО это уже не то... экономические кризисы и непредвиденные примеры поведения наблюдать будет сложнее, чем бурю в стакане... p.p.p.s. а ещё для большой группы можно сделать хороший интеллект по-нормальному надо просчитывать ходы наперёд, но это, конечно, муть а вот сделать побольше сект: членство в религиозной группе членство в национальной группировке членство в проффесиональной гильдии членство в клубе по интересам гражданство такого-то города-полиса принадлежность к такому-то клану (родственная связь) от рождения перс состоит хотя бы в 4-х (можно больше) группах его цель в игре- повышать свой статус во всех этих группах кроме того, он может вступать в новые группировки или лишаться членства в старых за неудовлетворительное поведение и вот встречаются два персонажа: реакцию их друг на друга можно хорошо просчитать, на основе членства в различных группах, статуса (по 100 бальной шкале) в каждой группе и отношения (от -100 до +100) персонажа к группам, членом которых является другой персонаж (а это отношение, в свою очередь определяется отношениями групп друг к другу и личным жизненным опытом персонажа). и отношение не одно- а несколько линеек отношений (боится/доверяет/ненавидит/завидует/...) короче, система сект и отношений делает поведение каждого персонажа предсказуемым для других персонажей: они знают к чему и какими методами он стремится(членство в группах) и насколько это у него получается(статус в группах) и даёт каждому собеседнику ключ, как на такого персонажа реагировать(с учётом интересов своих групп). так это я к тому написал, что десять человек по сектам не больно-то и разобьёшь...

GooseMan: NONAME! Огромный респект и уважуха за такую мощную работу мысли! Конкретную помощь тебе наверно уже вряд ли кто окажет - это уже стопроцентно твой собственный проект по выжиманию возможностей из УРКи. Так что мой пост носит характер исключительно левого коммента и соображений "на тему". Соображения НЕ ОТНОСЯТСЯ кокретно к проекту NONAME, а вообще к идее ЖиМ. Ну, вот одно из соображений: как видно из твоей работы, УРКЛ теоретически позволяет создать АВТОНОМНЫЙ мир заданной степени сложности. Однако чем сложней и автономней мир, тем менее он ценен собственно для целей игры. Повышение автономности сужает цель ее применения и стремится к одной единственной - к созданию Матрицы :). Для собственно игры автономность мира может оказаться не настолько интересной - ведь большинство хитросплетенных поступков и изменений в отношениях героев будет происходить "за кадром", невидимыми для игрока. Это во-первых, нивелирует ценность автономного поведения для геймплея, а во-вторых, в конечном счете может сбить игрока с толку - ведь чем более автономен мир, тем меньшую его часть контролирует собственно он сам. Второе соображение. (СТРОГО МОЕ ИМХО) Например, чисто мне мало нравятся карты в ТЕКСТОВЫХ играх, построенные по принципу квадратной координатной сетки. Во-первых, без карты в них неудобно играть, во вторых, будучи удобными для обсчета, они менее интересны для геймплея. Применение координатных сеток оправдывает себя в небольших задачах, например, при реализации боя. Целая же МИРОВАЯ карта, выстроенная по такому принципу - это будет запутанно и скучно. Текстовая игра позволяет реализовывать связь локаций более свободно. UPD Примеры свободных локаций: Локация1Имя=Лес локация1КоличествоВыходов=[n] Локация1Выход1=Речка .... Локация1Выход[n]=поле На Локации :Лес в цикле перебираем выходы и формируем кнопы перемещения. В локациях :Речка и :Поле формируем выходы также. Причем, если Лес имеет выход на Речку, а Речка выхода на Лес не имеет, значит из Леса к речке мы попадаем, скатившись с крутого склона и обратно взобрацо не можем. Далее, переходы можно производить через шлюзы (навскидку, пишу прямо с головы, так что за код не ручаюсь) Идем из Леса к Речке, соответсвенно переходим по xBtn на локацию :Шлюз, предустановив в переменные исходную локацию (Старт) и целевую (Финиш). В локе :Шлюз ищем переменную, допустим, Вида Шлюз$Старт%_$Финиш%. Если этой переменной нет (ее значение = 0 или пусто), то тупо идем в целевую локацию. Если в этой переменной есть значение - то это предустановленное нами (или даже автономно) значение Метки, которую нужно вызвать по proc и обработать особенность перехода из локи в локу. Так можно прописывать особенные "Мульты" при переходе, реализовывать открываемые/закрываемые запоры ну и т.д. По свободным локациям НПС может перемещаться ничуть не хуже, чем по квадратной сетке. Правда, свободное размещение локаций исключает понятие навигации и предсказания маршрута. Хотя признаку выхода можно, конечно, приписать свойство относительной ориентации (произвольный градус направления относительно текущего положения героя) - ну это в порядке бреда :)

noname: GooseMan пишет: мне мало нравятся карты в ТЕКСТОВЫХ играх, построенные по принципу квадратной координатной сетки. Во-первых, без карты в них неудобно играть, во вторых, будучи удобными для обсчета, они менее интересны для геймплея тут вот какой момент: во-первых без карты в игру со свободными переходами крупнее чем Холм Фей играть просто невозможно- запутаешься. а в моей системе- не запутаешься. знаешь, допустим сектор a1"Долина Элементалей Огня", координаты такие-то. где бы ты ни находился легко понять направление и без карты. во-вторых такая карта может быть просто идеальной в плане геймплея, если её толково составить. на поле a1-h8 разбросать, допустим, штук 12 несоприкасающихся секторов(полей) со звучными названиями и соответствующим наполнением; в окружающих "пустых" секторах будут дороги с указателями(на перекрёстках) и разные интересности там-сям. а в пределах сектора: каждый сектор может быть разбит на логические куски, напр:"квартал нищих, центр города и т п"- если город. получаем: большую карту, на которой может быть много интересного и на которой легко ориентироваться редко подглядывая на саму карту а это- плюс геймплею

noname: GooseMan пишет: как видно из твоей работы, УРКЛ теоретически позволяет создать АВТОНОМНЫЙ мир заданной степени сложности. Однако чем сложней и автономней мир, тем менее он ценен собственно для целей игры. ну во-первых спасибо за респект во-вторых: ты 100% прав. далее возможны два пути: 1. делать модель социума (именно для того и даётся возможность поиграть за любого персонажа, что бы "обсмаковать" происходящие там процессы со всех сторон) 2. более простой путь: делать "Потёмкинскую деревню", т е имитацтию социума, которую легче сделать интересной для игрока, чем 1-й вариант. В этом случае важен контакт с большим кол-вом бета-тестеров и просто игроков, которые будут сообщать:"нет, бармен никогда бы так не поступил..." или: "после того, как я уговорил главу своего(крупного) клана вооружить всех членов АК-47, в обмен на имеющееся у них вооружение и доплату стоимость АК-47 возросла на 30%, а их производство возросло на 10%, что в-общем логично, но не вызвало соответствующих вторичных тенденций на рынке, которые обязательно должны были бы возникнуть. например, такие как..." p.s. конечно имитацию делать легче и выйдет интереснее, но для этого идеи должны быть несколько в другом ключе. я не люблю конкретные идеи и сюжеты. буду думать...

fireton: Фигня все это. Игроку интересна именно история, рассказанная автором, а не возможность "побродить" по модели реального мира. Такие "живые игровые миры" интересны, в первую очередь, самому автору, которому нечего сказать, но хочется "попрограммировать"...

noname: fireton, да, автору такие миры могут быть очень интересны- ведь это МОДЕЛЬ СОЦИУМА. ну, и не только автору. впрочем, я уже пишу игру на конкурс в "обычном" стиле- у меня появился сюжет. и такой сюжет! в-общем, даже сам не пойму- то ли тупо, то ли гениально. уже набил 360 строчек кода под досурку (и потестил немного) - и это только одна из комнат(при чём ещё недоделанная). а всего их будет почти сотня. эх, если запутаюсь- пропадёт весь эффект. задумка очень рискованная. что бы склонить игроков к оценке "гениально" а не "тупо" нужно отточить каждую мелочь.

noname: кстати, заметил одну особенность досурки: даже обычный переход по btn происходит с некоторым торможением. таким же, как и в примере с 1000 ходячими неписями. отсюда вопрос: а если попробовать миллион(миллиард) этих примитивных ходунов- заметно ли снизится скорость? но я проверять это пока не буду- квест пишу на конкурс

Евгений: Там есть специальная переменная URQ_delay которая замедляет вывод текста на экран, иначе выглядит некрасиво.

Агент 007: Привет! noname пишет: но я проверять это пока не буду- квест пишу на конкурс На какой, если не секрет?

Nex: Агент 007 на КРИЛ, надо полагать. Сейчас кроме него конкурсов не ведётся - на "Иллюзию Выбора" приём работ завершён.

noname: Евгений пишет: Там есть специальная переменная URQ_delay которая замедляет вывод текста на экран, иначе выглядит некрасиво. спасибо! итак, результаты эксперимента: 1. обработка 1000 примитивных ходунов происходит практически мгновенно 2. обработка 10000 таких же болванов заметно притормаживает... торможение заметное, но не смертельное. отсюда ВЫВОД: вполне можно кодить 1000 "продвинутых" персонажей, если придумать, как сделать их поведение разумным с помощью самого минимального кол-ва IF..THEN..ELSE и по-возможности без циклов. арифметика и прочая как правило выполняются в разы быстрее чем IFы РЕШЕНИЕ: очень простое- избыточным кол-вом переменных. т е если после каждого выбора персонажа вставить заполнение большого кол-ва переменных обычными присваиваниями. ПРИМЕР: в моих недоделанных примерах живого игрового мира я вывожу персонажей, которые присутствуют в локации перебором их ВСЕХ в цикле. НО если довести до ума списки персонажей в каждой локации (есть такая переменная там: поле#коорд$актёров, поле#коорд$актёр#номер$) то можно будет выводить именно тех, кто на этом поле присутствует- оптимизация скорости за счёт избыточности переменных. впрочем, в данном примере такая оптимизация не стоит выеденного яйца. я хотел пояснить суть: интеллект персонажей можно попробовать реализовать всего одним циклом, в котором будут вычисляться значения всяких переменных с условными переходами так например должен быть список всех возможных действий по ходу прохода цикла невозможным действиям вычисляется статус "0" (IF..) возможным - статус вычислим по формуле (умным персонажам совсем без IF в формуле не обойтись- достигать какой-то цели- всё равно, что искать путь в лабиринте, НО надо постараться заранее "пометить" все маршруты чтоб хотя бы избавиться от вложения циклов) в текущую пару переменных заносим максимальный встреченный статус и действие, которое ему соответствует после ОДНОРАЗОВОГО прохода цикла получим требуемое действие. ну а по ходу игры этот интеллект будет применяться для каждого персонажа поочерёдно

noname: и ещё насчёт избыточных переменных есть такая мысль: допустим, имеем лабиринт, выбираем случайную пару полей лабиринта. на одно поле помещаем непися, на другое- цель. требуется: 1 что бы непись шёл к цели кратчайшим путём 2 что бы вычисления происходили максимально быстро решение: -после генерации лабиринта для каждой пары полей лабиринта вычисляем кратчайший путь и помечаем его в полях на этом пути -пишем всё это дело в файл в виде "instr полеX_Y_цельN_M= север" и аппендим его в файл.qst это надо делать на дельфях или си или т п теперь, как будет работать готовая прога на досурке: -непись находясь на полеX_Y обращается к переменной полеX_Y_цельN_M, в которую занесено требуемое направление движения. N_M- координаты искомого поля. если, к примеру, размер лабиринта 10х10 полей (стены расположены м/ду полями, впрочем это не важно), то каждое поле лабиринта будет хранить 99 вспомогательных переменных маршрутизации. к чему это всё: лабиринты я в живом мире иметь как раз и не собираюсь, НО тема лабиринтов (причём в которых есть односторонние выходы) имеет прямое отношение к выбору оптимального ДЕЙСТВИЯ сейчас для достижения отдалённой ЦЕЛИ в будущем. как это привинтить к идее ЖИМ- пока разумных идей нет.

noname: Агент 007 пишет: Привет! и тебе привет! и всем привет! отвечаю: на КРИЛ-2008 менюшный квест под досурку

noname: в целях... ну, не знаю... в общем, в каких-нибудь целях решил постить гораздо реже. на этой неделе это- последний пост в этом форуме. каждую неделю буду постить не более 4-х постов. (считая неделю от понедельника по воскресенье включительно). p.s. по этому поводу хочется вставить полу-прощальные стихи: там ангел лёг на мат карм лодыря рыдал мрак там ора летних хин тел аромат мера кар лиха хил рак ярем но стопа мира а рима пот сон нот с города кован на века дорог стон гонец но к воле тело в конце ног раб стар бил и брат с бар я слеп мотив вит ом пелся теплынь к инь ник ныл пет я нем или плакал пили меня хорош им дев молот то лом ведьм и шорох ра во тьме ян ем меняем товар мол антракт от карт на лом лог ал гнев вен глагол дел мило молим лёд трёт косо даль лад осок тёрт довила нить тина ли вод губ будоража жар о дуб буг дар гуда радуг рад ими дав в ад или дав в ад ими

noname: в процессе работы над конкурсным квестом/ами случайно между делом родилось следующее творилово: :инициализация invkill perkill ; ГГ ориентировочно 1975 года рождения (переписать для 1985?) время = 0 ситуа = 0 конец = 10 счётч = 0 goto начало end :главная end :начало pln pln ------------------------------------------------------------------------------- pln pln pln pln * ВЫБОР * pln pln pln Ещё когда я играл в книги Браславского, я задумался: pln может ли выбор быть более осмысленным, чем идти налево или направо? pln По жизни нам часто приходится принимать решения, делать ВЫБОР. pln pln Представленная Вашему вниманию прога является результатом попытки pln отразить самые важные решения в жизни в формате текстового квеста. pln pln btn перемещение, дальше end :перемещение время = время+1 ситуа = rnd5 goto #время$ end :1 бодро= 30 - ситуа*5 интел= 0 + ситуа*5 ; от 5 до 25 pln pln ------------------------------------------------------------------------------- pln pln Младшие классы: учиться или гулять? pln Прийдя со школы домой, ты успел только покушать, когда с работы пришла мама. pln бодрость : #бодро$ ; словесная оценка: высокий, низкий или т п, как в Fallout pln интеллект : #интел$ pln характеристики сверстников : мин=5, средн=15, макс=25 btn 1_1, сказать, что все уроки сделаны, и идти гулять btn 1_2, честно сделать все уроки end :1_1 instr выбор= бодро pln Ты любишь активные игры на свежем воздухе. Твоя БОДРОСТЬ увеличилась ; завёл друзей goto перемещение ; конкретные имена окружения end ; и отношения :1_2 instr выбор= интел pln Постепенно учёба тебе стала нравится. Твой ИНТЕЛЛЕКТ увеличился. goto перемещение end :2 pln Впрочем, с возрастом увеличились все характеристики. А ещё ты стал чаще pln обращать внимание на девочек. бодро = бодро + 5 интел = интел + 5 ; 10..30 #%выбор$= #%выбор$ + ситуа*5 ; 15..55 обаян = 35 - ситуа*5 ; 10..30 btn 2_метка, дальше end :2_метка pln pln ------------------------------------------------------------------------------- pln pln Средние классы: бить или не бить? pln На перемене ты заметил, что Аньку обижает Бутуз из паралельного класса. pln бодрость : #бодро$ pln интеллект : #интел$ pln обаяние : #обаян$ pln характеристики сверстников : мин=10, средн=25, макс=55 btn 2_1, защитить девчонку btn 2_2, не лезть не в своё дело end :2_1 instr выбор= обаян случа = 10 + rnd5*5 ; 15..35 pln Драка была жестокой: переходный возраст, за девочку убить готовы. if случа > бодро then goto 2_1_1 else goto 2_1_2 end :2_1_1 бодро = бодро - 5 интел = интел + 5 обаян = обаян + 5 ; * pln На этот раз ты проиграл. Бутуз умудрился сломать тебе руку, pln но девчонок из твоего класса обижать перестал. Твоя БОДРОСТЬ уменьшилась из-за pln травмы, но девчонкам твой поступок понравился. ОБАЯНИЕ увеличилось. goto перемещение end :2_1_2 бодро = бодро + 10 интел = интел + 5 обаян = обаян + 5 ; * pln Ты победил! Бутуз теперь надолго забудет девчонок из твоего класса. pln Твои БОДРОСТЬ и ОБАЯНИЕ увеличиваются. goto перемещение end :2_2 instr выбор= интел бодро = бодро + 5 интел = интел + 5 ; * обаян = обаян + 5 pln Тебя не волнуют эти детские разборки- ты выше этого. pln Ты растёшь серьёзным, уравновешенным юношей. Товарищи считают тебя слегка pln двинутым, но тебе нет до этого дела. Ты- не от этого мира, твоя страсть- наука. pln Твой ИНТЕЛЛЕКТ увеличился. goto перемещение end :3 #%выбор$= #%выбор$ + ситуа*5 ; бодро 5..85, интел 15..85, обаян 15..60, возрастной ориентир 15..35 налич=(6-ситуа)*(6-ситуа)*(6-ситуа)*10 ; 10 40 90 160 1250 pln Все твои характеристики увеличились, а ещё в твоей жизни появились ДЕНЬГИ. btn 3_метка, дальше end :3_метка pln pln ------------------------------------------------------------------------------- pln pln Старшие классы: даст или не даст? pln Две однокласницы согласны прогулять уроки с тобой и твоим другом. pln бодрость : #бодро$ pln интеллект : #интел$ pln обаяние : #обаян$ pln деньги : #налич$ руб., у товарищей от 10 до 1250 руб. pln характеристики сверстников : мин=15, средн=35, макс=85 btn 3_1, прогулять- вдруг они позволят на этот раз больше, чем обычно btn 3_2, идти на уроки- всё равно они только дразнятся btn 3_3, продавать мороженое- пора зарабатывать деньги end :3_1 instr выбор= обаян случа = 15 + rnd5*5 ; 20..40 pln Хорошая погода. Весенний день. Ты идёшь с ней за руку, и ты- счастлив. if случа > обаян then goto 3_1_1 else goto 3_1_2 end :3_1_1 бодро = бодро + 5 интел = интел + 5 обаян = обаян + 5 ; * налич = налич воспо = 0 pln Вы прекрасно провели время: купили мороженное, сходили в видеосалон. pln А твой друг даже целовался со своей девушкой, и она позволяла ему себя ласкать. pln Благодаря общению с дамами увеличилось ОБАЯНИЕ- умение им нравиться. goto перемещение end :3_1_2 бодро = бодро + 5 интел = интел + 5 обаян = обаян + 5 ; * налич = налич воспо = 1 pln Вскоре вы разделились: ты, узнав, что у неё никого нет дома, уговорил pln уединиться у неё. По пути заглянули в аптеку- она не возражала... Это было pln чудесно. Неумело, но без фальши. Этот день запомнился тебе навсегда. pln Ты стал более уверен в себе. Увеличилось твоё мужское ОБАЯНИЕ. goto перемещение end :3_2 instr выбор= интел бодро = бодро + 5 интел = интел + 5 ; * обаян = обаян + 5 налич = налич воспо = 0 pln Ты знаешь, как важно учиться- от этого зависит твоё будущее. pln Постоянные занятия повысили твой ИНТЕЛЛЕКТ. goto перемещение end :3_3 instr выбор= счётч бодро = бодро + 5 интел = интел + 5 обаян = обаян + 5 налич = налич ; * воспо = 0 pln Ты знаешь, что научиться зарабатывать ДЕНЬГИ нужно как можно раньше. goto перемещение end :4 #%выбор$= #%выбор$ + ситуа*5 if выбор="налич" then налич=налич+1500 else налич=налич+(6-ситуа)*(6-ситуа)*(6-ситуа)*10 ; бодро 10..90, интел 20..115, обаян 20..90, возрастной ориентир 20..40(+5), налич 20..2750 if интел>100 then интел=100 & pln * Ты получил приз 1500руб за победу в конкурсе Ботан-1990 * & налич=налич+1500 pln Пока ты молод- ты растёшь, крепнешь, умнеешь, хорошеешь, учишься общению. займы = 0 ; btn 4_метка, дальше end :4_метка pln pln ------------------------------------------------------------------------------- pln pln Школа и детство позади: ВУЗ или армия? pln Обучение в ВУЗе обойдётся тебе в 10 тыс.руб. Кроме диплома он даёт освобождение pln от армии- военную подготовку можно пройти на военной кафедре. pln pln бодрость : #бодро$ pln интеллект : #интел$ pln обаяние : #обаян$ pln деньги : #налич$ руб., займы: #займы$, итого: #налич-займы*30000$ руб. pln характеристики сверстников : мин=20, средн=40, макс=100(абсолютный максимум) if воспо<>0 then pln ---------------- & pln особые воспоминания : #воспо$ pln btn 4_1, в военкомат btn 4_2, в приёмную ВУЗа btn 4_3, бегать от призыва и всячески косить от армии btn 4_4, взять кредит end :4_1 pln Хочешь служить? - всегда пожалуйста: btn 4_1_1, пройти медкомисию btn 4_1_2, откосить (дать взятку 6000 руб.) btn 4_метка, извините, не туда попал end :4_2 pln Хочешь учиться? - всегда пожалуйста: btn 4_2_1, сдавать экзамены (надо иметь 10 тыс.руб.) btn 4_2_2, купить диплом (оплатах3 = 30 тыс.руб.) - и можно не учиться btn 4_метка, пойду-ка я отсюда end :4_3 pln Хочешь прятаться в шкафу и иметь проблемы с законом? - лучше не надо btn 4_метка, вылезти из шкафа ;****************************************** доработать end :4_4 pln Хочешь взять кредит? - всегда пожалуйста: pln можешь брать "займы" по 10 тыс.руб., сейчас твой лимит - 3 "займа" pln займы автоматически погасятся в конце игры по 30 тыс.руб. за каждый pln btn 4_1_1, взять займ btn 4_метка, вернуться end //в ВУЗе / в армии :выбор работы / выбирай на вкус / в любой послед локации можно сменить работу / взять займ / купить или продать акции :работаем или меняем работу / все боссы - гады / если продолжаешь работу - можешь получить особое достижение / если меняешь работы - можешь найти хорошее место :выбор жена / ты женился + можешь замутить свой бизнес или работать / в кажд посл локации можешь либо работать либо попытаться организовать бизнес / если смог успешно заним бизнесом - особое событие :выбор авто / купил авто + можешь купить страховку + может быть у тебя дети / в кажд послед локации есть вер-сть появления детей, расходы на детей, / вер-сть попасть в аварию, рождение каждого ребёнка- особое событие / возм купить страховку на авто если не купил :выбор дом / купил дом + можешь купить страховку на дом /в послед локации есть вер-ть пожара и можешь куп страховки какие не купил :выбор пенсия () /на пенсии за каждое особое воспоминание получаешь /случайный бонус типа: "вы создали <такое-то творилово>, получите бонус rnd очков" /т е пенсионер занимается творчеством и получает за это некие очки /чем больше было ярких событий- тем лучше /+ очки, равные кол-ву заработанных денег / подсчёт очков, вычисляем ранг. / КОНЕЦ не знаю даже, продолжу ли я его когда-либо. просто хотел показать идею. а то и работать над ней не буду, и совсем никогда не показать- жалко.

Korwin: noname, дружище! Научись выкладывать свои файлы куда-нибудь (хоть в upload) и давать ссылку. С телефона понимаешь, трафик стоит приличных денег, и каждый раз загружать твои посты приличного размера накладно. А сама идея - хорошая. Очень.

Nex: Скучно!

Хломидоманад: Хмм, это слегка сродни тому, что мы все собираемся когда-нибудь сделать с Демом. Но скучнее (согласен с Nex'ом). Во всяком случае, в таком исполнении, как сейчас.

Byte: По-моему банально. Напоминает игры о "компьютерщиках", где "рядовой юзер" становится "хакером", собирая деньги и покупая железо "помощнее"..

Korwin: Байт, жизнь вообще банальная штука. Все ситуации вообще уже были, все литературные сюжеты уже написаны, и даже, извините за выражение, об...ание чужих идей тоже давно уже не свежо. Другое дело - конкретная реализация. Важны детали. Неповторимое сочетание оттенков, которое может создать гениальную (или как всегда - серенькую) игру. Оценить идею плавания Колумба на берегу было проще простого - бред. До него уже пытались плавать. Вернулись ни с чем. И он вернется ни с чем или погибнет! - примерно так думали здравомыслящие. Но он заплыл немного дальше других. По сути разговора: до реализации ничего сказать не могу.

GooseMan: noname пишет: не знаю даже, продолжу ли я его когда-либо. просто хотел показать идею. а то и работать над ней не буду, и совсем никогда не показать- жалко. Bro! Да у тебя превосходное начало интерактивного эссе. То что получилось, уже звучит философски и немного грустно - как раз как и положено таким произведением. Обязательно доводи до конца! А в конце, в зависимости от результата, хлопай ложкой в лоб ГГ и говори ему мораль :-D (не восприми за иронию - это доброе шутко. мне честно понравилось:)

noname: играю щазз в SoftPorn (графического Larry я прошёл и вариант CGA с текстовым вводом и VGA с мышкой). и вот что подумалось: Larry по сюжету проживает свадьбу, подставу жены, встречу с настоящей женщиной... - именно значимые для любого человека события жизни. играл Крылья (под Милену)- обалденнейшая задумка, и тоже- показ одной из особенных сторон вполне реальной обычной жизни. с удовольствием прошёл пешком по лестнице 7-ми этажки и прочувствовал реализм происходящего- это вам не 3d какое-нибудь! што-то тянет меня на такие игры, где интересно обыгрывается обычная жизнь...

Byte: Korwin, заметь, я писал именно об игре "про жизнь". Дело в том, что подобную "жизнь" я вижу каждый день. Для меня гораздо более интересны некие фантастические (вымышленные?) сюжеты, не пытающиеся обыграть реальность.

Korwin: Byte пишет: Korwin, заметь, я писал именно об игре "про жизнь". Дело в том, что подобную "жизнь" я вижу каждый день. Для меня гораздо более интересны некие фантастические (вымышленные?) сюжеты, не пытающиеся обыграть реальность. Специально для тебя напишу!!! Жди к конкурсу мини-игр.

noname: нормальная жизнь (не моя): Нормальные роды нормальный мальчик нормальный крик нормальное дыхание нормальная пуповина нормальный вес нормальные ручки нормальные ножки нормальный животик нормальный сон нормальное сосание нормальная моча нормальный кал нормальный подгузник нормальная пелЛнка нормальное одеяло нормальные кружева нормальная лента нормальная бутылочка нормальное молоко нормальные колики нормальная коляска нормальный воздух нормальные сосны нормальное небо нормальный ветер нормальный песок нормальный скрип нормальное солнце нормальное бельЛ нормальные облака нормальные ползунки нормальная каша нормальная соска нормальный сок нормальные весы нормальный балкон нормальная погремушка нормальная распашонка нормальные пинетки нормальный чепчик нормальная тесемка нормальное яблоко нормальные перевязочки нормальные ноготки нормальные гуни нормальная рвота нормальная ванна нормальная водичка нормальное мыло нормальная губка нормальное полотенце нормальная температура нормальная игрушка нормальная кошка нормальные колечки нормальный мяч нормальное ползанье нормальные коленки нормальное падение нормальные помочи нормальные шаги нормальные сандалии нормальные камешки нормальная бабушка нормальная трава нормальный жук нормальный червяк нормальный одуванчик нормальный кузнечик нормальная ссадина нормальные слезы нормальная панамка нормальная кофточка нормальная песочница нормальная формочка нормальное ведерко нормальный совок нормальная машина нормальные качели нормальная черешня нормальная клубника нормальный арбуз нормальный укроп нормальный суп нормальная ложка нормальная чашка нормальное молоко нормальный чай нормальная конфета нормальное печенье нормальный папа нормальный самолЛт нормальный дождь нормальный зонтик нормальный снег нормальный дым нормальный мороз нормальное окно нормальные санки нормальная шубка нормальная шапка нормальные варежки нормальные калоши нормальный шарф нормальная собака нормальные снежки нормальные лыжи нормальные сосульки нормальное горло нормальный кашель нормальный озноб нормальный градусник нормальная постель нормальный доктор нормальный стетоскоп нормальная ложечка нормальный аспирин нормальная машина нормальный чай нормальная подушка нормальные сны нормальный страх нормальный горшок нормальные носки нормальные горчичники нормальная книжка нормальные карандаши нормальная бумага нормальный домик нормальный человечек нормальный танк нормальное сражение нормальная весна нормальные ручейки нормальная грязь нормальный детсад нормальная воспитательница нормальная столовая нормальные котлеты нормальный компот нормальные раскладушки нормальные обручи нормальная прогулка нормальные игры нормальный праздник нормальные флажки нормальная музыка нормальный Ленин нормальные песни нормальный танец нормальные стихи нормальные подарки нормальные родители нормальные ботинки нормальные штаны нормальный подзатыльник нормальная осень нормальная форма нормальная школа нормальный букет нормальный ранец нормальная учительница нормальный класс нормальная парта нормальная тетрадь нормальная ручка нормальные палочки нормальные кружочки нормальные косички нормальная перемена нормальный дежурный нормальный пример нормальная задача нормальные чернила нормальный Вова нормальный Сережа нормальный Миша нормальный Витя нормальный Петя нормальный Андрей нормальная двойка нормальная тройка нормальная четвЛрка нормальная пятЛрка нормальная единица нормальный кол нормальная арифметика нормальное чистописание нормальная клякса нормальная промокашка нормальный ластик нормальная Светка нормальные леденцы нормальный коржик нормальный бублик нормальный бутерброд нормальная физкультура нормальный зал нормальный физрук нормальный журнал нормальный мяч нормальная эстафета нормальные трусы нормальная сменка нормальный турник нормальное воскресенье нормальный двор нормальные ребята нормальный футбол нормальный проход нормальный финт нормальная пенка нормальные кеды нормальный удар нормальная девятина нормальный пас нормальный счет нормальный СЛга нормальный Колян нормальный Жук нормальная Утка нормальный Жека нормальная чеканочка нормальная рогатка нормальный фонарь нормальный сосед нормальный отец нормальный ремень нормальные слезы нормальный угол нормальные задачки нормальный угольник нормальный круг нормальная окружность нормальная биссектриса нормальный катет нормальная гипотенуза нормальное равенство нормальное тождество нормальное подобие нормальный икс нормальный игрек нормальный зет нормальная алгебра нормальная физика нормальная химия нормальный опыт нормальная колба нормальный водород нормальный кислород нормальная вода нормальная кислота нормальная щЛлочь нормальный натрий нормальный магний нормальный марганец нормальная бомбочка нормальный взрыв нормальный дым нормальные спички нормальный самопал нормальное попадание нормальный хоккей нормальные коньки нормальная клюшка нормальная шайба нормальный лЛд нормальный "Спартак" нормальный бросок нормальный гол нормальные щитки нормальный вывих нормальная больница нормальная боль нормальный гипс нормальный костыль нормальный телевизор нормальный фильм нормальный шпион нормальный разведчик нормальные конфеты нормальные фантики нормальные марки нормальный альбом нормальная серия нормальный блок нормальные колонии нормальная фауна нормальная флора нормальный спорт нормальный магазин нормальный обмен нормальный полтинник нормальный рубль нормальное мороженое нормальные Сокольники нормальные аттракционы нормальная карусель нормальные ребята нормальная тетка нормальная сумочка нормальные деньги нормальный свист нормальный атас нормальная дЛра нормальные сигареты нормальная затяжка нормальная тошнота нормальный Рыба нормальная голубятня нормальный туман нормальный дутыш нормальный почтарь нормальный рынок нормальный мужик нормальный пацан нормальная пятерка нормальный мент нормальное отделение нормальный участковый нормальная мать нормальная пощечина нормальная ругань нормальный побег нормальный Славик нормальный маг нормальные битлы нормальные роллинги нормальные пласты нормальные колонки нормальное стерео нормальный эффект нормальная цветомузыка нормальные джипы нормальная вечеринка нормальные девки нормальная Светка нормальный танец нормальные сигареты нормальный портвейн нормальный смех нормальный шейк нормальные губы нормальный разговор нормальный Соловьев нормальная драка нормальная кровь нормальный платок нормальная разборка нормальный завуч нормальный классрук нормальная Жирная нормальный дневник нормальная четверть нормальное полугодие нормальный год нормальный аттестат нормальное ПТУ нормальные занятия нормальный станок нормальная резьба нормальные фаски нормальная расточка нормальный резец нормальный патрон нормальные танцы нормальный ансамбль нормальный ударник нормальный вермут нормальная герла нормальная подруга нормальный Рудик нормальный дом нормальная квартирка нормальные кудряшки нормальное сухое нормальные бокалы нормальные шторы нормальный блюз нормальный лифчик нормальная грудь нормальные трусы нормальные руки нормальные слезы нормальные уговоры нормальный поцелуй нормальная кровать нормальные ноги нормальный стон нормальный шепот нормальная сперма нормальная простыня нормальные глаза нормальная усталость нормальный хуй нормальное завтра нормальный завод нормальный мастер нормальный наладчик нормальный сменщик нормальный цех нормальная норма нормальные детали нормальный фартук нормальная стружка нормальный заусенец нормальный медпункт нормальная перекись нормальный бинт нормальные рукавицы нормальный перерыв нормальная столовая нормальный борщ нормальное пюре нормальная подлива нормальный компот нормальный Антон нормальный аванс нормальное кафе нормальная компания нормальная Люда нормальное вино нормальный разговор нормальное мороженое нормальное такси нормальная общага нормальная лимитчица нормальный вахтер нормальная комната нормальная койка нормальный засос нормальная ебля нормальное утро нормальный прогул нормальное пиво нормальная вобла нормальный парень нормальный телефон нормальные джины нормальная фирма нормальный размер нормальный батник нормальная стрижка нормальные друзья нормальная гитара нормальная песня нормальный вечер нормальная скамейка нормальное винище нормальная прошвырка нормальная кодла нормальный прикол нормальная мочиловка нормальные менты нормальный отрыв нормальный фингал нормальный папаша нормальный пиздЛж нормальные слова нормальный понт нормальная самостоятельность нормальное достоинство нормальный август нормальный отпуск нормальные башли нормальные робя нормальные девки нормальный плацкарт нормальные Гагры нормальное море нормальная погода нормальная вода нормальные ласты нормальная маска нормальная вишня нормальные шашлыки нормальные чебуреки нормальная хванчкара нормальное пиво нормальная Тоня нормальный вечер нормальная палатка нормальная ночь нормальные цикады нормальные груди нормальные подмышки нормальный оргазм нормальный кайф нормальные горы нормальный восход нормальная лодка нормальные спасатели нормальный мотор нормальные лыжи нормальное катание нормальное ныряние нормальные крабы нормальные карты нормальная водка нормальные помидоры нормальный лук нормальный торч нормальный город нормальный пляж нормальные бабы нормальные креветки нормальная ханка нормальный дупель нормальные размудя нормальный ужер нормальная блевотина нормальный вырубон нормальный отруб нормальное состояние нормальная неделя нормальный месяц нормальный скорый нормальное купе нормальная Москва нормальный дождь нормальный вокзал нормальная осень нормальная куртка нормальная повестка нормальные проводы нормальная стрижка нормальная армия нормальный карантин нормальная присяга нормальная форма нормальный прапор нормальный сержант нормальная казарма нормальные сапоги нормальные портянки нормальный кросс нормальные мозоли нормальная жажда нормальная выкладка нормальный строй нормальный воротничок нормальная ушанка нормальная шинель нормальный подъем нормальный автомат нормальный шомпол нормальная ветошь нормальное масло нормальные пуговицы нормальные крючки нормальные складки нормальный гуталин нормальный спортзал нормальный турник нормальный конь нормальные брусья нормальный канат нормальные мышцы нормальный пот нормальная усталость нормальная честь нормальные стрельбы нормальные мишени нормальные гильзы нормальный прицел нормальная бдительность нормальная благодарность нормальная каша нормальное масло нормальная вилка нормальный чай нормальный сахар нормальные политзанятия нормальный долг нормальная верность нормальное мужество нормальная доблесть нормальный героизм нормальная самоотверженность нормальная самоотдача нормальная самодисциплина нормальная выносливость нормальная стойкость нормальная исполнительность нормальная смекалка нормальная сообразительность нормальная честность нормальная преданность нормальная бескорыстность нормальная убежденность нормальная непримиримость нормальная нетерпимость нормальная заинтересованность нормальная самоволка нормальный забор нормальная улица нормальный магазин нормальные поллитра нормальный Кешка нормальный Серега нормальный батон нормальные сырки нормальный подъезд нормально пошла нормально закусили нормально вышли нормально прошли нормально запили нормально покурили нормальная поверка нормальный отбой нормальная подушка нормальная отрыжка нормальный сон нормальная тревога нормальное пробуждение нормальная голова нормальные веки нормальные портянки нормальные пальцы нормальные пуговицы нормальное опоздание нормальный наряд нормальная кухня нормальные котлы нормальные повара нормальные половники нормальные дуршлаки нормальная картошка нормальная кожура нормальное ведро нормальная вода нормальная спина нормальный позвоночник нормальная поясница нормальная табуретка нормальная швабра нормальный пол нормальная плитка нормальная чистота нормальная быстрота нормальная грязь нормальный мусор нормальные миски нормальные кружки нормальные ложки нормальная струя нормальная ночь нормальная зевота нормальная картошка нормальная табуретка нормальное ведро нормальная вода нормальный подъем нормальный кросс нормальная поверка нормальная линейка нормальный воротничок нормальный сержант нормальный наряд нормальная кухня нормальная картошка нормальная табуретка нормальное ведро нормальная поясница нормальная швабра нормальный обед нормальные миски нормальные кружки нормальные ложки нормальная струя нормальный пар нормальная кожа нормальные ноги нормальные локти нормальные колени нормальный пот нормальный отбой нормальный подъем нормальная линейка нормальная зарядка нормальный кросс нормальный наряд нормальная хуйня нормальные будни нормальные трудности нормальная воля нормальный характер нормальная дружба нормальный старик нормальная лычка нормальный год нормальные молодые нормальное чмо нормальный фуфель нормальный земляк нормальная шестерка нормальная тесная нормальная взъЛбка нормальная шерсть нормальное уважение нормальный спорт нормальный бицепс нормальный уголок нормальный пистолетик нормальный переворот нормальное солнышко нормальный кульбит нормальный шпагат нормальный пудовик нормальный двухпудовик нормальный разряд нормальная мышца нормальные сборы нормальные учения нормальная четкость нормальная слаженность нормальное соперничество нормальное соревнование нормальное противостояние нормальная пыль нормальная жара нормальная фляга нормальная скатка нормальная лопата нормальный Калашников нормальные рожки нормальный подсумок нормальный противогаз нормальная атака нормальное ура нормальный привал нормальный перекур нормальный лейтенант нормальная шутка нормальное качество нормальные ребята нормальный строй нормальный марш нормальный запевала нормальная песня нормальный значок нормальное повышение нормальный отпуск нормальный городок нормальное кино нормальное мороженое нормальный музей нормальней патруль нормальные увольнительные нормальные улыбки нормальное возвращение нормальный доклад нормальный вечер нормальное отделение нормальная зелень нормальное обучение нормальное наказание нормальный авторитет нормальная неторопливость нормальные полуслова нормальные полувзгляды нормальная шуточка нормальная ржачка нормальные разговорчики нормальная муштра нормальное послушание нормальный престиж нормальные сапоги нормальный срок нормальное время нормальный дембель нормальный кайф нормальный чемодан нормальный поезд нормальный буфет нормальный понт нормальный коньяк нормальный шницель нормальный чай нормальное купе нормальные соседи нормальный пиздежь нормальные салаги нормальное пивко нормальная понтяра нормальный отдых нормальная жизнь нормальные предки нормальный костюм нормальная Москва нормальная дискотека нормальные кореша нормальные девчата нормальный парк нормальные качели нормальный засос нормальные записи нормальные группы нормальная вертушка нормальный усилок нормальная моща нормальная громкость нормальные динамики нормальный забой нормальный запил нормальный лидер нормальный вокал нормальный орган нормальный уют нормальные картинки нормальные курсы нормальный двигатель нормальный поршень нормальный шатун нормальное зажигание нормальная смесь нормальный карбюратор нормальный фильтр нормальный бензобак нормальный инструктор нормальное вождение нормальные успехи нормальная практика нормальный автопарк нормальный автобус нормальный учебный нормальный самостоятельный нормальная работа нормальная зарплата нормальный маршрут нормальные остановки нормальная загруженность нормальный обзор нормальный режим нормальный опыт нормальная легкость нормальная небрежность нормальная лихость нормальная точность нормальный ништяк нормальная Марина нормальный магазин нормальные родичи нормальный достаток нормальное предложение нормальная свадьба нормальный ресторан нормальный костюм нормальная фата нормальные друзья нормальные подруги нормальные фужеры нормальное шампанское нормальные свидетели нормальный поцелуй нормальные папы нормальные мамы нормальные бабушки нормальный дедушка нормальные музыканты нормальный вокал нормальные подарки нормальные поздравления нормальные танцы нормальный упивон нормальная чайка нормальная комната нормальная ночь нормальная девочка нормальная грудь нормальная фигурка нормально попоролись нормальный сон нормальное утро нормальное кофе нормальная суббота нормальная житуха нормальные условия нормальные средства нормальная сберкнижка нормальная обстановка нормальный сервант нормальный шкаф нормальные соседи нормальная кухня нормальная любовь нормальная семья нормальная жена нормальный обед нормальный ужин нормальный завтрак нормальный стимул нормальные квартальные нормальный план нормальная тринадцатая нормальный стаж нормальный километраж нормальная прибавка нормальные ремонтники нормальный парк нормальное начальство нормальные люди нормальная табельщица нормальные рейсы нормальная конечная нормальное домино нормальный стол нормальный Вася нормальный пузырь нормальный розлив нормальное настроение нормальное пополнение нормальный отгул нормальное дежурство нормальный субботник нормальный воскресник нормальный холодильник нормальный характер нормальный малый нормальная беременность нормальный ценник нормальный выход нормальный свитер нормальные гости нормальная дулька нормальное отношение нормальная дача нормальная трансмиссия нормальный минет нормальный батя нормальная охота нормальный пентюх нормальные поездки нормальная розетка нормальные волосы нормальный пиздабол нормальные гвозди нормальная Риточка нормальный домкрат нормальный туалет нормальный пробег нормальные запчасти нормальный хлеб нормальная хреновина нормальные праздники нормальное зарево нормальный задник нормальный сынок нормальный штифт нормальный ветерок нормальное болото нормальный кран нормальные связи нормальная музыка нормальные кантики нормальное чтение нормальная трахалка нормальный мореплаватель нормальный Райкин нормальный факт нормальное второе нормальная обида нормальный заяц нормальный Виктор нормальный дежурный нормальный вал нормальный министр нормальный видок нормальный шнур нормальная задница нормальный отряд нормальный хозяйственный нормальный Станислав нормальный ветрище нормальный замот нормальный круг нормальное поражение нормальные обезьяны нормальная Мальта нормальный топор нормальная слабость нормальное ремесло нормальный карандаш нормальный Простаков нормальный театр нормальные канадцы нормальный ученичок нормальный ножище нормальный шуруп нормальный расклад нормальный змий нормальные выродки нормальная целина нормальная вечерка нормальный райком нормальные старики нормальная спинка нормальное марево нормальное большинство нормальный холодец нормальные веки нормальная коса нормальные деточки нормальный Саратов нормальный Лбарь нормальная осока нормальный штамп нормальный Сталинград нормальные руки нормальная техника нормальный грохот нормальная Васницкая нормальный дымок нормальный чужак нормальное железо нормальное расстегивание нормальная записка нормальная точилка нормальные евреи нормальный танк нормальная дубрава нормальная Америка нормальное происшествие нормальный бросок нормальный Чехов нормальная коробка нормальная слабость нормальные шпоры нормальный патефон нормальный Гриша нормальный отголосок нормальный мистер нормальные задние нормальная рябь нормальная пара нормальный ствол нормальная вершина нормальный приварок нормальная акушерка нормальное курево нормальный ебальник нормальная невидимость нормальный приказ нормальная лестница нормальное ошеломление нормальный глоток нормальный Гершкович нормальные близлежащие нормальный учет нормальный камешек нормальный козырь нормальная жестокость нормальные расходы нормальная блядище нормальный Котлов нормальное бряцание нормальное отнятие нормальный Петро нормальная нефть нормальный фланг нормальное прикосновение нормальная пыльца нормальное стечение нормальный кулачище нормальный Кенигсберг нормальное единство нормальный эффект нормальная память нормальное меньшинство нормальная Волга нормальный рывок нормальная метель нормальный кактус нормальный подлокотник нормальное придыхание нормальная смола нормальный старпом нормальная комета нормальный тиранозавр нормальный хуй нормальное существование нормальный презент нормальная Танечка нормальные пасатижи нормальная нелепость нормальные квазары нормальный пляж нормальная сивуха нормальная Родина нормальный колчан нормальные занятия нормальное сопротивление нормальная простота нормальное солнце нормальная десница нормальный пепел нормальный космолЛт нормальный Ивашенко нормальное затемнение нормальная распущенность нормальный осколок нормальный горизонт нормальный Вашингтон нормальная каретка нормальный выебон нормальный маршал нормальные туземцы нормальный Сарочь нормальный пердЛжь нормальные нелепицы нормальные бомбы нормальное условие нормальная саранча нормальное вскрытие нормальный прицеп нормальное предательство нормальная ягодка нормальная маменька нормальный якут нормальное затмение нормальное горе нормальный Гершензон нормальная пора нормальная нянечка нормальные жуки нормальный господин нормальный вскрик нормальное сношение нормальный Котенька нормальные изумления нормальный стеклярус нормальный хуесос нормальная курица нормальные беседы нормальная область нормальное здоровье нормальная плотность нормальный шалфей нормальный укус нормальное стремление нормальная муха нормальная нежность нормальный Джапур нормальное веление нормальный управдом нормальная эпидерма нормальная тяга нормальное предопределение нормальная потливость нормальные яички нормальная дверь нормальная свекровь нормальная метла нормальные французы нормальный майор нормальная пиздища нормальное промедление нормальный Ворошилов нормальная зорька нормальные кучера нормальный транзистор нормальные холмы нормальный оператор нормальный Хлестаков нормальные трубы нормальные муравьеды нормальный трамвай нормальное золотце нормальное темя нормальные черенки нормальные кнопки нормальный петит нормальные барабанщики нормальная сисяра нормальное извещение нормальная молитва нормальное отдохновение нормальные секунды нормальное семейство нормальная олифа нормальная Сонечка нормальные педерасты нормальное почЛсывание нормальный сюртук нормальный звукоряд нормальное удовольствие нормальный пахан нормальные губки нормальный пентюх нормальные православные нормальное восхождение нормальные кичики нормальный йог нормальная дура нормальный кусок нормальное угождение нормальный аппаратчик нормальные поебушки нормальная комедия нормальные метростроевцы нормальная десперссия нормальный молот нормальные китобои нормальное прошение нормальная тяжба нормальное воссоединение нормальный одиночка нормальный протон нормальный купчик нормальное наводнение нормальный Владивосток нормальная Таня нормальное фразЛрство нормальные снимки нормальная сечка нормальные поросята нормальный Кремль нормальные триоды нормальные сеялки нормальное убийство нормальный слив нормальная хунта нормальная дичь нормальный кабель нормальные сапожки нормальная готовальня нормальный кооператив нормальный октаэдр нормальный подстаканник нормальное предуведомление нормальный клитор нормальный гнев нормальный выключатель нормальный контрабас нормальная Серебрякова нормальное причастие нормальный телефон нормальное опровержение нормальные планеты нормальный гемморой нормальный кубик нормальная брюнетка нормальные выборы нормальные стрельбы нормальное убожество нормальный логарифм нормальное безумие нормальный Пресли нормальные соты нормальный чернокожий нормальное заступничество нормальная икона нормальный цветок нормальное бродяжничество нормальные взаимоотношения нормальный гудок нормальная сволочь нормальный крикет нормальная антенна нормальный циклон нормальный короед нормальный пупс нормальные метрономы нормальный ясень нормальный астероид нормальные колени нормальные чашки нормальный кивер нормальный шмоняра нормальное электричество нормальный атташе нормальный волк нормальный куколь нормальное дифференцирование нормальный Торжок нормальное законодательство нормальный Рихтер нормальный крючок нормальный цимес нормальное панибратство нормальный Рим нормальные суставы нормальное явление нормальный таракан нормальная свобода нормальные крекеры нормальный хам нормальный Васнецов нормальный убой нормальные фисташки нормальное улучшение нормальная тяга нормальные лесбиянки нормальный печник нормальное приземление нормальная серьга нормальные подследники нормальная белизна нормальное ханжество нормальная губка нормальные кружки нормальная капуста нормальная лысина нормальный пасечник нормальный рубль нормальные батареи нормальная видимость нормальное подножие нормальная кузница нормальные Вешняки нормальный передовик нормальные модницы нормальный жираф нормальная отвертка нормальный Одоевский нормальные голоса нормальная жопочка нормальная капель нормальные чапаевцы нормальный манеж нормальное преувеличение нормальный турнепс нормальный клозет нормальная акварель нормальный креп нормальный бук нормальная горчица нормальные святки нормальное преображение нормальные заморозки нормальный скобарь нормальное самбо нормальный Мосх нормальное побуждение нормальная находка нормальные гамаши нормальное мытьЛ нормальная трясогузка нормальная медь нормальный аппетит нормальное попрание нормальное козлоебство нормальная рекомендация нормальная половина нормальный хлор нормальный марксизм нормальные маляры нормальный курс нормальное выпрямление нормальное лишение нормальная пленка нормальная эгоистика нормальный гемморой нормальный отдых нормальные анализы нормальные внуки нормальная пенсия нормальный миокардит нормальные головокружения нормальные шлепанцы нормальный протез нормальные пломбы нормальные выделения нормальное обследование нормальный уролог нормальный проктолог нормальное пальпирование нормальный рецепт нормальная аптека нормальный валидол нормальный амидопирин нормальная ношпа нормальный аллохол нормальная бессоница нормальный радедорм нормальный кашель нормальное утро нормальная мокрота нормальные разговорчики нормальные воспоминания нормальное почесывание нормальная Лида нормальные ватрушки нормальная забота нормальные носки нормальная заплата нормальное молочко нормальное тепло нормальная грелка нормальная одышка нормальный этаж нормальный валокордин нормальный сырничек нормальная Катя нормальные ветераны нормальный Петрович нормальный Семсныч нормальный бодрячок нормальная спина нормальный дождь нормальная подушечка нормальный Вовка нормальный пластырь нормальная диета нормальные сорванцы нормальная кухня нормальное пюре нормальное раздражение нормальный крик нормальный визг нормальные слезы нормальные гадины нормальная тварь нормальный паразит нормальное унижение нормальная стерва нормальная блядовня нормальные истязатели нормальное неуважение нормальное пренебрежение нормальное равнодушие нормальный клоп нормальный хлорофос нормальная вонь нормальная прогулка нормальный дворик нормальная лавочка нормальные валенки нормальные старушки нормальная Акимовна нормальный Федот нормальный контролер нормальная контузия нормальный маргарин нормальный корвалол нормальная посылка нормальная сгущенка нормальная воболка нормальные шашки нормальная дамка нормальные поддавки нормальный ВТЭК нормальное заключение нормальный терапевт нормальный отоларинголог нормальный сосед нормальная Машка нормальные вареники нормальная сметанка нормальный творожок нормальная ложечка нормальный платочек нормальный кал нормальные родственники нормальный сиропчик нормальная ватка нормально пописал нормальные подарочки нормальная подагра нормальный миновазин нормальная простыночка нормальные ладошечки нормальная гадина нормальный городок нормальные люди нормальный телевизор нормальный бандюга нормальный волосочек нормальный сырок нормальная ряженка нормальная хохотушка нормальная повязка нормальный винтик нормальный зайчишка нормальные тараканчики нормальная Оленька нормальный пирожок нормальная начиночка нормальное яичко нормальные фантики нормальные медали нормальный орденок нормальный церроз нормальные фотографии нормальный потничок нормальный сухарик нормальный дурак нормальные пятки нормальный замочек нормальный Васятка нормальные провалы нормальная Ниночка нормальный котик нормальный костюм нормальный нафталин нормальная перхоть нормальный юбилей нормальные заслуги нормальное поздравленьице нормальный стол нормальные сослуживцы нормальный Витька нормальные стаканчики нормальная водка нормальный салатик нормальная салфетка нормальный отдых нормальный пердЛжь нормальный диванчик нормальный курослеп нормальный сахарок нормальные боли нормальные крики нормальная докторша нормальные санитары нормальные носилки нормальная машина нормальные медсестры нормальная палата нормальный укол нормальное пробуждение нормальные помутнения нормальный хирург нормальный зонд нормальная кровища нормальная каша нормальная отрыжка нормальные инъекции нормальное обмывание нормальный главврач нормальная дежурная нормальное судно нормальная клеенка нормальное посещение нормальный совет нормальные антибиотики нормальные сульфамиды нормальная водянка нормальный прокол нормальный нашатырь нормальный профессор нормальное мочегонное нормальный консилиум нормальное решение нормальный срок нормальная ответственность нормальная операционная нормальный специалист нормальный наркоз нормальная операция нормальное состояние нормальное давление нормальный пульс нормальное дыхание нормальная фибрилляция нормальный адреналин нормальная кома нормальный разряд нормальное массированние нормальная смерть быть нормальным - не просто безумие, это - преступление

elmortem: noname За такие поты нужно руки отрывать!

VampirE: Интересная задумка, у меня было нечто подобное на УРКе. Игра была в пост-апокалиптическом стиле, там были случайные встречи, скажем с торговцами или случайными врагами. У торговцев можно было купить какие-нибудь товары, список которых тоже генерировался случайно. Но все это заглохло, хотя сам процесс написания вот таких вещей был крайне увлекательным. С тех пор себе дал слово, что не сажусь за написание чего либо не имея плана работы и транскрипта. =) А автономные актеры в принципе легко реализуются. Берешь массив с картой, если не препятствие или не край карты актер двигается куда-то. Естевственно направление выбирается случайным образом. на урке все это легко реализуется, только писанины много из-за отсутствия элементарных конструкций.

Takemikazuti: Ннм, нечто подобное я пытаюсь сделать в акве :) Только для неё мне были необходимы динамичные персонажи, и я уговорил акелу сбацать мне немного необычную акурку, в которой работают странные на первый взгляд команды, вроде: a="if номер_локации=1 then "+#%команда$ #%a$ Эти странные конструкции позволят формировать динамичных персонажей, формирующих новые правила самостоятельно :) Сейчас я уезжаю, а вечером по приезду чекну твой код, и попробую смешать его с динамикой :)

Дозер: 2noname Круто!!! Супер!!! Мне очень понравилась и задумка, и реализация, и именно в виде такого вот небольшого отрывка!!! Продолжай, плз, не дай задумке умереть!!! Вот только эта, знаешь... Копировать сюда весь орфографический словарь было незачем, 100% тебе говорю... 2Byte А мне, кстати, игрушки про хакеров, и как выжить очень нравятся! Не было скучно ни разу!.. Нет, вру. Было. Игрушатина полная багов попалась, поэтому с досады активны грыз лапу (а что мне ещё оставалось делать-то) 2 Корвин: сделай, плз))) Очень хочется посмотреть на игры такого жанра))) 2All НЕ думаю, что самостоятельные действия персонажей нужны в принципе. Это, как знаете... Как те же самые игры с графикой и без графики. Если с описанием всё нормально упаковано, то никакой графики и не понадобиться - более того, она даже мешаться будет - навязывать чужое понимание. Ну так и тут, с жизнью. У меня лично полный комплект возник при чтении - как проживается жизнь. Вспомнил и себя в школе, в инстите, с трепетом сердца почитал и о работе... Так что моё мнение - квест "про жизнь" уже полностью удался, и лучше расширить его вариантами и событиями, чем просаживать время на ботов... p.s. Может перекинуть ботов истинному программисту, которому бы это было интереснее, чем сам сюжет???

Takemikazuti: http://urq.allquests.ru/upload/%D0%94%D0%B2%D0%B8%D0%B6%D0%BE%D0%BA(%D0%B4%D0%B0%D0%B6%D0%B5%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82).rar - мой древний проект, по структуре НУ ОЧЕНЬ похожий на твой код в первом посте. Правда, там я ввёл примитивную графику и управление с клавиатуры :) ещё я там ужасно ступил с ифами - мал был :) Позже я делал нечто подобное для аквы, но там графика и неписи были не нужны. л1описдк="В холл" л2описдк="В комнату" л1опис="вы в холле страшного дома" л2опис="вы в страшной комнате" с1=1 с1н1=2 с2=1 с2н1=1 персв=1 :ыы фыва=1 pln #л#персв$опис$ :ыть if фыва=с#персв$+1 then end else xbtn ыы,{персв=с#персв$н#фыва$},#л#с#персв$н#фыва$$описдк$ & фыва+=1 & goto ыть Всё! Проверено, правда, только для двух локаций, но теоретически вытянет и больше :) Если и не вытянет, то только за счёт мелких багов, с которыми можно разобраться на месте.

qqq: Takemikazuti пишет: по структуре НУ ОЧЕНЬ похожий на твой код в первом посте ну да, структура диктовалась языком и целью. (расширяемость кода и тп) Дозер спасибо за поддержку! действительно, стоило бы убить год хорошей работы на то, чтоб закончить начатое (это если делать покороче но хорошо и в меру широко). но, думаю-таки на это меня не хватит. я сделал своё дело- показал стиль. теперь можно тихо гордиться своей задумкой и повесить распечатку твоего поста на самое видное место в комнате. elmortem спасибо! похоже, ты- единственный, кто пытался прочесть мой последний пост VampirE ок! p.s. я- забывший свой пароль noname, а noname- забывший свой пароль qwerty. вроде бы я ещё раньше был Salazar, но не уверен, что засветился под этим именем на этом сайте. пытаюсь подобрать пароль.

qqq: админов в списке участников нашёл, но не понял, как им личку слать... эй, админы, вышлите пароль noname на адрес, указанный в его профиле (тот ящик я сумел открыть, хотя и не пользуюсь им уже)

qqq: по-моему я мог и не указать своего мыла при регистрации, вот мой ящик: ya2500@yandex.ru более старый (когда я был qwerty) - уже утерян вышеупомянутый- был когда я был noname. помница, Корв чё-то высылал на мой ящик и может подтвердить, что это действительно ящик noname. ну, может и ещё кто-нибудь. ПРОСЬБА К АДМИНАМ заключается в следующем: прошу выслать на ya2500@yandex.ru пароль noname. а если можно, то и пароль noname с тяп-ляпа. если кто переписывался со мной через этот ящик, то он может в этой теме подтвердить, что это действительно ящик noname. помница я с этого ящика слал свою оценку каких-то игр на каком-то конкурсе.

qqq: помница Корв в теме "Akurka (продолжение)" интересовался алгоритмом лабиринта. :инициализация invkill perkill xmax=15 ; кол-во локаций по горизонтали xxmax=xmax*2+1 ymax=5 ; кол-во локаций по вертикали yymax=ymax*2+1 goto предварительное_заполнение end :предварительное_заполнение ycount=1 :yloop_метка_2 xcount=1 :xloop_метка_2 ; world_#xcount$_#ycount$= 2 ; 2 - стена world_#xcount+1$_#ycount$= 2 ; 1 - пусто world_#xcount$_#ycount+1$= 2 world_#xcount+1$_#ycount+1$= 0 ; - недообработанная локация ; if xcount<xxmax then xcount=xcount+2 & goto xloop_метка_2 if ycount<yymax then ycount=ycount+2 & goto yloop_метка_2 goto генерация end :генерация ; создаём список активных точек x_point_1= rnd#xmax$ y_point_1= rnd#ymax$ num_points=1 ; выбираем активную точку из списка cur_point=rnd#num_points$ ; выбираем направление сзюв direction= rnd4 ; пытаемся двигаться туда if direction = 1 then dx=0 & dy = -1 if direction = 2 then dx=-1 & dy = 0 if direction = 3 then dx=0 & dy = 1 if direction = 4 then dx=1 & dy = 0 .......................................................................... end :отображение ycount=yymax :yloop_метка_1 pln xcount=1 :xloop_метка_1 p #world_#xcount$_#ycount$$ if xcount<xxmax then xcount=xcount+1 & goto xloop_метка_1 if ycount>1 then ycount=ycount-1 & goto yloop_метка_1 pln end вот такой кусок проги я пока вымучил- после дельфей на урке непривычно его делать. варианты реализации могут сильно различаться, но суть алгоритма в следующем:

noname: о! пришли свежие разведданые, пароль теперь известен, а qqq разоблачён и забыт. так о чём это я? ах, да! алгоритм:

noname: 1. генерим шаблон лабиринта. если в предыдущем куске из локации предварительное_заполнение переходить не к генерации, а к отображению, то поймёте, что я имею ввиду. может прога написана не вполне корректно, просто хотел как покороче. подходы могут быть различны, ещё раз повторюсь, что вариаций на тему алгоритма генераций лабиринтов может быть множество. на дельфях я часто обходился и без шаблона. 2. создаём список 'активных точек' из одной(пока), выбранной наугад точки. впрочем, без этого тоже можно обойтись, если делать через рекурсии- алгоритм тогда получился бы вообще короткий и простой, но на урке я боюсь (возможно, необоснованно) переполнения буфера в случае большого лабиринта. 3. выбираем наугад одну из 'активных точек' по списку. 4. если рост (потом объясню) из этой точки невозможен- убираем точку из списка. она больше не активна. если нет больше активных точек- ЛАБИРИНТ ГОТОВ. КОНЕЦ. если есть- читай п3 (тут надо учесть внешние границы и/или предельное кол-во локаций - можно заполнять лабиринтом прямоугольный полигон, либо делать бесформенный лабиринт с заранее заданным кол-вом локаций, в хорошем лабиринте хорошо бы объединять эти подходы + различать различные сектора- но об этом в след раз) 5. выбираем наугад одно из возможных направлений роста, (на урке я хотел сделать хуже и проще: генерим наугад направление, если можно туда расти- растём, иначе выбираем след направление- если все 4-ре напр невозможны- читай п4. ) и "растим" лабиринт туда. что это значит?: расти в некотором направлении = пробить стену в этом направлении, что бы попасть в НЕОБРАБОТАННУЮ локацию. после чего соотв стена помечается, как пустое поле, а необраб поле помечается, как пустое поле тоже, но при этом его координаты добавляются в список активных точек. <продолжение следует>

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

noname: 6. иди к п3 КОНЕЦ АЛГОРИТМА. как оно работает? репортаж с места событий: вот замечательный наш шаблон 'в клеточку' подсветила активная точка. пробита стена, и соседняя точка(локация) тоже стала активной. потом- ещё и ещё. из каждой активной локации пробиваются стены и идёт расширение лабиринта на ещё неосвоенные локации (ВАЖНО: только на неосвоенные!!!). локации, из которых невозможно пробиться к ещё необработанной точке- 'тухнут' (перестают быть активными). в итоге получаем наш шаблон в изгрызенном виде, причём изгрызен он так, что из любой локации, принадлежащей лабиринту, теоретически можно приблуждать в любую другую. есть тупики и развилки, но нет закольцовок. (хотите закольцовок- пробейте наугад любую внутреннюю стену! а лучше: найдите сначала такую стену, кратчайший путь м/ду локациями, разделёнными которой, будет максимальным- и пробейте её. ну или ещё как-нибудь извратитесь). вот и всё, что я хотел сказать по этому поводу. жду ваших вопросов и пожеланий.

noname: кста, тут минут пять назад Nex в соседней теме упомянул войну платформ, а войны могут быть выгодным делом: интересно, на какой платформе (qsp или urq) раньше будет реализован генератор лабиринтов? ( правда мне он всё равно не нужен, ну может кому другому пригодится )

Хломидоманад: noname пишет: интересно, на какой платформе (qsp или urq) раньше будет реализован генератор лабиринтов? ( правда мне он всё равно не нужен, ну может кому другому пригодится ) Two hours' work. Написал бы хоть сейчас, но нет даже этого времени. Так что кому пригодится, тот и напишет)

staticZ: На QSP их было уже много.

СантиМЭТР: Спасибо, Безымянный!:) в сути алгоритма пока не разобрался, но уже знаю, куда его приспособить с толком.

Nex: noname генератор лабиринтов был сделан на QSP очень давно, а первой игрой, где он используется, стал рогалик "Серафим".

noname: Nex а я придумал этот алгоритм в 10-м классе 33-17=16 лет назад. вот! а как насчёт лабиринта с дверьми и ключами к ним?

noname: Nex пишет: noname генератор лабиринтов был сделан на QSP очень давно, а первой игрой, где он используется, стал рогалик "Серафим". ну, там используется более простой алгоритм... впрочем, для жанра 'Серафима' - в самый раз. (это я без сарказма- действительно подходящий генератор для этой игры) так что вопрос реализации алгоритма на куспе или урке остаётся открытым. p.s. а алгоритм из Серафима стоит изучить- для широты кругозора. + наверняка есть и другие способы простой генерации лабиринтов. p.p.s. у qsp-шников отличный архив файлов с описаниями и комментариями! а урка, видать перестала развиваться давным давно, и только её изначальная красота кое-как поддерживает её ещё на плаву. (так же меня до сих пор восхищает задумка Синклера, но пользуюсь я таки IBM-кой...) p.p.p.s. долгой жизни урке!

noname: для тех, кто не спит: 1. в этой теме чуть выше был описан алгоритм генерации лабиринтов 2. только что скачал из upload-а свою же заготовку, для которой этот лабиринт мог бы понадобиться. пока там вместо лабиринта просто несколько стен наугад расставляются. Uploaded succefully: http://urq.allquests.ru/upload/monst000.qst [10.13 Kb] суть игры: ---главгерой отстреливает монстров в лабиринте 15х70, который постоянно целиком отображается на экране вместе с расположением 99 монстров. ---безобидные монстры обладают примитивным интеллектом, ходят, огибают препятствия, отдыхают восстанавливая силы (m- ослабленный монстр, M- более здоровый монстр). ---главгерой(смайлик) стреляет, ходит, перезаряжает по одному патрону свой восьмизарядный винчестер, а так же вынужден иногда отдыхать. ослабленных монстров убивает с одного выстрела, более сильных- как повезёт. игра довольно примитивна, но НЕ шифрована и её код может быть интересен для изучения.

Chicago1920: noname спасибо тебе за все! Продолжай в том же духе!! Не пропадай!!!

noname: Takemikazuti твоя ссылка не работает

noname: следующий пост будет длинным. ничего не могу поделать- нашёл нового автора: Пётр Бормор.

noname: Недобрый сказочник (bormor) @ 2008-11-15 23:44:00 Трое героев сидели на пригорке, восстанавливая силы после боя. Могучий воин с двуручным топором, тоненькая эльфийка, увешанная амулетами, и рейнджер с висящим за спиной луком. -Хорошооо!- воин зажмурился на солнышко и потянулся.- Задание выполнили, трофеев набрали. И мне до следующего уровня совсем чуть-чуть осталось. -А я уже перешла!- похвасталась эльфийка. Она как-раз подсчитывала что-то, чертя палочкой по земле.- Как думаешь, какой мне лучше взять неоружейный навык? Езду верхом или плавание? -А ты еще не умеешь плавать?- удивился воин. -Здесь - не умею,- отрезала эльфийка. -Тогда учись,- посоветовал воин.- Ходить пешком не смертельно, а вот тонуть... -Ясно,- кивнула эльфийка и снова углубилась в подсчеты. Воин откинулся на спину и скосил глаза на рейнджера. Тот сидел, обхватив колени и уткнувшись в них лбом. -О чем задумался? Рейнджер поднял голову, посмотрел на воина и неопределенно пожал плечами. -Ничего, ничего, привыкай,- хмыкнул воин.- Поначалу всем трудно, особенно когда в рукопашную. Я, помнится, после своего первого боя вообще ревмя ревел. И после второго, и после третьего. А потом ничего, привык. -Я убил человека,- прошептал рейнджер. -Ты убил бандита!- отрезал воин.- Не бери в голову. Гоблин, оборотень, бандит, кентавр - какая разница? Непись она и есть непись. Рейнджер всхлипнул и отвернулся. -Я... знаю. Но он... так... на меня посмотрел... -Ага,- хохотнул воин,- графика здесь на высоте. -Нет, ты не понимаешь! Он так посмотрел... -Смотреть они умеют,- не оборачиваясь, сердито заметила эльфийка.- Натурализм, чтоб его... Я у себя в настройках отключила, а то ведь невозможно же! Нервирует. И по ночам потом всякая ерунда снится. -Не обращай внимания,- посоветовал воин.- В конце концов, это ведь всего лищь игра. -Игра...- прошептал рейнджер. -Раньше было лучше,- пожаловалась эльфийка.- Может, не так правдоподобно, зато надежнее, что ли. Порядок был. -Угу,- подтвердил воин.- А на прошлой неделе, представляешь, беру задание - уничтожить одну банду. Прихожу на место, а банда - тю-тю! Никого нет, все разбежались. Ну, я-то их выследил, конечно, а толку?.. Один устроился в городе помощником кузнеца, двое ушли в монахи, еще один занялся сельским хозяйством... И трогать их запрещено, мэр взял на поруки. Ненавижу, когда квест остается невыполненным! Кого-то, конечно, все-равно достал потом, втихую, но всех разве переловишь? Расползлись, как тараканы. -Да, с боевками сейчас туго,- согласилась эльфийка.-Монстры поумнели. Я, конечно, понимаю, интеллект интеллектом, но надо же хоть какие-то рамки задавать! Чтобы далеко не уходили, чтобы дрались, а не ловили рыбу... Слышал, кстати, тролли себе целый рыбачий поселок отгрохали? Тролли, прикинь! Обнесли частоколом, поставили башни, выходить не хотят. А мне для эпического посоха нужен глаз нефритового тролля, где я его теперь возьму? -Ну, если собрать побольше народу, можно попробовать,- задумчиво протянул воин.- Хотя... -Игра...-рейнджер тихо и невесело рассмеялся.- Всего лишь игра! -Ну да,- воин бросил на рейнджера недоуменный взгляд.- Игра, конечно. -Вот ты переживаешь за убитых бандитов,- встряла эльфийка.- А где их трупы? Нету! А на кинжал посмотри, есть следы крови? Тоже нет! Потому что и бандитов никаких не было, это же просто программа. -Не надо воспринимать игру слишком серьезно,- наставительно поднял палец воин.- Она, конечно, очень похожа на жизнь, специально такой сделана, но по большому счету... -...это всего лишь игра,- закончил рейнджер. -Умница,- кивнул воин.- И, кстати, твои бандиты никуда не денутся. Вот уйдем мы с локации, а они опять тут как тут. Должна же игра как-то поддерживать популяцию, а то и правда скоро ни одного монстра не останется. -Это будут новые? Или те же самые? -Ну ты и вопросы задаешь!- засмеялся воин.- Ты еще спроси, верю ли я в наличие души у неписей! -А ты веришь? -Да её и у людей-то нет,- отмахнулся воин. -Он атеист,- пояснила эльфийка.- А души у неписей действительно нет. -Ясно,- тихо произнес рейнджер и снова уткнулся лбом в колени. -Они только похожи на людей. И ведут себя как люди. Но это потому, что их так запрограмировали. Ты можешь подумать, что непись и правда испытывает боль, или радость, или страх, но всё это одна только видимость, за ней ничего нет. Только единички и ноли, да кое-какой алгоритм. Вот и всё. -Ага,- подтвердил воин и встал на ноги.- Ну, я уже всё здоровье восстановил. Пойду, пожалуй, у меня в реале сейчас пол-двеннадцатого ночи. -Спать будешь?- спросила эльфийка. -Нет, к экзаменам готовиться. -Я тоже скоро пойду, чуть попозже. У нас еще только восемь с половной, время детское. -Ты из Питера, что ли? -Нет, из Хайфы. А ты откуда? Эй, я к тебе обращаюсь! Уснул, что ли? -А?- рейнджер поднял голову.- Я? Я из Бродервилля... то есть, я хотел сказать... Договорить он не успел. Свистнул в воздухе двуручный топор, рейнджер коротко вскрикнул, а затем его рассеченное надвое тело замерцало и исчезло. На траве остались только лук, кинжал, да пригоршня монет. -Ну зачем ты так?- укоризненно произнесла эльфийка. -Аах, хорошооо!- Воин блаженно потянулся.- Вот и поднялся на уровень... Ты что-то сказала? -Да нет, ничего особенного. Жалко парнишку. Совсем как настоящий был. -Брось, нашла о ком жалеть. Он мне сразу не понравился, вялый какой-то. Ты вещи будешь брать? -Кинжал возьму. А лук мне не нужен. -Ну тогда лук мне будет, в городе продам. Только не сейчас, а завтра. Мне еще социологию учить. -Ни пуха ни пера! -К черту.

noname: Nex пишет: noname генератор лабиринтов был сделан на QSP очень давно, а первой игрой, где он используется, стал рогалик "Серафим". ага. и переводчик уэркушных квестов на куспель- тоже есть:) тока когда захожу за ними на ваш сайт, то оказывается, что вы имели ввиду совсем не то, что писали и т п куспель хороша, но ложь- плохо. даже ради рекламы хорошего продукта. тебя, Nex, есть за что уважать, и есть за что благодарить, но эти "передёргивания" настораживают. сейчас пишу квест на куспели. она мне начинает нравиться (хотя и досурка нравится не меньше) НО подобные сообщения напоминают мне, что раскрутка куспели- это, в том числе, раскрутка "гнилой" идеологии. а мне хочется уюта и штоп было хорошо и не было плохо. вот. в "холме фей" тоже лабиринт сделан не по локациям, а заполняется в массиве, и написан он раньше Серафима, но причём тут генератор? интеллекта у тя вполне достаточно, что бы понять, о чём шла речь... будем считать, што сыграл не недостаток каких-то твоих личностных качеств, а избыток твоей любви к куспели.

Nex: noname я всегда имею в виду то, что пишу. То, что кто-то иногда понимает меня неправильно, не делает меня неправым или обманщиком. Приведи хоть один пример, где я соврал. Факты в студию.

noname: Nex, попробую побыть таким же скользким, как и ты: Приведи хоть один пример, где я соврал. Факты в студию. а я, что, утверждал, что ты соврал? :) p.s. неприятно? вот и мне- тоже. кста, и где это я встречал такое мнение, что куспелевское сообщество как-то дурно попахивает? тогда оно показалось мне не вполне справедливым. ну, да я и до сих пор мало что о нём знаю... впрочем, готов завязать с перебранкой. прими мои выпады как реакцию на сообщение типа: "то, что вы обсуждаете, на QSP уже сделано очень давно". (ну, не совсем то и не давно, а давно- совсем не то, а самые те файлы, к тому же случайно утеряны, а то, что давнишние сохранившиеся ещё гораааздо ниже по уровню- так это ничего, совпадение такое). блин, ну аппелировать к твоему знакомству с алгоритмом генерации подземелий Серафима не буду- сам знаю, насколько милее свой алгоритм чужого, так что этот момент, пожалуй, опустим...

Nex: Фигли это я скользкий? Я прямой, честный и открытый. Ты упомянул ложь и гнилую идеологию. Теперь отвечай за свои слова.

uux: noname пишет: впрочем, готов завязать с перебранкой. прими мои выпады как реакцию на сообщение типа: "то, что вы обсуждаете, на QSP уже сделано очень давно". (ну, не совсем то и не давно, а давно- совсем не то, а самые те файлы, к тому же случайно утеряны, а то, что давнишние сохранившиеся ещё гораааздо ниже по уровню- так это ничего, совпадение такое). Noname, Вы не правы. Пост Nex'а, который вызвал Ваше порицание, написан как прямой ответ-комментарий вот на этот (Ваш же, между прочим) вопрос: интересно, на какой платформе (qsp или urq) раньше будет реализован генератор лабиринтов? Nex дал прямой ответ, правда, касающийся только qsp (так как в "урке" Nex не силен). А то, что "Серафим" назван первой игрой, где используется генератор лабиринтов - так очевидно, что имеется в виду именно куспелевская инкарнация этого генератора. Никаких даже намеков на "спор о первородстве" тут нет.

noname: to uux: 1)споры о первородстве меня волнуют меньше всего(т е не волнуют совсем). вопрос в том, что рекламная кампания куспелевцев оставляет неприятный осадок. и не только у меня. рыть щазз форум в поисках фраз не буду(поиск здесь не очень удобен), но они есть. напр в теме http://urq.borda.ru/?1-0-20-00000067-000-20-0 есть кое-что, если тебе не лень будет полистать. так же можно в других темах найти, что я к таким вещам относился более терпимо, чем многие форумчане. (если найтёшь соотв сообщения). но любая чаша может быть переполнена. 2) по поводу Серафима: какая там инкарнация? просто имело место быть мелкая 'поддёвка' со стороны Nex-а. так уж случилось, что последней каплей стала именно она. я убил некоторое время в пустую на разбор 'генераторов лабиринтов на куспе'. про работу с 'конвертером urq игр на qsp' вообще молчу(так уж случилось, что прямые, уверенные утверждения о существовании такового вклинивались в форум незарегистрированными гостями. а куспелевцы тут ни при чём). 3)формально в моём 'порицании' содержится осуждение лжи, а так же негативный отзыв о куспелевском сообществе. и то и другое считаю справедливым. кроме того(Nex, не подслушивай), это сообщение было адресовано именно Nex-у, которого я уважаю, но чьё поведение иногда вызывает недоумение. если бы я прямо обвинил Nex-а, я бы и тогда не стал извиняться, так как его личностные качества вырисовываются для меня всё более явно. тебе, uux, своего отношения к нему навязывать не могу, не хочу и не буду- сам во всём разберёшься, если когда у тебя будут 'пересекающиеся' с ним интересы. считаю, что уже дал в предыдущих постах развёрнутый и ясный(для Nex-а) ответ, что именно меня задело в сообщении Nex-а. себя считаю полностью и абсолютно правым, а мой упрёк- справедливым. to Nex, формально ты не лгал. я- тоже. ответ тебе в этом моём сообщении, как и в предыдущем, считаю лишним. более того, проявлением моей слабохарактерности.

Nex: Тьфу, блин. Ну какая к чёрту рекламная кампания? Её нет и не было. Тема трёхлетней давности при чём тут? Кое-что следует прояснить. "Куспелевское сообщество" - это Байт, и авторы интерпретаторов, редакторов, справки, игр, а вовсе не те "ентузиасты", которые "разжигают страсти" и несут ахинею на других форумах. Адекватные участники остаются, и вносят свой настоящий вклад в развитие платформы, а те бесчисленные "революционеры" быстро перегреваются, быстро остывают и исчезают навсегда. Очень жаль, что их, из-за их гиперактивности, принимают за "QSP-сообщество". Выливая обиду за свои неудачи на меня, или на "куспелевское сообщество", ты тратишь время ещё более впустую. Пиши игры. Игроки тебе спасибо скажут.

noname: не знаю куда написать, что бы не потерялось, поэтому пишу здесь: "Uploaded succefully: http://urq.allquests.ru/upload/unikbd.arj [3.29 Kb]" это я занёс unikbd в наш аплоад. руссификатор такой. для досурки эта программулина- то, что надо! я её давно в инете искал- щазз среди ночи встал погуглить- и нашёл. ------------------------------------------------------------------------------------- где-то в этой теме давно я уже описывал сложности с русским вводом на досурке, теперь эта проблема решена! пишем bat-файл: " unikbd.com urq_dos.exe quest.qst " и всё! только что проверено под WinXp SP2, но и раньше- под чем только не пускал- всегда был доволен работой unikb

frodo: world -- мой пример ЖМ. Правда, персонажи пока только ходят, но их количество, как и количество локаций, не ограничено. Все достаточно просто настраивается и расширяется, а еще НПС могут выбиратся из простых лабиринтов (в примере показано), если заданы обязательные локации. Будет дорабатываться.

noname: frodo, было бы неплохо, если бы авторы привыкали указывать версию интерпретатора, на котором работает их проект. возможно, я тоже не сказал, что мои проги, приведённые в этой теме писались для ДосУрки- тогда извиняюсь; твою прогу, видимо, нужно пускать под AkURQ1.28pre6. но я пока смог посмотреть только в блокноте- акурок у меня щазз нет. вообще щазз у меня некоторые сложности и со временем и другие... и СПАСИБО тебе за внимание к теме ЖИМ: радуюсь каждый раз, когда вижу заинтересованность в этом направлении! p.s. ссылка на прогу, до которой я дописал свой ЖИМ: http://urq.borda.ru/?1-0-0-00000231-000-40-0 думаю, что текст достаточно 'прозрачен', и с 'расширением' примера проблем возникнуть не должно. после этой версии я ударился в поиск принципиально других решений, и пока далёк от выпуска очередной версии. в данный момент экспериментирую с ДосУркой в попытке создать хоть что-то достаточно нестандартное и оконченное, что не стыдно было бы вложить на всеобщее обозрение.

frodo: под AkURQ1.28pre6 Да, все верно, прошу прощения. Nex уже постучал из-за подобного по голове на ветке про Локу. Чистосердечно раскаиваюсь, и впредь подобного обещаю не совершать. На выложенной версии НПС только ходят, но у себя я уже научил их с заданной вероятностью совершать поступки типа "НПС1 выполняет действие2 на локации10", "НПС3 продолжает путь", "НПС5 останавливает НПС4 с целью действия3", "НПС2 выполняет с НПС6 действие1". Протестирую -- выложу. Осталось придумать, как они будут взаимодействовать с учетом принадлежности к кланам с номерами от 0 до 99, и научить добывать предметы инвентаря при выполнении действий, в том числе красть и покупать.

noname: frodo, респект! а я всё равно всё буду делать по своему :) эх, жаль времени так мало. надеюсь, в ноябре с этим утрясётся...

noname: команда взять что-либо генерит все кнопки в одном ифе: if ... then xbtn ход_игрока,{дело#дел$="взять" & арг1#дел$=вещь#счётчик$_имя},#%...$ это позволяет легко добавлять вещи в разделе инициализации, не затрагивая кода. какую именно из вещей игрок решил взять- ясно будет только ПОСЛЕ нажатия кнопки. а если аргумент не один, а три?- как тогда? создавать массив процедур NхMxK? теоретически можно в локации ход_игрока выцепить название вещи из btn_caption, НО это уже сложности- прийдётся писать парсер, разбирающий, что НАЖАЛ игрок. в-общем, мысль была такова: с помощью xbtn можно делать то, что без него- нельзя. это- цитата из моего сообщения с первой страницы этой темы. обращаю ваше мнимание: if ... then xbtn ход_игрока,{дело="взять" & арг1=вещь#счётчик$_имя},#%...$ этот if выполняется в цикле, в котором перебираются все предусмотренные действия. если действие в данной ситуации возможно- выводим кнопку, которая: 1) после нажатия передаст управление процедуре 'ход_игрока' 2) перед тем, как перейти на процедуру- занесёт в переменные 'дело' и 'арг1' (а если надо, то и арг2 и арг3) значения, соответствующие выбору игрока. (т е глагол+сущ для обработки процедурой 'ход_игрока' аналогично тому, как обрабатываются ходы всех NPC) 3) #%..$ - просто генерится капшен кнопки. типа: 'взять яблоко' --- а как без xbtn? ну, я-то реализовал по-другому, НО для этого пришлось прибегнуть к парсеру(пусть и примитивному). помницца, я писал, что без xbtn для этого пришлось бы написать n*m доп_локаций (где n-кол-во глаголов типа 'взять', а m- кол-во аргументов типа 'яблоко'), но и это НЕ спасает положения: представьте, во што обойдётся добавить ещё один глагол и ещё один предмет, если уже есть 6 глаголов и столько же предметов! а если добавить глагол с двумя аргументами? --- к чему я это пишу: ЕСТЬ такие случаи, когда без xbtn НЕ обойтись. ну невозможно прописать ручками заранее n*m локаций, где n и m задуманы автором, как величина переменная (кол-во предметов может изменяться, а глаголы хоть и не меняются по ходу игры, но прописаны так для удобства расширения проги. соответственно без xbtn не получится удобно расширяемая прога, а получится дремучий лес во много раз превышающий предположительный объём всей программы, использующей xbtn)

noname: frodo пишет: Осталось придумать, как они будут взаимодействовать с учетом принадлежности к кланам с номерами от 0 до 99, и научить добывать предметы инвентаря при выполнении действий, в том числе красть и покупать. frodo, а сколько всего NPC задумано?

ASBer: Идеология ЖИМ мне оч.близка

noname: кста, у меня придумался другой концепт ЖИМ: 1) прописаны от руки локации с 'обычными' NPC и т п 2) ГГ может бродить и взаимодействовать с миром, как обычно в батонновых URQ-квестах НО 3) в мире есть ещё и боты, которые имеют те же возможности взаимодействия с миром, что и ГГ впрочем, ЖИМ меня сейчас 'поотпустил', щазз думаю над другим...

Nex: noname думаешь? а делать когда будешь?

noname: даю листинг генератора лабиринтов. суть в том, что из любой точки можно прийти в любую другую. привожу простейший случай: лабиринт полностью заполняет собой прямоугольный полигон, все комнаты имеют размер 1х1, зацикливаний нет. ; maxxr ; maxyr ; maxx ; maxy ; crx ; cry ; world_x_y - мир, точка (1,1)- левый верхний угол ; maxap ; x1 ; y1 ; t ; crn ; dir ; ndir :генератор invkill perkill maxxr = 8 ; кол-во комнат по горизонтали maxyr = 8 ; кол-во комнат по вертикали maxx = maxxr*2+1 ; кол-во ячеек(комнаты+стены/проходы) по горизонтали maxy = maxyr*2+1 ; кол-во ячеек по горизонтали crx=0 ; переменные- счётчики :цикл1_x crx=crx+1 cry=0 :цикл1_y cry=cry+1 world_#crx$_#cry$ = -1 ; заполняем мир ; pln world_#crx$_#cry$ = #world_#crx$_#cry$ $ if cry<maxy then goto цикл1_y if crx<maxx then goto цикл1_x maxap=1 ; кол-во активных точек x1=2*rnd#maxxr$ ; координаты первой активной точки y1=2*rnd#maxyr$ ; точки всегда указывают на комнаты world_#x1$_#y1$=2 ; создаём первую пустую комнату :генератор_выбор_точки ;proc отображение t=rnd#maxap$ ; выбираем текущую активную точку ;pln точка #t$ crn=0 ; счётчик направлений пробива dir1=0 & dir2=0 & dir3=0 & dir4=0 ;pln world_#x#t$ $_#y#t$ $ if world_#x#t$ $_#y#t$ -2$= -1 then crn=crn+1 & dir1=1; пробив возможен: север if world_#x#t$ -2$_#y#t$ $= -1 then crn=crn+1 & dir2=1; запад if world_#x#t$ $_#y#t$ +2$= -1 then crn=crn+1 & dir3=1; юг if world_#x#t$ +2$_#y#t$ $= -1 then crn=crn+1 & dir4=1; восток ;pln кол-во возможных направлений #crn$ if crn>0 then dir=rnd#crn$ & goto пробиватор if crn=0 then x#t$= x#maxap$ & y#t$= y#maxap$ & maxap=maxap-1 ; гасим точку ;pln активных точек #maxap$ if maxap>0 then goto генератор_выбор_точки if maxap=0 then goto начало end :пробиватор ;pln активных точек #maxap$ ndir=0 ;pln выбираем #dir$-е направление if dir1=1 then ndir=ndir+1 ;pln напр #ndir$ if dir=ndir then goto пробив1 if dir2=1 then ndir=ndir+1 ;pln напр #ndir$ if dir=ndir then goto пробив2 if dir3=1 then ndir=ndir+1 ;pln напр #ndir$ if dir=ndir then goto пробив3 if dir4=1 then ndir=ndir+1 ;pln напр #ndir$ if dir=ndir then goto пробив4 pln пробиватор капут end :пробив1 ;pln на север world_#x#t$ $_#y#t$ -1$=2 & world_#x#t$ $_#y#t$ -2$=2 ; пробиваем проход и делаем комнату maxap=maxap+1 ; добавляем новую активную точку x#maxap$=x#t$ ; указывающую на эту комнату y#maxap$=y#t$-2 goto генератор_выбор_точки end :пробив2 ;pln на запад world_#x#t$ -1$_#y#t$ $=2 & world_#x#t$ -2$_#y#t$ $=2 maxap=maxap+1 ; добавляем новую активную точку x#maxap$=x#t$-2 ; указывающую на эту комнату y#maxap$=y#t$ goto генератор_выбор_точки end :пробив3 ;pln на юг world_#x#t$ $_#y#t$ +1$=2 & world_#x#t$ $_#y#t$ +2$=2 maxap=maxap+1 ; добавляем новую активную точку x#maxap$=x#t$ ; указывающую на эту комнату y#maxap$=y#t$+2 goto генератор_выбор_точки end :пробив4 ;pln на восток world_#x#t$ +1$_#y#t$ $=2 & world_#x#t$ +2$_#y#t$ $=2 ; пробиваем проход и делаем комнату maxap=maxap+1 ; добавляем новую активную точку x#maxap$=x#t$+2 ; указывающую на эту комнату y#maxap$=y#t$ goto генератор_выбор_точки end :начало proc отображение end :отображение cry=0 ; переменные- счётчики :отображение1_y pln cry=cry+1 crx=0 :отображение1_x crx=crx+1 if world_#crx$_#cry$=2 then p . if world_#crx$_#cry$=-1 then p O if crx<maxx then goto отображение1_x if cry<maxy then goto отображение1_y ;input vvod end UPD да, забыл сказать: писал под DOS_URQ. точки с обеими чётными координатами- комнаты, остальное- стены и проходы.



полная версия страницы