Форум » » Нужен учебник для QSP!!! » Ответить

Нужен учебник для QSP!!!

Ziohekx: Идея создания текстовых игр мне нравится. Фактически это можно рассматривать и сам процесс создания игры как игру. Это творческий процесс. Я только второй день пытаюсь разобраться в QSP. Я потратил 4 часа чтоб понять как сделать переход на другую локацию, хотя проблема была пустяковая. Справка по большей части ставит в тупик нежели позволяет разобраться, как было сказано на форуме это список команд. Думаю все кто заниматься текстовыми играми желает видеть больше людей в этом деле. Для этого нужно, чтоб человек легко мог разобраться в редакторе. Пусть по прохождению обучения. Учебник должен быть по строен как можно более дотошно. Нужно объяснить что делает та или иная функция, где ее можно применить. Курс обучения может представлять собой создания первого квеста за ручку (сюжет пусть придумывает сам, НО схему игры ему предоставят). При этом с начало квест пусть будет простеньким в техническом плане. После чего его начнут углублять. Кроме технических процессов создания квеста (игры) нужно описать и предворительные моменты. И способы ускорения создания игры за счет экономии времени.

Ответов - 47, стр: 1 2 3 All

Ziohekx: На чну пожалуй сам. В QSP я прован. Но логики не лишен в принципе. И в самой разработки игр немного понимаю, в прочем как и в написание сюжетов. В обоих случаев если желания затягивать творческий процесс нету то нужен предварительный план. Квест простой ( так я умею только переходит из локации в локацию, подбирать предметы и выкидывать ( не более), и выводить дополнительный текст на экран.) Для первого квеста я решил сильно неморочеться. Квест будет простым выбраться из лабиринта. Лабиринт тоже сам не рисовал, на шел в интернете Задача квеста пройти лабиринт. Каждая развилка и тупик у нас являются локациями. Начало и конец 2 - локации, и развилки 34 локации, тупиков 27 штук. И того у нас 63 локации. Многовато Но раз не чего кроме перемещения нам в лабиринт делать нечего, то и страшного в общем сильно нет. Но все же можно облегчить себе работу так на локациях "Тупик" мы всегда возвращаемся назад. А значит не обязательно создавать все локации можно прибегнуть к логическим хитростям: -Первая это создать одну локацию переходя на которую ты всегда будешь возвращаться обратно, но такой способ мне неизвестен. - Второй способ не использовать локацию вовсе. Команда перехода (действие) на другую локацию будут выводить дополнительную текст и убираться из списка доступных действий. ( его я и буду использовать) Задача довольно простая. Соединить все локации (перекрестки) между собой, и расставить ложные переходы в тупик. Тут все просто создаем нужное количество локаций пример "Развилка" и добавляем в конце ее номер. Тут пригодится карта, на которой напишем номера каждой из развилок. Все что нам останется это создать команду Пойти-на юг,север,восток,запад. И копировать туда формулу ( goto 'Развикла№' ) просто изменяя номер нужно нам развилки.

Nikitakomandir: Насколько я понимаю, перед переходом на локацию тупик, нужно создать переменную локации на которой ты находишся. После на локации тупик, просто нужно зделать переход на эту переменную. Переменную нужно обновлять перед каждым переходом на эту локацию. Главное на мой взгляд разобраться как устроена система переменных, так как они во всех языках состовляют самую функциональную основу. А учебник, я также считаю нужен, ибо я тоже долго разбирался.

Nex: Учебник по QSP я начинал писать, но там до сих пор только три урока - самые-самые основы. учебник по QSP для редактора QGen


Ziohekx: О рад, что тут есть люди)) Давайте все же попробуем написать учебник целиком)) Nikitakomandir пишет: А учебник, я также считаю нужен, ибо я тоже долго разбирался. Я сейчас пытаюсь разобраться)) Вопросов куча, а ответов под рукой нет.

Ziohekx: к стать у меня старая версия QSP 2.1 Я скачал новую (5). Но, что не получается открыть редактор.

Yashko: Тэк... Насчет тупика, можно 27 локаций тупика превратить в 1 локацию. Одна локация "тупик" На всех остальных локациях (там где ходим по лабиринту) пишем: $loc = $curloc $loc - создает переменную loc. А значек $ обозначает то что эта переменная имеет текстовое значение = $curloc - $curloc это переменная которая хранит текущую локацию. И наша $loc принимает значения текущей комнаты в лабиринте (локации) Потом, в тупике пишем: p 'Тупик' act 'Вернутся': goto $loc p 'Тупик' - выводит на экран текст "Тупик" act 'Вернутся' - создает действие "Вернутся" :goto '$loc' - к действию "Вернутся" идут команды - goto $loc. А как мы помним, $loc - это у нас та локация на которой он был до тупика.

Yashko: Фух.... Вроде бы понятно(

Ziohekx: Мне не понравился подход к созданию учебника. Как излагается материал. 1) Должно быть описание меню и деталей редактора. Без нажимания кнопок. Просто описание. Дальше не нужно "выдумавший бреда". Человек хочет создавать игру, а не заниматься ерундой. По этому и нужно создавать маленькую игру, но потом не переходить к новой игре, а усложнить старую.

