RU

Анонс: "ЗАМаХ" боевой движок для текстовых РПГ

MasterSet #11 09.08.2011 18:24 38 comments 22675 views

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

Задача: создать достаточно динамичный но в то же время не скучный и не банальный движок для рукопашныx боёвок 1 на 1, который смогут использовать в качестве готового решения разработчики текстовых РПГ на платформе QSP. Как и все мои творения, движок будет полностью открытым и свободным. Разумеется авторам скорее всего придется допиливать его для своих целей, так что я планирую максимально упростить для них и эту область.

ИНТЕРЕСНЫЕ ФАКТЫ:
- Название включает аббревиатуру четырех основных атрибутов персонажа: Защита, Атака, МАневр, Хитрость.
- Для демонстрации возможности движка он будет выпущен в виде демо-игры: “ЗАМаХ - Фентези арена”. Демка будет включать десяток противников, основной набор снаряжения, оружия и брони, а так же систему прокачки персонажа. Фабула самая примитивная - выбираем противника, побеждаем, зарабатываем деньги, тратим деньги на прокачку и снаряжение, выбираем нового противника посильнее и т.п.
- Бой в ЗАМаХе пошаговый, но каждый ход делается в один клик, чтобы не терять динамики.
- Система асимметрична, т.е. правила по которым действуют игрок и монстр в игре различны. Это позволило предоставить игроку широкий тактический выбор, без необходимости писать ИИ для монстра. Впрочем возможности оппонентов так же довольно велики: каждый из них имеет 12 разных приемов и один коронный супер-удар. Приемы не выдаются на простом рандоме, а собираются по принципу комбо, сборку которого игрок может видеть, до определенной степени предвосхищая возможные действия противника и действуя исходя из этого.
- Монстр становится более опасным со временем, набирая “кураж”. Это так же призвано стимулировать динамику боя.
- Новый монстр добавляется одной локацией, в которой суммируются все данные по нему, включая раскладку по приемам, которые он применяет. Доработка в коде самой игры понадобится только если вы захотите какие-то особо хитрые приемы. Еще понадобится картинка.
- Да, интерфейс у движка графический, на AERO. Но было бы желание, можно довольно легко перепилить его в любой вид, включая чистый текст.
- К сожалению пока не созрела идея как добавлять одной локацией снаряжение. Так что его будет несколько сложнее прописывать.
- Я пытаюсь писать максимум комментариев, для того чтобы авторам было проще разобраться что к чему.
- Движок будет сделан и в виде подключаемой библиотеки, но только в том случае если я разберусь КАК ВООБЩЕ РАБОТАЕТ ЭТА ФИГНЯ????!!!111 О_о
- Срок выхода: when it’s done

Можете оставлять вопросы, пожелания и комментарии. В первую очередь пишите, если вы заинтересованы в подобной библиотеке для своих проектов. Возможно я пойду вам на встречу и встрою желаемые фичи.

PROGRESS REPORT (09/08/2011)
- Продукт находится в той стадии готовности когда гоблин уже может меня побить, а я его еще нет. Маленький подлец трижды меня убил. Все потому, что пока доступно всего четыре вида снаряжения: обнаженный торс, голый кулак, босые ноги и пустая ладонь. Но скоро я напишу себе оружие и броню и тогда мы просмотрим кто тут крут. И еще приемы рукопашного боя, чтобы рвать его как Брюс Ли, даже без снаряги.

Edited at 09.08.2011 18:26 (14 years ago)

Я буду заинтересован, если ты к этому движку сделаешь игру с сюжетом. Кто считает так же, поднимите руки.

Серый_Волк #10 09.08.2011 19:03 (14 years ago)

о/

2Nex
А потом ты объявишь ее не-тектовой и завалишь на каком-нибудь конкурсе?
Хитрый план! ;)

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

Я бы предпочел текстовую игру, но тебе решать, какой ее делать, и я прекрасно знаю, что мое мнение здесь роли не сыграет. Если в игре будет сюжет, и текстовое повествование, то она может быть для меня “текстовой” даже с графическим меню боя.

