Jump to content

Recommended Posts

Hi there

 

I have a few questions, most are just minor but the first one is my real issue atm

 

 

1. I made other unit from the beam cannon xml, that unit need to use the same beam weapon and the obelisk charged defense ability, however no matter wth I tried the attack animations for some reason stop when you unselect it, same with the ability, I start to suspect it the Beam cannon's weapon since it attached to the ability

 

 

Another weird bug is that the HC sometimes turn off for a sec and then come back but it happens rarely (in WB when it happen you can't turn it on again till you restart it o_o... at least it confirmed I didn't imagine stuff)

 

Here my last xml (I can assure you you will find mistakes there as I was desperate and done many tests, I removed most of them but some still present)

MarkedOfKaneReaper.xml

 

Also, if you feels like jumping toward cold water in the middle of the winter, here other tests I tried, they were extracted with the buggy ver of WED so you need to view them with IE

MarkedOfKaneReaper (2).xml

MarkedOfKaneReaper (3).xml

MarkedOfKaneReaper.xml

 

That unit honestly start to annoy me >.> any other walker, inf I made, imported so far didn't gave me animations issues for a while

 

 

 

2. In the cinematic Orca EALA left in the TW's WB there seem to be leftover code from Generals, I want to try and uses it for the beta orca and may even the Hammerhead, however I need small explanation about what do what

 

The code is Heli slowdeath thingy that let your plane to spin around while it dies, It look horrible atm and I want to try and make it look better rather then just remove it, but I don't sure what each line does (sure it easy to understand from their names but when It come to the spin field I a bit confused)

 

<HelicopterSlowDeath id="ModuleTag_HelicopterSlowDeath"

FxHitGround="FX_GDIAirVehicleExplode"

SpiralOrbitForwardSpeed="0.5"

SelfSpinUpdateAmount="0.1"

SelfSpinUpdateDelay="100ms"

DestructionDelay="10.0s"

MaxSelfSpin="0.5">

<DieMuxData DeathTypes="ALL"/>

</HelicopterSlowDeath>

 

 

 

3. Another Code relate issue

The Eradicator seem to have serious crush issues,

looking at it's code I found this:

 

<CrusherInfo
CrushKnockback="0"
CrushZFactor="1"
MinCrushVelocityPercent="1%"
CrushDecelerationPercent="40%" <----------------
CrushWeapon=""
CrushRevengeWeapon=""
CrusherLevel="4"
CrushableLevel="4"
MountedCrusherLevel="255"
MountedCrushableLevel="255"
CrushEqualLevelProps="False"
UseCrushAttack="True"
CrushOnlyWhileCharging="False"
CrushAllies="False" />

 

I can understand what that line does from the name but is there any other hidden stuff it do/effect?

 

I removed it from all epic units and they crush alright now, all except the dam Eradicator, what I need to do in order to make it crush all the time? to change CrushDecelerationPercent to 0? xD

Edited by Egozi44

Share this post


Link to post

When it uses the beam special powers it probably uses the USING_SPECIAL_ABILITY (or maybe the special weapon) modelconditionstates. Since you didn't define what animation it should play in that conditions it probably defaults to the DEFAULT condition and idle animations.

 

 

Also, if you feels like jumping toward cold water in the middle of the winter, here other tests I tried, they were extracted with the buggy ver of WED so you need to view them with IE

No, just No! Everytime i try to read those i feel like buying a kitten named Egozi and drowning it in a river. And i normally love kittens!

 

The helicopter slow death does still work, not just as easy, It requires alot of fine tuning together with the locomotor used by the aircraft. I played abit with it a while ago and it looked crap even with a few hours of tuning.

This involves a lot of min maxing with the settings. There is no easy solution there. I would also advice looking at the original gen/zh coding for it side by side when tuning it.

Share this post


Link to post

No, just No! Everytime i try to read those i feel like buying a kitten named Egozi and drowning it in a river. And i normally love kittens!

That made my day xD

 

Umm USING_SPECIAL_ABILITY may do the trick, can I simply put it all in one modelconditionstates with ATTCKING, USING WEAPON_A, etc or it won't work?

 

