Datum Based Antags Design Document (WIP/Preview)
Posted: Tue Jun 30, 2015 6:24 am
Part 2: https://tgstation13.org/phpBB/viewtopic ... 18#p100418 (full list of antags)
Part 3: https://tgstation13.org/phpBB/viewtopic ... 13#p100447 (How threat works to generate antags)
So I've been talking about datum based antags for a while now, and I've started putting pen to digital paper to iron out the details here and stop the mental feature creep before this project becomes too big to do. The following is ALL up for debate and critique. It doesn't represent the whole of what I'm planning, but I'll post more as I properly verbalize it. I'm hoping to get this done within a month or so (Not a promise).
------
The Primary Goal
Game mode code is an extremely old system with very little standardization between modes. It locks in a number of game mechanics at round start that really don't need to be and makes inserting or mixing antag types a confusing headache. My work on mulligan (which I stopped to work on this) was greatly inhibited by the dozens of strangely handled edge cases between antag types. It's reached a point where I feel that it would be easier to stop building on the proverbial swamp that is game mode code and build a new, more solid foundation based on a better atomized system of datums.
An antag datum is the new unit of measure here. An antag datum is located within the mind of a player, and also referenced on a global list in the corpse of the old game mode code. For antags that work alone the datum is unique to them. For team based antags there will be a shared datum that every player in the team shares that keeps track of their progress as a group. Special roles within a team mode (like gang leaders or rev heads) might have a separate datum in addition to the group datum. A player may have multiple antag datums at once if they share multiple antagonist roles.
What Does What
An antag datum should track:
-Who can hold that datum (valid candidates)
-What gear or abilities that antag gets
-Where they start/if they're exempt from the job system
-Where this antag draws candidates from (roundstart|late join|ghosts)
-Rules for conversion/deconversion
-Victory/failure conditions
-Any antag roles that may be blacklisted for having confusing or bad synergy (like blob/wizard)
-Tracking for how an antag is doing in the course of a round (living/dead|objectives complete/incomplete|ghosted/siliconed/animaled/whatever)
The remains of game mode code will house:
-the game mode itself, as a properly weighted list of antag datums to hand out
-A number of global lists that divvy up each kind of datum
Adding a new antag in the middle of the round should be as easy as giving a player an antag datum, removing an antagonist status should be as easy as deleting that datum. Everything that makes an antag an antag should attempt to be contained within the datum to reduce loose ends that would need to be handled elsewhere otherwise.
Consequences for game modes
Datumizing antags will mean that we can easily decouple antags from modes, and sprinkle them liberally across the rainbow of rounds. Balance will change radically as it will become balanced more around the "threat" each antag brings to the table rather than the "threat" of a mode as a whole
The end game here is to remove all meta about what antags could practically be in a round. Seeing a tome shouldn't mean you can relax about changelings, seeing a wizard shouldn't automatically clear the AI. More options means more paranoia, and it means you can still get caught flat footed. Every round will be weighted against its population in terms of what it can handle. As an example a blob round with more than 60 people ready results in two blobs. But under the new system if the game picked blob as a round type you might see 1 blob, 3 changelings, and an abductor. Obviously this will invoke a lot of balancing on live servers, so I'm going to apologize ahead of time for that.
The idea here is that a game mode will represent the biggest threat in the round. If the game rolls changelings, you won't see a wizard, but you'll probably have to contend with at least one other minor threat, like maybe a traitor or two, or an abductor. Of course you won't be able to tell that a round is a changeling round at all unless you can confirm that there are many changelings around. If you just find one it could as easily be a gang round with a solo ling floating around in the crossfire.
Because of this big change some modes will change rather drastically, a few will be retired outright.
*Abduction: Retired. Tests have shown that while these guys are fun to play, they don't really threaten people much, and are more suited to a side role among more active antagonists. Abductors will become a semi-rare threat in most other game modes.
*Blob: Two blob rounds during high pop will become much rarer. Threats besides the blobs will appear but MOST antags won't be able to win if the blob wins. These antags will have to carefully balance fucking people over with not letting the blob win. The round will not end if the blob(s) are defeated, but will if the blobs win.
*Changeling: These rounds won't be quite so boring anymore :^)
*Traitorling: Retired. Traitors and lings will become a fairly common occurrence in many rounds, and traitorling "rounds" will be simulated by either a few lings in a traitor round or a few traitors in a ling round.
*Cult: Some cultists may have other antagonists roles. Antagcultists should work to "win on both fronts" if they're in a cult, and should probably be open with there extra abilities to their fellow cultstimers. See section on "priority".
*Extended/Sandbox: No change, no threats
*Gang: Very large rounds may start with more than two gangs. Gangsters cannot be on two gang teams at once, but they can still be in other team antagonist roles like a cult or a revolution. In general gangster status should take a lower priority to revolutions and cults when it comes to conflicts of interest (ie killing a head if your a revolutionary is fine even if he's an aligned gangster). See section on "priority".
*Malfunction: Low level threats will be spawned in addition to a malf if the round can handle it. Like blob most antags cannot win if the malfunctioning AI wins (especially if it explodes the station). The round will not end if the malf loses, but will if it wins.
*Meteor: Low level threats will be spawned if populations are high enough. Meteor mode will still be a laggy mess.
*Monkey: Infected monkeys will almost never be seen outside of monkey mode. The mantra here is that you can assume nothing, so you may see a monkey or two once in a blue moon outside of monkey mode. Likewise infected monkeys may also be other antagonists, and hilariously most objectives can still be completed even if you're a monkey. Mode will not end if all monkeys are eradicated.
*Nuke ops: The number of ops may scale more actively with population. Because they're on the same team, operatives will be aware of traitors on the station, and traitors might do well to signal to ops and try to team up with them. Mode will not end if all ops die, and if the round ends with no threats that care about the nuke disk alive, the station won't lose if they left it behind.
*Revolution: Number of rev heads may scale more actively with population. Rounds will not end suddenly: If all the rev heads die all revolutionaries are spontaneously deconverted. If all heads die a nice big station announcement will publicly hand over the station to the rev heads. At this point the revolution will cease to be antags. If any loyalty implanted staff remain at this point, they will gain counter-revolutionary antag status to allow them to fight to the last man if desired. The shuttle may be called without dealing with counter-revs, the revolution will be considered a success unless the former rev heads are killed by the counter-revolutionaries, in which case everyone loses.
*Shadowling: Being a shadowling thrall will garner the highest loyalty possible. You don't betray the shadowling for anything, if there's any antag status you have that conflicts with the shadowlings well being, it's lost on conversion. See section on "priority". Shadowlings themselves may have additional antag statuses as well.
*Traitor: Will probably become more common in terms of percentages due to the loss of traitorling. Low level side antags will be a fixture of traitor rounds, and there will be potential abound for metaing the round type as something else.
*Double Agents: Survives mostly intact. Mini rings of double agents may appear in other rounds, but no matter where they appear they still can't buy bombs [sad_trombone.wav].
*Wizard: Wizards may come in several power-levels to allow lower level threats to face smaller crews. Other antagonists may be common if population is high enough, and the propensity of chaos will mean that crazy situations are always the most likely here.
*Ragin' Mages: Retired. A chance of multiwiz will be put in as a rare fight for high pop crews.
Priority in antaging
If a person comes to hold contradictory objectives, there will be a trump system to see which wins out:
*Shadowling thrall holds the highest priority. If you have an objective as any other kind of antagonist to harm someone on your new team, it's removed outright.
*Cultist come next. If the cult is targeting a shadowling for sacrifice (you poor bastards) thralls can't be converted at all, beyond this anyone on team cult is safe from their fellow cultists.
*Revolution gets third tier here. Revolutionaries in a cult/thralled with a head are deconverted, but if the cult is trying to sacrifice a non-revolutionary and contains no heads, you can be both at once. Note that if a head later joins your other team, you get dereved at that point.
*Gangsters are the low men on the priority poll. If your gang contains elements the shadowling/Cult/Revolution want dead, you lose your gangster status. Gang status will still trump things like a traitor objective to kill a teammate however.
*All solo antags share the basement level. In general you can be multiple solo antags at once without conflicting (unless you're a blob in which case you don't have to deal with any of this)
It's important to note two things here: You don't redtext an objective if you're on a team with a target, the objective is just gone. The other thing to note is if you later lose the trumping team, your old alliances/objectives will come back into play.
A few cool new things
Admins will be able to pick any mix of antags they want prior to round start and run it at as a roundtype. All warranties on game balance voided here.
The mulligan system will be rebooted into a new form where antags may be brought on as old ones are neutralized or achieve greentext. It will never be as frantic as tensioner, but rounds should never be completely empty of threats (unless it's extended).
A streach goal here is to allow any roundtype to be played even at low pop. Lowered threat versions of antags (detailed in a later text wall) will be created to be smaller threats to smaller crews. Multiple copies of smaller threats may also become side antags for other round types in high pop situations. As an example maybe a wizard that can only use three robeless spells.
--------
There's more to write but I need to stop for now. More details will be added as new textdumps soonish.
Part 3: https://tgstation13.org/phpBB/viewtopic ... 13#p100447 (How threat works to generate antags)
So I've been talking about datum based antags for a while now, and I've started putting pen to digital paper to iron out the details here and stop the mental feature creep before this project becomes too big to do. The following is ALL up for debate and critique. It doesn't represent the whole of what I'm planning, but I'll post more as I properly verbalize it. I'm hoping to get this done within a month or so (Not a promise).
------
The Primary Goal
Game mode code is an extremely old system with very little standardization between modes. It locks in a number of game mechanics at round start that really don't need to be and makes inserting or mixing antag types a confusing headache. My work on mulligan (which I stopped to work on this) was greatly inhibited by the dozens of strangely handled edge cases between antag types. It's reached a point where I feel that it would be easier to stop building on the proverbial swamp that is game mode code and build a new, more solid foundation based on a better atomized system of datums.
An antag datum is the new unit of measure here. An antag datum is located within the mind of a player, and also referenced on a global list in the corpse of the old game mode code. For antags that work alone the datum is unique to them. For team based antags there will be a shared datum that every player in the team shares that keeps track of their progress as a group. Special roles within a team mode (like gang leaders or rev heads) might have a separate datum in addition to the group datum. A player may have multiple antag datums at once if they share multiple antagonist roles.
What Does What
An antag datum should track:
-Who can hold that datum (valid candidates)
-What gear or abilities that antag gets
-Where they start/if they're exempt from the job system
-Where this antag draws candidates from (roundstart|late join|ghosts)
-Rules for conversion/deconversion
-Victory/failure conditions
-Any antag roles that may be blacklisted for having confusing or bad synergy (like blob/wizard)
-Tracking for how an antag is doing in the course of a round (living/dead|objectives complete/incomplete|ghosted/siliconed/animaled/whatever)
The remains of game mode code will house:
-the game mode itself, as a properly weighted list of antag datums to hand out
-A number of global lists that divvy up each kind of datum
Adding a new antag in the middle of the round should be as easy as giving a player an antag datum, removing an antagonist status should be as easy as deleting that datum. Everything that makes an antag an antag should attempt to be contained within the datum to reduce loose ends that would need to be handled elsewhere otherwise.
Consequences for game modes
Datumizing antags will mean that we can easily decouple antags from modes, and sprinkle them liberally across the rainbow of rounds. Balance will change radically as it will become balanced more around the "threat" each antag brings to the table rather than the "threat" of a mode as a whole
The end game here is to remove all meta about what antags could practically be in a round. Seeing a tome shouldn't mean you can relax about changelings, seeing a wizard shouldn't automatically clear the AI. More options means more paranoia, and it means you can still get caught flat footed. Every round will be weighted against its population in terms of what it can handle. As an example a blob round with more than 60 people ready results in two blobs. But under the new system if the game picked blob as a round type you might see 1 blob, 3 changelings, and an abductor. Obviously this will invoke a lot of balancing on live servers, so I'm going to apologize ahead of time for that.
The idea here is that a game mode will represent the biggest threat in the round. If the game rolls changelings, you won't see a wizard, but you'll probably have to contend with at least one other minor threat, like maybe a traitor or two, or an abductor. Of course you won't be able to tell that a round is a changeling round at all unless you can confirm that there are many changelings around. If you just find one it could as easily be a gang round with a solo ling floating around in the crossfire.
Because of this big change some modes will change rather drastically, a few will be retired outright.
*Abduction: Retired. Tests have shown that while these guys are fun to play, they don't really threaten people much, and are more suited to a side role among more active antagonists. Abductors will become a semi-rare threat in most other game modes.
*Blob: Two blob rounds during high pop will become much rarer. Threats besides the blobs will appear but MOST antags won't be able to win if the blob wins. These antags will have to carefully balance fucking people over with not letting the blob win. The round will not end if the blob(s) are defeated, but will if the blobs win.
*Changeling: These rounds won't be quite so boring anymore :^)
*Traitorling: Retired. Traitors and lings will become a fairly common occurrence in many rounds, and traitorling "rounds" will be simulated by either a few lings in a traitor round or a few traitors in a ling round.
*Cult: Some cultists may have other antagonists roles. Antagcultists should work to "win on both fronts" if they're in a cult, and should probably be open with there extra abilities to their fellow cultstimers. See section on "priority".
*Extended/Sandbox: No change, no threats
*Gang: Very large rounds may start with more than two gangs. Gangsters cannot be on two gang teams at once, but they can still be in other team antagonist roles like a cult or a revolution. In general gangster status should take a lower priority to revolutions and cults when it comes to conflicts of interest (ie killing a head if your a revolutionary is fine even if he's an aligned gangster). See section on "priority".
*Malfunction: Low level threats will be spawned in addition to a malf if the round can handle it. Like blob most antags cannot win if the malfunctioning AI wins (especially if it explodes the station). The round will not end if the malf loses, but will if it wins.
*Meteor: Low level threats will be spawned if populations are high enough. Meteor mode will still be a laggy mess.
*Monkey: Infected monkeys will almost never be seen outside of monkey mode. The mantra here is that you can assume nothing, so you may see a monkey or two once in a blue moon outside of monkey mode. Likewise infected monkeys may also be other antagonists, and hilariously most objectives can still be completed even if you're a monkey. Mode will not end if all monkeys are eradicated.
*Nuke ops: The number of ops may scale more actively with population. Because they're on the same team, operatives will be aware of traitors on the station, and traitors might do well to signal to ops and try to team up with them. Mode will not end if all ops die, and if the round ends with no threats that care about the nuke disk alive, the station won't lose if they left it behind.
*Revolution: Number of rev heads may scale more actively with population. Rounds will not end suddenly: If all the rev heads die all revolutionaries are spontaneously deconverted. If all heads die a nice big station announcement will publicly hand over the station to the rev heads. At this point the revolution will cease to be antags. If any loyalty implanted staff remain at this point, they will gain counter-revolutionary antag status to allow them to fight to the last man if desired. The shuttle may be called without dealing with counter-revs, the revolution will be considered a success unless the former rev heads are killed by the counter-revolutionaries, in which case everyone loses.
*Shadowling: Being a shadowling thrall will garner the highest loyalty possible. You don't betray the shadowling for anything, if there's any antag status you have that conflicts with the shadowlings well being, it's lost on conversion. See section on "priority". Shadowlings themselves may have additional antag statuses as well.
*Traitor: Will probably become more common in terms of percentages due to the loss of traitorling. Low level side antags will be a fixture of traitor rounds, and there will be potential abound for metaing the round type as something else.
*Double Agents: Survives mostly intact. Mini rings of double agents may appear in other rounds, but no matter where they appear they still can't buy bombs [sad_trombone.wav].
*Wizard: Wizards may come in several power-levels to allow lower level threats to face smaller crews. Other antagonists may be common if population is high enough, and the propensity of chaos will mean that crazy situations are always the most likely here.
*Ragin' Mages: Retired. A chance of multiwiz will be put in as a rare fight for high pop crews.
Priority in antaging
If a person comes to hold contradictory objectives, there will be a trump system to see which wins out:
*Shadowling thrall holds the highest priority. If you have an objective as any other kind of antagonist to harm someone on your new team, it's removed outright.
*Cultist come next. If the cult is targeting a shadowling for sacrifice (you poor bastards) thralls can't be converted at all, beyond this anyone on team cult is safe from their fellow cultists.
*Revolution gets third tier here. Revolutionaries in a cult/thralled with a head are deconverted, but if the cult is trying to sacrifice a non-revolutionary and contains no heads, you can be both at once. Note that if a head later joins your other team, you get dereved at that point.
*Gangsters are the low men on the priority poll. If your gang contains elements the shadowling/Cult/Revolution want dead, you lose your gangster status. Gang status will still trump things like a traitor objective to kill a teammate however.
*All solo antags share the basement level. In general you can be multiple solo antags at once without conflicting (unless you're a blob in which case you don't have to deal with any of this)
It's important to note two things here: You don't redtext an objective if you're on a team with a target, the objective is just gone. The other thing to note is if you later lose the trumping team, your old alliances/objectives will come back into play.
A few cool new things
Admins will be able to pick any mix of antags they want prior to round start and run it at as a roundtype. All warranties on game balance voided here.
The mulligan system will be rebooted into a new form where antags may be brought on as old ones are neutralized or achieve greentext. It will never be as frantic as tensioner, but rounds should never be completely empty of threats (unless it's extended).
A streach goal here is to allow any roundtype to be played even at low pop. Lowered threat versions of antags (detailed in a later text wall) will be created to be smaller threats to smaller crews. Multiple copies of smaller threats may also become side antags for other round types in high pop situations. As an example maybe a wizard that can only use three robeless spells.
--------
There's more to write but I need to stop for now. More details will be added as new textdumps soonish.