И ты переоцениваешь мое влияние, я не могу “завалить” игру. А на конкурсы ты разве не забил уже?

MasterSet:

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

С эпической игрой в данное время творится простой, ввиду отдыха одного из авторов в бескомпьютерной деревне :) Это верно, сторонний движок боя мы использовать не будем, у нас есть собственный, пусть и не такой навороченный. Кстати, наш движок неожиданно схож с твоим, у нас есть те же 4 параметра (другие, правда), возможность рукопашного боя, пошаговость, система прокачки, коронный удар, комбо-приемы и др.
Но то, что мы не будем это использовать, не означает, что движок бесполезен и не нужен. Он может помочь многим авторам, пишущим РПГ. Помню, Евген жаловался, что когда писал текстовый Обливион с Краевым, то были трудности с боевкой (которая по неопытности обоих кодеров часто ругалась и не состыковывалась). Если б на Куспе был открытый код готового, продуманного боевого движка с комментариями, наверняка людям было бы легче.
Возможно, даже мы с Евгеном возьмем из твоего движка кое-какие идеи, ибо не все продумано. В общем, полностью поддерживаю твой проект. Только возможность перевода движка из графического интерфейса в текстовый в самом деле надо предусмотреть :)

Nex:

Я буду заинтересован, если ты к этому движку сделаешь игру с сюжетом. Кто считает так же, поднимите руки.

*AleKon поднял руку, но подумал, что движок и без полноценной игры будет представлять для него интерес*

Aleks Versus Moderator 10.08.2011 09:42 (14 years ago)

Интересно будет посмотреть. Меня интересует враг, входящий в кураж. Отличная идея. Только как будет выражен “кураж”? Усиление атак, хитроумные комбо, беготня по полю? Минимум ИИ всё же ему дать придётся.

Кураж - довольно абстрактный показатель. Куда он идет написано в профиле каждого конкретного монстра.
Например, гоблин от куража звереет - прибавляет его ко всем значениям вреда.
У кого-то при определенных значениях куража могут меняться приемы боя, расти защита или уровень комб при той же подготовке. В общем все что придумает автор монстра. Будут и у игрока приемы влияющие на кураж врага или оперирующие им. Этот показатель добавлен как раз для усиления вариативности и тактического простора.

Думаю обойдется без ИИ. Там все примитивно в общем. У монстра есть четыре базовых приема (ЗАМаХ). Каждый раунд рандомно выбирается один из них. Если такого приема в текущей комбе еще не было, он усиливает ее. Если такой прием в комбо уже был, комбо завершается. Тип комбо определяется элементом который ее активирует, а сила - количеством элементов в последовательности.
Например, если у монстра первым выпал прием Атаки и потом еще один прием Атаки, то он сделает слабую атаку потратив в сумме 2 раунда. А если будет Защита, Атака, Хитрость и потом снова Атака, то получится сильный атакующий прием за 4 раунда боя. Полное комбо (4+1) дает суперудар, занимает соответственно 5 раундов.
Вот и все дела. Вся вариативность тут управляется кодом из десятка строчек, а выглядит все довольно живенько и разнообразно. Правда я предчувствую проблему с тем что поведение противника слишком хаотично - бой может оказаться простым или сложным, как повезет. И чем короче бой, тем ярче это выражено, а затягивать не хочется. Но в то же время не хочется терять и достигнутой простоты.
А с ИИ я уже не раз обламывался - неспособен.Впрочем в локацию монстра можно записать и некоторые модели поведения, базирующиеся на ситуации. Например если у игрока защита 0, то делать любое комбо атакующим, а когда у самого монстра 0 защиты - любое комбо защитным.
Или вовсе сделать прерывание с особым приемом.

