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
*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
*TTRPGs General
*Pathfinder & Starfinder
EN Publishing
*Geek Talk & Media
Search forums
Chat/Discord
Menu
Log in
Register
Install the app
Install
Community
General Tabletop Discussion
*Dungeons & Dragons
Classes, Subclasses, and Object Oriented Programming
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="GSHamster" data-source="post: 6179357" data-attributes="member: 20187"><p>The current design of classes and subclasses in D&D Next is very similar to some concepts in computer science. This is a look at that design using the terminology of computer science. As well, I hope to show that--if the analogy holds--this current design will have issues later on.</p><p></p><p><strong>Goal of Subclasses</strong></p><p></p><p>What WotC is aiming for with this design is the concept of <em>polymorphism</em>. Polymorphism is the ability for data of one type to be substituted for data of another type safely. Essentially, if a rule calls for a character of type Mage, you can give the rule a character of type Wizard, or type Warlock, or type Sorceror, and the rule will still work.</p><p></p><p>The advantage of polymorphism is that it allows future products to work together, even though they don't know about each other. For example, let's say class Fighter is defined in the Player's Handbook. A year later, Supplement A comes out with subclass Knight, and Supplement B comes out with a combat stunt system for Fighters. Thanks to polymorphism, if things are done correctly, Knights will be able to use the stunt system without issues, even if the two Supplements don't know about each other. Instead, they interact with each other through the definition of Fighter.</p><p></p><p><strong>Implementation</strong></p><p></p><p>The mechanism WotC is using is called <em>inheritance</em>. Some mechanics are defined in the base class, and the subclass "inherits" those mechanics. For example, let's say Sneak Attack is defined in the base Rogue class as "deal 1d6 extra damage if you are flanking". All Rogue subclasses will gain that ability by default. The subclasses can change Sneak Attack, but there is a default mechanic in place.</p><p></p><p>Subclasses can add new abilities, but rules that reference the Rogue cannot reference those new abilities, because those abilities are not part of the Rogue.</p><p></p><p><strong>Issues</strong></p><p></p><p>Inheritance is not the only mechanism that can be used to implement polymorphism. A second method is called <em>interface composition</em>. In this method, the top classes (called interfaces) are purely descriptive. All mechanics are contained within the subclass. For example, the Rogue interface would have an ability called Sneak Attack. However, each subclass would have to define Sneak Attack individually. They may all define it the same way, or some may change the ability up.</p><p></p><p>Now, it may seem like interface composition is less powerful than inheritance. But interface composition has some subtle advantages. First, sometimes mechanics can conflict, or rules that rely on the default implementation cease to work with a subclass that changes it up. For example, let's say the default Sneak Attack works in melee combat. Then an Archer subclass comes out that redefines Sneak Attack to work at range. If a third book comes out which assumes Sneak Attack is in melee, it can conflict with the Archer variant. These sort of small conflicts and assumptions end up being fairly common if the inheritance hierarchy gets very big. A purely descriptive interface tends to avoid these issues because all you have to rely on is the description and not the default implementation.</p><p></p><p>The second advantage is that it is a lot easier to make a subclass that can substitute for multiple classes. For example, let's say you want to make an Arcane Trickster, a mage/rogue hybrid. What base class do you start with? If it's a Mage, then rules that reference Rogues don't work. And vice versa. Mechanics like Base Attack Bonus can conflict, because both Mage and Rogue define the same mechanic differently.</p><p></p><p>Whereas in interface composition it would look something like this:</p><p></p><p>Mage</p><p> - casts Arcane spells</p><p></p><p>Rogue</p><p> - has Sneak Attack</p><p></p><p>Arcane Trickster is both Mage and Rogue</p><p> - defines its own BAB progression</p><p> - casts Arcane spells</p><p> - has Sneak Attack</p><p></p><p>It can easily substitute for both classes, and will work correctly with rules that reference Mages or Rogues.</p><p></p><p>The software development world is moving to the view that interface composition has more advantages than inheritance. It is considered to be more flexible. Each subclass is fully defined on its own, and does not reference back to a base class. In fact, Google's latest language, Go, does not have inheritance at all, relying fully on interface composition to provide polymorphism.</p><p></p><p><strong>Conclusion</strong></p><p></p><p>It should be noted that in my day job as a software developer, I am in the interface composition camp. I used to be a proponent of inheritance, but in practice inheritance has ended up causing me more headaches than it solved.</p><p></p><p>In my opinion, the same issues that plague inheritance in object-oriented programming will end up affecting class design in D&D Next. The base class mechanics will prove to be too rigid, and the promise of polymorphism will prove to be harder to achieve as more and more rules come out that rely on the base assumptions of the default class.</p><p></p><p>I expect that it will take an edition's worth of subclasses to fully see the issues. Perhaps in 6E we will be ready to move to purely descriptive base classes without mechanics.</p><p></p><p><strong>A Note on Psionists</strong></p><p></p><p>In my opinion, the issue with Psionists and Mages can be very clearly seen in a purely descriptive system. A description of Mage might be something like:</p><p></p><p>Mage</p><p> - casts arcane spells</p><p> - can wear robes</p><p> - has a familiar</p><p></p><p>A Psionist is going to violate that very first line in the description. Therefore a Psionist cannot be a Mage.</p><p></p><p>Where WotC is going wrong is that they want the Psionist to use some of mechanics defined in the base Mage class, and to be treated like a Mage by future rules. But in a system where there are no mechanics defined in the base Mage class, this is more obviously wrong.</p><p></p><p>Or the fix, that psionics is now a type of arcane magic, must be stated more bluntly.</p></blockquote><p></p>
[QUOTE="GSHamster, post: 6179357, member: 20187"] The current design of classes and subclasses in D&D Next is very similar to some concepts in computer science. This is a look at that design using the terminology of computer science. As well, I hope to show that--if the analogy holds--this current design will have issues later on. [b]Goal of Subclasses[/b] What WotC is aiming for with this design is the concept of [i]polymorphism[/i]. Polymorphism is the ability for data of one type to be substituted for data of another type safely. Essentially, if a rule calls for a character of type Mage, you can give the rule a character of type Wizard, or type Warlock, or type Sorceror, and the rule will still work. The advantage of polymorphism is that it allows future products to work together, even though they don't know about each other. For example, let's say class Fighter is defined in the Player's Handbook. A year later, Supplement A comes out with subclass Knight, and Supplement B comes out with a combat stunt system for Fighters. Thanks to polymorphism, if things are done correctly, Knights will be able to use the stunt system without issues, even if the two Supplements don't know about each other. Instead, they interact with each other through the definition of Fighter. [b]Implementation[/b] The mechanism WotC is using is called [i]inheritance[/i]. Some mechanics are defined in the base class, and the subclass "inherits" those mechanics. For example, let's say Sneak Attack is defined in the base Rogue class as "deal 1d6 extra damage if you are flanking". All Rogue subclasses will gain that ability by default. The subclasses can change Sneak Attack, but there is a default mechanic in place. Subclasses can add new abilities, but rules that reference the Rogue cannot reference those new abilities, because those abilities are not part of the Rogue. [b]Issues[/b] Inheritance is not the only mechanism that can be used to implement polymorphism. A second method is called [i]interface composition[/i]. In this method, the top classes (called interfaces) are purely descriptive. All mechanics are contained within the subclass. For example, the Rogue interface would have an ability called Sneak Attack. However, each subclass would have to define Sneak Attack individually. They may all define it the same way, or some may change the ability up. Now, it may seem like interface composition is less powerful than inheritance. But interface composition has some subtle advantages. First, sometimes mechanics can conflict, or rules that rely on the default implementation cease to work with a subclass that changes it up. For example, let's say the default Sneak Attack works in melee combat. Then an Archer subclass comes out that redefines Sneak Attack to work at range. If a third book comes out which assumes Sneak Attack is in melee, it can conflict with the Archer variant. These sort of small conflicts and assumptions end up being fairly common if the inheritance hierarchy gets very big. A purely descriptive interface tends to avoid these issues because all you have to rely on is the description and not the default implementation. The second advantage is that it is a lot easier to make a subclass that can substitute for multiple classes. For example, let's say you want to make an Arcane Trickster, a mage/rogue hybrid. What base class do you start with? If it's a Mage, then rules that reference Rogues don't work. And vice versa. Mechanics like Base Attack Bonus can conflict, because both Mage and Rogue define the same mechanic differently. Whereas in interface composition it would look something like this: Mage - casts Arcane spells Rogue - has Sneak Attack Arcane Trickster is both Mage and Rogue - defines its own BAB progression - casts Arcane spells - has Sneak Attack It can easily substitute for both classes, and will work correctly with rules that reference Mages or Rogues. The software development world is moving to the view that interface composition has more advantages than inheritance. It is considered to be more flexible. Each subclass is fully defined on its own, and does not reference back to a base class. In fact, Google's latest language, Go, does not have inheritance at all, relying fully on interface composition to provide polymorphism. [b]Conclusion[/b] It should be noted that in my day job as a software developer, I am in the interface composition camp. I used to be a proponent of inheritance, but in practice inheritance has ended up causing me more headaches than it solved. In my opinion, the same issues that plague inheritance in object-oriented programming will end up affecting class design in D&D Next. The base class mechanics will prove to be too rigid, and the promise of polymorphism will prove to be harder to achieve as more and more rules come out that rely on the base assumptions of the default class. I expect that it will take an edition's worth of subclasses to fully see the issues. Perhaps in 6E we will be ready to move to purely descriptive base classes without mechanics. [b]A Note on Psionists[/b] In my opinion, the issue with Psionists and Mages can be very clearly seen in a purely descriptive system. A description of Mage might be something like: Mage - casts arcane spells - can wear robes - has a familiar A Psionist is going to violate that very first line in the description. Therefore a Psionist cannot be a Mage. Where WotC is going wrong is that they want the Psionist to use some of mechanics defined in the base Mage class, and to be treated like a Mage by future rules. But in a system where there are no mechanics defined in the base Mage class, this is more obviously wrong. Or the fix, that psionics is now a type of arcane magic, must be stated more bluntly. [/QUOTE]
Insert quotes…
Verification
Post reply
Community
General Tabletop Discussion
*Dungeons & Dragons
Classes, Subclasses, and Object Oriented Programming
Top