Simple-Station / Einstein-Engines

A Space Station 14 upstream repository, inspired by Baystation12.
https://einstein.simplestation.org
GNU Affero General Public License v3.0
24 stars 49 forks source link

Port Height Sliders #458

Closed VMSolidus closed 1 day ago

VMSolidus commented 2 weeks ago

Description

Ports https://github.com/Simple-Station/Parkstation-Friendly-Chainsaw/pull/45

This feature adds a height and width slider system to character creation, allowing players to change how tall(or chunky) they want their character to be. This change doesn't necessarily exist in a vacuum, and is made to have more complicated interactions with other systems such as combat, Space Wind, and anything in the future that we deem necessary to care about the Mass of an entity.

That's right, this height slider system actually directly modifies the Fixture of player characters, causing small characters to have less mass, while larger characters have more mass. There is an inherent balancing factor to this, thanks to the Space Wind Rework PR, since the smaller your character is, the harder of a time they have when physics systems get thrown at them. Additionally, smaller characters have their maximum view distance slightly reduced, to help further balance them against having a smaller hit-box.

Media

height and width

:cl:

VMSolidus commented 1 week ago

image

I've setup a simple solution to the doors problem. Now, regardless of what the height sliders set the sprite scale of an entity to be, it will never adjust the fixture to a radius equal to or greater than 0.5f. This acts as a sanity check making it so that player characters will never be so large that they cannot fit through an airlock door, regardless of how much their sprite is adjusted.

VMSolidus commented 1 week ago

As a side note, this isn't a limit on how large a player character can be, merely a sanity check for the doors. You can now set an Oni's height to a multiplier of something absurd like 3x, and they'll still fit through doors just fine.

VMSolidus commented 1 week ago

image

I remembered that negative numbers are acceptable inputs for SetRadius, so I have to account for that by making this a MinMagnitude, rather than a Min.

VMSolidus commented 1 week ago

It has been pointed out to me that THIS hilarious creature can be made now. And I think that's just incredible. image

DangerRevolution commented 1 week ago

PR Open but PR Body not filled.

VMSolidus commented 1 week ago

PR Open but PR Body not filled.

I've added more information to the PR body.

VMSolidus commented 1 week ago

image

Lol, bad test fail

github-actions[bot] commented 1 week ago

This pull request has conflicts, please resolve those before we can evaluate the pull request.

VMSolidus commented 1 week ago

https://github.com/Simple-Station/Einstein-Engines/assets/16548818/b5767de4-80ed-4af7-9c3f-0fde749c40f0

I've made it so that the height and width sliders in character selection now display an abstraction of your character's height and (shoulder-to-shoulder) width. These specific numbers have no ingame effect(that comes from the Fixtures Component, all characters are secretly a sphere with a radius of 0.35 meters). However since the relevant numbers are stored in a character's components, I can actually use this later for in-game systems that will let people look up a characters statistics! I'm excited to re-use this for Fugitives whenever I get around to rebasing & reworking them.

Additionally, two new CVars have been added thanks to feedback from Deep Station 14. These are HeightAdjustModifiesHitbox and HeightAdjustModifiesZoom. These both toggle on or off the two main "Balancing" features for height sliders. Which, while I strongly do not recommend turning them off, some servers may not care much about gameplay, and primarily want "Cosmetic-Only" height sliders.

VMSolidus commented 1 week ago

https://github.com/Simple-Station/Einstein-Engines/assets/16548818/3ffadfc4-9c13-4a8c-99a5-c3aa50a9bbb1

After even more feedback, Weight is now listed alongside the height and width sliders, which also accurately reflects the real Mass a character will have ingame. Players now get to visually see that their Diona are ungodly heavy, while Harpies are ridiculously light.

VMSolidus commented 1 week ago

https://github.com/Simple-Station/Einstein-Engines/assets/16548818/5919247c-8b90-4bce-bb9a-b66641d0ee45

My last update of the night fixes the UI scaling issue.

DangerRevolution commented 1 week ago

Just minor changes but it's worth discussing if uh, CM/KG are the best way to go here? Maybe there's an IC way; maybe there's some way to make it toggleable for NA/EU servers? (aside from searching for all instances and replacing it), maybe something in the options?

To follow up on this, I (American Joe) shouldn't have to google a feet to CM converter to make a character or something is all.

DEATHB4DEFEAT commented 1 week ago

Just minor changes but it's worth discussing if uh, CM/KG are the best way to go here? Maybe there's an IC way; maybe there's some way to make it toggleable for NA/EU servers? (aside from searching for all instances and replacing it), maybe something in the options?

To follow up on this, I (American Joe) shouldn't have to google a feet to CM converter to make a character or something is all.

Skill issue, we're American too.

VMSolidus commented 1 week ago

Just minor changes but it's worth discussing if uh, CM/KG are the best way to go here? Maybe there's an IC way; maybe there's some way to make it toggleable for NA/EU servers? (aside from searching for all instances and replacing it), maybe something in the options?

To follow up on this, I (American Joe) shouldn't have to google a feet to CM converter to make a character or something is all.

All measurements in the game are given in Metric, since it takes place in space(scifi setting), and in the distant far future the Imperial system is an equally distant memory. It wouldn't really make sense to give your character's statistics in non-metric if everywhere else its exclusively metric. It's pretty easy to get used to anyhow. "150 is a dwarf" "175 is perfectly average" "200 is gigantism"

DangerRevolution commented 1 week ago

"175 is perfectly average"

This is definitely the distant sci-fi future then 😭😭😭😭😭

github-actions[bot] commented 1 week ago

This pull request has conflicts, please resolve those before we can evaluate the pull request.