I see, may drop the helicopter slow death thingy then, don't have G/ZH on my pc and never mod them so I dk where to look (guess I need to extract the inis from the big file... )

 

Share this post


Link to post
Behavior = HelicopterSlowDeathBehavior ModuleTag_08
    DestructionDelay                = 99999999        ; the destruction delay
    SpiralOrbitTurnRate             = 140.0           ; in degrees per second, bigger # = tighter spiral
    SpiralOrbitForwardSpeed         = 350.0           ; bigger # = larger spiral
    SpiralOrbitForwardSpeedDamping  = .9999           ; smaller #'s = slow down faster
    MaxBraking                      = 190   ; max braking we can use during death spiral (lower num = wilder spiral)    
    SoundDeathLoop                  = ComancheDamagedLoop
    MinSelfSpin                     = 100                     ; in degrees per second
    MaxSelfSpin                     = 300                     ; in degrees per second
    SelfSpinUpdateDelay             = 100             ; in milliseconds
    SelfSpinUpdateAmount            = 10             ; in degrees   
    FallHowFast                     = 12.0%  ; fraction of gravity, lower = take longer to fall
    MinBladeFlyOffDelay             = 1500            ; in milliseconds
    MaxBladeFlyOffDelay             = 1500            ; in milliseconds
    AttachParticle                  = SootySmokeTrail
    AttachParticleBone              = Propeller02
    BladeObjectName                 = ComancheBlades
    BladeBoneName                   = Propeller01    
    ; Most things that eject pilots do so immediately upon death,
    ; via use of EjectPilotDie, but Helicopters are a special case...
    ; they need to do so after their blades are ejected.
    OCLEjectPilot                   = OCL_EjectPilotViaParachute
    FXBlade                         = FX_HelicopterBladeExplosion
    OCLBlade                        = OCL_HelicopterBladeExplosion
    FXHitGround                     = FX_HelicopterHitGround
    OCLHitGround                    = OCL_HelicopterHitGround
    FXFinalBlowUp                   = FX_GroundedHelicopterBlowUp
    OCLFinalBlowUp                  = OCL_GroundedHelicopterBlowUp
    DelayFromGroundToFinalDeath     = 1500
    FinalRubbleObject               = ComancheRubbleHull
  End
 

You could try the beamcannon way and use the packing/unpacking logic(triggered by the beam special weapon modules)

 

 

     <ModelConditionState
                    ParseCondStateType="PARSE_NORMAL"
                    ConditionsYes="UNPACKING">
                    <Model
                        Name="NUBeam_SKN" />
                    <ParticleSysBone
                        BoneName="FX_Weapon"
                        FXParticleSystemTemplate="BeamPreFireFlash"
                        FollowBone="true" />
                    <ParticleSysBone
                        BoneName="FX_Weapon"
                        FXParticleSystemTemplate="BeamPreFireDist"
                        FollowBone="true" />
                </ModelConditionState>
                <ModelConditionState
                    ParseCondStateType="PARSE_NORMAL"
                    ConditionsYes="PREPARING">
                    <Model
                        Name="NUBeam_SKN" />
                    <ParticleSysBone
                        BoneName="FX_Weapon"
                        FXParticleSystemTemplate="BeamConstantFire"
                        FollowBone="true" />
                    <ParticleSysBone
                        BoneName="FX_Weapon"
                        FXParticleSystemTemplate="BeamConstantFire02"
                        FollowBone="true" />
                </ModelConditionState>
 

or use a conditionstate like:

 

 

<ModelConditionState
                    ParseCondStateType="PARSE_NORMAL"
                    ConditionsYes="USING_SPECIAL_ABILITY">
                    <Model
                        Name="NUBeam_SKN" />
</ModelConditionState>
 

Share this post


Link to post

But the beam don't have animations, using the ModelConditionState alone will work? o_o I need to add animations in the animationstate

(unless you meant I should just take the conditions to the animationstate)

 

 

P.S thanks for the heli info ;)

Edited by Egozi44

Share this post


