RU

FireStrike - фреймворк для QSP

NickoAilus Moderator 03.12.2017 17:06 27 comments 13098 views

Приветствую всех и каждого.

Недавно я узнал о существовании множества разнообразных движков для QSP, и мне захотелось создать что-либо подобное самому. Я выбрал RPG движок, так как он показался мне наиболее востребованным… Так что, встречайте: FireStrike! Что хочется в нём реализовать:

- поддержка командного боя (скажем, 2 на 2 или 3 на 5)
Насколько я знаю, не все движки могут поддерживать эту возможность. А она была бы достаточно интересной во многих сюжетах. Именно командный бой (!), а не “пять бугаёв лупят меня со всех сторон”

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

- простой и понятный, но в то же время не банальный интерфейс
Пример:

Сержант Обухов 79 HP -11 -10
Атака: 6-8
Защита: 7
Выносливость: 2/5
Ловкость: 3

-5
-9
Вы 51 HP
Атака: 4-12
Защита: 7
Выносливость: 6/7
Ловкость: 7

-23 -26 7 HP Бандит
Атака: 1
Защита: 1
Выносливость: 1/4
Ловкость: 1


_Выстрелить

Крикнуть напарнику

Кинуть гранату

Ударить ножом

Ударить кулаком_

Ваши предметы: Нож, Бронежилет “НК4”, Граната (2), Дробовик “MX” (35 патр.)


Сержант Обухов стреляет в Бандита. Тот получает урон 26.
Вы стреляете в Бандита. Тот получает урон 23.
Бандит кинул гранату! Вы получили 9 урона, Сержант Обухов 11 урона.

Сержант Обухов стреляет в Бандита, но промахивается.
Вы стреляете в Бандита. Тот получает урон 35.
Бандит стреляет в Вас. Вы получили 5 урона.

Просто, не правда ли? Не то, что TRINITY - там вообще можно бошку сломать.

- полный контроль
Недостаток некоторых движков в том, что они даются в виде шаблона - только маги, волшебники, рыцари и т. п. Здесь подобного недостатка не будет:
Хочешь винтовку МК44? Пожалуйста!
Хочешь рельсотрон из 3017 года? Будь любезен!
Хочешь лазерный меч Люка Скайуокера? Всегда рады!
То же самое с персонажами:
Хочешь сражаться бок о бок с Наполеоном? Или Дартом Вейдером? Милости просим!

Хочу спросить у форума: как вам вообще подобная задумка? Нужна ли она кому-то? Что ещё можно было бы добавить?

З. Ы. На днях скину демо-игру, посмотрите сами.

Edited at 23.02.2019 07:14 (7 years ago)

Разработка несколько подвисает.

Вохникли проблемы с QSP-плеером. Он подвисает при использовании массивов. Выход демо-игры будет отложен на несколько дней (к 10-11 декабря).

Aleks Versus Moderator 05.12.2017 10:25 (8 years ago)

NickoAilus,
то есть это будет просто движок боёвки?))

Aleks Versus, не только.
Я говорил про “мастера настройки”. Он совмещал бы в себе все нужные функции: хоть прописывание сюжета, хоть планирование битв… Но столкнулся с проблемой: QSP плеер встаёт в ступор после того, как я хочу прописать значение массива через $input.
Поэтому я хочу сделать демо-игру и выставить её на всеобщее обоРЗение, а потом заняться мастером.

Aleks Versus Moderator 05.12.2017 15:52 (8 years ago)

NickoAilus:

Я говорил про “мастера настройки”.

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

NickoAilus:

QSP плеер встаёт в ступор после того, как я хочу прописать значение массива через $input.

это ошибка конкретно в твоём коде, ищи.)) Дело не в QSP.

$massive[67]=$input('Введите слово')

работает.

Aleks Versus,
Тут всё гораздо хитрее.

Допустим: Есть переменная a и массив $b.
Когда я хочу записать значение $b[a] через $input и вернуться на прошлую локацию, плеер вылетает. Ошибок в коде нет, я проверил все три раза подряд.

