Я хочу створити загальний аналізатор правил для систем RPG стилю пером та папером. Правило може включати зазвичай від 1 до N сутностей від 1 до N ролей кістки та обчислення значень на основі декількох атрибутів сутності.
Наприклад:
У гравця STR 18, його озброєна в даний час зброя дає йому бонус +1 STR, але зловживання DEX -1. Він атакує сутність монстра, і тепер логіка гри необхідна для виконання набору правил або дій:
Гравець котить кістки, якщо він отримує, наприклад, 8 або більше (значення базової атаки, яке йому потрібно передати, є одним з його базових атрибутів!), Його атака є успішною. Потім монстр перекочує кістки, щоб обчислити, чи буде атака через броню. Якщо так, шкода буде заподіяна, якщо не атака була заблокована.
Крім простих математичних правил, можуть бути такі обмеження, як застосування лише до певного класу користувача (наприклад, воїн проти майстра) або будь-якого іншого атрибута. Тож це не лише обмежується математичними операціями.
Якщо ви знайомі з такими RPG-системами, як Dungeon та Dragons, ви дізнаєтесь, що я роблю.
Моє питання полягає в тому, що я не маю поняття, як саме це будувати найкращим чином. Я хочу, щоб люди могли налаштувати будь-які правила, а пізніше просто виконати такі дії, як вибір гравця та монстра та виконати дію (набір правил, як атака).
Я прошу менше про допомогу в частині речей із базою даних, але більше про те, як створити структуру та аналізатор для неї, щоб мої правила були гнучкими. До речі, мовою вибору для цього є php.
Редагувати I:
Дозвольте уточнити свою мету: я хочу створити зручний інтерфейс (для якого не потрібно, щоб хтось вивчав мову програмування) для створення більш-менш складних ігрових правил. Проста причина: для особистого використання не потрібно пам’ятати всі правила весь час, ми просто не так часто граємо, і пробка їх шукає кожен раз. Також: Виглядає цікаве завдання робити і навчитися чомусь. :)
Що я намагався поки що: просто замислюватися над концепцією, а не витрачати час на створення неправильної архітектури. Поки я маю ідею дозволити користувачеві створити стільки атрибутів, скільки їм потрібно, а потім призначити стільки атрибутів, скільки їм хочеться, для будь-якого типу сутності. Суб'єкт може бути гравцем, монстром, предметом, будь-чим. Тепер, коли щось обчислює, дані стають доступними для аналізатора правил, щоб аналізатор правил мав змогу виконувати такі дії, як якщо Player.base_attack + кістки (1x6)> Monster.armor_check, то Monster.health - 1; Тут питання про те, як створити цей аналізатор.
Правка II:
Ось приклад досить базового значення, але для правильного його обчислення необхідно враховувати безліч різних речей і змінних:
Бонус за базову атаку (термін) Ваш базовий бонус за атаку (його спільнотою d20 називають BAB) - це бонус за атаку, отриманий з класу та рівня символів. Бонуси за базову атаку збільшуються різними темпами для різних класів персонажів. Персона отримує другу атаку за раунд, коли його бонус за базову атаку досягає +6, третю з бонусом за базову атаку +11 або вище, а четверту - за бонус за базову атаку +16 або вище. Бонуси за базові атаки, отримані з різних класів, наприклад, для багатокласового персонажа, стека. Бонус за базову атаку персонажа не надає більше атак після досягнення +16, не може бути менше +0 та не збільшується через рівень класу після того, як рівень персонажа досягне 20-го. Мінімальний бонусний напад на атаку необхідний для певних подвигів.
Ви можете прочитати його тут http://www.dandwiki.com/wiki/Base_Attack_Bonus_(Term), включаючи посилання на класи та подвиги, які знову мають свої правила для обчислення значень, необхідних для базової атаки.
Я почав думати, що збереження його якомога більш загальним також зробить це досить важким для того, щоб зробити гарний аналіз правил.
Func
s, який ініціалізує стан програми на основі аргументів як ключі до словника. Здивований, я ніколи раніше не знаходив цього повідомлення від Йегге, дуже класно, дякую, що вказав на нього.