-
Notifications
You must be signed in to change notification settings - Fork 4.7k
Xeno arch balancing part 0 #39244
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
base: master
Are you sure you want to change the base?
Xeno arch balancing part 0 #39244
Conversation
|
It actually is possible to do a dynamic cost system within entity tables, as demonstrated in #37783. |
|
After analysis of mentioned PR i still am staying with current implementation. My idea is that
So using Emo work we can put BudgetRange and its calculation into EntityTable related features, but the problem is withing BudgetValue - if we put it into EntityTable rule, we cannot get it out! Because output of EntityTable is... well, entities or entPrototypeIds. But we need both picked entity and actual value. And splitting this data between entity table and prototype itself sounds like a really bad idea, they are closely related :( I dont want to place BudgetValue in the middle of BudgetRange explicitly, and we wont have this data when EntityTable picks something too - so no point. Its a mess but thats kinda how it rolls. |
|
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
About the PR
Refactoring of XenoArtifact generation code towards new generation model. Accounts for possibility of generation code to return null (when failed to find fitting trigger or effect for node). And code cleanup.
Why / Balance
First step for implementation of balanced graph generation (so deeper nodes are more complex to get and are more valuable).
Design doc is here - space-wizards/docs#456
Technical details
Mostly code cleanup and additional checks if next code generation layer failed (returned empty resul). Collections allocation still is not great.
Removed a lot of unneeded 'ref' from code, replaced recursion in layer generation with cycle.
Replaced EntityTable with IWeightedRandomPrototype for effects - because picking them using table will not be possible when we will have 'budget range' and will need to dynamically restrict range of options. I am not sure its feasible / reasonable to try achieve it with EntityTables.
Media
Requirements
Breaking changes
XenoArtifactComponent.EffectsTablewas replaced withEffectsWeightsproperty, that uses newProtoId<WeightedRandomXenoArchEffectPrototype>.Replaced
XenoArtifactEffectsDefaultTablewithXenoArtifactEffectsDefaultTableBalancedandXenoArtifactEffectsHandheldOnlyTablewithXenoArtifactEffectsDefaultTableBalancedHandheld.SharedXenoArtifactSystem.CreateNodesignature changed fromto
Changelog
no