Menu
News
All News
Dungeons & Dragons
Level Up: Advanced 5th Edition
Pathfinder
Starfinder
Warhammer
2d20 System
Year Zero Engine
Industry News
Reviews
Dragon Reflections
White Dwarf Reflections
Columns
Weekly Digests
Weekly News Digest
Freebies, Sales & Bundles
RPG Print News
RPG Crowdfunding News
Game Content
ENterplanetary DimENsions
Mythological Figures
Opinion
Worlds of Design
Peregrine's Nest
RPG Evolution
Other Columns
From the Freelancing Frontline
Monster ENcyclopedia
WotC/TSR Alumni Look Back
4 Hours w/RSD (Ryan Dancey)
The Road to 3E (Jonathan Tweet)
Greenwood's Realms (Ed Greenwood)
Drawmij's TSR (Jim Ward)
Community
Forums & Topics
Forum List
Latest Posts
Forum list
*Dungeons & Dragons
Level Up: Advanced 5th Edition
D&D Older Editions, OSR, & D&D Variants
*TTRPGs General
*Pathfinder & Starfinder
EN Publishing
*Geek Talk & Media
Search forums
Chat/Discord
Resources
Wiki
Pages
Latest activity
Media
New media
New comments
Search media
Downloads
Latest reviews
Search resources
EN Publishing
Store
EN5ider
Adventures in ZEITGEIST
Awfully Cheerful Engine
What's OLD is NEW
Judge Dredd & The Worlds Of 2000AD
War of the Burning Sky
Level Up: Advanced 5E
Events & Releases
Upcoming Events
Private Events
Featured Events
Socials!
EN Publishing
Twitter
BlueSky
Facebook
Instagram
EN World
BlueSky
YouTube
Facebook
Twitter
Twitch
Podcast
Features
Top 5 RPGs Compiled Charts 2004-Present
Adventure Game Industry Market Research Summary (RPGs) V1.0
Ryan Dancey: Acquiring TSR
Q&A With Gary Gygax
D&D Rules FAQs
TSR, WotC, & Paizo: A Comparative History
D&D Pronunciation Guide
Million Dollar TTRPG Kickstarters
Tabletop RPG Podcast Hall of Fame
Eric Noah's Unofficial D&D 3rd Edition News
D&D in the Mainstream
D&D & RPG History
About Morrus
Log in
Register
What's new
Search
Search
Search titles only
By:
Forums & Topics
Forum List
Latest Posts
Forum list
*Dungeons & Dragons
Level Up: Advanced 5th Edition
D&D Older Editions, OSR, & D&D Variants
*TTRPGs General
*Pathfinder & Starfinder
EN Publishing
*Geek Talk & Media
Search forums
Chat/Discord
Menu
Log in
Register
Install the app
Install
Upgrade your account to a Community Supporter account and remove most of the site ads.
Community
General Tabletop Discussion
*Geek Talk & Media
d20Engine: Core Mechanic
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
<blockquote data-quote="nopantsyet" data-source="post: 2136960" data-attributes="member: 3109"><p>This is a starter discussion related to the thread <strong><a href="http://showthread.php?p=2136830" target="_blank">Open Source d20 API/Engine</a><strong>. </strong></strong>The purpose of this thread is to begin the type of discussion that I imagine will be necessary in order to develop a portable, reusable software implementation of the d20 SRD. As I mentioned in the original thread, If discussion indicates that this is a viable project, we can discuss how to turn these dialogs into practical results in a consistent manner.</p><p></p><p>To start out, I thought I would go in the same order the SRD does, so my first topic is the core mechanic. It might seem odd to start the discussion here, but it's a very simple topic that illustrates a number of the design decisions that need to be made.</p><p></p><p>The SRD presents the core mechanic as <em>d20 + modifier vs. target number. </em>But it goes on to explain that other dice may be used, and those results may be used in different ways. Now, at some level this has to know where the d20 mechanic is applied, and where other dice mechanics are applied. Furthermore, it has to provide for rule-specific mechanics (e.g. turning, Jump skill). </p><p></p><p>It seems all resolution scenarios break down to as many as three discrete components: a determination of success, a determination of degree, and an adjudication of effect. Leaving effect to the rule to which it applies, we should consider mechanic in relation to both success and degree.</p><p></p><p>Why abstract it like this rather than just put it in the code? Well, we want to allow alternate rules to be used, and they might have alternate resolution mechanics for certain actions. We need to be able to override the mechanic for any given entity. </p><p></p><p>What does this imply about the data model? First of all, that it will be object-oriented to some degree, allowing entities to be defined and reused or defined inline. Second, that there will be some extensibility points for implementing and replacing the necessary functions. For example, I might consider using a true entropic random number generator (random.org), but for the most part I would like use dice for resolution. So one implementation might get the random number from <a href="http://random.org/" target="_blank">random.org</a>, and another might pop up a window telling me to enter the die rolls.</p><p></p><p>Unfortunately, this leads us to the point of having to impose some aspect of implementation--every implementation must support the same integration points. But is that inferior to requiring that every implementation correctly implement the rule set? It's probably easier to reimplement the extensibility model than to reimplement the rules. I think it is important that rules be self-describing in order to support portability and overrides. </p><p></p><p>So I would propose a base entity, which I'll describe as:[CODE]<mechanic id="dX"></p><p> <parameter id="rolls" type="int"/></p><p> <parameter id="faces" type="int"/></p><p> <parameter id="bonus" type="int"/></p><p> <implementation></p><p> <!-- Implementation via extensibility points --></p><p> </implementation></p><p></mechanic></p><p></p><p><mechanic id="d20"></p><p><parameter id="faces" type="int"/></p><p> <parameter id="bonus" type="int"/></p><p> <implementation></p><p> <!-- Implementation via extensibility points --></p><p> </implementation></p><p></mechanic>[/CODE]Let's ignore for the moment the question of doing some Kung Fu like d20 being an inherited implementation of dX. What I want to know is your thoughts about the design questions I've raised and my suggested approaches.</p><p></p><p>.:npy:.</p></blockquote><p></p>
[QUOTE="nopantsyet, post: 2136960, member: 3109"] This is a starter discussion related to the thread [b][url="http://showthread.php?p=2136830"]Open Source d20 API/Engine[/url][b]. [/b][/b]The purpose of this thread is to begin the type of discussion that I imagine will be necessary in order to develop a portable, reusable software implementation of the d20 SRD. As I mentioned in the original thread, If discussion indicates that this is a viable project, we can discuss how to turn these dialogs into practical results in a consistent manner. To start out, I thought I would go in the same order the SRD does, so my first topic is the core mechanic. It might seem odd to start the discussion here, but it's a very simple topic that illustrates a number of the design decisions that need to be made. The SRD presents the core mechanic as [i]d20 + modifier vs. target number. [/i]But it goes on to explain that other dice may be used, and those results may be used in different ways. Now, at some level this has to know where the d20 mechanic is applied, and where other dice mechanics are applied. Furthermore, it has to provide for rule-specific mechanics (e.g. turning, Jump skill). It seems all resolution scenarios break down to as many as three discrete components: a determination of success, a determination of degree, and an adjudication of effect. Leaving effect to the rule to which it applies, we should consider mechanic in relation to both success and degree. Why abstract it like this rather than just put it in the code? Well, we want to allow alternate rules to be used, and they might have alternate resolution mechanics for certain actions. We need to be able to override the mechanic for any given entity. What does this imply about the data model? First of all, that it will be object-oriented to some degree, allowing entities to be defined and reused or defined inline. Second, that there will be some extensibility points for implementing and replacing the necessary functions. For example, I might consider using a true entropic random number generator (random.org), but for the most part I would like use dice for resolution. So one implementation might get the random number from [url="http://random.org/"]random.org[/url], and another might pop up a window telling me to enter the die rolls. Unfortunately, this leads us to the point of having to impose some aspect of implementation--every implementation must support the same integration points. But is that inferior to requiring that every implementation correctly implement the rule set? It's probably easier to reimplement the extensibility model than to reimplement the rules. I think it is important that rules be self-describing in order to support portability and overrides. So I would propose a base entity, which I'll describe as:[CODE]<mechanic id="dX"> <parameter id="rolls" type="int"/> <parameter id="faces" type="int"/> <parameter id="bonus" type="int"/> <implementation> <!-- Implementation via extensibility points --> </implementation> </mechanic> <mechanic id="d20"> <parameter id="faces" type="int"/> <parameter id="bonus" type="int"/> <implementation> <!-- Implementation via extensibility points --> </implementation> </mechanic>[/CODE]Let's ignore for the moment the question of doing some Kung Fu like d20 being an inherited implementation of dX. What I want to know is your thoughts about the design questions I've raised and my suggested approaches. .:npy:. [/QUOTE]
Insert quotes…
Verification
Post reply
Community
General Tabletop Discussion
*Geek Talk & Media
d20Engine: Core Mechanic
Top