Ziohekx: Сейчас попробуем.

Ziohekx: loc - это может быть любое слово? Или конкретная команда?

Yashko: Любое.

Yashko: Это переменная. Ее можно назвать как хочешь.

Ziohekx: так понятно с этим. $loc = $curloc Вот это куда пихаем?

Yashko: На каждой локации лабиринта. Кроме тупика. Оно на каждой локации лабиринта, запоминает ее, и если попадаешь в тупик, то вспоминает, и возращается туда.

Ziohekx: это я понял. Где это писать? Выполнить при посещении? Или Действия на локации?

Yashko: При посещении ясен пень.

Ziohekx: не для меня)))

Ziohekx: вы дает ошибку 4003 Локации $loc нету.

Yashko: goto $loc а не goto '$loc' Вот.

Ziohekx: Все класс. Работает.

Nex: Ziohekx ты по трем первым урокам-то не делай выводов.

Ziohekx: Как сделать дверь которая открывалась ключом?

Nex: Ziohekx заходи на наш канал, получишь более оперативную поддержку http://tinyurl.com/ifrus-irc

Yashko: Предмет Ключ. Подбирать предметы как я понял уже умеешь. На локации дверь: if obj 'Ключ': (Если есть обьект Ключ, то...) act 'Открыть дверь: (Действие "открыть дверь") gt 'ololo' (При действиее Открыть дверь, идет на локацию ololo) end (Заканчивает If) end (Заканчивает Act)

Ajenta: Да, тут много людей :)))

Ajenta: Ziohekx Ну напиши свой, чем сможем - поможем.

Ziohekx: Nex пишет: Ziohekx ты по трем первым урокам-то не делай выводов. Я не говорю про качество учебника. Я говорю про манеру предоставления информации.

Ziohekx: Ajenta пишет: Ziohekx Ну напиши свой, чем сможем - поможем. Да, что писать то? Я сам познакомился пару дней с программой. Есть куча вопросов у самого. Я могу пока говорить только о системном предоставлении информации. При котором информация будет подаваться от дельным блоком. Проще говоря нужно показывать отдельную фишку - объяснять как ее применять, для чего она нужна, где ее можно применять. При этом информация должна быть легко усвояемая. К примеру игру можно создать и при помощи только переходов с локации на локацию. Что на подобие интерактивного рассказа. Плюс этого способа в простоте. Главный интерес тут будет ложится на сюжет игры.

Ajenta: Ziohekx Ты давай задавай вопросы, изучай, а потом и напишешь свой учебник :) Нас учить писать бестолку, легче самому написать, раз знаешь как надо. ;)

Ziohekx: Это дано проверенная истина, хочешь чтоб что получилось делай сам, не жди от других. Вопросов куча. Но их нужно систематизировать. подумаю и на пишу.

Ziohekx: Вот такой вопрос. Хотел создать, что на подобие диалога. В одной локации. Появлялись новый текст в описании, добавлялись новые действия (варианты ответа), и убирались старые. Не могу соорудить цыпочку. Она обламывается.

werewolf: большой диалог в одной локации делать сложно - нужно очень большую вложеность в действиях и много дополнительного кода (очистка описания и действи) - легко запутаться или что-то забыть лично я бы поделил диалог на фазы обмена репликами и вынес каждую фазу на отдельную локацию и использовал переход на новую локацию с параметром, чтобы определить что именно показывать [pre2] #loc1 '- Реплика' act 'Ответ 1': $selact xgt 'loc2',1 end act 'Ответ 2': $selact xgt 'loc2',2 end - #loc2 ! первый ответ if args[0] = 1: 'Новая реплика' act 'Ответ 1': $selact xgt 'loc3',1 end act 'Ответ 2': $selact xgt 'loc3',2 end end !второй ответ if args[0] = 2: 'Новая реплика' act 'Ответ 1': $selact xgt 'loc3',3 end act 'Ответ 2': $selact xgt 'loc3',4 end end - [/pre2] и так далее

Ziohekx: Расскажите как пользоваться переменёнными и что с их помощью можно делать. Просьба разбивать на примитивные блоки. Как их собрать потом соображу.

