RU

Что нужно добавить в QSP, по мнению Farfignugen

Farfignugen #908 15.12.2013 08:08 31 comments 21972 views

Что уже напредлагали не читал. Напишу то, что лично мне хотелось бы видеть в кугене.
1. Локацию обработчик нпс. Соответственно команды, для работы с нпс. Имя, пол, описание, диалоги. В адрифте реализовано что то подобное, удобная штука.
2. Какую нибудь встроенную систему работы с предметами, которую можно включить и отключить. Что бы предметы можно было сбрасывать на локацию и подбирать их оттуда.
3. ХТМЛ в полном объеме.
4. Поддержку видеофайлов.
5. Возможность вставлять кнопки в всплывающее окно msg
6. Поддержку дробных чисел 0,2 0,5 итд
7. Проверку орфографии
8. Проверку на ошибки синтаксиса внутри кугена.
9. Как делать квадратные корни и возводить в степень я не нашел в куспе, а хотелось бы.
10. Выдать мне губозакатывательную машинку.

Ога, что-то я размечтался. Ну хотя бы 10й пункт будет точно выполнен.

Займусь сразу 10м пунктом.
Непосредственно к QGen’у относятся пункты 7 и 8. В планах разработки это уже есть. Но в силу понятных причин разработка длительная.
Пункты 1 и 2 - это уже больше к модулям относится (статья справки). До автоматического встраивания модулей QGen’у ещё очень далеко.
Пункт 4 - на самом деле подпункт пункта 3.
Пункты 3 и 5 будут в плеере Quest Navigator, когда тот будет готов (точнее они уже есть, но пока писать игры под этот плеер сложно). Тоже длительная разработка.
Пункт 6 - на 99% уверен, что этого не будет никогда. Да и не могу себе представить, в какой игре нужны именно дробные числа. В большинстве случаев они легко эмулируются целыми числами.
Пункт 9 - вопрос решается простенькими самописными функциями. Но можешь попробовать написать Байту, вдруг сможешь его уговорить.

Дробные числа нужны для боевых систем. Я хотел сделать аналог WeBL (англоязычная текстовая онлайн игра) на куспе, но уткнулся в отсутствие дробных чисел, корней, дробей. Конечно можно навтыкать кучу костылей и оно поковыляет, но не хотелось бы инвалида по умолчанию делать. Вообще практически любая, хорошая боевая система требует как минимум поправочные коэффициенты, которые как всегда дробные. И обходить эти моменты на костылях, это только самому себе проблемы делать.
Пункт 9, без 8го не имеет смысла. Байту смысла писать нет никакого.
1 и 2 пункты. Модули модулями. Но это очередные костыли, к тому же модуля по нпс вообще не бывает, а по предметам такие модули, что лучше самому сделать, гемороя меньше будет. Нужны команды, как при работе с предметами. Добавить предмет, удалить предмет, такие команды есть. Вот и хотелось бы что бы были команды положить предмет на локацию, взять предмет с локации. Команды для работы с нпс, проверять количество, давать им свойства, обозначать диалоги.
Я конечно понимаю, что это может показатся не значительным, но это незначительно когда пишешь игру где два десятка локаций и куча кнопок для имитации бурной деятельности, а когда пытаешься что то полновесное сделать, то отсутствие таких мелочей начинает уже раздражать. К тому же когда знаешь, что есть Адрифт, в котором все это есть. Сразу оговорюсь, Адрифт мне не подходит из за своей парсерной направленности. Парсерные игры, это последнее во что я буду играть или делать.

ПыСы. Зачем мне эта ссылка на справку? Я что, спрашивал как файл присоединить? Если что, то я в курсе как это делается.

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

Что касается сложности написания на QSP боевых систем и всяческих хитрых математических расчётов, это действительно так. Платформа ориентирована на более простые игры. Она изначально создана не для текстовых “стратегий” или “боёвок”, а для классических текстовых игр, историй с сюжетом.