Link to post

Umm a bit unrelated, I need help in something that relate to max, I tried to remove the Reaper obelisk object while leaving the hand's sub object and succeed, however upon saving it max keep give me this error

 

ERROR! Could not run Shader Asset Builder - EXE missing or shader not in "Run/Shader" directory? (Looking for C:\ShaderAssetBuilder.exe)

 

 

What I need to do to fix it? o_o

 

 

5.PNG

Edited by Egozi44

Share this post


Link to post

Disregard that error. It happens always, you just didn't notice.

Share this post


Link to post

Yea but it don't let me save the file :/

it freeze max,

 

When I opened the file it saved I saw it didn't have any code lines in it

Edited by Egozi44

Share this post


Link to post

Do really mean saving? Becasue if you save the max file, there should no problem. The message you mentioned appears during export and is usually unimportant.

And if max freezes during export, its usually because you didnt fill all texture slots in the shader - every texture slot needs to have a texture assigned, even if it is never used ingame or blank.

Edited by Stygs

Share this post


Link to post

I meant to the w3x exporting ofc :P

 

I didn't filled the HC textures because I have nothing to fill it with (the model don't need it)

 

is this causing the issue?

 

If you have time, do you mind to be bothered in Skype for a few minutes and help me out with it? xD

Edited by Egozi44

Share this post


Link to post

I didn't filled the HC textures because I have nothing to fill it with (the model don't need it)

Most shaders need to have all texture slots filled. If you dont need a housecolor then use one of the shaders without a HC texture. Worse case just create a copy of the defuse texture, and apply a full black layer(i guess the correct term is vector mask, basically a hide/reveal mask) mask to it. And use that as a HC texture.

Edited by Ravendark

Share this post


Link to post

Umm, I can also remove it later on the note correct?, as someone who new to max I dk if it will effect the model

 

 

 

Edit, well it work but....

 

 

 

 

 

CvR6Lti.png

 

 

That not what I intended to do '-.-

 

Why max /w3x impoter love to ruin stuff after I save them (屮゚Д゚)屮

 

 


Edited by Egozi44

Share this post


Link to post

 

Behavior = HelicopterSlowDeathBehavior ModuleTag_08
    DestructionDelay                = 99999999        ; the destruction delay
    SpiralOrbitTurnRate             = 140.0           ; in degrees per second, bigger # = tighter spiral
    SpiralOrbitForwardSpeed         = 350.0           ; bigger # = larger spiral
    SpiralOrbitForwardSpeedDamping  = .9999           ; smaller #'s = slow down faster
    MaxBraking                      = 190   ; max braking we can use during death spiral (lower num = wilder spiral)    
    SoundDeathLoop                  = ComancheDamagedLoop
    MinSelfSpin                     = 100                     ; in degrees per second
    MaxSelfSpin                     = 300                     ; in degrees per second
    SelfSpinUpdateDelay             = 100             ; in milliseconds
    SelfSpinUpdateAmount            = 10             ; in degrees   
    FallHowFast                     = 12.0%  ; fraction of gravity, lower = take longer to fall
    MinBladeFlyOffDelay             = 1500            ; in milliseconds
    MaxBladeFlyOffDelay             = 1500            ; in milliseconds
    AttachParticle                  = SootySmokeTrail
    AttachParticleBone              = Propeller02
    BladeObjectName                 = ComancheBlades
    BladeBoneName                   = Propeller01    
    ; Most things that eject pilots do so immediately upon death,
    ; via use of EjectPilotDie, but Helicopters are a special case...
    ; they need to do so after their blades are ejected.
    OCLEjectPilot                   = OCL_EjectPilotViaParachute
    FXBlade                         = FX_HelicopterBladeExplosion
    OCLBlade                        = OCL_HelicopterBladeExplosion
    FXHitGround                     = FX_HelicopterHitGround
    OCLHitGround                    = OCL_HelicopterHitGround
    FXFinalBlowUp                   = FX_GroundedHelicopterBlowUp
    OCLFinalBlowUp                  = OCL_GroundedHelicopterBlowUp
    DelayFromGroundToFinalDeath     = 1500
    FinalRubbleObject               = ComancheRubbleHull
  End
 

