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

3mo xeno archeology (first phase) #33370

Open
wants to merge 93 commits into
base: master
Choose a base branch
from

Conversation

Fildrance
Copy link
Contributor

@Fildrance Fildrance commented Nov 17, 2024

About the PR

Re-doing of xeno archeology, mostly done by legendary EmoGarbage.
This PR implements part of https://docs.spacestation14.com/en/space-station-14/departments/science/proposals/xenoarch-redux.html and creation of pathway to fully implementing this design doc, and more possibilities!

Stuff that PR is addressing:

  • interaction with artifact now is much more clear - new artifact UI tells exact story and much easier to understand. Also progression through artifact is clearly visible with neat 'unlocked nodes' indication.
  • new and very neat way to unlock nodes (will create much more different situations!)
  • new ways node activation works makes it easier to use artifacts in civil (or military) purposes
  • artifact graph generation now is parametrizable
  • some effect/trigger code also were moved to shared!

Stuff that PR is not implementing:

  • device to remove or add nodes
  • effect-modifying nodes (like 'activate with offset x', or 'activate 2 times')
  • new triggers and effects (:sadge:)
  • meaningful (non-random, value-based) way that graph generator can use for choosing effect of node
  • Artifact Glue
  • Resequencer
  • Arti-nUKer
  • foam / chemicals effects should have clear description of what they will produce (exact chemical)
  • guide book is not updated. shieeeee....
  • amount of research points is dependent on amount of durability node have in a reverse way (less durability - more points), which contradicts idea from design doc
  • most of 1-time only nodes still have more then 1 durability point (making artifact to have container, making it into a drill etc)

job done:

  • new artifact system (giant refactoring, moved huge chunks to shared, artifact graph API)
  • new artifact generation (quite parametrizable from yml + tests)
  • new artifact analyze console UI
  • migrate artifact triggers
  • migrate artifact effects
  • change artifaxium effect (currently removed, need to clean up and update in separate PR!)
  • clean up old systems / components / prototypes
  • update yml
  • new node scanner

Side effects:

  • Removed artifact crusher activating node (as there is no 'current' node). Maybe we are going to return it in some way shape or form later.
  • Some of effects were separated from one effect with random results to effect with certain result, more predictable stuff
  • Some effects disabled from being chosen on artifact generation to not mess up with new way to activate nodes
  • Artifact does not have 'activate node' action for now (as it is badly blending with new node activation system)
  • Mass destruction evens were removed until value-based graph generation will be introduced
  • All effects now can happen on any node depth (will be changed in next PR)
  • More 'obscure' effect descriptions had to be changed to more direct and easier to understand
  • New point extraction mechanics is... not quite easy to understand
  • Way that nodes are activated after unlocking is not really intuitive at first time

Why / Balance

Implementation of design doc to make archeology more involving, less random, introduce richer system for interactions with artifacts.

Technical details

  • Artifact nodes are entities now. Triggers and effects are bound to it and usually not to artifact itself, which may be confusing in some scenarious
  • XenoArtifactComponent contains references for nodes/segments using NetEntities. Due to this every request for node/edge info requires request to system, which wraps it into nice methods (AddNode, GetNodeIndex, GetNode, GetDirectPredecessorNodes, etc.) but inside it still have to iterate over EntityQuery sometimes to get required node component.
  • Point made above is getting much worse due to UI calling those node-related methods on each Draw! But it somehow holds <_<
  • BaseXATSystem (base type for XenoArtifactTrigger systems) is bound (kinda) to registration of Relay events in SharedXenoArtifactSystem.InitializeXAT - its not obvious, but it works.
  • ReactionEntityEvent was introduced by Emo to bypass most of chemistry stuff for checking artifact triggers.
  • BaseQueryUpdateXATSystem is derived from BaseXATSystem and is generally used for artifacts requiring usage of Update loop in regards of some kind of artifact state - collecting artifact dmg, covering it with gas etc.
  • Graph creation algorythm was made to never re-use different triggers in one artifact. This means that graph node count is limited to max number of different triggers we have. This could be improved by creating some different sub-types of triggers, but currently this problem is not touched.

