FireStrike - фреймворк для QSP
Приветствую всех и каждого.
Недавно я узнал о существовании множества разнообразных движков для 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 года? Будь любезен!
Хочешь лазерный меч Люка Скайуокера? Всегда рады!
То же самое с персонажами:
Хочешь сражаться бок о бок с Наполеоном? Или Дартом Вейдером? Милости просим!
Хочу спросить у форума: как вам вообще подобная задумка? Нужна ли она кому-то? Что ещё можно было бы добавить?
З. Ы. На днях скину демо-игру, посмотрите сами.
Разработка несколько подвисает.
Вохникли проблемы с QSP-плеером. Он подвисает при использовании массивов. Выход демо-игры будет отложен на несколько дней (к 10-11 декабря).
NickoAilus,
то есть это будет просто движок боёвки?))
Aleks Versus, не только.
Я говорил про “мастера настройки”. Он совмещал бы в себе все нужные функции: хоть прописывание сюжета, хоть планирование битв… Но столкнулся с проблемой: QSP плеер встаёт в ступор после того, как я хочу прописать значение массива через $input.
Поэтому я хочу сделать демо-игру и выставить её на всеобщее обоРЗение, а потом заняться мастером.
NickoAilus:
Я говорил про “мастера настройки”.
то есть я ему грубо накидываю задач, а он генерирует мне код, который я вставляю в свою игру? Типа того? Делаю сейчас для модуля диалогов такое.
NickoAilus:
QSP плеер встаёт в ступор после того, как я хочу прописать значение массива через $input.
это ошибка конкретно в твоём коде, ищи.)) Дело не в QSP.
$massive[67]=$input('Введите слово')
работает.
Aleks Versus,
Тут всё гораздо хитрее.
Допустим: Есть переменная a и массив $b.
Когда я хочу записать значение $b[a] через $input и вернуться на прошлую локацию, плеер вылетает. Ошибок в коде нет, я проверил все три раза подряд.
NickoAilus,
похоже на зацикливание по goto. Можешь код выложить? Или прикрепить файл.
Aleks Versus,
Готово.
Вот пример того, какой я кривожоп.
Прошу сильно не материться, ведь в QSP я всё ещё новичок и многого не понимаю. ))
Я думал, проблема в слишком длинных названиях для переменных, но - как бы я их не укорачивал, итог был тот же. Зависало.
Хоть с игрой всё в порядке, это радует.
Ну вот
: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, тем больше у меня взрывается мозг. Ошибка в одном месте вылезает в другом конце программы… Всё равно, что толкнуть стакан, а вместо него упадёт чашка на другом конце кухни.
Да нет.) Программы работают так, как программисты их пишут, а не так, как программисты хотят. :D
Всё очень просто. QSP выполняет код линейно, по порядку, одну команду за другой. Отсюда и надо плясать при поиске ошибок.
Мне тоже поначалу казалось, что он криво как-то работает, но нет, везде были мои косяки. Если повисает, или вылетает — однозначно зацикливание явное или неявное. В таких случаях я обычно делаю после каждой команды задержку через wait и вывожу в доп. описании значения переменных, которые в цикле меняются. Ещё помогает – сделать отладчик.
Отладчик сделал, работа продвигается.
Я вот думаю - раз уж разработка затягивается… Может хоть скрины кинуть?
Она не затягивается. ;) Вполне ожидаемо, что масштабный проект потребует большого количества времени и сил.
Но скрины скинь. Это всем нравится. :=D
Хорошо… вот только как? Они тут все автоматом сокращаются в размере… А потом ничего не видно. *shrug*