Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Design doc for multi character slot system #177

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions src/en/proposals/pjb-multi-character-slot.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Multiple Character Slots

| Designers | Implemented | GitHub Links |
|---|---|---|
| PJB3005 | :x: No | TBD |

## Background

Currently, a player can have one character slot selected. This controls their character's appearance, name, job preferences, and antag preferences. This is relatively restrictive, as people may want to have different settings per job. For example:

* Some people prefer having different characters per job or department, for roleplay reasons.
* The work on [loadouts](https://github.com/space-wizards/space-station-14/pull/25715) makes it so that loadouts are assigned per-job, which is kind of clunky.
* Some "jobs" like clown or borg shouldn't use your normal character name. In SS14 this is currently suffering, in SS13 there's either a popup box when you spawn to pick your name OR multiple extra fields in the character info for "character name as clown" and such. Both suck.

## Proposal

It should be possible to have multiple character slots active at once. When selecting jobs, a job is picked for all your characters at once, after which the actual character slot is picked.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is a really clunky solution that isn't very clear to the player how it works.


All the regular properties of a character slot apply. You can have separate names, appearances, and with the loadouts PR separate loadouts too.

As an example: if you have two character slots, one engineer, one medical doctor, the game will try to give you a job for either. The actual character slot then gets picked based on what job you got.

### UI

Most of the UI would remain mostly the same.

The character customization screen currently lists all your characters in a column on the left. With this change, it'd create two separate headings: one for "active" and one for "inactive". There would be buttons to activate/deactivate character slots.

The lobby currently shows your active character in the menu. With this change, that would instead show all your character slots lined up horizontally. This is also nice because if you do take advantage of multiple character slots this allows you to easily tell "I have engie, med and sec selected".

We will probably need a "duplicate" button to allow you to clone a character slot, if you want to make a character slot with the same appearance but a different job easily.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is also really clunky. If a player makes changes to one character they then need to mirror all those changes to the copies which is a pain in the ass.


### Job/character selection

The game would run job selection first, with your apparent job preferences selected as the union of the preferences of all your characters. Then when a job has been picked for you, your character slot is picked based on what jobs are selected on your characters. If more than one character has the job selected, it'd just be picked randomely between them.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is very complicated and would be confusing un-explained behavior to a player. Job preferences should not be tracked on a per character basis, they are something that a player has. Job preferences should reflect those of the player themselves since they are effectively a consent system for the type of gameplay that a player wishes to engage in during that session. A better solution would be to have a system for managing Job Preference presets, aka the ability to save/select saved preferences.


#### High Priority selection

Currently you can only have one "high" job preference. I'm not sure how this proposal would play in with that, as you'd obviously be able to have multiple characters each with their own high preference set. I can think of two solutions:

* Just allow this. This means people can have multiple "high" job preferences in practice. I'm not sure it's a big deal?
Copy link
Contributor

@moonheart08 moonheart08 Mar 12, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This would allow crafty players to give themselves priority over everyone else for a job or set of jobs using duplicate slots to influence the odds, the second proposal (a high priority slot) is better.

High priority means they get picked before medium or low priority players, so being able to have more than one high priority selection effectively just lets players use slots to give themselves higher job odds.

* Have the ability to select a character slot as "high" as well, and then ONLY that character slot gets high preferences, all the other character slots will have their "high" set to "medium".

### Alternative character types

This approach also opens up the way for "alternative" character slot types. Right now all character slots are "humanoid", which makes little sense for roles like borgs. Instead of selecting borg / AI as regular jobs, we may instead want to make a wholly new character slot type instead. May also make sense for antags like nukies.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like this as a solution for borgs, antags or other unusual crew


To make this not confusing for existing players, we probably want to make the jobs and such still available through the regular selector, with a hint that's like "if you want to customize the borg name, make a new character slot!" or something.

### Character Slot count

Especially if we make dedicated character slot types for silicons/antags, we'll probably need to increase the max character slot count a bit.

### DB changes

Changes to the database would be minimal. Instead of having an "active character slot" index we'd just change each character slot to have a bool.

### Late Joins

In the late join menu, selecting a job would not immediately spawn you in. Instead you'll get an option for which character slot you want to spawn as. If any character slot has the job preference set they'll be somehow highlit to make it easier to select them.
Loading