QSP не будет переделываться под нужды авторов “стратегий” и “боёвок”.

Но это не проблема, так как в наше время платформ для текстовых игр множество, и ты можешь выбрать ту, которая больше подходит для твоих целей. Например, INSTEAD.

Мог бы просто стереть сообщения. Нафига этот цирк с переносом? Я то думал, что даже ежику будет понятно, что надо в инерпретатор добавлять новые плюшки и соответственно в куген. Но оказывается это не всем понятно.
А что инстед? Уж сразу милену надо было предложить, и ссылочку, ссылочку.

ПыСы. Вообще ребята, вы слишком агрессивны. Стоило мне только указать на очевидное и сразу посыпались предложения перейти на другую платформу. Дескать не нравится пшол вон. Если что, то с инстеда я начинал, достоинство куспа как раз куген. Выкини его, и кусп потеряет все свое преимущество перед другими платформами. Именно из за удобного кугена я и сижу на куспе. А вы сразу начали устраивать какую то ерунду. Это не диалог, когда за крамольную мысль, сразу посылать начинают, в ссылки, на другие платформы, на три буквы.

Farfignugen,
спокойнее. Тебе отвечали корректно и по существу. Не нужно хамить. Все участники этого форума относятся с уважением к другим участникам. Давайте жить дружно.

Что касается обсуждаемого вопроса. Я лишь предложил вариант действий, который представляется мне наиболее разумным и продуктивным в твоей ситуации. Это лишь предложение, рекомендация. Разумеется, прислушаться к рекомендации или нет, решать исключительно тебе.

Тебе никто не запрещает писать на QSP что тебе захочется, никто не будет чинить в этом препятствий. Более того, в нашем сообществе уже есть люди, которые занимаются чем-то подобным, пишут на QSP сложные движки. И никто их не притесняет. Ради бога.

P.S. Я не знал, что ты уже пробовал писать на Инстеде, откуда мне было знать об этом?

Aleks Versus Moderator 15.12.2013 12:12 (12 years ago)

1, 2, 6, 9 - можно сделать самому. Реализация 1 и 2 на уровне платформы убьёт оригинальность игр и решений. Все будут делать одинаковых неписей и предметы. Даже, если они не нужны.
Дробные числа можно хранить в строковых переменных. Квадратный корень можно вычислять методом Ньютона. Возведение в степень решается циклической функцией.

Хамить? Я даже и не начинал хамить. Я же говорю вы слишком агрессивны. Я и пишу на куспе, что мне в голову взбредет. Пяток игр уже есть, все неформат ;) такие можно только через торрент распространять. И обхожусь своими силами. Но как говорил Джордж Форман, ты мертвец, если не мечтаешь. Вот и я помечтал на секунду, что кусп разовьется во что то цельное. А меня сразу носом, носом.
Ладно, фиг с ним. Этот разговор не имеет смысла. Что имеем, то и дальше иметь будет, может только в более изощренной :B: форме.

Farfignugen:

Вот и я помечтал на секунду, что кусп разовьется во что то цельное.

С твоей стороны это может выглядеть и так. А со стороны всех отписавшихся это выглядит как “этот велосипед плохо едет, нужно добавить ему ещё два колеса, корпус, двигатель и автопилот”. Само собой реакция была “QSP не станет из велосипеда автомобилем, он может стать только мопедом или мотоциклом, попробуй ISTEAD, он больше похож на автомобиль”. А по степени агрессивности обе стороны этого спора примерно одинаковы. :)

Лично я не отрицаю, что в QSP можно добавить элементы ООП. Но если это делать, то очень и очень аккуратно, чтобы механизмы были простыми и интуитивно понятными и не загромождали язык. И обсуждать этот вопрос нужно лично с Байтом. А на форуме ООП вызывает отторжение.

