[RFC] New Capacitor System #35
Labels
No labels
Area-Assets
Area-Backend
Area-Conduits
Area-Datapacks
Area-Lang
Area-Mod Compat
Area-Parity
Area-Rendering
Good first issue
MC-1.19.2
MC-1.20.1
MC-1.20.4
MC-1.20.6
MC-1.21
MC-1.21.1
Modtoberfest
P-0-High
P-1-Medium
P-2-Low
Status-Awaiting Response
Status-Behind-Flag
Status-Blocked
Status-Cannot Reproduce
Status-Duplicate
Status-Help Wanted
Status-Incomplete Report
Status-Invalid
Status-Needs LTS Backport
Status-Needs Updating
Status-Stale
Status-To Implement
Status-Triage
Status-Wontfix
Status-Wontmerge
Type-Backport
Type-Bug
Type-Documentation
Type-Enhancement
Type-Question
Type-RFC
Type-Suggestion
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: Team-EnderIO/EnderIO#35
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Prelude/Motivations
I've been looking into implementing capacitor scaling for machine energy storage and I'm personally not happy with the current implementation of capacitors. I'm using this issue as a draft for a different system, closer in nature to 1.12's system but keeping the complexity down like we attempted with the latest iteration.
Proposal
A capacitor's data will still have a base value for every single value that is pased through.
A capacitor can also "specialize" into specific features for any machine, for example alloy smelter consumption rate, sag mill buffer size etc. but can also target general properties such as buffer size on all machines, etc. The lengths to which these are actually used need to be discussed, I'm not 100% sure on the details from 1.12.2.
These specializations will then be used for scaling the appropriate value in machines. Scaling in the current system is simple linear multiplication and in 1.12.2 this appears to be configurable. I propose that instead each "specialization type" (e.g. buffer, consumption, transfer rate etc.) declares its own scaling method (so for example buffer can use power scaling, consumption linear, etc.) to make the levels have appropriate effects without needing to have extortionate values in capacitors to gain the intended effects.
I'd like for each base value to be configurable, either in mod config or in json form, however I'm unsure how that'd go yet as I'm still working out the implementation details on the above proposal, however I'm imaginging something slightly closer to 1.12.2's implementation of ICapacitorKey which will define how values are scaled and what the base value is, and each key will be defined in a big static class.
We should also consider some way of registering the capacitor specializations, either via some data driven JSON system, or a custom registry in order to support custom specializations from other addons etc. being considered for loot capacitors.
For Players
Capacitors will hopefully become easier to understand by taking some of the complexity out. I'm not really sure how to explain the above proposal in terms of gameplay yet as gameplay balancing has not yet been considered.
Merged