You could try the beamcannon way and use the packing/unpacking logic(triggered by the beam special weapon modules)

 

 

     <ModelConditionState
                    ParseCondStateType="PARSE_NORMAL"
                    ConditionsYes="UNPACKING">
                    <Model
                        Name="NUBeam_SKN" />
                    <ParticleSysBone
                        BoneName="FX_Weapon"
                        FXParticleSystemTemplate="BeamPreFireFlash"
                        FollowBone="true" />
                    <ParticleSysBone
                        BoneName="FX_Weapon"
                        FXParticleSystemTemplate="BeamPreFireDist"
                        FollowBone="true" />
                </ModelConditionState>
                <ModelConditionState
                    ParseCondStateType="PARSE_NORMAL"
                    ConditionsYes="PREPARING">
                    <Model
                        Name="NUBeam_SKN" />
                    <ParticleSysBone
                        BoneName="FX_Weapon"
                        FXParticleSystemTemplate="BeamConstantFire"
                        FollowBone="true" />
                    <ParticleSysBone
                        BoneName="FX_Weapon"
                        FXParticleSystemTemplate="BeamConstantFire02"
                        FollowBone="true" />
                </ModelConditionState>
 

or use a conditionstate like:

 

 

<ModelConditionState
                    ParseCondStateType="PARSE_NORMAL"
                    ConditionsYes="USING_SPECIAL_ABILITY">
                    <Model
                        Name="NUBeam_SKN" />
</ModelConditionState>
 

 

Nothing I tried work so far, maybe I done it wrong however because I don't sure where to put the lines ; -\

Share this post


Link to post

i guess the correct term is vector mask

No vector involved here. Also 4x4 black texture will do just nicely (as it's black anyway and you don't need pixel precise information, with 4x4 being the minimum resolution).

Share this post


Link to post

It nice to have people with knowledge nearby, without you informing me about this missing texture I probably would've stuck there for ages since Google search didn't gave me one answer that was close to the issue (guess because it was too trivial and obvious for max users).

 

I still can't use it without reposition it somehow to the same location though :/

 

 

 

Btw I gave up on the beam weapon over other laser... can't be helped as all what I tried failed :-/

 

 

 

Can someone help me with the last question involving the eradicator?

Share this post


Link to post

Not want to nag people, but can someone explain and help me with 3?

 

I believe it should be fairly easy to the point I won't be surprise you just ignore it xD

Edited by Egozi44

Share this post


Link to post

Not want to nag people, but can someone explain and help me with 3?

 

I believe it should be fairly easy to the point I won't be surprise you just ignore it xD

 

3. Apple Pie.

 

Since i didn't have a useful answer to that question i decided not to reply to it. But it seems you insist on getting an answer so...Apple Pie.

Share this post


Link to post

As far as I can tell the Eridicator has the same Crush code as other epics - would help if you told us what kind of problems you have ingame.

 

But if I were to guess, I would asume the problem is the collision box.

Share this post


Link to post

3. Apple Pie.

 

Since i didn't have a useful answer to that question i decided not to reply to it. But it seems you insist on getting an answer so...Apple Pie.

 

Didn't TW have CrushDecelerationPercent code? I want to know what it does (though the name say it all, but we can't be sure when it come to xml >.> )

 

 

As far as I can tell the Eridicator has the same Crush code as other epics - would help if you told us what kind of problems you have ingame.

 

But if I were to guess, I would asume the problem is the collision box.

 

I believe I did said it ;P

 

Eridicator have serious crush issues, it not always crush units, I also start to think it the box, maybe I could use the old trick and make it uses MARV's box, or it going to have some serious side effects? :0

Edited by Egozi44

Share this post


Link to post

Didn't TW have CrushDecelerationPercent code? I want to know what it does (though the name say it all, but we can't be sure when it come to xml >.> )

Well you know as much about that piece of code as me. The easiest thing to do was either experiment with the values or have a look at existing units.

Call this a calculated guess:

