Покрокові ресурси архітектури бойової системи JRPG


9

Останні місяці я зайнявся програмуванням 2D JRPG (японського RPG) в C ++ за допомогою бібліотеки SDL. Режим розвідки більш-менш виконаний. Зараз я займаюся режимом бою.

Мені не вдалося знайти жодних ресурсів щодо структури класичної покрокової системи бойових систем JRPG. Все, що я знаходжу, - це обговорення формули пошкодження. Я спробував googling, шукав дошку оголошень gamedev.net та переглядав питання, пов'язані з C ++, тут на Stack Exchange. Я також намагався читати вихідний код існуючих RPG з відкритим кодом, але без якихось посібників це як би намагатися знайти голку в копиці сіна.

Я не шукаю набору правил, таких як D&D або чогось подібного. Я говорю суто про дизайн коду та структури об'єктів. Бойова система запитує гравця для введення, використовуючи меню. Далі бойовий поворот виконується, коли герої та вороги виконують свої дії.

Чи може хтось вказати мене в правильному напрямку? Заздалегідь спасибі.


4
немає загальних жорстких правил. У всіх іграх по-своєму, якщо не говорити про підземелля і дракони, отримані набори правил. Треба сказати, я не зовсім впевнений, чи це ви мали на увазі. Розробити.
Тоні

Що саме ви маєте на увазі під JRPG?
ashes999

2
Чому ви не визначите спочатку те, що ви хочете пережити гравцю, а потім не напишіть специфікацію на основі цього?
Тетрад

1
@ ashes999 Найвпливовіший класичний приклад - це, мабуть, серія Ultima. Інші новітні та популярні приклади: серія Ворота Болдура (BG2 часто вважається найкращою CRPG усіх часів) або серія The Elder Scrolls (Morrowind, Oblivion, Skyrim, зокрема за їх славу).
Девід Гувейя

1
"Бойова система просить гравця для введення, використовуючи меню. Далі бойовий поворот виконується, коли герої та вороги виконують свої дії." Ви, здається, маєте ручку на алгоритм. Отже ... що саме ви шукаєте? Порада про те, як структурувати код? Крім того, що таке " класична покрокова система бою JRPG "? Ви знаєте, є декілька класичних JRPG, і багато з них мають дуже різні бойові системи. То що саме ви намагаєтеся досягти?
Ніколь Болас

Відповіді:


9

Я ніколи не бачив багато ресурсів на цю тему, але найкращий, який я знайшов, - це, мабуть, такий:

Він надає уявлення про ворогів ШІ, таких як цей:

AI: Setup
{
   TempVar:TurnsUntilGrenade = 3
   TempVar:GrenadeAmmo = 4
}
AI: Main
{
   If (Stage == 0) Then
   {
      If (TempVar:TurnsUntilGrenade == 0) Then
      {
         If (TempVar:GrenadeAmmo > 0) Then
         {
            Choose Random Opponent with Lowest HP
            Use Hand Grenade on Target
            TempVar:GrenadeAmmo = TempVar:GrenadeAmmo - 1
            TempVar:TurnsUntilGrenade = 3
         } Else {
            Choose Random Opponent with Lowest HP
            Use <Machine Gun> on Target
         }
      } Else {
         Choose Random Opponent
         Use <Machine Gun> on Target
         TempVar:TurnsUntilGrenade = TempVar:TurnsUntilGrenade - 1
      }
   } Else {
      If (TempVar:GrenadeAmmo > 0) Then
      {
         Choose Random Opponent with Lowest HP
         Use Hand Grenade on Target
         TempVar:GrenadeAmmo = TempVar:GrenadeAmmo - 1
      } Else {
         Choose Random Opponent
         Use <Machine Gun> on Target
      }
   }
}
AI: Counter - General
{
   If (Grenade Combatant's HP <= 3 * [Grenade Combatant's Max HP / 4]) Then
   {
      Stage = 1
   } Else {
      Stage = 0
   }
}

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

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

Наприклад, скажімо, у вас є суто поворотна система бою, де ви видаєте спочатку всі партійні команди, а потім усі дії відбуваються в кінці черги. Ви можете підійти до нього так:

  • Зберігайте у списку всі сутності (гравці + вороги), що беруть участь у битві.
  • Кожен гравець у списку отримує інформацію та зберігає його.
  • Сортуйте список об'єктів за атрибутом Speed.
  • Для кожного об'єкту у списку, якщо гравець виконує збережену дію, в іншому випадку запустіть сценарій AI для поточного стану.
  • Заздалегідь поверніть і повторіть.

Battle Механіка FAQ також має багато корисної інформації, зокрема , про управління часом в боях. Але, на жаль, ця система (ака ATB або Active Time Battle) запатентована, тому ви не можете зробити нічого подібного.

EDIT Я нещодавно знайшов цей веб-сайт, який надає багато технічної інформації щодо впровадження FF7. На жаль, розділи бойового модуля, здається, ще не повністю написані.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.