XML:BINA/ONIE: Difference between revisions
m (correcting prev/next types in nav header) |
Paradox-01 (talk | contribs) mNo edit summary |
||
(One intermediate revision by one other user not shown) | |||
Line 171: | Line 171: | ||
| <Particle> | | <Particle> | ||
| - | | - | ||
| There can be multiple particle tags. They close with "</Particle>". Watch out for [[# | | There can be multiple particle tags. They close with "</Particle>". Watch out for [[#Particle structures|different structures]] when setting the <Location> value. | ||
|- | |- | ||
| <Name> | | <Name> | ||
Line 240: | Line 240: | ||
==Visual guides: weapon, melee, environment== | ==Visual guides: weapon, melee, environment== | ||
* Red = start node | |||
* Blue = end node | |||
* These visual guides don't claim be hundred percent right on a technical level. I can't look into the engine. But they should give a good hint which files are worth caring about and how to debug a mistake: going through all important files, e.g. ''Could it be that my new texture is not registered in TMBD?'' | |||
:However, if you think you should add information, or shape this in a more accurate way, then do it. =) | :However, if you think you should add information, or shape this in a more accurate way, then do it. =) | ||
Line 506: | Line 507: | ||
Changes: | Changes: | ||
* Particle becomes attached now after spawning, should be more precise than being attracted. | * Particle becomes attached now after spawning, should be more precise than being attracted. | ||
* Added [[AE:New_weapons# | * Added [[AE:New_weapons#w15_smg|w15_smg]] into ONIE. | ||
* Material Flesh and Cloth uses same damage dealing particle, "unprotected". | * Material Flesh and Cloth uses same damage dealing particle, "unprotected". | ||
Line 676: | Line 677: | ||
:Also they could explode if you hit their energy cell (low probability). | :Also they could explode if you hit their energy cell (low probability). | ||
:This is quite similar to the "material-dependent damage" a.k.a. head shot mod. | :This is quite similar to the "material-dependent damage" a.k.a. head shot mod. | ||
::I suggest we add two [[XML:Mtrl# | ::I suggest we add two [[XML:Mtrl#Vanilla_material_tree|materials to the character section]]: Electric and Electric_Danger. (* Kind of an unspecific name so it can be used for droids, mechs, or even SLD.) | ||
::After that we modify the materials of the ONCCs(*) in question, adding there (CBPM) the new materials. | ::After that we modify the materials of the ONCCs(*) in question, adding there (CBPM) the new materials. | ||
::Then we go to the ONIE and add our desired effect to <nowiki><Impact Name="wN_name"><Material Name="NewMaterial"></nowiki>. | ::Then we go to the ONIE and add our desired effect to <nowiki><Impact Name="wN_name"><Material Name="NewMaterial"></nowiki>. |
Latest revision as of 18:06, 9 October 2023
ONIE : Oni Impact Effects | ||
---|---|---|
XML
AKEV << Other file types >> CONS OBJC/CHAR << Other BINA >> PAR3 |
General information
- The XML code on this page is compatible with OniSplit v0.9.61.0.
- BINAEINOimpact_effects.oni is stored globally (in AE/AEInstaller/vanilla/level0_Final.dat).
File structure
<?xml version="1.0" encoding="utf-8"?> <Oni> <ImpactEffects> [...] </ImpactEffects> </Oni>
[...] = <Impact Name="..." /> and its content, closed by </Impact>
impact name | +-- material name n (multiple (n) materials possible) | +-- impact effect n (multiple (n) effects possible, effects can be double if components / modifiers are different) | +-- component +-- modifier +-- sound +-- particles | +-- particle n (multiple (n) particle possible)
List of tags, types, and flags
XML tag | Content type | Description |
<Impact Name="Imptname"> | char[128] | Closes with "</Impact>".
Impact owner (Impact Name="...") checks on impact target (Material="..."). While new materials and impacts can be added, the use of conditions is hardcoded. So you can only build on existing resources (used or extend unused) and ONIA. While ONIA requires TRAM particle links, the other H2H impacts do not. Impacts: conditions (needs double-checking)
|
<Material Name="Mtrlname"> | char[128] | Closes with "</Material>". Can hold multiple <ImpactEffect>s if the component and/or the modifier is different. |
<ImpactEffect> | - | Closes with "</ImpactEffect>". |
<Component> | flag |
It seems it doesn't matter what component name you pick. Maybe it's just for organizing. E.g. the Projectile component can also be used in a Kick_Hit impact. Traditionally Damages is used when traces such as ghost sounds and decals are left behind. A ghost sound comes always with modifier "Any" and has either no link (<Name />). It remains to be tested if AI actually use (hear) them. If so ghost sounds are probably simply meant to attract AI by rising their alarm level. |
<Modifier> | flag |
Impact inherits modifier value from ONCC <ImpactModifierName>. |
<Sound> | - | If no data is present only "<Sound />" is used. Otherwise "<Sound>" gets closed with "</Sound>" |
<Name> | char[32] | OSBDfile.imp.oni (don't use file prefix/suffix) |
<AICanHear> | flag |
|
<AISoundType> | flag |
|
<AISoundRadius> | float | Radius of sound sphere that allows AI to hear the sound |
<Particles> | - | When there are no Particles, you will simply see the tag "<Particles />". |
<Particle> | - | There can be multiple particle tags. They close with "</Particle>". Watch out for different structures when setting the <Location> value. |
<Name> | char[32] | BINA3RAPfile.oni (don't use file prefix/suffix) |
<Orientation> | flag |
|
<Location> | flag |
|
<Offset> | float | ? |
<Decal1> | float | ? |
<Decal2> | float | ? |
Particle structures
particle location 0
<Particle> <Name>...</Name> <Orientation>...</Orientation> <Location>0</Location> </Particle>
particle location 1
<Particle> <Name>...</Name> <Orientation>...</Orientation> <Location>1</Location> <Offset>...</Offset> </Particle>
particle location 4
<Particle> <Name>...</Name> <Orientation>0</Orientation> <Location>4</Location> <Decal1>false</Decal1> <Decal2>true</Decal2> </Particle>
particle location 5
<Particle> <Name>...</Name> <Orientation>...</Orientation> <Location>5</Location> </Particle>
Visual guides: weapon, melee, environment
- Red = start node
- Blue = end node
- These visual guides don't claim be hundred percent right on a technical level. I can't look into the engine. But they should give a good hint which files are worth caring about and how to debug a mistake: going through all important files, e.g. Could it be that my new texture is not registered in TMBD?
- However, if you think you should add information, or shape this in a more accurate way, then do it. =)
Overview of involved files when modding ONIE in relation to weapons | |||
If weapon shall have impact effect on environment | If weapon shall have impact effect on characters | ||
|
|
Overview of involved files when modding ONIE in relation to animations | |||
Special attack | Normal attack | ||
ONCC(ONIA) holds special attack modifier information (Any/Light/Medium/Heavy) for ONIE. |
Main difference is that ONIA is not used here but CBPI. Hurt sounds: Every ONCC provides one death sound, and three hurt sounds which are played occasionally when melee damage is dealt for this much damage:
|
Overview of involved files when modding ONIE in relation to characters | ||
If character hits ground | Something left? | |
For example, this is used when running around. Every step will trigger a step sound based on the ground's material: dirt, snow, metal, etc. |
ONCC holds impact modifier information (Any/Light/Medium/Heavy) for ONIE.
|
Examples
Particle - Environment
Particle - Character
Extra damage for head hits
w1_tap and w2_sap deals additional damage, amount depends on material "head"/"helmet". Feel free to extend/tweak/criticize.
Damage overview:
w1_tap
- helmet: 4-5 damage; 0.6-1.7 knockback
- head: 8-10 damage; 1.7-2.8 knockback
w2_sap
- helmet: 2-3 damage; 0.3-0.8 knockback
- head: 4-5 damage; 0.8-1.4 knockback
Basic modifications/new files:
MtrlHelmet.xml <?xml version="1.0" encoding="utf-8"?> <Oni Version="0.9.37.0"> <Instance id="0" type="Mtrl"> <ParentMaterial>MtrlArmor</ParentMaterial> </Instance> </Oni> ------------------------------------------------------------------------ MtrlHead.xml <?xml version="1.0" encoding="utf-8"?> <Oni Version="0.9.37.0"> <Instance id="0" type="Mtrl"> <ParentMaterial>MtrlFlesh</ParentMaterial> </Instance> </Oni> ------------------------------------------------------------------------ ONCCelite_hard_1.xml (Helmet is registered in eleventh link) [...] <Instance id="3" type="CBPM"> <Materials> [...] <Link>MtrlHelmet</Link> [...] [...] ------------------------------------------------------------------------ BINA3RAPhitheadW2_e01.xml [...] <Events> <HitCharacter> <DamageChar> <Damage> <Random Min="4" Max="5" /> </Damage> <StunDamage>0</StunDamage> <KnockBack> <Random Min="0.8" Max="1.4" /> </KnockBack> <DamageType>0</DamageType> <SelfImmune>1</SelfImmune> </DamageChar> <Die /> </HitCharacter> <Create> <FindAttractor> <DelayTime>0.1</DelayTime> </FindAttractor> <AttractHoming> <TurnSpeed>400</TurnSpeed> <PredictPosition>10</PredictPosition> <HorizontalOnly>0</HorizontalOnly> </AttractHoming> </Create> </Events> [...] ------------------------------------------------------------------------ BINA3RAPhithead_e01.xml, BINA3RAPhithelmet_e01.xml, BINA3RAPhithelmetW2_e01.xml similar to above ------------------------------------------------------------------------ BINAEINOimpact_effects.xml <?xml version="1.0" encoding="utf-8"?> <Oni Version="0.9.37.0"> <ImpactEffects> [...] <Impact Name="w1_tap"> [...] <Material Name="Helmet"> <ImpactEffect> <Component>Impact</Component> <Modifier>Any</Modifier> <Sound> <Name>ap_hit_hard</Name> <AICanHear>false</AICanHear> <AISoundType>0</AISoundType> <AISoundRadius>0</AISoundRadius> </Sound> <Particles> <Particle> <Name>hithelmet_e01</Name> <Orientation>0</Orientation> <Location>0</Location> </Particle> </Particles> </ImpactEffect> </Material> <Material Name="Head"> <ImpactEffect> <Component>Impact</Component> <Modifier>Any</Modifier> <Sound> <Name>ap_hit_body</Name> <AICanHear>false</AICanHear> <AISoundType>0</AISoundType> <AISoundRadius>0</AISoundRadius> </Sound> <Particles> <Particle> <Name>hithead_e01</Name> <Orientation>0</Orientation> <Location>0</Location> </Particle> </Particles> </ImpactEffect> </Material> [...]
Known bugs:
- VDG refused to work properly so I modified it to keep the original effect at least.
- Screaming Cells do too much damage in a short time.
Changes:
- Particle becomes attached now after spawning, should be more precise than being attracted.
- Added w15_smg into ONIE.
- Material Flesh and Cloth uses same damage dealing particle, "unprotected".
material damage stun knockback (notes) w1_tap x 8-10 0 0.6-1.7 head +4 +0.2 +0.8 unprotected +2 +0 +0.2 helmet +3 +0.1 +0.4 w2_sap x 3-4 1 0.65-0.75 head +2 +0.3 +0.4 unprotected +1 +0.1 +0.1 helmet +1-2 +0.2 +0.25 w3_phr x M10 S1 10 3-5 head +4 +4 +3 unprotected +2 +2 +1 helmet +2 +1 +2 w4_psm x [4->1] 60-120 M2 S3 (less base damage now) head +1 +6 +0.7 (because there are more impact-triggering particle) unprotected +0-1 +5 +0.3 (wall reflected beam deals no base damage, only the additional, so yes, the beam gets weaker) helmet +0-1 +1 +0.1 w5_sbg x 30-32 30 25 ("perfect shot" already dealt over 200 points) head +5 +4 +1 (therefore let's keep additional damage low here) unprotected +3 +2 +1 helmet +4 +3 +0.8 w6_vdg - w7_scc x M7 S2 0 5-8 head +3 +0 +0.5 unprotected +1-2 +0 +0.3 helmet +1 +0 +0.4 w8_mbo x 60-80 40-60 30-40 head +15 +4 +3 unprotected +10 +2 +2 helmet +5 +3 +2-3 w9_scr - w10_sni x 40-60 10 10 head +4 +1 +0.6 unprotected +3 +0-1 +0.5 helmet +2 +0 +0.1 w11_ba1 x 12-30 20 20 head +3 +2 +1.2 unprotected +2 +1 +1 helmet +1 +0 +0.2 w12_ba2 x 2-8 10 0.5 head +3 +2 +0.15 unprotected +2 +1 +0.1 helmet +1 +0 +0.05 w13_muro - w14_muro - w15_smg x 7-9 1 0.65-0.75 head +4 +0.3 +0.4 unprotected +2 +0.2 +0.25 helmet +3 +0.1 +0.1
M=Mean S=StdDev (bell curve values)
I haven't gotten to try these files out yet (hopefully soon), but I like the idea. I just want to give my opinions on a couple things on a conceptual level:
- a couple weapons don't make sense with this system; the Screaming Cell doesn't strike your body at all, it absorbs life energy, so this idea is not applicable to this weapon; but I guess you've already dropped it from this system, so that's good
- secondly, the VDG also doesn't strike a point on the body to make its effect, it shocks the entire body. So I don't think the body part being "hit" is actually relevant for that weapon's stun effect, particularly since you can't really "aim" branching electricity at someone; also, the damage of 1HP is just a token value and should probably stay that way
- the Mercury Bow is an odd weapon; it fires a sliver at you which somehow is supposed to do great injury even though a bullet would probably do a lot more damage to someone's body in real life (supposed "mercury poisoning" effect of the sliver aside). What do you think about making the Bow do a good bit less damage to the body, and a lot more damage to the head? Since it's such a precise weapon, it seems more in line with the nature of the Bow to require accurate shots to do real damage (and I believe we might still be considering adding the sniper scope script to the AE, so long-range shots could also be accurate).
Anyway, thanks for the work, this looks cool! --Iritscen 17:27, 18 May 2009 (UTC)
- Yep
- Yep
- Disagree: the AI doesn't really do headshots.
- Gumby 17:30, 18 May 2009 (UTC)
- I guess you're right, I forgot to think about the AI that wouldn't know to aim for the head. --Iritscen 17:57, 18 May 2009 (UTC)
- AI can be learnt to score "headshots", however, that requires all characters to have similar height. In ONWC, some values around 0x100 - 0x120 in primary firing component if I recall correctly are used to tell AI where to aim according to its target's root (pelvis) when shooting with primary fire. It is set zero or low, so AI tends to shoot into stomach. Set Y component a bit higher to achieve chest/headshots. But then be prepared for consequences - if character is minimized (lenght from root to head is smaller), AI will be happily missing character. Good luck with it, if you want to try it. P.S.: delete this immediately if you don't like it. I don't want to waste space.--Loser 18:11, 18 May 2009 (UTC)
- Delete what? Regardless, a bit simpler solution is to set the ballistic trajectory values in the ONWC. It doesn't work quite as well, but is good enough for a slight elevation change, IIRC. Gumby 07:11, 19 May 2009 (UTC)
- AI can be learnt to score "headshots", however, that requires all characters to have similar height. In ONWC, some values around 0x100 - 0x120 in primary firing component if I recall correctly are used to tell AI where to aim according to its target's root (pelvis) when shooting with primary fire. It is set zero or low, so AI tends to shoot into stomach. Set Y component a bit higher to achieve chest/headshots. But then be prepared for consequences - if character is minimized (lenght from root to head is smaller), AI will be happily missing character. Good luck with it, if you want to try it. P.S.: delete this immediately if you don't like it. I don't want to waste space.--Loser 18:11, 18 May 2009 (UTC)
- Agreed to point one and two, and even point three. But I don't feel like picking it up. Rudely said: I've already to much else to do like you all too. So, I had say let's keep it in "mod idea" section for later days. :) Paradox-01 20:32, 18 May 2009 (UTC)
Changes:
- modified w12 again (fixed damage type) and w15 particle (exchanged stun and knockdown values from unprotected and helmet)
- rejected w6_vdg modification (debug almost completed; "<ImpactEffect>" from w8_mbo was interfering)
Character - Character (normal attack)
Character - Character (special attack)
Character - Environment
Mod conflicts
Oni allows only one ONIE file to be installed. In that file a lot of links come together and can easily create conflicts (crashes or just missing visuals) if various packages holds a version of that file.
Example 1: GreyFury2.0 doesn't work 100% well with exploding barrels
folder sub folder 23590GreyFury2.0 BINAEINOimpact_effects level0_Final level0_Final ImptGrn_Super_Kick level0_Final level0_Final 34000ExplodingBarrel BINAEINOimpact_effects level0_Final level0_Particles BINADBMTTextureMaterials level0_Final level0_Particles MtrlExplosive level0_Final level0_Final
Problem: Barrels do explode but Grey Fury's special hit flashes doesn't appear (instead health flashes are visible).
Reason: BINAEINOimpact_effects file from package with highest number gets integrated into level0_Final.
Example 2: Exploding barrels don't work
folder sub folder 23590GreyFury2.0 BINAEINOimpact_effects level0_Final level0_Final ImptGrn_Super_Kick level0_Final level0_Final 34000ExplodingBarrel BINAEINOimpact_effects level0_Final level0_Particles BINADBMTTextureMaterials level0_Final level0_Particles MtrlExplosive level0_Final level0_Final 80280OldChina BINAEINOimpact_effects level0_Final level0_Final ImptOra_Super_Kick level0_Final level0_Final
Problem: Barrels break into glass pieces when hit from bullets but they don't explode.
Reason:
- OldChina's BINAEINOimpact_effects gets into level0_Final because that package has the highest number. It supports Hanako/Hayate's Ora impact but also Bgi_NinjaBot/Grey Fury's Grn.
- The Impt files, Mtrl and BINADBMT are shipped normally to level0_Final because they aren't duplicates. As a consequence, Grey Fury fully works while exploding barrels do not.
Mod ideas
- How about melee attacks dealing more damage on head/helmet?
- Could be more easily\accurately done with an attached particle on the hit_head animations. Gumby 03:54, 10 May 2009 (UTC)
- For example, Ninja's PPK looks like it doesn't care whether it hit the head or an arm. It just has <HitAnimationType>HitHead</HitAnimationType> and this is played on target as long as PPK wasn't blocked, right? :/ Paradox-01 13:41, 10 May 2009 (UTC)
- D'oh. Yeah, forgot. Lazy\overworked Oni devs. >_< Hmm. Well we could almost implement locational attacks, except for a few problems. The most major one being the blue shield effect. ;) Gumby 00:54, 11 May 2009 (UTC)
- For example, Ninja's PPK looks like it doesn't care whether it hit the head or an arm. It just has <HitAnimationType>HitHead</HitAnimationType> and this is played on target as long as PPK wasn't blocked, right? :/ Paradox-01 13:41, 10 May 2009 (UTC)
- Footprints in snow. Should be possible through character-environment collision plus decals or particle which becomes fixed to the ground.
- Not quite. What would need to be done is have a particle attached to the character by spawning them and doing a single frame (basically 0, if interpolated, i think) animation to activate some attached particles that spawn decals. :)
- I think I know what you mean. The decal is every time dropped in first TRAM frame. An alternative might be to set CollideWithWalls=true in attached particle and use HitWall event to drop the decal. Paradox-01 13:41, 10 May 2009 (UTC)
- No, the decal emitter is attached in the frame of a special animation that spawns it. The alternative version is the easiest way to go, and won't get buggered by other things.Gumby 00:54, 11 May 2009 (UTC)
- I think I know what you mean. The decal is every time dropped in first TRAM frame. An alternative might be to set CollideWithWalls=true in attached particle and use HitWall event to drop the decal. Paradox-01 13:41, 10 May 2009 (UTC)
- We could also have this activate cold breath effects. :) The former would only be good if we had an actual snow level (or dirt :P), but the latter would be good for Compound. Gumby 03:54, 10 May 2009 (UTC)
- Yeah, that would be fun. ^^ Paradox-01 13:41, 10 May 2009 (UTC)
- Guns doing more damage to flesh\cloth than armour\metal.
- I had the same thought as you a while ago, when we first had ONIE modding unlocked for us. However, I think a better application might be for guns to deal less damage to armour than to flesh. In fact, all the neccessary materials are already in place, there are seperate effects for bullet hits already. :) Gumby 03:54, 10 May 2009 (UTC)
- Okay, I will add damage dealing particle for flesh/cloth material around next week. Paradox-01 13:41, 10 May 2009 (UTC)
- Coolio. Make sure to upload your files somewhere, or catch me on Yahoo. I'll include it as a package in the next AE. (Not that I don't know how to do it myself, but the installer is taking up all my Oni time atm...) Gumby 00:54, 11 May 2009 (UTC)
- Okay, I will add damage dealing particle for flesh/cloth material around next week. Paradox-01 13:41, 10 May 2009 (UTC)
- Changes to the "blood mod": Droids shouldn't bleed but show electric discharges
- Also they could explode if you hit their energy cell (low probability).
- This is quite similar to the "material-dependent damage" a.k.a. head shot mod.
- I suggest we add two materials to the character section: Electric and Electric_Danger. (* Kind of an unspecific name so it can be used for droids, mechs, or even SLD.)
- After that we modify the materials of the ONCCs(*) in question, adding there (CBPM) the new materials.
- Then we go to the ONIE and add our desired effect to <Impact Name="wN_name"><Material Name="NewMaterial">.
- For melee attacks we probably need to modify <Impact Name="Punch"> and the almost empty looking <Impact Name="Kick">. Insert here material "Electric" and "Electric_Danger".
- Particles: we can probably clone some ninja special attack particles, scaling them down. For "Electric_Danger" it might be fun to spawn a huge explosion by a chance of 0.1% to 1% ? --paradox-01 (talk) 21:24, 5 June 2018 (CEST)
- Testing ...
- The blood mod bypasses ONIE by overwriting existing particles. But in order to distinguished between materials we need ONIE.
- It can be argued that blood shouldn't be dropped when armor is hit but damage isn't reduced so one might just go with the "drops" here to emphases that full damage was dealt.
- For showing robot specific damage we need at least one new material. For now we might expand on the impact Punch_Hit, Kick_Hit and Head_Hit, introducing material Electric and Electric_Danger.
- After finishing the SP bot FX code we should see how to exactly incorporate the blood mod.
- In theory weapon impacts will can be dealt with the parent impacts Bullet, Energy and Grenade avoiding the need to write code for each weapon and making that 99% future-proof.
- To make this actually work weapons wouldn't be allowed to use parent materials Character and Default so Impact Bullet can be looked up when there was nothing found in Impact wN_name.
- Also there's an open question is how to apply the new particles when a Tanker does a head nut on the bot. Self_Damage didn't work.
- How to track it down? With knockdown tests we would not know if we removed the impact with top priority or a fallback (parent impact). But with marker tests (adding additional particle) we will know whether we got the top priority or a parent impact: the top priority impact would show the particle, the parent would not.
- Surprise, it turns out that throws don't make impacts at all, ONIE is totally unrelated at them. You can test this with making an almost empty ONIE, just use impact Default, material Character and a particle. Any H2H will trigger now this impact but not the throws. --paradox-01 (talk) 21:25, 10 June 2018 (CEST)