The mammoth tank uses that line, the predator doesn't. the mammoth uses a crush animation, which means the the speed at which it runs over a vehicle needs to match the animation. So i am guessing DecelPercent does exactly as it says....it slows the vehicle down during the crush....hence timing the mammoths climb over debris animation with its crush. predators, apc's etc don't use that or a animation because they can only plow through infantry and not vehicles.

 

It also mean that line of code doesn't effect the crush itself, because the animation and all the other crush logic gets triggered after the crush effect is enabled most likely.

The problem with the hexapod is probably related to pathfinding+geometry.

Share this post


Link to post

Yes raven is correct. It was originally introduced in BFME as horses wouldn't be able to stomp over hundreds of infantry without them being slowed down. This in connection that you can set a minimum speed for crushing just makes stuff more realistic (horses can't easily trample someone in mass armor without having some speed to begin with, esp against pikemen... good thing they don't also have double-strike and lifelink).

Edited by Lauren

Share this post


Link to post

I see, I thought it not just slow the animation but rather the entire crush attack as well

 

Guess that removing it won't change a thing then >.>

Share this post


Link to post

I see, I thought it not just slow the animation but rather the entire crush attack as well

No it doesn't effect animation speed. Just the vehicle speed DURING the crush, note the capitals on the word during, not before, not after.

 

If you would use the mammoth crush as example:

 

With Deceleration:

 

with deceleration the animation matches the movement speed.

 

Without the animation would take to long and the mammoth would still be playing the animation after it has already crushed the other vehicle

Edited by Ravendark

Share this post


Link to post

You always come up with the best videos for the situation xD

 

 

If that all what it does I think it better be kept at 0 or removed since Epic units with their huge size Supposed to crush hundreds of units without issue, in fact the slow down thingy for them end up look just ridicules and with their speed it harder to crush someone to begin with, till you finally able to do the dam thing you see them slowing down and give other units the time to attack/run away

 

 

Anyway, here the Hexapod's Geometry (not the box though)

 

		<Geometry
			IsSmall="False">
			<Shape
				Type="BOX"
				ContactPointGeneration="VEHICLE"
				MajorRadius="10.99"
				MinorRadius="14.2673"
				Height="94.1434"
				FrontAngle="0d"
				Active="True"
				UsedForHealthBox="True">
				<Offset
					x="27.3347"
					y="0.157752"
					z="0" />
			</Shape>
			<Shape
				Type="BOX"
				ContactPointGeneration="VEHICLE"
				MajorRadius="17.4869"
				MinorRadius="14.2673"
				Height="67.0585"
				FrontAngle="0d"
				Active="True"
				UsedForHealthBox="True">
				<Offset
					x="-1.49606"
					y="0.157752"
					z="0" />
			</Shape>
			<Shape
				Type="BOX"
				ContactPointGeneration="VEHICLE"
				MajorRadius="35.6592"
				MinorRadius="12"
				Height="77.7878"
				FrontAngle="0d"
				Active="True"
				UsedForHealthBox="True">
				<Offset
					x="7.29364"
					y="27.9145"
					z="0" />
			</Shape>
			<Shape
				Type="BOX"
				ContactPointGeneration="VEHICLE"
				MajorRadius="35.6592"
				MinorRadius="12"
				Height="77.7878"
				FrontAngle="0d"
				Active="True"
				UsedForHealthBox="True">
				<Offset
					x="7.29364"
					y="-27.8224"
					z="0" />
			</Shape>
		</Geometry>

 

 

And here the Locomotor

