Exception-based design isn't revolutionary
Moderator: Moderators
Yeah, that's what I was thinking. So if we're going to accept damage as being universal, we'd say 'takes no cold damage' and then spells would state how much cold damage they do, and how they interact with cold immune creatures if they do something else wonky.name_here wrote:Really, i think that the immunity description should contain as much in the way of rules as you want to be consistant across all [cold] spells.
But I do want to have one off cases like [sleepless], cannot be put to sleep; and spells that say, [trance] puts creatures into a sleep including those normally unable to sleep or be magically slept. or whatnot.
The descriptor needs to be described enough so that you have a vague idea what it'll do for you without reading all the spells. At that point, you might just be [orc] and not know if there's going to be [orc] tagged spells or not.
-Crissa
Considering that some spells are defensive in nature, why have you concluded that the number of defenses is going to be vastly less than the number of spell effects?FrankTrollman wrote:The game frankly shouldn't have a lot of defenses. But it's going to have hundreds of spell effects.
To bring up my favorite example yet again, Guild Wars features a giant list of skills (over a thousand) that includes some very wacky offensive and defensive effects. Most skill effects can be clearly and unambiguously described with ~20 words or less, and they can't get away with appealing to DM judgement for special cases because it's a computer game. This all works because they have a well-defined vocabulary for both offensive and defensive effects.
Some examples:
Anthem of Envy: (Chant) For 10 seconds, the next attack skill used by each ally within earshot does +10..22 damage against foes with more than 50% health.
Cautery Signet: (Elite Signet) All party members lose all conditions. You are set on fire for 1 second for each condition removed.
Mend Condition: (Spell) Removes one condition from target other ally. If a condition is removed, target is healed for 5..70.
Pensive Guardian: (Enchantment Spell) For 5..10 seconds, target ally has a 50% chance to block attacks from enchanted foes.
Reversal of Fortune: (Enchantment Spell) For 8 seconds, the next time target ally would take damage, that ally is healed for that amount instead, maximum 15..67.
Scourge Healing: (Hex Spell) For 30 seconds, whenever target foe is healed, the healer takes 15..67 holy damage.
"Condition," "enchanted," "other ally," "within earshot," etc. all have precise technical definitions.
If someone on the design team had decided that attacks don't need to have key words or damage types attached because all attack/defense interactions would be specified entirely on the attack side, that would have prevented a huge number of skills included in the final game.
...what the hell?
1) Can't we discuss the general approach to rules-writing separately from the question of how complicated we want to make the game?
2) How can you possibly look at that and think it's complicated compared to the stuff that regularly comes across this board? The spell descriptions are 20 words long, unambiguous, and instantly comprehensible. I would be astonished if TNE (if it ever exists) was that simple and straightforward.
1) Can't we discuss the general approach to rules-writing separately from the question of how complicated we want to make the game?
2) How can you possibly look at that and think it's complicated compared to the stuff that regularly comes across this board? The spell descriptions are 20 words long, unambiguous, and instantly comprehensible. I would be astonished if TNE (if it ever exists) was that simple and straightforward.
Immunity
You are immune to any effect that affect anything written on your character sheet and to any effect that would add to your character sheet. You are still affected by stuff not written on your character sheet, even if said stuff does not allow you to use your character sheet fully.
Again, ugly wording. Maybe I can think of a better wording, until then, examples:
Wall of Ice
You take no cold damage (your HPs are written oon your sheet), but the wall itself affects you (while it is possible the wall keeps you from using your movement, you still have it).
Frost Orb
You take no cold damage (see above) and you are not slowed (that affects your sheet).
Solid Fog
Your vision is affected (you can still see, just not inside the fog) and so is your movement (you can still move, just not in the fog).
Stinking Cloud
Your vision is affected (see above), but you are not nauseated (that is a condition that stays with you even outside the cloud, because it affects your sheet).
Apart from the ugly wording, does that look usable?
You are immune to any effect that affect anything written on your character sheet and to any effect that would add to your character sheet. You are still affected by stuff not written on your character sheet, even if said stuff does not allow you to use your character sheet fully.
Again, ugly wording. Maybe I can think of a better wording, until then, examples:
Wall of Ice
You take no cold damage (your HPs are written oon your sheet), but the wall itself affects you (while it is possible the wall keeps you from using your movement, you still have it).
Frost Orb
You take no cold damage (see above) and you are not slowed (that affects your sheet).
Solid Fog
Your vision is affected (you can still see, just not inside the fog) and so is your movement (you can still move, just not in the fog).
Stinking Cloud
Your vision is affected (see above), but you are not nauseated (that is a condition that stays with you even outside the cloud, because it affects your sheet).
Apart from the ugly wording, does that look usable?
Murtak
No, it doesn't.Murtak wrote:Immunity
You are immune to any effect that affect anything written on your character sheet and to any effect that would add to your character sheet. You are still affected by stuff not written on your character sheet, even if said stuff does not allow you to use your character sheet fully.
...
Apart from the ugly wording, does that look usable?
Example: all buffs.
The ones I thought of straight off are the Heart of [Element] spells from Complete Mage. For example, Heart of Fire is a 'Transmutation [Fire]' spell which gives +10 land speed and Fire resistance 20. With that Immunity then you wouldn't get any benefits.
Last edited by Parthenon on Sun Mar 01, 2009 10:37 am, edited 1 time in total.
-
MartinHarper
- Knight-Baron
- Posts: 703
- Joined: Fri Mar 07, 2008 7:54 pm
I don't think so. In a simple game like Chess, you can write the rules in a contradiction-free way and plan all the interactions in advance. In a more complicated game like d&d that probably isn't plausible, so you might take other approaches.Manxome wrote:Can't we discuss the general approach to rules-writing separately from the question of how complicated we want to make the game?
Computer games are best written with keyword mechanics, because it avoids spaghetti code and leads to a more maintainable program. Also, it is ok to have contradictions and ambiguities in the rules as explained to the players, provided that the game engine knows what to do in these cases.
-
Username17
- Serious Badass
- Posts: 29894
- Joined: Fri Mar 07, 2008 7:54 pm
That's bullshit. Computer games may or may not benefit from key words. There are no key words in Contra, nor would the game benefit any from their inclusion. Hell, even in the limited field of RPG computer games it is certainly defensible to claim that the best one ever was Planescape Torment, a game that likewise does not use a keyword structure.Computer games are best written with keyword mechanics, because it avoids spaghetti code and leads to a more maintainable program. Also, it is ok to have contradictions and ambiguities in the rules as explained to the players, provided that the game engine knows what to do in these cases.
Indeed, the case for keywords is much much stronger when you take it to the realm of tabletop, because table top games are open ended whilst computer games are not. You don't need to create a "goblin" key word in Wesnoth, because there are literally only 6 goblin units in the entire game - and 4 of those are just alternate upgrades of the first two. But if you take it to the realm of the table top there are by definition limitless variations on goblin units that could potentially exist.
Another problem you seem to be having is distinguishing between effects and offense. If you have an effect that makes it harder to cast [Fire] spells this is defensive, but it's not a defense. It's a battlefield control effect that effects other people. So you're damn well going to have to explain how it interacts with other peoples' passive defenses. For example, your [Cold] spell that makes it very cold and very hard to cast [Fire] spells should probably suppress the [Fire] spells even of creatures who are immune to [Cold]. In fact, I'd be pretty insulted if it didn't.
-Username17
-
Username17
- Serious Badass
- Posts: 29894
- Joined: Fri Mar 07, 2008 7:54 pm
If that spell literally transforms your heart into fire and you are utterly immune to fire, why should you get the benefits of the spell?Parthenon wrote:No, it doesn't.
Example: all buffs.
The ones I thought of straight off are the Heart of [Element] spells from Complete Mage. For example, Heart of Fire is a 'Transmutation [Fire]' spell which gives +10 land speed and Fire resistance 20. With that Immunity then you wouldn't get any benefits.
Murtak
That should work fine in my above version, shouldn't it? If that spell works on an area fire spells are harder to cast, even for creatures with cold immunity. If it is a [cold] spell that directly affects a creature, no matter where it is cold immunity helps and that too seems fine to me.FrankTrollman wrote:Another problem you seem to be having is distinguishing between effects and offense. If you have an effect that makes it harder to cast [Fire] spells this is defensive, but it's not a defense. It's a battlefield control effect that effects other people. So you're damn well going to have to explain how it interacts with other peoples' passive defenses. For example, your [Cold] spell that makes it very cold and very hard to cast [Fire] spells should probably suppress the [Fire] spells even of creatures who are immune to [Cold]. In fact, I'd be pretty insulted if it didn't.
-Username17
Murtak
-
MartinHarper
- Knight-Baron
- Posts: 703
- Joined: Fri Mar 07, 2008 7:54 pm
That almost makes sense in this instance, but should you get more of an effect if you have [Fire vulnerability]?Murtak wrote: If that spell literally transforms your heart into fire and you are utterly immune to fire, why should you get the benefits of the spell?
Lets say you have a [Fire] spell that transmutes you into a large ball of flame giving you flight, a damaging aura, an ability to throw fireballs and DR. Why shouldn't an azer wizard be able to cast it? (Azers are the fire dwarves, right?)
Even low-level assembly uses all sorts of junk like pointers, symbols, macros, and even direct address calls. Spread is the same wherever you get it. It's a piece of code, using pointers, GOTO commands or whatever that keeps and getting referenced whenever you shoot. Sure it doesn't have the abstract nature of doing shit like playeronespread.isTrue() you might see in Java or something, but it's still referring to parts of code (i.e. keywords) over and over again. It might be not be easy to read, but that's what is going on. Object oriented programming does put more emphasis on "keywords" or objects than non-object oriented programming does. However a task is still discreet part that can be referenced. It's more like is this a railroaded RPG (go to Caste and do Castle) or a more opened ended (talk to the prince and see if the prince.isMad() returns true or false).FrankTrollman wrote:No there are not. Contra happens to be written in a non-object oriented programming language. There literally aren't even invisible key words.Crissa wrote:Actually, Frank, there are key words in Contra, you just don't see them.
-Crissa
-Username17
Edit- Now none of this matters for us, since a computer is handling all of this rather than what really matters, the players. You can keep a system hidden from the players, but that's crazily hard to do with players where 9 times out of 10 they can go to the store and find it out. Even if they don't, they'll want to know what happens when you cast ice storm on a Frost Wolf versus a Fire Wolf or the GM will want some idea so he can be consistent with it (since the PCs will do stuff assuming that A stays A). Keywords help with this since it's a great shorthand, but shouldn't be a straightjacket.
Last edited by Tsuzua on Sun Mar 01, 2009 5:32 pm, edited 1 time in total.
Which are usually not "keywords" in the context of this discussion, unless you want to argue that things like "game set-up," or "level 1," or "damage" are keywords, which would probably imply that every game ever invented (computer or otherwise) uses keywords.Tsuzua wrote:Even low-level assembly uses all sorts of junk like pointers, symbols, macros, and even direct address calls.
The fact that your code involves variables or function calls does not mean that it's implementing keyword mechanics.
...I'm tempted to assume this was directed at me, because the content seems to imply that, even though the context implies otherwise..?FrankTrollman wrote:Another problem you seem to be having is distinguishing between effects and offense. If you have an effect that makes it harder to cast [Fire] spells this is defensive, but it's not a defense. It's a battlefield control effect that effects other people. So you're damn well going to have to explain how it interacts with other peoples' passive defenses. For example, your [Cold] spell that makes it very cold and very hard to cast [Fire] spells should probably suppress the [Fire] spells even of creatures who are immune to [Cold]. In fact, I'd be pretty insulted if it didn't.
Considering that I recently specifically pointed out that some spell effects would be defensive, I don't think that distinguishing between "effects" and "offense" is my problem. I think I assumed that "defense" was shorthand for "defensive effect" since I couldn't think of what else it would mean that would be relevant to this discussion.
Since apparently you can, what defintion are you using?
-
Beth_Naught
- 1st Level
- Posts: 46
- Joined: Wed Feb 11, 2009 4:40 pm
Yeah. If everything is a keyword then saying something is a keyword conveys no information at all.
I spent years modding the Infinity Engine (used in Planescape: Torment), so picking an example from that:
You can't cast any spells if you're silenced. "Vocalize" is a spell in the game, and would be quite useless if you couldn't cast it while silenced. The devs could have resolved that by writing a keyword that states "This spell overrides the silenced condition's forbiddance of spellcasting" and pasting that keyword as a bitflag into the spells that needed it. That would have been fine, but they didn't choose that implementation. Instead, there's a section of code that skips over the silence check iff the external resource being called is spwi211. And it doesn't matter particularly what spwi211 does - it could cast magic missiles and summon cows and fully heal your party or end the game or whatever - you bypass the usual check.
That actually works fine too - in a computer game. In a tabletop game you don't want to have all of the exceptional cases listed in the primary entry because they're probably irrelevant to the situation at hand, so the primary entry is harder to read and apply. A computer doesn't care. And it's harder to add a new spell that you can cast while silenced if you have to errata the primary entry to make it work - much easier to paste in a "Castable while silenced" keyword in the new spell's entry. That also doesn't apply in a game where you don't write new spells.
What you can't have is a game with both "Evil Eye" and "Perseus's Reflective Shield" without exception handling.
I spent years modding the Infinity Engine (used in Planescape: Torment), so picking an example from that:
You can't cast any spells if you're silenced. "Vocalize" is a spell in the game, and would be quite useless if you couldn't cast it while silenced. The devs could have resolved that by writing a keyword that states "This spell overrides the silenced condition's forbiddance of spellcasting" and pasting that keyword as a bitflag into the spells that needed it. That would have been fine, but they didn't choose that implementation. Instead, there's a section of code that skips over the silence check iff the external resource being called is spwi211. And it doesn't matter particularly what spwi211 does - it could cast magic missiles and summon cows and fully heal your party or end the game or whatever - you bypass the usual
Code: Select all
CMP AX 0x1000
JNBE 0x009125a6That actually works fine too - in a computer game. In a tabletop game you don't want to have all of the exceptional cases listed in the primary entry because they're probably irrelevant to the situation at hand, so the primary entry is harder to read and apply. A computer doesn't care. And it's harder to add a new spell that you can cast while silenced if you have to errata the primary entry to make it work - much easier to paste in a "Castable while silenced" keyword in the new spell's entry. That also doesn't apply in a game where you don't write new spells.
What you can't have is a game with both "Evil Eye" and "Perseus's Reflective Shield" without exception handling.