MasterSet: У меня есть опыт создания длинных диалогов в одной локации. Правда в основном прямолинейные, но было и по паре разветлвений. Смысл таков. Задаешь некую переменную, которая отвечает за развитие диалога в локации. Например talk. При этом каждый ответ персонажа задает следующее значение talk. При этом, если предполагается большое ветвление, то можно использовать прием "удесятерения". Как это работает. Например, у тебя сначала есть двойная развилка. Значит talk может быть равен 1 и 2. Далее в первой ветке идет, например, три выбора и тут talk принимает значения 11, 12 или 13. При этом первая цифра означает выбор на первой развилке, а вторая - выбор на второй. На третьей развилке снова умножаем число которое ведет на нее на 10 и добавляем номера вбора. Например если мы выбрали 12, то будет 121, 122, 123 и так далее. Для лучшего понимания приведу конкретный пример создания разветвляющегося диалога без необходимости вложенных IF: !НУЛЕВОЙ УРОВЕНЬ РАЗГОВОРА IF talk = 0: CLA CLR 'Незнакомец смотрит молча на вас.' ACT '- Привет!': talk = 1 GT curloc END ACT '- Чего уставился?!': talk = 2 GT curloc END ACT 'Уйти прочь': talk = 0 GT 'Начало' END END !ПЕРВЫЙ УРОВЕНЬ РАЗГОВОРА IF talk = 1: CLA CLR 'НЕЗНАКОМЕЦ' '- Ну и тебе привет, коли не шутишь.' ACT '- Какие могут быть шутки, дружище?': talk = 11 GT curloc END ACT '- Шучу. Вообще мне плевать': talk = 12 GT curloc END END IF talk = 2: CLA CLR 'НЕЗНАКОМЕЦ' '- Ничего...' ACT '- Ну и все!': talk = 0 GT 'Начало' END ACT '- Есть чо по деньгам?': talk = 21 GT curloc END END !ВТОРОЙ УРОВЕНЬ РАЗГОВОРА IF talk = 11: CLR CLA 'НЕЗНАКОМЕЦ' '- Ну ладно, хорошо. Меня Вася зовут' ACT '- А я <<$player_name>>. Ну что Вася, выпьем за знакомство?': talk = 111 GT curloc END ACT '- Ну, пока, Вася.': talk = 112 GT curloc END END IF talk = 12: CLR CLA 'НЕЗНАКОМЕЦ' '- Ну и катись тогда отсюда!' ACT '- Ладно-ладно. Ухожу...': talk = 0 GT 'Начало' END ACT '- Ты чо борзый такой, а?! (Начать драку)': talk = 0 GT 'Драка' END END IF talk = 21: CLR CLA 'НЕЗНАКОМЕЦ' '- Не братан, вообще ни копья нет.' ACT '- А если найду, значит мое будет?': talk = 0 GT 'Грабеж' END END !ТРЕТИЙ УРОВЕНЬ БЕСЕДЫ IF talk = 111: CLA CLR 'ВАСЯ' '- А у нас есть что выпить?' ACT ' - Конечно! (Достать бутылку портвейна)': talk = 0 GT 'Бухач' END END IF talk = 112: CLA CLR 'ВАСЯ' '- Ну пока, братан.' ACT 'Уйти': talk = 0 GT 'Начало' END END ЗЫ: А вообще для вопросов есть отдельная тема. Давайте не будем офтопить

Nex: Я переместил из темы про учебник сюда сообщения Ziohekx и ответы, здесь более подходящая тема.

Ziohekx: Yashko пишет: Предмет Ключ. Подбирать предметы как я понял уже умеешь. На локации дверь: if obj 'Ключ': (Если есть обьект Ключ, то...) act 'Открыть дверь: (Действие "открыть дверь") gt 'ololo' (При действиее Открыть дверь, идет на локацию ololo) end (Заканчивает If) end (Заканчивает Act) Так дверь открывать я на учился. Но как отбирать ключ при его использование?

Byte: delobj 'Ключ'

Hertz: а что, разве если воспользоваться ключом, то он исчезает?

Yashko: Ну, у Ziohekx так задуманно, что да =)

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

Yashko: >_> omg

Ziohekx: Hertz пишет: я понимаю, но на чём такая задумка основана? Даже страну увидеть такой ответ. Мой лабиринт линеен, от часть. То есть пройдя за дверь, игрок в принципе не будет возвращаться за нее. НО, я недавно стал изучать купс. И как понимаю Объект "Дверь" и предмет "Ключ" условны. На их месте может быть все что угодно, к примеру вместо "двери" может быть сундук. Это не принципиально. По этому я спрашиваю не только о конкретной вещи, но и самом прицепе работы.

Ziohekx: К стать у меня появилась одна идее по учебнику. Как Я понял его в принципе не существует. По этому пока его нет сгодится и любое пособие по Купсу. Таким образом можно открыть тему на форуме, где любой желающий сможет выкладывать различные примеры на писания кода с подробными комментарии, если это еще не было описано в теме. Для чистоты учебника можно сделать две тем 1) черновая, туда пишут кто хочет, и 2) Закрытая тема для чтения, где модератор будет переносить посты и систематизировать их по уровню сложность, от простого к сложному. Посты думаю стоит писать в одном формате. Название приема (что он делает) Более детальное описание. Набитый код. Коментарии. Примеры использование. Так, при возникновение вопросов, человек может заглянуть в такой учебники, и найти нужный парагроф. ( в окончательном варианте можно добавить содержания, чтоб проще было искать)

Nex: Ziohekx ты хочешь сделать сборник HOWTO - одобряю. Мы, правда, по возможности скоро переедем с этого форума.

Yashko: Переехать это будет хорошо. Я вообще думал, что борда уже давно загнулась. Так нет, живет еще.

Ziohekx: В каком смысле переедет?

Ntropy: Ziohekx переедет в домен qsp.su и станет частью каталога файлов.



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