펜 및 종이 스타일 RPG 시스템을위한 일반 규칙 파서를 만들고 싶습니다. 규칙은 일반적으로 주사위의 1 ~ N 개의 엔티티 1 ~ N 개의 역할과 엔티티의 여러 속성을 기반으로 값을 계산할 수 있습니다.
예를 들면 다음과 같습니다.
플레이어는 STR 18을 가지고 있으며, 현재 장착 된 무기는 +1 STR의 보너스를 주지만 DEX -1의 보너스입니다. 그는 몬스터 엔티티를 공격하고 이제 게임 로직이 일련의 규칙 또는 조치를 실행해야합니다.
플레이어가 주사위를 굴리면 예를 들어 8 이상 (기본 공격 가치는 기본 속성 중 하나입니다!)을 얻습니다. 몬스터는 주사위를 굴려 공격이 갑옷을 통과하는지 계산합니다. 그렇다면 공격이 차단되지 않은 경우 피해를 입습니다.
단순한 수학 규칙 외에도 특정 클래스의 사용자 (예 : 전사 대 마법사) 또는 다른 속성에만 적용하는 것과 같은 제약 조건이있을 수 있습니다. 따라서 이것은 수학 연산에만 국한되지 않습니다.
Dungeon 및 Dragons와 같은 RPG 시스템에 익숙하다면 내가 무엇을하고 있는지 알게 될 것입니다.
내 문제는 이제 이것을 최선의 방법으로 정확하게 구축하는 방법에 대한 단서가 없다는 것입니다. 나는 사람들이 모든 종류의 규칙을 설정하고 나중에 플레이어와 몬스터를 선택하는 것과 같은 행동을하고 행동 (공격과 같은 규칙)을 실행하기를 원합니다.
나는 데이터베이스 측면에 대한 도움을 덜 요청하지만 규칙을 유연하게 유지하기 위해 구조와 파서를 만드는 방법에 대해 더 많이 묻습니다. 이것에 대한 선택 언어는 PHP입니다.
편집 I :
좀 더 복잡한 게임 규칙을 만들기 위해 사용자 친화적 인 인터페이스 (누군가 프로그래밍 언어를 배우지 않아도 됨)를 만들고 싶습니다. 간단한 이유 : 개인적인 사용으로 항상 모든 규칙을 기억할 필요는 없습니다. 우리는 단순히 그 규칙을 자주 사용하지 않으며 매번 규칙을 찾아 보는 것이 스토퍼입니다. 또한 : 뭔가를하고 배우는 재미있는 작업처럼 보입니다. :)
내가 지금까지 시도한 것 : 잘못된 아키텍처를 구축하는 데 시간을 낭비하지 않고 개념을 생각하는 것입니다. 지금까지 사용자가 원하는 수의 속성을 만든 다음 원하는 종류의 속성을 원하는 유형의 개체에 할당 할 수 있다는 아이디어가 있습니다. 실체는 플레이어, 몬스터, 아이템, 무엇이든 될 수 있습니다. 이제 무언가를 계산할 때 규칙 파서가 규칙 파서가 Player.base_attack + dice (1x6)> Monster.armor_check 다음 Monster.health-1; 여기서 질문은 해당 파서를 만드는 방법에 관한 것입니다.
편집 II :
다음은 매우 기본적인 값의 예이지만 올바르게 계산하기 위해 고려해야 할 다양한 요소와 변수가 있습니다.
기본 공격 보너스 (Term) 기본 공격 보너스 (일반적으로 d20 커뮤니티에서 BAB라고 함)는 캐릭터 클래스 및 레벨에서 파생 된 공격 롤 보너스입니다. 기본 공격 보너스는 다양한 캐릭터 클래스에 따라 다른 속도로 증가합니다. 기본 공격 보너스가 +6, 기본 공격 보너스가 +11 이상인 세 번째, 그리고 기본 공격 보너스가 +16 이상인 네 번째 캐릭터는 라운드 당 두 번째 공격을받습니다. 멀티 클래스 캐릭터 스택과 같은 다른 클래스에서 얻은 기본 공격 보너스. 캐릭터의 기본 공격 보너스는 +16에 도달 한 후 더 이상 공격을 부여하지 않으며, +0보다 작을 수 없으며, 캐릭터 레벨이 20 일에 도달 한 후 클래스 레벨로 인해 증가하지 않습니다. 특정 업적에는 최소 기본 공격 보너스가 필요합니다.
http://www.dandwiki.com/wiki/Base_Attack_Bonus_(Term) 에서 기본 공격에 필요한 값을 계산하기 위해 자체 규칙이있는 클래스 및 위업에 대한 링크를 포함하여 여기에서 읽을 수 있습니다 .
나는 그것을 가능한 한 일반적으로 유지하면 좋은 규칙 파서를 얻는 것이 꽤 어려워 질 것이라고 생각하기 시작했습니다.
Func
. 놀랍게도 Yegge의 게시물이 매우 시원하다는 것을 알지 못했습니다.