Есть математики в зале? Нужен совет по поводу баланса активируемых способностей с числовыми значениями. Поясняю проблематику:
Все приемы, которые может применить игрок, стоят определенного количества очков нужного типа/цвета. Чтобы зарабатывать эти очки, надо активировать тактические возможности (ТВ) четырех цветов:
Защита - черный
Атака - красный
Маневр - зеленый
Хитрость - фиолетовый
Тактические возможности представлены линейкой из пяти позиций, каждая из них имеет цвет и значение от 1 до уровня раскачанного игроком для данного цвета (минимум 3, максимум 9). Позиции в линейке выпадают случайно, например: Черный 3, Красный 1, Фиолетовый 7, Красный 2, Фиолетовый 4. Каждый раунд линейка сдвигается на одну позицию вправо - крайняя правая тактическая возможность исчезает, а с левого края появляется одна новая случайная тактическая возможность. В каждом раунде можно либо выбрать одну ТВ, либо активировать одну способность с затратой набранных очков.
При этом, активировать можно только такую тактическую возможность, которая старше предыдущей активированной для данного цвета. При активации приема затрачивающего очки данного цвета, очки и значение последней активации обнуляется.
Приведу пример. Допустим у меня на старте Атака(Красный) равна 0[0]. Я активирую ТВ “К3”. Получаю значение атаки 3[3]. Теперь мне нужен минимум “K4”. Предположим что в линейке ТВ нашлась “К7” и я её активировал. Атака стала равна 10[7]. Если я хочу растить ее дальше, мне нужно найти красную ТВ со значением 8 и больше, однако мне уже хватает на нужный прием. Я активирую удар стоимостью 5 очков атаки. Удар происходит и моя атака снова равна 0[0] - все лишние очки атаки сгорели, порог обнулился.

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

Сам я в математике не секу вообще. Может кто-нибудь прикинуть для меня эти коэффициенты? В идеале таблицей типа:
1 = 0,5
2 = 0,6
3 = 0,8

38 = 120
39 = 150
40 = 200

???
PROFIT!!!

Но можно и общими соображениями, хотя бы типа до значений 3-4 соотношение около 1/2, до 10 примерно 1к1, до пятнадцати 1 к 1,5 и т.п. Только большая просьба, советовать исключительно в том случае, если вы действительно поняли проблему и реально можете сделать хотя бы примерный расчет по вероятностям и длине комбинаций.

AleKon,
если движок понравится Евгену, или кому-то с его уровнем познаний в программировании, то одного только движка будет недостаточно - потребуются постоянные консультации МастерСета, а также значительная помощь в переделке. Готов ли МастерСет к тому, чтобы автор крепко сел на его шею? Да и закончена такая игра вряд ли будет, ввиду несоответствия сложности задачи уровню навыка.

Если же будет кто-то уровня МастерСета, то он будет писать свой движок, по-другому просто не бывает.

2Nex. Все фигня и неправда.
1) Если не лезть в механику движка, то остальное настроить изрядно просто - переделать графику, монстров, приемы и шмотки несложно. Особенно если все на это заранее заточено и снабжено шаблонами и комментариями.
2) Сделать хороший движок для боёвки в тексте - та еще задача. Я уже себе весь мозг вывернул пытаясь ее решить, вот пока додумался до этого и стремлюсь поделится. Собственно уже то, что я так заморочился и решил писать движок вместо игры говорит о том как достала меня сия проблематика. Не факт что получится хорошо, но если получится - смысл для других авторов будет. Даже автору “моего уровня” может быть выгодно использовать наработки, вместо того чтобы корячиться пол-года, как я.

А Евгена я себе на шею сажать не стану, он и без того на нее все время лезет. )

MasterSet,
и тем не менее. Все, о чем ты говоришь, вполне логично, но авторы логике не подчиняются. Хоть тыщу раз им объясняй, они будут делать не как им “выгодно” и “правильно”, а как душа лежит. Сюда же входит традиционное паломничество по всем известным граблям, в полной уверенности что “у меня-то получится”.

И у некоторых таки получается. В людей надо верить. Посмотрим что выйдет.

Nex, я не говорил о том, что мы с Евгеном захотим полностью вставлять движок в игру. Я сказал, что было бы интересно поковыряться в коде МастерСета и взять оттуда некоторые идеи, благо в нашей боевке не все продумано и отлажено.

MasterSet:

В людей надо верить.

Именно :)

Верьте на здоровье, никому от этого хуже не станет.

Log in or Register to post comments.