<?xml version="1.0" encoding="utf-8"?>
<AssetDeclaration xmlns="uri:ea.com:eala:asset">
	<LocomotorTemplate
		id="AlienEradicatorHexapodLocomotor"
		Surfaces="GROUND RUBBLE CRUSHABLE_OBSTACLE"
		LookAheadMult="1"
		MaxSpeedDamaged="75%"
		MinSpeed="0%"
		TurnTimeSeconds="3.5s"
		TurnTimeDamagedSeconds="3.5s"
		SlowTurnRadius="5"
		FastTurnRadius="50"
		MinRandomTurnRadiusScale="1"
		MaxRandomTurnRadiusScale="1"
		TurnThreshold="15d"
		TurnThresholdHS="180d"
		AccelerationSeconds="0.3s"
		Lift="0%"
		LiftDamaged="-1%"
		BrakingSeconds="0.3s"
		MinTurnSpeed="1%"
		PreferredHeight="0"
		PreferredAttackHeight="0"
		PreferredHeightDamping="1"
		CirclingRadius="0"
		CirclingSpeed="100%"
		BehaviorZ="NO_MOTIVE_FORCE"
		Appearance="TREADS"
		FormationPriority="MELEE_1"
		AccDecTrigger="0.5"
		WalkDistance="0"
		MaxTurnWithoutReform="360d"
		AccelPitchLimit="0d"
		BounceKick="0d"
		PitchStiffness="0.5"
		RollStiffness="0.25"
		PitchDamping="0.8"
		RollDamping="0.3"
		PitchByZVelCoef="0"
		YawStiffness="0"
		YawDamping="0"
		MaxOverlappedHeight="Infinity"
		ForwardVelocityPitchFactor="0"
		LateralVelocityRollFactor="0"
		ForwardAccelerationPitchFactor="0.3"
		LateralAccelerationRollFactor="0"
		UniformAxialDamping="1"
		TurnPivotOffset="0"
		AirborneTargetingHeight="99999"
		CloseEnoughDist="1"
		MaximumWheelExtension="0"
		MaximumWheelCompression="0"
		WheelTurnAngle="0d"
		WanderWidthFactor="0"
		WanderLengthFactor="1"
		WanderAboutPointRadius="0"
		BurniningDeathRadius="0"
		ChargeMaxSpeed="0%"
		RudderCorrectionDegree="0"
		RudderCorrectionRate="0"
		ElevatorCorrectionDegree="0"
		ElevatorCorrectionRate="0"
		AeleronCorrectionDegree="0"
		AeleronCorrectionRate="0"
		SwoopStandoffRadius="200"
		SwoopStandoffHeight="200"
		SwoopTerminalVelocity="0.07"
		SwoopAccelerationRate="0.003"
		SwoopSpeedTuningFactor="1"
		BackingUpSpeed="75%"
		BackingUpDistanceMin="0"
		BackingUpDistanceMax="0"
		BackingUpAngle="0.5"
		RiverModifier="100%"
		TakeOffAndLandingSpeed="0"
		TakeOffAndLandingSlowDownDelta="25"
		TakeOffAndLandingSlowDownTime="2s"
		AttackPathTrailDistance="0"
		AttackPathTrailDistanceMinScale="1"
		AttackPathTrailDistanceMaxScale="1"
		AbsoluteMinHeightWorldSpace="-1000"
		WiggleAmplitude="0"
		WiggleFrequency="0"
		WiggleOffset="0"
		MakeTransformNonDirty="False"
		IsCloseEnoughDist3D="False"
		LocomotorWorksWhenDead="False"
		AllowMotiveForceWhileAirborne="False"
		Apply2DFrictionWhenAirborne="False"
		DownhillOnly="False"
		StickToGround="False"
		CanMoveBackward="False"
		UpdateWaterWadingConditions="False"
		HasSuspension="False"
		IsCrewPowered="False"
		UseTerrainSmoothing="False"
		BurniningDeathIsCavalry="False"
		ChargeAvailable="False"
		ChargeIgnoresCondition="False"
		EnableHighSpeedTurnFlags="True"
		WaitForFormation="False"
		BackingUpStopWhenTurning="False"
		ScalesWalls="False"
		TurnWhileMoving="True"
		ClampOrientationToPathTangent="True"
		ReorientIfTurnTooSharp="True"
		BrakeBeforeReorienting="False" />
</AssetDeclaration>

 

Did anyone spot something that can cause the crush skip?

Edited by Egozi44

Share this post


Link to post

Well it is slowing the object down. If the locomotor has a slow acceleration it will take time to speed up again after crushing.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×