Aleks Versus Moderator 06.12.2017 14:20 (8 years ago)

NickoAilus,
похоже на зацикливание по goto. Можешь код выложить? Или прикрепить файл.

Сообщение Дарка — “новый способ” выхода из QSP

Aleks Versus,
Готово.

Вот пример того, какой я кривожоп.

Прошу сильно не материться, ведь в QSP я всё ещё новичок и многого не понимаю. ))

Я думал, проблема в слишком длинных названиях для переменных, но - как бы я их не укорачивал, итог был тот же. Зависало.
Хоть с игрой всё в порядке, это радует.

Aleks Versus Moderator 06.12.2017 21:10 (8 years ago)

Ну вот

:loop

firestrikeM_objs_int = 0

if firestrikeM_objs_int < (ARRSIZE("$firestrikeObjs") - 1):
	'<<$firestrikeObjs[firestrikeM_objs_int]>>'
	firestrikeM_objs_int = firestrikeM_objs_int + 1
	jump 'loop'
else
end

прыгаешь на loop и потом уже присваиваешь значение firestrikeM_objs_int. Должно идти сначала

firestrikeM_objs_int = 0

потом

:loop

иначе всегда выполняется firestrikeM_objs_int = 0, и цикл идёт бесконечный. Правда у меня не вылетает, а виснет.

Вот некоторые недолюбливают и даже ненавидят “текстовые РПГ”. Наверное, из-за того, что они, как правило просты в механике, и являются пробой пера для неофитов. Так что, ты, автор, занимаешься по сути реально полезным делом, с одной стороны. С другой, новичку будет трудно разобраться в алгоритмах чужого кода, это будет труднее, чем сделать что-то с нуля, но простое. А опытный автор все равно будет пилить свое ядро для игры, скорее всего. Вон, я выложил рогалик (Серафим) с открытым кодом, но, похоже, никто так не использовал его. Но тут и моя оплошность, я писал без коментов, чисто для себя, там не то что черт ногу сломит, я сам запутаюсь, если сейчас открою код. В нем почти все построено на многомерных массивах, да, при обработки большого их кол-ва кусп подвисает, пришлось из-за этого уменьшить отбр сетку символов до небольшого оконца. Удачи в работе, в любом случае, есть те, кому все еще интересны текстовые РПГ, и этот жанр будет жить. Игра Гринд, с простейшей механикой, выстрелил нормально, говоря о простых механиках РПГ, между делом.

Mioirel,
Благодарю за поддержку.

Aleks Versus, большое спасибо за помощь. :-)
Чем больше я пытаюсь разобраться в QSP, тем больше у меня взрывается мозг. Ошибка в одном месте вылезает в другом конце программы… Всё равно, что толкнуть стакан, а вместо него упадёт чашка на другом конце кухни.

Aleks Versus Moderator 07.12.2017 15:43 (8 years ago)

Да нет.) Программы работают так, как программисты их пишут, а не так, как программисты хотят. :D

Всё очень просто. QSP выполняет код линейно, по порядку, одну команду за другой. Отсюда и надо плясать при поиске ошибок.

Мне тоже поначалу казалось, что он криво как-то работает, но нет, везде были мои косяки. Если повисает, или вылетает — однозначно зацикливание явное или неявное. В таких случаях я обычно делаю после каждой команды задержку через wait и вывожу в доп. описании значения переменных, которые в цикле меняются. Ещё помогает – сделать отладчик.

Отладчик сделал, работа продвигается.

Я вот думаю - раз уж разработка затягивается… Может хоть скрины кинуть?

Aleks Versus Moderator 11.12.2017 07:07 (8 years ago)

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

Но скрины скинь. Это всем нравится. :=D

Хорошо… вот только как? Они тут все автоматом сокращаются в размере… А потом ничего не видно. *shrug*

Log in or Register to post comments.