Posted: Sun Apr 24, 2016 11:48 pm Post subject:
Ares 0.C Development
Let's get the next release going! This is going to be another small step, scheduled to be released in two months. Unsurprisingly, it will be called 0.C. Currently there's no overarching theme, so 0.C will consist of assorted features.
Alpha lights will hide if a unit is cloaked, disguised as a terrain object or below surface (#895544)
Alpha Light internals changed, so please recheck
Simplified Bounty
[TechnoType]Bounty.Value= (integer, defaults to 0)
[TechnoType]Bounty.RookieValue= (integer, defaults to 0)
[TechnoType]Bounty.VeteranValue= (integer, defaults to 0)
[TechnoType]Bounty.EliteValue= (integer, defaults to 0)
The amount rewarded as bounty. Can be negative to penalize the player.
[TechnoType]Bounty= (boolean, defaults to false)
Whether this object will be awarded bounty when destroying enemy units or structures either by firing at them or by crushing them.
[TechnoType]Bounty.Display= (boolean, defaults to false)
Whether enemy units and structures will display the amount of bounty awarded when destroyed by an object of this type.
Optionally enable Bounty if a building is owned
[General]BountyEnablers= (list of BuildingTypes)
Bounty will be enabled only after a building of a type in this list is owned by the player. If the list is empty, bounty will always be enabled.
NoAmmoWeapon
Switch to NoAmmoWeapon when out of ammo (#895538). This can be used to switch to a less powerful weapon automatically and use it until ammo has been reloaded, or to disable firing any weapon when set to a weapon that requires ammo.
[TechnoType]NoAmmoWeapon= (integer, defaults to -1)
The weapon index to switch to when there is no ammo left. This will override the weapon selection and only allow this weapon to be selected. Valid values are -1, 0, and 1.
[TechnoType]NoAmmoAmount= (integer, defaults to 0)
If the current ammo is equal to or below this value, the NoAmmoWeapon will be used. _________________ QUICK_EDIT
EDIT1: Quick suggestion: Have the bounty string float from the unit killed/destroyed and at the color of the killing house. Or if it's not hard to code give us a [General] option to switch string to come from killed unit rather than killer. Just a personal preference, not game breaking at all.
EDIT2: Testing NoAmmoWeapon now.
EDIT3: NoAmmoWeapon seems to only accept a weapon that is not the Primary, example if you intend to use Secondary for ammo but the Primary has no ammo it will continue to fire the Primary, if you switch them around and make the Primary weapon use Ammo it will then switch to the Secondary (so no real use for that 0 integer).
Another suggestion: Make a tag so certain weapons with Burst only use 1 or 2 sets of Ammo, currently each burst uses 1 ammo each. So a weapon with 2 burts looks good when first fired, but then each time it reloads it will only fire one burst. If it requires 2 ammo to fire, it will still only fire once. NoAmmoAmount=2 doesn't solve this either as it stops shooting it as soon as it hits 2 ammo, if the logic still allowed the weapon to shoot it would be viable. Or if there is a setting that only allows a weapon to fire once a certain amount of ammo has been reloaded. Last edited by XxpeddyxX on Mon Apr 25, 2016 4:04 am; edited 5 times in total QUICK_EDIT
But curiously Bounty.Value= is needed for seeing Bounty.Display= for this 3 entry :
Bounty.RookieValue=
Bounty.VeteranValue=
Bounty.EliteValue=
Edited : Thats i wrote above was false, i was probably tired when i have doing thats test. All Bounty entry work fine. Last edited by Kik0u on Mon Apr 25, 2016 9:02 pm; edited 1 time in total QUICK_EDIT
NoAmmoWeapon: It should work, no matter whether Primary or Secondary. If in no-ammo state, weapon selection will not happen and the index you set there is just used. Kinda like the OpenTopped weapon feature.
Bounty text colors: This is not easily possible, because the generated texts do not know who caused them. And this can't be added easily, because the amounts are collected, so one text could represent different players. Making it use one color if it's only one player, and another color if two players are involved would be complex and inconsistent, not collecting amounts would not make sense when a CellSpread weapon hits multiple targets, because many text would be drawn and overwrite each other.
Ammo and burst: I don't want to change weapons code too much, especially not with a lot of minor features. I have explained this to some in chat already, but I'll recap it here for everyone:
Adding small and minor features is simple, but it is possible that adding something small shuts the door for adding something larger. The big picture is adding more weapons. That is, not just having Primary and Secondary, but a plethora of weapons available to chose from. The plan was/is to have lots of weapons, and then filter them depending on the state of the unit. That is, like has no ammo, deployed, out of range, and a few more (could for instance also check whether the player has power). That would be a big change, and the small additions would definitely get in its way, because some decisions then are already made and set in stone. This makes it more difficult to add such a large feature and have it work consistently, and thus makes it less likely it will be implemented.
Having more weapons would not be too useful alone, because ammo is still shared between them. So this would have to be changed to a per-weapon ammo system. And here the request to change ammo and burst collides. _________________ QUICK_EDIT
I'm super glad bounty finally is making it back in. That said I've yet to try it since for the last hour I've been adding in a thousand new lines of codes to my rules... Man I miss global tags... So is bounty working like pillager or traditional with reward only for kills? Wording is a bit vague above.I guess in another hour when I get through the rest of my units and structures adding bounty I can test it and see. Man can't wait to see! coding......... Argh the coding.... _________________ Grab my Map Logic Expansion Pack 5.2 here!
Adds random weather patterns into maps.
More disabled navalyards.
Preplaced Neutral buildings.
Additional new features.
Another update, with a few more features revealed:
AttachedSystem for Projectiles
This allows projectiles to emit particles on their way to the target, which might speed up the game considerably compared to the alternative of Trailer animations. This works like the tag for VoxelAnimTypes.
[Projectile]AttachedSystem= (ParticleSystemType)
The type of the particle system to attach to this projectile. Only particle systems with BehavesLike=smoke are supported.
Gas, Smoke, and Fire particles support Custom Palettes
Image particles can be made to render in custom colors like animations and projectiles. (#896126)
[ParticleType]Palette= (filename with .pal extension)
The palette used to draw an image particle of this type. _________________ QUICK_EDIT
I really love seeing bounty in action again. While it took forever to add bounty codes to everything, it is now more customized then before. All in all, great work!
Can't wait to see the rest that will be in ares 0.C _________________ Grab my Map Logic Expansion Pack 5.2 here!
Adds random weather patterns into maps.
More disabled navalyards.
Preplaced Neutral buildings.
Additional new features.
He's testing a feature AlexB implemented two posts above yours. _________________ mentalomega.com Last edited by Speeder on Wed Apr 27, 2016 10:15 am; edited 1 time in total QUICK_EDIT
Hello, AlexB!
The particle system on projectiles works, but I was unable to make my conscripts use no-ammo weapon... at all.
I have set it to use the secondary weapon as no-ammo weapon. Made it's ammo to be 1 and reload after 150 frames. Also, when in open-topped transports the ammo does not reload.
I did some testing on Bounty Logic. Looks like some SWs fails to work with them. For example Nuke works fine but Weather Conroller or Iron Curtain doesn't. IC insta infantry kill may be problematic for normal WHs too not tested yet.
From what I recall Lightning Storm's weapon doesn't have an owner and Iron Curtain is technically not a weapon.
I don't think it was ever a plan to make superweapons support Bounty though. _________________ mentalomega.com QUICK_EDIT
Joined: 22 Nov 2010 Location: Iszkaszentgyorgy, Hungary
Posted: Fri Apr 29, 2016 9:42 am Post subject:
Nuke, GenericWarhead and FireSW/EMPCannon/how it's called have explicit attacker units only. _________________ "If you didn't get angry and mad and frustrated, that means you don't care about the end result, and are doing something wrong." - Greg Kroah-Hartman
=======================
Past C&C projects: Attacque Supérior (2010-2019); Valiant Shades (2019-2021)
=======================
WeiDU mods: Random Graion Tweaks | Graion's Soundsets
Maintainance: Extra Expanded Enhanced Encounters! | BGEESpawn
Contributions: EE Fixpack | Enhanced Edition Trilogy | DSotSC (Trilogy) | UB_IWD | SotSC & a lot more... QUICK_EDIT
Haven't gotten to code too much lately, and I didn't want to wait any longer to finally release the bugfix for the Particle CustomPalettes. The new build is available and should fix it.
Forgot the hook that actually reads the new ParticleType from INI
Some changes to temporal weapons. See if the warp away anim still works as expected
Hack for Smoke particles applied. Maybe this gives Smoke Particle Trailers an advantage
Fixed a minor bug in Tiberium chain reaction code
Some performance improvements
Silence the UnitLost message when killed by warhead
[Warhead]UnitLost.Suppress= (boolean, defaults to no)
Whether units killed by this warhead should not play the Unit Lost EVA message. Damaging units without killing them using this warhead will not silence the message.
The following features I'm not satisfied with, mostly because of the tag naming. They might change in later versions. The names are the same as the global ones, but it might be better to group them to make it obvious they belong together.
Customizable flash duration on promotion
[TechnoType]VeteranFlashTimer= (int - frames, defaults to [AudioVisual]VeteranFlashTimer)
The number of frames a unit or structure of this type flashes when promoted to veteran.
[TechnoType]EliteFlashTimer= (int - frames, defaults to [AudioVisual]EliteFlashTimer)
The number of frames a unit or structure of this type flashes when promoted to elite.
Customizable promotion sounds
[TechnoType]UpgradeVeteranSound= (sound, defaults to [AudioVisual]UpgradeVeteranSound)
The sound played when a unit of this type is promoted to veteran.
[TechnoType]UpgradeEliteSound= (sound, defaults to [AudioVisual]UpgradeEliteSound)
The sound played when a unit of this type is promoted to elite. _________________ QUICK_EDIT
A possible suggestion is custom EVA for promote since I know a few mods have prompt able defenses and unit promoted wouldn't make sense in this case. _________________ QUICK_EDIT
Is there any way to have like Bounty impact allies? I can think of some potential scenarios (mainly related to superweapons) where you might want to bounty your own units.
Another possible addition to Bounty logic is Bounty.Level
e.g
1. X technotypes are resistant to Bounty.Level=1 but vunerable to Bounty.Level=2 (similar to how Assaulter.Level= works)
I understand bounty was very complex in initial brief, so not expecting anything but just some ideas on how this logic might expand. _________________ QUICK_EDIT
Another minor update, adding a few new features and correcting a few things from the past.
Units now can ignore active Firestorm Walls using IgnoresFirestorm=yes
Removed [Projectile]SubjectToFirewall= because it wasn't useful and documented badly
Also refresh the map when the alpha light is deleted. Please recheck alpha lights again.
Factory Plant effect modifiable
[TechnoType]FactoryPlant.Multiplier= (double - multiplier, defaults to 1.0)
The effect of the CostBonus tag for this type is multiplied by this value to either increase, weaken, or nullify it. Fully supported values are between -1.0 to reverse the effect to 1.0 to not affect the effect. 0.0 nullifies the bonus.
Values beyond 1.0 can potentially cause the cost to drop to 0, if the effect of the product of all cost bonuses is multiplied by a too large value.
Formula: final bonus = 1.0 - (1.0 - product of all cost bonuses) * multiplier
Example: cost bonus = 0.6; multiplier = 0.5; final bonus is 0.8. In other words: if a bonus reduces the cost to 60% and the multiplier only grants half of that, the final price is at 80% of the original cost.
EVA promotion messages customizable
[TechnoType]EVA.VeteranPromoted= (eva message, defaults to EVA_UnitPromoted)
The message played when a unit or structure of this type is promoted to veteran level.
[TechnoType]EVA.ElitePromoted= (eva message, defaults to EVA_UnitPromoted)
The message played when a unit or structure of this type is promoted to elite level.
Damage Range for Gas Particles
[ParticleType]DamageRange= (double - cells, defaults to 0)
The particle damage is applied to all objects in this range around the gas particle. If less or equal to 0.0, all objects in the cell the gas particle is on are affected. Each object is affected at most once.
I'm not sure whether this tag is consistent with the game. It could be renamed to DamageRadius, which already exists on VoxelAnimTypes, though that counts in leptons.
Making the random money amount on money crates customizable
[CrateRules]RandomCrateMoney= (integer, defaults to 900)
A random money amount between 0 and this value is added on money crate bonuses. _________________ QUICK_EDIT
• IgnoresFirestorm=yes now works properly on TechnoTypes to prevent them from being affected by Firestorm Wall.
• FactoryPlant.Multiplier works as described.
• EVA.Veteran/ElitePromoted work as described.
• DamageRange works as described.
• RandomCrateMoney works as described.
Great, thanks guys for testing that quickly! Looks like I gotta hurry.
@Ich-Henker: Can you upload an except.txt to pastebin.com? Then I can take a look at the Maverick5 issue.
@Speeder: IgnoresFirestorm= is an original game tag on objects. Was just not used by Ares' implementation of the Firestorm Wall. I guess it was to make features independent, like the passable building, connecting to nearby buildings and so on. _________________ QUICK_EDIT
Another minor update, with only a single new feature and some internal changes. Time to point out some other feature, which was added some time ago but not mentioned in the previous posts yet.
Particles are implemented as full-blown game objects. That means they share many of the functions with units, buildings, bullets, trees and so on. They also use the same systems and the same logics as the other types. In a big game with 8 players there can be easily be more than 1000 active game objects on the map, not counting particles.
All systems in this montage are based on the default LargeRailgunSys with SpiralRadius changed from 15 to 35 for demonstration purposes, and all beams are 6 cells long (1536 leptons). The lower one has ParticlesPerCoord=0.15 (the default), and results in 230 particles. This is usually enough to cause noticable lag already. For reference: the similarily implemented default spark particle systems only spawn up to 6 particles each.
The middle beam has ParticlesPerCoord=1.15 set and results in 1766 particles. This easily outgrows the number of other game objects on the map, and considering the more sparse beam already causes lag, this certainly kills the game's frame rate. For insanity reasons, the upper beam uses ParticlesPerCoord=10.15 and consists of 15590 separate particles.
Particles show the quadratic runtime behavior of some of the game's logics. Doubling the number of game objects quadruples the time it takes to execute such functions. This is what brings the game down. If firing a railgun does not, then just fire two at the same time and it will grind to a halt eventually.
Since the first test build for Ares 0.C, spark and railgun particles have been replaced completely with new code that is responsible for creating, updating, and rendering such particles. This optimization is activated automatically if a particle system and its spawned particle type both have either BehavesLike=Railgun or BehavesLike=Spark set. It does not activate in any other case, also not if a spark particle system spawns railgun particles or vice versa.
On my machine, with the optimization activated, the insane particle beam still renders with 50 fps. Not enough for pleasant gameplay, but who uses such insane values, anyhow?
Pre-delay for AttachEffects on TechnoTypes
[TechnoType]AttachEffect.InitialDelay= (integer - frames, defaults to 0)
The first delay to apply the AttachEffect defined by the type of the object. Subsequent delays are defined by AttachEffect.Delay. A value of 0 means apply effect immediately. _________________ QUICK_EDIT
Particles are implemented as full-blown game objects.
Very interesting information. Thank you for this.
I think it also explains why the base TechnoType functions like AlphaImage work on these.
Does anyone has a list of keys and the TechnoType to which they belong? Something like an inheritance tree for the different TechnoTypes of the game?
Maybe some more keys work on particles and allow interesting results.
Does your complete new code for PS still allows the old coding tricks like SHP railgun (Railgun System that spawns Smoke Particles with shp image) or AlphaImage on the particle? _________________ SHP Artist of Twisted Insurrection: Nod buildings
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum