-
Notifications
You must be signed in to change notification settings - Fork 14
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
doc: add component and ui element docs #102
Conversation
Had some more discussion with @skaldarnar on module doc structure today, so I'll add some more changes before setting this back to "Ready for review".
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added a few smaller remarks and minor notes, but overall looks good and improves the documentation! 👍
Self-inflicted causes include, for instance, falling, drowning, or poison damage. | ||
Damage inflicted by a third party typically involves some form of hitting the affected entity. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure about this separation 🤔 I wouldn't have thought of "poison damage" as self-inflicted, for example.
Why do we think this distinction is important?
Ideally, the instigator (I guess this is what this is technically about) could carry information about the body of water the player drowned in, the exact poison or disease they are infected with, etc. The instigator might not be another player or NPC, but it could be any entity in the game.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I do vaguely recall this from the past - poison is "internal" damage in a sense, unlike third party direct damage. Probably "self-inflicted" is a poor term for that. It would be nice if an internal damage effect had an original trigger source that could be referenced as well.
Player X died from poisoning, after getting too close to a Thornwood Cactus!
That might be a bit of a lofty goal for this point in time tho :-)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do we think this distinction is important?
This distinction is important because the directional damage indicator depends on having a direction to indicate. If we as the player are drowning in water, suffocating due to gas, or dying to poison in our system, there is no specific direction for the damage indicator to indicate as the "instigator" is in ourselves (poison) or all around us (water/gas).
We can also make the distinction between an instigator in or all around us vs an instigator at a specific location, however I have even less of a clue how to name that then...
Probably "self-inflicted" is a poor term for that.
Yeah, naming things is not exactly a strength of mine... I'm happy about any suggestions!
It would be nice if an internal damage effect had an original trigger source that could be referenced as well.
In terms of the directional damage indicator, I'm not sure how it would help the player to know that the cactus they originally got poisoned by, for instance is somewhere to their right...
For the player the interesting point is "why / where from do I lose health right now?" The directional damage indicator shows them, where their attacker can be found, for instance an archer. It's important for the player to understand whether there's an attacker they might be able to defend themselves against or whether the damage is caused by an "environmental" (again maybe not the right term) effect like water, gas, poison, ...
docs/damage.md
Outdated
The `DamageSystem` handles damage dealt to entities with health. | ||
The `BlockDamageAuthoritySystem` enables blocks to sustain some damage before getting destroyed. | ||
The `DamageEffectAuthoritySystem` produces block particle effect in the event of damage. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will be rendered as single paragraph. Should we use bullet points here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
Send a `DoDamageEvent` to a specific entity to deal damage to it. | ||
|
||
Use the `DamageResistComponent` to configure an entity to not take damage from specific damage types. | ||
Examples for damage types are drowning (`engine:drowningDamage`) or explosive (`engine:explosiveDamage`) damage. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Future: explain how to add more damage types?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have a vague recollection that we have a module that adds a new damage type. But I have no idea what that is 🤔
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Created #103 to track this. Not sure we want the main docs for that in the Health
module, though... I guess it makes more sense putting it in the engine wiki and linking to it from docs of relevant modules including Health
.
docs/damage.md
Outdated
Event chain: | ||
* `DoDamageEvent` | ||
* `BeforeDamageEvent` | ||
* Entity damaged, health component saved |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What do you think of using italic font to indicate that this is an abstract explanation of what is happening?
* Entity damaged, health component saved | |
* _Entity damaged, health component saved_ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
* `OnDamagedEvent` | ||
|
||
Commands: | ||
* `damageResist(damagetype,percentage)`: gives resistance to damage (damagetype = all for total resistance). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Future: Would be nice to have a command to list possible damage types.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great idea, I can write an issue for that. However, I'm wondering whether that should be a command introduced by Health
... Damage types are an engine-level concept after all...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like to challenge that damage types are part of the engine if the engine itself does not have a notion of, well, health....
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fair point
To activate regeneration send `ActivateRegenEvent(String id, float value, float endTime)` for a specific entity. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Future: Link to JavaDoc when referencing events or methods.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Co-authored-by: Tobias Nett <[email protected]>
Co-authored-by: Tobias Nett <[email protected]>
Player Docs - UI elements and game mechanics
Modder Docs - concepts & public API
Developer Docs - architecture & API