Media

https://www.youtube.com/watch?v=e-i975ANjNA

Requirements

Breaking changes

All old Artifact-node related components, systems and yml were changed, moved or deleted. New stuff is not 1-to-1 compatible.

Changelog

🆑 EmoGarbage404, Fildrance

  • add: new ui for analysis console, new ui for node scanner. Artifact node activation is now different.
  • remove: artifacts cannot create massive distruction events, become guns or music instruments. Sentient artifacts cannot activate nodes.

Copy link
Contributor

github-actions bot commented Dec 21, 2024

RSI Diff Bot; head commit b1a0dcf merging into a83fd7b
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/Objects/Specific/Xenoarchaeology/xeno_artifacts.rsi

State Old New Status
artifact-activation Added

Edit: diff updated after b1a0dcf

@github-actions github-actions bot added the S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted label Jan 2, 2025
Copy link
Contributor

github-actions bot commented Jan 2, 2025

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

@github-actions github-actions bot removed the S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted label Jan 4, 2025
@Nettingman
Copy link

My only problem with this is that arti is already the best part of sci, and this will result in me being able to play it even less. :D
Just kidding, great job so far, I can't wait to see it merged!

@NoElkaTheGod
Copy link
Contributor

My only problem with this is that arti is already the best part of sci, and this will result in me being able to play it even less. :D Just kidding, great job so far, I can't wait to see it merged!

I disagree, right now anomalies are cooler (though they could have some improvements as well)

@github-actions github-actions bot added the S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted label Jan 12, 2025
Copy link
Contributor

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

@github-actions github-actions bot removed the S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted label Jan 12, 2025
@Fildrance
Copy link
Contributor Author

I still have no idea how to fix PVS bugs, :pepeHands:
But in the meanwhile i added some minor balance to effects (toyed with durability amount) and also going to do some major balance changes for whole new system to feel more interesting:

  1. Nodes that are unlocked and have no successors now won't listen to triggers. This will dramatically reduce complexity of node unlocking in scenarios when you unlocked 1 separated graph of nodes for artifact but you now need to also unlock the other one.
  2. Node unlocking now won't activate node effect - so you should not be afraid that explosion node will break your analyzer. This will bring down level of random casualties sci provide, and i'm sad about that too, but this is the only sane way to keep one-time activatable nodes balances (coz otherwise they will ALWAYS have 2, as we cannot make durabilit a 0 and removing durability from unlocking is unfair, as unlocking should lead scientist to a prize in a form of free to use node charge!)

@github-actions github-actions bot added the S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted label Jan 18, 2025
Copy link
Contributor

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

@Emisse
Copy link
Contributor

Emisse commented Jan 19, 2025

remove mapping change from pr

@github-actions github-actions bot removed the S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted label Jan 19, 2025
@Fildrance
Copy link
Contributor Author

remove mapping change from pr

PR contains components rename so i changed what was required for maps to load (according to tests). There was also reach tmp changes for playtest that i forgot to revert - now it is done and back to the square one, ty.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A: Core Tech Area: Underlying core tech for the game and the Github repository. A: Science Area: Science department, not including Silicons. Changes: Audio Changes: Might require knowledge of audio. Changes: Map Changes: Might require knowledge of mapping. Changes: Sprites Changes: Might require knowledge of spriting or visual design. Changes: UI Changes: Might require knowledge of UI design or code. D1: High Difficulty: Extensive codebase knowledge required. P1: High Priority: Higher priority than other items, but isn't an emergency. S: Needs Review Status: Requires additional reviews before being fully accepted size/L Denotes a PR that changes 1000-4999 lines. T: Balance Change Type: Balance changes through direct value changes, or changes to mechanics that affect it T: New Feature Type: New feature or content, or extending existing content T: Refactor Type: Refactor of notable amount of codebase T: UI / UX Improvement Type: UI and player facing interactive graphical interfaces
Projects
None yet
Development

Successfully merging this pull request may close these issues.