newsash,
В любом случае я не буду ничего обсуждать с Байтом, я его не знаю, он не знает меня.
Мне не нравится все делать в текстовом редакторе, потому инстед, милена, урка мимо. Я слишком привык и обленился, что бы обходится без удобного редактора.
Я могу сделать на куспе все, что мне нужно. И систему сброса предметов на локу и добрую сотню сгенереных нпс с диалогами. Это вчерашний день для меня. Другое дело сложность создания и как следствие, целесообразность. Но для молодняка, инструментарий подобного рода был бы очень полезен. По себе знаю. Сколько я копий сломал на итемах, который можно в любое место сбрасывать и в любом количестве.
Мне не нравятся классические тестовые квесты. Но я прекрасно понимаю, что в одиночку только в подобном жанре и можно хоть что то создавать. Потому и хотелось бы более развитой платформы с удобным редактором.
Кстати я еще никого не встречал, кому помешала бы локация обработчик событий выбора предметов или локация обработчик событий выбора действий, потому решительно не понимаю, чем еще пара тройка спец лок и дополнительные команды могут кому то помешать. Не надо, не пользуйся. Все так и делают.
Вообще вы как то все время утрируете мои слова. Велосипеды какие то, автомобили. Ну вот допустим у нас уже есть версия куспа, в которой все выше заявленное мной уже есть, и что? Кто то волосы на себе рвать начнет, как же так, есть дополнительное поле для предметов на локации и дополнительное поле для нпс (как поле для объектов) или начнет голосить, бида-бида кусп теперь считает дробные числа и может корень без костыля взять. Надо будет человеку написать квестик на конкурс, он его напишет и даже не заметит всех плюшек. Но люди которые хотели бы сделать, что то большее, чем квестик, потянутся, они оценят. И не станет куспа после всех этих добавок, каким то суровым языком, для матерых программеров. Как был платформой для простеньких игрушек, так им и останется. Только избавится от бесконечных костылей, которые пытаются втюхать как оригинальные решения и удобные модули.

Решения изменить что-то в синтаксисе QSP принимает только Байт. На уровне кугена можно только сделать автоматически добавляемые модули.
А вот по поводу итемов, которые сбрасываются в любой локации - можно подробнее? Как это должно работать, чтобы это было совместимо с существующим механизмом и гармонично?

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

newsash,
Так именно 18+ Я и есть один из джедаев перешедших на темную сторону.
Система со сбросом предметов проста как три копейки.

!Локации-обработчик событий выбора предметов

i=-1
:markobjloop
i+=1
if $selobj=$itemName[i]:
clr
pl'<<$itemName[i]>> <<iNkolvo[i]>> шт. <a href="exec:it=i&dynamic $dinbros&gt $curloc">Положить</a>'
elseif i<ItemNumer:
jump'markobjloop'
end
unsel
!Локация OnLoc
dinkolvo={
if kolvo[it]=1:
kolvo[it]=0
$item[it]=''
if no obj'<<$itemName[it]>>':addobj'<<$itemName[it]>>'
end
if kolvo[it]>1:
kolvo[it]-=1
!$item[it]='инвентарь'
if no obj'<<$itemName[it]>>':addobj'<<$itemName[it]>>'
end
iNkolvo[it]+=1
}
$dinbros={
iNkolvo[it]-=1
kolvo[it]+=1
if iNkolvo[it]<=0:delobj $itemName[it]
$item[it]=$loc
gt $curloc
}
it=-1
:markproverkakolvo
it+=1
if kolvo[it]=1:$kolvo[it]=''
if kolvo[it]>1:$kolvo[it]='<<kolvo[it]>>шт '
if it<ItemNumer:jump'markproverkakolvo'

