From b9ab6599575620de293c18e2d26d7bde69ffd168 Mon Sep 17 00:00:00 2001 From: Flareguy Date: Mon, 22 Jun 2026 16:23:26 -0500 Subject: [PATCH 1/2] spriting-guideline-proper-update --- .../guidelines/spriting/aseprite-template.png | Bin 0 -> 28734 bytes .../guidelines/spriting/wall-sprites.png | Bin 0 -> 14129 bytes src/design/design-notes/traitor.md | 87 ++++++++++++++++++ src/guidelines/spriting.md | 13 ++- 4 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 src/assets/guidelines/spriting/aseprite-template.png create mode 100644 src/assets/guidelines/spriting/wall-sprites.png create mode 100644 src/design/design-notes/traitor.md diff --git a/src/assets/guidelines/spriting/aseprite-template.png b/src/assets/guidelines/spriting/aseprite-template.png new file mode 100644 index 0000000000000000000000000000000000000000..d66b2bcf2c217e43d7057fcb1c6329a774940ec8 GIT binary patch literal 28734 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 literal 0 HcmV?d00001 diff --git a/src/assets/guidelines/spriting/wall-sprites.png b/src/assets/guidelines/spriting/wall-sprites.png new file mode 100644 index 0000000000000000000000000000000000000000..74f84d9d7217c6ef6807faeff6d00fd8223cb032 GIT binary patch literal 14129 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 i_Vk5JYB3UzBtk^hZ_z literal 0 HcmV?d00001 diff --git a/src/design/design-notes/traitor.md b/src/design/design-notes/traitor.md new file mode 100644 index 0000000..f883666 --- /dev/null +++ b/src/design/design-notes/traitor.md @@ -0,0 +1,87 @@ +# Design Notes: Traitors +This document exists as a dissection of my thoughts on TG-style traitors as-they-exist in SS13 & SS14. +It is one part of a two-part-whole. This document has nothing to say about my (ES's) take on traitors that aims to address these problems, and simply aims to document the flaws as-they-exist. + +## The Good +Before tearing in to traitors, I think it's important to establish what makes them so beloved & interesting, as it will help justify my significant criticisms. + +I can't speak for others, but for *me,* I think most striking elements of traitors (in tg-adjacent space station forks) would be their general dynamicism and thematics. +There's undeniably something extremely appealing & fun about this idea of an antagonist that lurks among the crew in secret, completing their objectives through nefarious, paranoia-inducing tactics. + +Though rocky sometimes, the active gameplay of traitor also definitely has a lot of good elements. Players are given a set of objectives and are told to complete them using any tools nessecary. +By simply taking steps to get closer to completing them, you are often put in to really interesting & varied situations where you have to think on your feet and respond to the gamestate. +It's one of the most dynamic & varied experiences the game offers - no two runs of a traitor round will be the same, especially factoring in the insane amount of variables the game has. + +It sounds incredibly obvious, but overall, I would say that traitors are probably one of the best possible foils to the game, thematically and gameplay-wise. They reinforce many important core themes. +They're a persistent element on basically every server, and it's hard to imagine what the game like would be without them. They're the reason the game is often described as "complex among us" to new players. + +### The Bad +With that being said, as a lot of more experienced players will know, the traditional design for traitor is very, *very far* from perfect. +They are fundamentally extremely polarizing in a lot of ways that are intertwined with eachother, which will be elaborated on in the coming sections. + +### Objectives & Round Impact +Probably the most notable way this manifests is with their objectives. + +Objectives do not do anything in of themselves when completed, and don't contribute to any larger goal. Which is to say, the only impact objectives have are whatever actions the player takes to complete them. +This would maybe not be a problem if traitors were intended to be background forces that add a bit of spice to the round - and in some senses, I guess they do kind of end up being that, and it's fairly interesting in some ways. +Unfortunately, like all primary antagonists, traitors are expected to be a *primary driving force* within the round, meaning when the impact of the few objectives they have to complete are inevitably not that big, the round's momentum ends up suffering for it. + +Additionally, the quality of traitor objectives is generally extremely variable. +Frequently, they can range from unimaginably difficult (i.e getting the nuke disk, trying to find a steal objective when it's not on a command member,) to literally self-completing in some cases. + +### The "Solo Antagonist" Problem +Solo antagonists are *extremely volatile,* fundamentally. +A key piece of the roundflow is hinged on their continued existence, yet, they lack the power & safety net a team fundamentally provides. +Additionally, when a solo antag dies, a significant piece of the roundflow goes with them, and there's nobody else to really carry their momentum. + +So, obviously, if we have to have solo agents - we just make them powerful enough to drive the round on their own, right? This is the answer all of the existing solo antags use, after all. +...unfortunately, this leaves you with a paradoxical problem: solo antagonists need to be able to individually have a large round impact, while not being able to ruin the game at the same time. + +You cannot really have a single person drive the round on their own without giving them abilities that make their ability to have an impact *significantly* greater then that of a normal player. +At which point, well - you gave them overpowered abilities, so no shit, they're going to be overpowered and be able to ruin the game at a snap of their fingertips. +Additionally, when players inevitably decide to cooperate for the hell of it, it's often *unbearably* overpowered, since the abilities were designed to be used in a vacuum. + +The proof is really in the pudding with this one. Other solo antagonists like heretic, changeling, and bloodsucker end up being **significantly** more unbalanced compared to their team-based peers. +Team antagonists like the cults, malf AI, and nuke ops tend to have much more consistently impactful roundflow & more satisifiying conclusions then traitors can ever offer. + +### Uplink +The uplink is intended to be where the "sauce" of traitor comes from, and is the sole source of their power. +Unfortunately, the design of "a shop containing a massive array of tools that can be brought at any time" ends up being pretty antithetical to what traitors (and the rest of SS1X, to an extent) are really about: dynamic problem solving. +Players can kind of just buy whatever they need at any time, acting as a perfect "key" to whatever metaphorical lock faces them on their way towards their objectives. You aren't really challenged in any serious way. + +The uplink's specific design philosophy also manages to be extremely problematic in its own right. +There are so many items in it that it effectively makes things basically impossible to consider on any larger scale. +To the average player, the vast majority of the uplink catalog is "fake." +Most people will just buy the most consistent items, since there is too much to possibly consider, also compounded by the expectations of being a traitor (as seen in the next section.) + +Additionally, for game maintenance, the uplink becomes an absolutely *nightmarish* paradigm for traitors to be based around. +The insane complexity makes it simply impossible to consider every option as a bespoke gamepiece, resulting in constant micro-balancing and broken items slipping through the cracks. + +The analogy I like to use for the uplink is that it's something along the lines of if Balatro (or any rougelike, really) let you just buy any joker at any time. +If you're trying to win, you're not going to buy the weird jokers with specific conditional effects or anything, because it's simply not worth considering that over options that are more consistent/easier. +You'd also be stripping out most of the dynamicism from the game, and putting it on the onus of the player to make their own fun, since you wouldn't have to put up with whatever hand you've been deat with the items. + +### Plausible Deniability +Traitor gets massively fucked over by +### External Factors +Though largely irrelevant for us & out-of-scope for this document to talk about in detail, a lot of non-traitor issues also end up being impossible to dance around in this conversation. To list a few: +- Traitor acts as one of the only ways for players to have any impact on the round... and getting it is left up to complete random chance. +- Post-death gameplay is very boring, and traitors are often at the forefront of danger, meaning they're some of the people who end up dying the most. +- Traitor items / behavior are a dead giveaway, making getting caught and dying way more frequent then it otherwise would be. +- Excessive server rules make traitor gameplay more stressful & lose the freeform-ness that can often be the saving grace when you get bad objectives. + +All of these problems & more end up compounding a lot of the existing flaws of traitors. Most notably, players are heavily stressed & encouraged to not experiment, since the stakes are insanely high. +Depending on the codebase & the severity of these issues, traitors can get pushed from being variably fun to outright *consistently miserable*. + +## The Bigger Picture +Summing everything up, traitor often ends up being pretty unabashedly boring a lot of the time, and needlessly stressful. +Traitors are extremely inconsistently fun when played as intended, fundamentally cannot consistently drive round flow, and act a source of constant inbalance. +Anecdotaly, from what I have observed, traitors aren't very fun for people on average. There's probably a reason players disable traitor so frequently. + +Though... overall? If we're going by (TG-strain) SS13, traitors are kind of just... mediocre. Even though they can't drive the round very effectively, there's a lot more going on in that game. +They can mostly hide behind the smokescreen of being the "sandbox antag," and most people don't really find them *offensively bad* or anything. +Let me be clear - I think their status in SS13 is still very tenious. All of the problems listed here are still real, and traitors still consistently stall rounds. But, it's not as bad as it could be. + +In SS14, though? Not only is every bad aspect of traitor much worse (worse uplink, worse objective, etc,) there's just *nothing happening* in the game around it. +Events and other antags do not exist to make up for traitor's mediocrity, and as a result, they're left dragging a metaphorical boulder that's way too big for them to carry. +The game's external factors actually end up harming traitors more then the design of the mode itself, as it no longer has the smokescreen of being the "sandbox antag" to hide around. \ No newline at end of file diff --git a/src/guidelines/spriting.md b/src/guidelines/spriting.md index e82ef28..934aff8 100644 --- a/src/guidelines/spriting.md +++ b/src/guidelines/spriting.md @@ -87,5 +87,16 @@ Shadows and highlights in an object should also be temperature-neutral, since th This should probably be split in to its own doc eventually, but I need to document these things quickly so whatever. ### Wall Sprites -**Use the SS14 tileset tool for generating wall sprites,** it will save you a lot of time. can find it in your repo in ``Tools/SS14 Aseprite Templates``. You will need Aseprite to use it. +Wall sprites look incredibly daunting and incomprehensible at first, but are much easier then they appear. You only really need to make 5 sprites: + +![](../assets/guidelines/spriting/wall-sprites.png) + +If you can, **use the SS14 tileset tool for generating wall sprites.** It will save you a lot of time. You can find it in your repo at``Tools/SS14 Aseprite Templates``. You will need Aseprite to use it. + When copy pasting sprites over to use for the wall template, make sure to **convert the original layer you are copy pasting from to a tileset layer,** or it won't work. You can do this by right clicking the layer you want to convert and then going to Convert To > Tileset. + +To make the tiles automatically replace the existing patches on the wall sheet, you will also need to select the Manual option in the top left, right above your palette display. + +If you do not have Aseprite, you can still work out what tiles need to go where manually by using a reference image. Here is a flattened version of the aseprite template: + +![](../assets/guidelines/spriting/aseprite-template.png) \ No newline at end of file From df3fa767de7f81161426b39b2731f1e2832ca772 Mon Sep 17 00:00:00 2001 From: Flareguy Date: Mon, 22 Jun 2026 16:26:03 -0500 Subject: [PATCH 2/2] TECHNICAL DIFFICULTIES --- src/design/design-notes/traitor.md | 87 ------------------------------ 1 file changed, 87 deletions(-) delete mode 100644 src/design/design-notes/traitor.md diff --git a/src/design/design-notes/traitor.md b/src/design/design-notes/traitor.md deleted file mode 100644 index f883666..0000000 --- a/src/design/design-notes/traitor.md +++ /dev/null @@ -1,87 +0,0 @@ -# Design Notes: Traitors -This document exists as a dissection of my thoughts on TG-style traitors as-they-exist in SS13 & SS14. -It is one part of a two-part-whole. This document has nothing to say about my (ES's) take on traitors that aims to address these problems, and simply aims to document the flaws as-they-exist. - -## The Good -Before tearing in to traitors, I think it's important to establish what makes them so beloved & interesting, as it will help justify my significant criticisms. - -I can't speak for others, but for *me,* I think most striking elements of traitors (in tg-adjacent space station forks) would be their general dynamicism and thematics. -There's undeniably something extremely appealing & fun about this idea of an antagonist that lurks among the crew in secret, completing their objectives through nefarious, paranoia-inducing tactics. - -Though rocky sometimes, the active gameplay of traitor also definitely has a lot of good elements. Players are given a set of objectives and are told to complete them using any tools nessecary. -By simply taking steps to get closer to completing them, you are often put in to really interesting & varied situations where you have to think on your feet and respond to the gamestate. -It's one of the most dynamic & varied experiences the game offers - no two runs of a traitor round will be the same, especially factoring in the insane amount of variables the game has. - -It sounds incredibly obvious, but overall, I would say that traitors are probably one of the best possible foils to the game, thematically and gameplay-wise. They reinforce many important core themes. -They're a persistent element on basically every server, and it's hard to imagine what the game like would be without them. They're the reason the game is often described as "complex among us" to new players. - -### The Bad -With that being said, as a lot of more experienced players will know, the traditional design for traitor is very, *very far* from perfect. -They are fundamentally extremely polarizing in a lot of ways that are intertwined with eachother, which will be elaborated on in the coming sections. - -### Objectives & Round Impact -Probably the most notable way this manifests is with their objectives. - -Objectives do not do anything in of themselves when completed, and don't contribute to any larger goal. Which is to say, the only impact objectives have are whatever actions the player takes to complete them. -This would maybe not be a problem if traitors were intended to be background forces that add a bit of spice to the round - and in some senses, I guess they do kind of end up being that, and it's fairly interesting in some ways. -Unfortunately, like all primary antagonists, traitors are expected to be a *primary driving force* within the round, meaning when the impact of the few objectives they have to complete are inevitably not that big, the round's momentum ends up suffering for it. - -Additionally, the quality of traitor objectives is generally extremely variable. -Frequently, they can range from unimaginably difficult (i.e getting the nuke disk, trying to find a steal objective when it's not on a command member,) to literally self-completing in some cases. - -### The "Solo Antagonist" Problem -Solo antagonists are *extremely volatile,* fundamentally. -A key piece of the roundflow is hinged on their continued existence, yet, they lack the power & safety net a team fundamentally provides. -Additionally, when a solo antag dies, a significant piece of the roundflow goes with them, and there's nobody else to really carry their momentum. - -So, obviously, if we have to have solo agents - we just make them powerful enough to drive the round on their own, right? This is the answer all of the existing solo antags use, after all. -...unfortunately, this leaves you with a paradoxical problem: solo antagonists need to be able to individually have a large round impact, while not being able to ruin the game at the same time. - -You cannot really have a single person drive the round on their own without giving them abilities that make their ability to have an impact *significantly* greater then that of a normal player. -At which point, well - you gave them overpowered abilities, so no shit, they're going to be overpowered and be able to ruin the game at a snap of their fingertips. -Additionally, when players inevitably decide to cooperate for the hell of it, it's often *unbearably* overpowered, since the abilities were designed to be used in a vacuum. - -The proof is really in the pudding with this one. Other solo antagonists like heretic, changeling, and bloodsucker end up being **significantly** more unbalanced compared to their team-based peers. -Team antagonists like the cults, malf AI, and nuke ops tend to have much more consistently impactful roundflow & more satisifiying conclusions then traitors can ever offer. - -### Uplink -The uplink is intended to be where the "sauce" of traitor comes from, and is the sole source of their power. -Unfortunately, the design of "a shop containing a massive array of tools that can be brought at any time" ends up being pretty antithetical to what traitors (and the rest of SS1X, to an extent) are really about: dynamic problem solving. -Players can kind of just buy whatever they need at any time, acting as a perfect "key" to whatever metaphorical lock faces them on their way towards their objectives. You aren't really challenged in any serious way. - -The uplink's specific design philosophy also manages to be extremely problematic in its own right. -There are so many items in it that it effectively makes things basically impossible to consider on any larger scale. -To the average player, the vast majority of the uplink catalog is "fake." -Most people will just buy the most consistent items, since there is too much to possibly consider, also compounded by the expectations of being a traitor (as seen in the next section.) - -Additionally, for game maintenance, the uplink becomes an absolutely *nightmarish* paradigm for traitors to be based around. -The insane complexity makes it simply impossible to consider every option as a bespoke gamepiece, resulting in constant micro-balancing and broken items slipping through the cracks. - -The analogy I like to use for the uplink is that it's something along the lines of if Balatro (or any rougelike, really) let you just buy any joker at any time. -If you're trying to win, you're not going to buy the weird jokers with specific conditional effects or anything, because it's simply not worth considering that over options that are more consistent/easier. -You'd also be stripping out most of the dynamicism from the game, and putting it on the onus of the player to make their own fun, since you wouldn't have to put up with whatever hand you've been deat with the items. - -### Plausible Deniability -Traitor gets massively fucked over by -### External Factors -Though largely irrelevant for us & out-of-scope for this document to talk about in detail, a lot of non-traitor issues also end up being impossible to dance around in this conversation. To list a few: -- Traitor acts as one of the only ways for players to have any impact on the round... and getting it is left up to complete random chance. -- Post-death gameplay is very boring, and traitors are often at the forefront of danger, meaning they're some of the people who end up dying the most. -- Traitor items / behavior are a dead giveaway, making getting caught and dying way more frequent then it otherwise would be. -- Excessive server rules make traitor gameplay more stressful & lose the freeform-ness that can often be the saving grace when you get bad objectives. - -All of these problems & more end up compounding a lot of the existing flaws of traitors. Most notably, players are heavily stressed & encouraged to not experiment, since the stakes are insanely high. -Depending on the codebase & the severity of these issues, traitors can get pushed from being variably fun to outright *consistently miserable*. - -## The Bigger Picture -Summing everything up, traitor often ends up being pretty unabashedly boring a lot of the time, and needlessly stressful. -Traitors are extremely inconsistently fun when played as intended, fundamentally cannot consistently drive round flow, and act a source of constant inbalance. -Anecdotaly, from what I have observed, traitors aren't very fun for people on average. There's probably a reason players disable traitor so frequently. - -Though... overall? If we're going by (TG-strain) SS13, traitors are kind of just... mediocre. Even though they can't drive the round very effectively, there's a lot more going on in that game. -They can mostly hide behind the smokescreen of being the "sandbox antag," and most people don't really find them *offensively bad* or anything. -Let me be clear - I think their status in SS13 is still very tenious. All of the problems listed here are still real, and traitors still consistently stall rounds. But, it's not as bad as it could be. - -In SS14, though? Not only is every bad aspect of traitor much worse (worse uplink, worse objective, etc,) there's just *nothing happening* in the game around it. -Events and other antags do not exist to make up for traitor's mediocrity, and as a result, they're left dragging a metaphorical boulder that's way too big for them to carry. -The game's external factors actually end up harming traitors more then the design of the mode itself, as it no longer has the smokescreen of being the "sandbox antag" to hide around. \ No newline at end of file