$itemOnLoc=''
if $item[0]=$loc:$itemOnLoc+=' <a href="exec:it=0&dynamic $dinkolvo&gt $curloc"><<$itemName[0]>></a> <<$kolvo[0]>>'
if $item[1]=$loc:$itemOnLoc+=' <a href="exec:it=1&dynamic $dinkolvo&gt $curloc"><<$itemName[1]>></a> <<$kolvo[1]>>'
if $item[2]=$loc:$itemOnLoc+=' <a href="exec:it=2&dynamic $dinkolvo&gt $curloc"><<$itemName[2]>></a> <<$kolvo[2]>>'
if $item[3]=$loc:$itemOnLoc+=' <a href="exec:it=3&dynamic $dinkolvo&gt $curloc"><<$itemName[3]>></a> <<$kolvo[3]>>'
if $item[4]=$loc:$itemOnLoc+=' <a href="exec:it=4&dynamic $dinkolvo&gt $curloc"><<$itemName[4]>></a> <<$kolvo[4]>>'
if $item[5]=$loc:$itemOnLoc+=' <a href="exec:it=5&dynamic $dinkolvo&gt $curloc"><<$itemName[5]>></a> <<$kolvo[5]>>'
if $item[6]=$loc:$itemOnLoc+=' <a href="exec:it=6&dynamic $dinkolvo&gt $curloc"><<$itemName[6]>></a> <<$kolvo[6]>>'
if $item[7]=$loc:$itemOnLoc+=' <a href="exec:it=7&dynamic $dinkolvo&gt $curloc"><<$itemName[7]>></a> <<$kolvo[7]>>'
if $item[8]=$loc:$itemOnLoc+=' <a href="exec:it=8&dynamic $dinkolvo&gt $curloc"><<$itemName[8]>></a> <<$kolvo[8]>>'
if $item[9]=$loc:$itemOnLoc+=' <a href="exec:it=9&dynamic $dinkolvo&gt $curloc"><<$itemName[9]>></a> <<$kolvo[9]>>'
if $item[10]=$loc:$itemOnLoc+=' <a href="exec:it=10&dynamic $dinkolvo&gt $curloc"><<$itemName[10]>></a> <<$kolvo[10]>>'
'<<$itemOnLoc>>'

В игровой локе куда можно сбрасывать ставить такой код

$loc=$curloc
gs'OnLoc'

Где воткнеш ссылку на OnLoc там и будут отображатся лежащие на локации предметы.
На мой взгляд вполне не дурная системка. Конечно пока нет ограничений на сброс или еще каких мелочей, но база есть и даже работает в большей степени.
Задавать итемы нужно вот так

!название итема
$itemName[0]='Ключ'
!количество итемов на локе
kolvo[0]+=1
$item[0]='название локации где будет лежать ключ'
!количество всех итемов
ItemNumer=2

Есть пара недочетов которые я пока толком не оформил. Например количество итемов на локе. По идее должно баговать и нужно как то поменять расчет количества итемов. Видно придется через двухмерный массив делать.

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

Aleks Versus Moderator 15.12.2013 18:47 (12 years ago)

Я не понял твою “системку”. То есть код написан всего для десяти предметов?
Почему не воспользоваться циклом? Типа

!....
i=0
:for
i = arrpos(i+1,'$item',$loc)
if i!-1:
$itemOnLoc+=' <a href="exec:it=<<i>> & dynamic $dinkolvo & gt $curloc"><<$itemName[i]>></a> <<$kolvo[i]>>'
i+=1
jump 'for'
end
!....
Aleks Versus Moderator 15.12.2013 18:54 (12 years ago)

Это даст тебе неограниченное количество “итемов” на локации. К тому же всякий раз прописывать на локации один и тот же код, пусть и из двух строк, запаришься. Проще делать имена локаций, на которых требуется проверка “итемов”, специфическими. Я делаю такие [м:1]_дом - это позволяет мне точно знать, что это за локация, и проверка наличествующих на ней предметов выполняется только при условии что в названии есть [м:[\d]+]_. Чтобы проверка выполнялась автоматически, достаточно этот самый код:

Farfignugen:

Код:$loc=$curloc
gs’OnLoc’

разместить на “локации-обработчике перехода на новую локацию” (см $onnewloc).

Log in or Register to post comments.