Difference between pages "Starward Rogue:XML - Enum Reference" and "AI War 2:Making Alpha Fun"

From Arcen Wiki
(Difference between pages)
Jump to navigation Jump to search
m (We don't need a link at the bottom. Categories fill that role.)
 
 
Line 1: Line 1:
 +
== Starting State ==
 +
Okay! We've extended the alpha period beyond what we had originally intended, but we're going ahead and giving out the Early Access keys to kickstarter backers on the date we originally specified. Meanwhile, we're [https://www.kickstarter.com/projects/arcengames/ai-war-ii-0/posts/1888241 pushing the date for early access back]. That link explains a lot of the reasons.
  
==GameEntityCategory==
+
If you're one of the many who struggle with playing the game such an incomplete state, check out [https://wiki.arcengames.com/index.php?title=AI_War_2:Earlier_Than_Earlier_Alpha_Play_Instructions the instructions]
Oi!  What is this thing?  Depending on what you say, it will be parsed differently.
 
  
*Ship
+
We also have a blog at [https://blog.arcengames.com/ https://blog.arcengames.com] for dev diaries and other fun topics.
**Player hulls or enemy ships.
 
*Shot
 
**An actual bullet (you won’t use this much, if at all).
 
*ItemPickup
 
**What it says on the tin.
 
*Obstacle
 
**Funky stuff you won’t use much, if at all.
 
*NonSim
 
**Is not added into ANY of the normal lists and thus does not impact the normal sim logic for entities, and is not serialized. Just for use in non-sim bullet patterns that are purely for visual effect.
 
  
==ShipCategory==
+
Also, here's [https://trello.com/b/tz2k8Q15/chris-ai-war-2-todo Chris's todo list].
What sort of ship is this, and how should it thus seed in rooms?  This is a required field for any ship.
 
  
Note that ones that end in 1x1 should have a pessimistic bounding box that fits in a 64px square, ones that end in 3x3 should fit in a 192px square, 5x5 in 320px, 7x7 in 448px, and 9x9 in 576 (this is what bosses are allowed to use up to).
+
And [https://wiki.arcengames.com/index.php?title=AI_War_2:Earlier_Than_Early_Alpha here's what we've been doing for the last few months]
  
*Player
+
=== Known Issues ===
**This is for player hulls that the player can choose from.  It’s not an enemy ship.
+
* The interface in general is horrible, and you need to go into the PlayerData folder and edit your settings file manually if you want to make settings changes.
*PlayerFamiliar
 
**Used for familiars and other little followers that are your allies.
 
*EnemyFamiliar
 
**Used for familiars and other little followers that are attached to an enemy instead of you.
 
*Boss
 
**Goes in the end-of-floor boss rooms.
 
** Default ability point drop: 100
 
*BossLaterStage
 
**These aren’t independent enemies, per se.  Rather, if there is a multi-stage boss or miniboss, the later stages should be flagged as this.
 
** Default ability point drop: 100
 
*RegularEnemyLaterStage
 
**These aren’t independent enemies, per se.  Rather, if there is a multi-stage enemy, the later stages should be flagged as this -- NOT as BossLaterStage, or it will trigger certain boss logic you don't want here.
 
** Default ability point drop: 7
 
*BossBuddy
 
**Sometimes bosses have multiple parts to themselves.  This defines one of the other parts.
 
** Default ability point drop: 100
 
*FinalBoss
 
**This is the "last boss," although not really.  It's the last boss for the early runs (floor 5), and then a major speedbump in later runs.
 
**It's perfectly fine to have more than one of these; the game will choose between them at random.
 
** Default ability point drop: 300
 
*SuperFinalBoss
 
**This is the TRUE last boss.  It's only on floor 7, and you only encounter it after having beaten the fake-ish "last boss" a certain number of times.
 
**It's perfectly fine to have more than one of these; the game will choose between them at random.
 
** Default ability point drop: 500
 
*Miniboss
 
**Goes in miniboss rooms.
 
** Default ability point drop: 50
 
*CondemnedRoomBoss
 
**The centerpiece of condemned rooms.
 
** Default ability point drop: 50
 
*Pursuer_1x1
 
**Little fast guys that chase you around and generally harass you in some fashion if you don’t move fast.
 
** Default ability point drop: 2
 
*LocalGuard_1x1
 
**Little immobile (or nearly so) guys that hang out in an area and make it hard to go into that area somehow.
 
** Default ability point drop: 2
 
*Jumpscare_1x1
 
**Little guys that don’t move at all or much until you get near them, and then bad things happen.  So they may make part of the room effectively inaccessible until the player has dealt with other hazards in the room.
 
** Default ability point drop: 4
 
*Sniper_3x3
 
**These guys likely don’t move much or at least not fast, but they lay down long range dangerous attacks.  Must be super careful with these, as we want to make sure even players on small monitors get a chance to see these guys before these guys are able to shoot at them.  Assume they cannot shoot over any obstacles.
 
** Default ability point drop: 2
 
*LocalAOE_3x3
 
**Rather like the LocalGuard, but more explosive in some fashion.  May be able to use this fact against other enemies in the room, may not be.  Assume they can shoot over everything except indestructible walls.
 
** Default ability point drop: 3
 
*Wander_3x3
 
**This is sort of the “bread and butter” enemy that is most common.  These guys “wander around and do stuff.”  They don’t chase you, but they probably track you with weapons and such if you go near them (or they wander near you).
 
*Attacker_3x3
 
**These guys actively hunt you through the room, although not in a true pathfinding sense.  So you need to get in the general vicinity of them for them to come after you, but when you do they are then going to converge and stay on you.
 
** Default ability point drop: 3
 
*ChaosAdder_3x3
 
**These guys do… who knows what.  Whatever it is, it makes a big mess of everything else around them.  Probably lots and lots of bullets, or something else that makes everything else 10x harder.  Use sparingly per room. ;)
 
** Default ability point drop: 4
 
*Challenge_5x5
 
**These guys are crazier than the average bear, and need to be only used in challenge rooms.  These are basically enemies that are harder than expected.
 
** Default ability point drop: 25
 
*Wander_5x5
 
**Same as the smaller wanderer, except needs more room to move about and is also larger, better armored, probably more damaging, etc.
 
** Default ability point drop: 3
 
*Attacker_5x5
 
**Same as the smaller attacker, except needs more room to move about and is also larger, better armored, probably more damaging, etc.
 
** Default ability point drop: 5
 
*ChaosAdder_5x5
 
**Same as the smaller chaos adder, except needs more room to move and is also larger, better armored, probably even more chaos results, etc.
 
** Default ability point drop: 7
 
*Fearsome_7x7
 
**Whatever this is, it is very very bad.  These are the biggest boys outside of bosses and minibosses.
 
** Default ability point drop: 15
 
*EnemySpawer_Spawnee
 
**These are small and numerous, and generally should die in one hit.  They come pouring out of enemy spawners at a rate of 1 every 2 seconds.
 
** Default ability point drop: 0
 
*CondemnedRoom_1x1
 
** ONLY should be used in condemned rooms.  Make sure they have a health drain set on them.
 
** Little fast guys that chase you around and can get through all the nooks and crannies to chase you.
 
** Default ability point drop: 0
 
*CondemnedRoom_5x5
 
** ONLY should be used in condemned rooms.  Make sure they have a health drain set on them.
 
** Larger scary guys that may or may not be able to get through the nooks and crannies, but instead make certain parts of the room that you REALLY don't want to go in.
 
** Default ability point drop: 0
 
*RobotShopkeeper
 
** ONLY should be used in robot shops.  Very specialized and really shouldn't be used beyond what the basics were set up for.
 
*CheapItemShopkeeper
 
** ONLY should be used in cheap item shops.  Very specialized and really shouldn't be used beyond what the basics were set up for.
 
*WeaponsShopkeeper
 
** ONLY should be used in weapon shops.  Very specialized and really shouldn't be used beyond what the basics were set up for.
 
*RandomFloatingChunksOfStuff
 
** Used by Antigravitate Blockage/Shards in order to not proc on death effects.
 
  
==ItemPool==
+
* Various ships are implemented but don't have real graphics, so they just show a little "rock" instead where the ship graphic would be. You can still see the ship icon and whatnot just fine.
  
*AfterRoomMinor
+
* All ship shot types use the same graphics right now.
**This will appear after some rooms are complete, but it’s a super duper minor sort of reward.  Basically health or energy or something.  Not even a consumable weapon.
 
*AfterRoomConsumable
 
**This will appear after some rooms are complete, and are always consumable weapon/item slot items of some sort.  Note that NOT all consumable items need to be in this pool: many of them may very well be too rare to be here.  These are just the ones that you should find semi-commonly.
 
*[Consumable freestanding pools]
 
**These are directly placed in certain rooms as an enticement to go to some part of the room.  Usually something the player has to expend some missiles to get to, or undertake some other risk.
 
**These should be overlapping a lot with the after-room consumables, but perhaps with a few more uncommon things thrown in here from time to time, and minus the super-basic consumables perhaps.
 
** Actual types:
 
*** FreestandingCommonConsumable (95% chance)
 
*** FreestandingRareConsumable (5% chance)
 
*[major freestanding pools]
 
**These are the major "treasure room" items.
 
**The different categories each have a certain number of "raffle tickets" (so to speak) put into a grab bag, and then one ticket is randomly chosen.  An item from within the chosen category is used.  The more tickets, the more likely the category is to show up.
 
** Actual types:
 
*** FreestandingCommonMain (100 tickets)
 
*** FreestandingRareMain (5 tickets)
 
*** FreestandingCommonSecondary (200 tickets)
 
*** FreestandingRareSecondary (10 tickets)
 
*** FreestandingCommonPowerUp (400 tickets)
 
*** FreestandingRarePowerUp (20 tickets)
 
*UnlockedChest
 
**If a minor chest that is not locked from the start is opened, then one of these things will appear.  These might be some sort of minor item, a consumable, a weakish ammo weapon or familiar, or who knows.  Nothing too exciting, but also not so basic that the chests are not exciting.
 
*LockedChest
 
**We had to use a keycard to get whatever this is, so there ought to be some worth to it.
 
*MinibossDrop
 
**We just killed a miniboss.  What are we going to get next?? ;)
 
*BossDrop
 
**Dead boss at the end of the floor!  Now let’s show him his reward, Jim...
 
*RegularEnemyDrop
 
**Regular enemies have a low chance of dropping these things, as do certain shootable obstacles.  Nothing at all exciting here; pretty much just the minor ammo and missile and credit drops.
 
*RobotShop
 
**Sell me robots or things to help upgrade robots!
 
*WeaponsShop
 
**Sell me weapons or things to help upgrade weapons!
 
*DefensiveShop
 
**Sell me things to help my defense!
 
*CheapItemShop
 
**Sell me cheap sort of stuff!
 
*SecretRoom
 
**These are items found only in secret free-loot rooms.  Give me something worthy of my discovery!
 
*HealthShards
 
**These are items found only in the bombable blocks.
 
*HealthForItemsShop
 
**Sell me super awesome stuff that I have to sacrifice health to buy.
 
*MeleeWeapons
 
*BulletWeapons
 
*NeedleWeapons
 
*BeamWeapons
 
*ExplosiveWeapons
 
*FireWeapons
 
*SpecialWeapons
 
*UltraRareWeapons
 
*ModuleAttachmentsStandard
 
*ModuleAttachmentsUncommon
 
*ModuleAttachmentsRare
 
*ConsumableWeaponsStandard
 
*ConsumableWeaponsUncommon
 
*ConsumableWeaponsRare
 
*ConsumableItemsStandard
 
*ConsumableItemsUncommon
 
*ConsumableItemsRare
 
*CodeItems
 
*StatPowerupsStandard
 
*StatPowerupsUncommon
 
*StatPowerupsRare
 
*HealthUpgradeRoom
 
** These should all be health upgrades or similar.
 
*Incredibilities
 
** These are the really major items that change the whole flow of the game.
 
** You can only find these after killing shopkeepers.
 
*EmptyShop
 
** Junk stuff that shows up in shops where you previously killed the shopkeeper for that kind of shop.
 
*ProbationPedestal
 
** Probation items that give you an item with a bonus on reaching the next floor if you choose to take it.
 
  
==AbilityPointCost==
+
* Only some of the sound effects are in, and only a couple of music tracks.
  
* IncrediCheapAlreadyUnlocked = 40
+
* Particle effects are also limited.
* LowAlreadyUnlocked = 100
 
* AverageAlreadyUnlocked = 200
 
* HighAlreadyUnlocked = 500
 
* VeryHighAlreadyUnlocked = 900
 
* SuperHighAlreadyUnlocked = 2000
 
* UltraHighAlreadyUnlocked = 5000
 
  
* IncrediCheapLocked = 80
+
* Ships currently just sit there in their squads, rather than flying around within their squads.
* LowLocked = 200
 
* AverageLocked = 400
 
* HighLocked = 1000
 
* VeryHighLocked = 1800
 
* SuperHighLocked = 4000
 
* UltraHighLocked = 10000
 
  
==EntitySystemCategory==
+
* Various bugs on mantis: https://bugtracker.arcengames.com/view_all_bug_page.php
*Weapon
 
**The default
 
**This will work on a player entity, but it will target and fire automatically, paying no attention to player input
 
*PlayerDirectedWeapon
 
**Only for weapons you want to trigger on the left mouse button (or firing stick).  
 
**This will work on a non-player entity, like an familiar, but it only fire when you fire and will generally fire at the cursor
 
*DirectUseSystem
 
**basically it's like a weapon in terms of obeying reload times, ammo requirements, etc, but it doesn't do any targeting or emit any shots; its behavior is defined by other stuff
 
**right now the only point is in conjunction with OnUse_ParentEntity modifiers
 
**doesn't require shot_type, damage_type, shots_per_salvo, attack_power, range_actual, targeting_logic
 
**if the system also has required_item_type and required_item_amount, it will require and deduct that amount of that item from the player to work
 
  
==DamageType==
+
* Balance needs a lot of attention, with your help.
* Ballistic
 
* Tracking
 
* Gravity
 
* Deployment
 
* Laser
 
* Energy
 
* Ion
 
* Concussive
 
* Piercing
 
* Poison
 
* Fire
 
* Acid
 
* Lightning
 
*Explosive
 
** "Explosive" gets the MissileShotDamage modifier and not the NormalShotDamage one, and vice versa for non-Explosive.
 
** "Explosive" shots can reveal secret doors on direct collision
 
*LowExplosive
 
** This lets you have explosive-style stuff that you might provide immunities to without the weapon being able to break walls.
 
  
==DifficultyType==
+
* There's no tutorial yet, and there's basically not much in the way of a lobby beyond map types and seed. You can't choose your player color yet, even.
*VeryEasy
+
** Compared to the actual gameplay mechanics, we felt like these were ancillary things, but they are coming up in importance sooner than later.
*Easy
 
*Normal
 
*Hard
 
*Misery
 
  
==FiringTiming==
+
=== What Is The Purpose Of This Phase? ===
* AllTheTime
+
'''Short Answer:''' To make the game fun, which it is not yet. Please don't fret on that!
** always fires if there's any eligible target at all, even if not in range
 
* OnlyInRange
 
** only fires when there's something in range
 
* WhenParentEntityHit
 
** only fires when the parent entity is hit by something (which authorizes one salvo)
 
* Never
 
** never does normal salvo logic; useful with systems with category=DirectUseSystem
 
  
==TargetingLogic==
+
'''Long Answer:''' There's still a lot to do on the game obviously, as stated in the last blog post. But there's a lot of good stuff here to tinker with now, and we're really looking forward to having more people bashing on it. It's not a "fun, balanced game that just needs some polish" yet, but it will be really useful for us to have more people finding the pain points both in the interface (which is currently atrocious) and the actual gameplay flow (which, from a macro standpoint, is still pretty immature).
* Direct
 
** fires at where the target is now
 
* Lead
 
** fires at where this shot would intercept the target at its present speed and course. If the target is travelling too fast for the shot to intercept at any angle, this just shoots at the target's current location.
 
* Dumbfire
 
** fires in a straight line from the firing ship at the angle the firing ship is currently facing
 
  
==FourDirection==
+
The underlying technology and components for making a fun game are here, and that'd a very critical step towards it being a fun and balanced game, but that's not where we are just yet. In a lot of respects we kind of reordered things: the underlying tech is somewhat more advanced and more polished than we had anticipated at this point, and that is pretty important because it gives us a better idea of what we CAN do in the engine. It gives us a better bounding-box for setting up things so that we can build an interface around what is possible, and have the scale of battles reflect what is possible performance-wise, and so forth. On that front, I'm super happy with where we are.
* North
 
* East
 
* South
 
* West
 
  
==RoomType==
+
But yeah, the next step is to finish implementing the last of the "before early access" ships, and then to actually make a GUI that isn't eye-gouging as well as a game flow that doesn't have any obvious deficiencies. Right now there are some notable concerns about parts of the game flow regarding how you don't really need to keep territory as much as in the first game, and certain other bits of the feel from a strategic standpoint are "off." Some of that is just because xyz AI feature maybe isn't in place yet, but other pieces are more about the design of certain ships or mechanics. These are things we want to iron out before we go full-Early-Access, and we need the help of folks like you to do so. We're trying to streamline certain aspects of the first game, but we don't want to do that at the expense of what made the original game cool.
* Starting
 
* StartingForFirstFloor
 
* MonsterFree
 
* Item
 
* HealthUpgradeRoom
 
* SecretFreeLoot
 
* HealthForItemsShop
 
* CheapItemShop
 
* RobotShop
 
* WeaponsShop
 
* Miniboss
 
* Condemned
 
* Boss_Rectangle
 
* Boss_Large
 
* Boss_Giant
 
* Boss_TallFromSouth
 
* Standard
 
* StandardEW
 
* StandardNS
 
* TunnelWide
 
* TunnelTall
 
* Quad
 
* QuadEE
 
* QuadWW
 
* QuadNN
 
* QuadSS
 
* FatVertical
 
* FatHorizontal
 
* Square
 
* SquareNE
 
* SquareSW
 
* Boss_Square
 
* Boss_RectEdged
 
* SquareNE
 
* SquareSW
 
* StandardEW
 
* StandardNS
 
  
==EntityModifierProbationType==
+
The engine for this one is so flexible that we could just recreate most of what the first game was if we felt like it, but we'd really rather not for a variety of reasons that should be apparent to anyone who tried to get into the first game and bounced off it, or who played the first game for a huge number of hours but wanted certain fundamental improvements. Now that all the basic frameworks are getting in place here, we're at a point where we can start thinking about those things.
  
* NoMissileUse
+
== Version 0.501 ==
* NoEnergyUse
+
(Not yet released -- we're still working on it!)
* NoTakingDamage
 
* NoHealingHull
 
* NoUsingConsumable
 
* NoDying
 
**This probation can't actually be violated, but allows the use of disabled_during_probation when you just want it to be "survive to end of room" or "survive to end of floor" to get the benefit.
 
*MakeItToNextFloorWithinTimeLimit
 
**if (probation_magnitude) seconds pass before the end of the probation, the probation is failed
 
*HaveZeroCreditsWhenMovingToNextFloor
 
**if the player has non-zero credits when the probation ends, the probation is failed
 
*BuyItemsBeforeMovingToNextFloor
 
**if the player has not bought (probation_magnitude) items before the end of the probation, the probation is failed
 
*CollectAllHealthShardsBeforeMovingToNextFloor
 
**if the player has not visited all rooms, broken all health-shard-containing blocks, and picked up all health shards on the current floor before the probation ends, the probation is failed
 
*OpenAllChestsBeforeMovingToNextFloor
 
**if the player has not visited all rooms and opened all chests (locked and unlocked) on the current floor before the probation ends, the probation is failed
 
*BuyAllCheapItemsBeforeMovingToNextFloor
 
**if the player has not visited all cheap-item-shop rooms on the current floor and bought all the items in them before the probation ends, the probation is failed
 
*HaveFamiliarsWhenMovingToNextFloor
 
**if the player does not have at least (probation_magnitude) familiars at the end of the probation, the probation is failed
 
*BuyAllHealthCostItemsBeforeMovingToNextFloor
 
**if the player has not visited all buy-with-health-shop rooms on the current floor and bought all the items in them before the probation ends, the probation is failed
 
  
==FamiliarType==
+
Note that this one is going to be a little slower coming, just because of some life stuff going on.  Other than that we theoretically should be moving into quicker release cycles. ;)
  
* NormalOrbit
+
* Adjusted the shader to try and lighten the Experimental Fabricator model a bit.
** stays relative to the master ship, never collides with walls, moves around in smooth-ish arcs from random offset to random offset (similar to movement of armadas around planets on the TLF metamap)
+
* Added the attribute " y_offset_of_icon="20" " to the fortress xml entry to help with the flickering issue.
* SimpleCircleOrbit
+
* Adjusted the radii on several ships and turret types to help with overlapping selection boxes.
** stays relative to the master ship, never collides with walls, moves around in a smooth-ish circle around the master ship
 
* NormalShipBehavior
 
** basically acts like a normal ship, according to the behavior flag. For example, you could use this with behavior=Wanderer or behavior=CardinalMover
 
** will spawn on top of the master entity
 
* PtarthianOrbit
 
** behaves like SimpleCircleOrbit, but doesn't try to automatically space out the familiars in a ring.  
 
** only works properly for a familiar defined by a familiar sub-node on an entity, won't work well if just put in the normal "familiars" list or otherwise deployed
 
  
==EntityModifierType==
+
* Added "Start With First Planet" toggle button to the lobby, defaults off. If on:
 +
** The planet you start on begins with the controller and resource spots under your control.
 +
** There's no initial AI presence on the planet you start on.
 +
** Your Ark starts next to the controller on that planet instead of near the edge of the grav well.
 +
** Your starting AIP is what it would have been after conquering the first planet.
 +
** Thanks to... well, everyone, for letting us know that fighting that first battle every time got old.
  
=== These require attributes "math" and "magnitude" ===
+
* As framework for the start-with-first-planet option, the "Conduct" table has been moved out to external XML. It's basically just a boolean value you can check for in mapgen or whatever other external logic, but you can also add arbitrary per-sim-step logic if you like. Whether it works or not is up to you, of course, but it's a pretty flexible hook.
  
* MaxHealth
+
* Fixed a number of issues that were preventing your "last game lobby settings" from persisting across executions of the application.
* MaxShields
 
* Range
 
** Range that shots will live, specifically. Doesn't do much for BulletPattern stuff.
 
* FireRate
 
* MovementSpeed
 
* ShotSize
 
** Applies to the size of shots generated by this entity, not to the entity itself.
 
* MySize
 
** Applies to the entity itself. So if you want a system that causes its shots to be huge you can give it:
 
*** <modifier target="MyShots" type="MySize" math="Multiply" magnitude="4" />
 
* NormalShotDamage
 
** Applies to the damage of shots generated by this entity, not to the entity itself.
 
** doesn't apply to melee damage, or the player's missiles
 
* MissileShotDamage
 
** Applies to the damage of shots generated by this entity, not to the entity itself.
 
* AreaOfEffect_Self
 
**only makes sense on shots, forces the shot to be aoe
 
* MeleeDamage
 
**Applies to the damage of shots generated by this entity, not to the entity itself.
 
**this is the implicit "on-touch" damage that happens when the player's hitbox overlaps an enemy hitbox
 
* IncomingDamage
 
**accepts (but does not require) the damage_type attribute
 
***if specified, only applies to damage from that source
 
***if not specified, applies to all damage
 
* Acceleration
 
* Deceleration
 
** this refers to how quickly an entity slows down from its current speed to zero.
 
** If you want to adjust how fast an entity moves, you want MovementSpeed instead.
 
* InventoryChangePerSecond
 
** also requires "related_item" attribute, see below
 
** only does anything when it applies to the player's entity
 
* DamagePerSecond
 
**does damage to the thing with the modifier every sim-step
 
**uses damage_type
 
* DamagePerSecond_IfMoving
 
**similar to DamagePerSecond, but only has an impact if the ship is moving under power (not decelerating or being knocked back or whatever)
 
* MyOwnDamage
 
**unlike NormalShotDamage, which only impacts shots generated by the entity with that modifier, this one is for the shots themselves, and modifies the damage it does on impact
 
*AddsWeaknessVsAmmoWeapons
 
**When applied to shot, causes it to change the weakness-to-energy-weapons of the thing(s) hit by this amount, where 0 is no change and 1 is "increase damage by 100%"
 
***This only impacts the next hit from an energy weapon
 
**For a player main gun, if it has no modifier of this type targeting MyShots, it implicitly gets one with Add and 0.01
 
*AddsWeaknessVsAmmoWeapons_Cap
 
**When applied to shot, causes the effect of the previous modifier to never increase the target's weakness above this amount
 
**For a player main gun, if it has no modifier of this type targeting MyShots, it implicitly gets one with Add and 0.1
 
* ItemCosts
 
**modifies requires_item_amount values where related_item matches requires_item_type
 
**notably, used with Energy, this can make energy weapons cost more or less energy to fire
 
* ItemGains
 
**modifies on_pickup_grants_amount values where related_item matches on_pickup_grants_item
 
**notably, used with Credits, this can increase the value of future credit drops
 
* InventoryCapacity
 
**modifies the max amount of related_item that you can store
 
**notably, used with Energy, this can increase or decrease the player's energy storage capacity
 
* HealthGainOnEnemyKill
 
**when an entity (not system) with this kills a ship, it gains this much health
 
**partial gain (less than one point) is stored and can be applied as actual health gain if a later kill brings it up to a full point (if it happens in the same room)
 
* ItemGainOnEnemyKill
 
**when an entity (not system) with this kills a ship, the player's inventory of related_item changes by this amount (can be negative, if you wanted a credit fine for killing something, for example)
 
* ItemGainChanceOnEnemyKill
 
** when an entity (not system) with this kills a ship, the player's inventory of related_item has this percent chance (expressed between 0 and 100) of gaining 1 of that inventory item type.
 
* HardensAfterTimeStationary
 
**when an entity has this modifier, and has not moved under power, it shifts towards a dark gray color (maxing out when time not under power >= the value of this modifier)
 
**when its time not under power >= the value of this modifier, the ship cannot take damage
 
* StoreItemPrices
 
**if the player has this, it modifies all credit_cost values
 
* Inaccuracy
 
**When on a ship or a system, modifies that system's inaccuracy_spread.
 
*ShotsDriftTowardsHostileShips_Range
 
**if on a system, modifies shots_drift_towards_hostile_ships_range for that system
 
**if on an entity, does so for all systems on that entity
 
*ShotsDriftTowardsHostileShips_Speed
 
**if on a system, modifies shots_drift_towards_hostile_ships_speed for that system
 
**if on an entity, does so for all systems on that entity
 
*GravityTowardsEnemyShots_PullPerSecond
 
**only works on entity, modifies gravity_pull_per_second
 
**also effectively sets gravity_affects_shots to true
 
**use negative values for repulsion
 
*GravityTowardsEnemyShots_FalloffPerUnitDistance
 
**only works on entity, modifies gravity_falloff_per_unit_distance
 
**also effectively sets gravity_affects_shots to true
 
*CriticalHitChance
 
**Applies to the damage of shots generated by this entity/system, not to the entity itself
 
**If the result of this modifier is > 0, shots emitted by this entity or system have that percent chance (out of 100) of doing double damage on hit, and showing "Crit!" on the thing it hit
 
**Note that if this value winds up >= 100 every hit will be a crit
 
*CriticalHitDamage
 
**Applies to the damage of critical hit shots generated by this entity/system, not to the entity itself
 
**Base Critical Hit damage is 2
 
*TimeDilation
 
**when applied to an entity, makes that entity behave as if the simulation were going faster or slower
 
**so if you apply multiply,0.5 with this, the entity will act as if the simulation were going half as fast
 
**probably don't try giving this adds, or multiplying by zero or negatives
 
*AvoidDamageChance
 
**whenever the affected entity would take damage, it has this percent (out of 100) chance of taking zero damage instead
 
*LootFloorIndex
 
**if on the player, when the player gets loot, acts like the floor is more or less than it is (so adding 1 causes it to consider loot you'd normally only find on the next floor, etc)
 
*HealthGains
 
**modifies the impact of health pickups
 
*RoomWinLootChance
 
**modifies the base 10% chance of a room with after-win loot spots having those spots populated after a win
 
*NonBossEnemySpawnRate
 
**modifies the number of non-boss enemies spawned when a room is entered for the first time
 
**if this is less than 1 it randomly doesn't seed stuff on the corresponding % of spots
 
**if this is greater than 1 it randomly seeds more enemies on the existing spots (still obeying the normal ship category rules)
 
*DoubleItemGainChance
 
**Whenever you pick up something that gives a positive amount of some item, you have this chance of getting double.
 
  
 +
== Version 0.500 Ship Batch 7 of 7 ==
 +
(Released June 27th, 2017)
  
=== These require that "math" and "magnitude" be absent, as they're just on/off flags ===
+
=== New Ships! (Note That More Are To Come Pre-1.0, But Not Pre-Early-Access) ===
* ReflectsOffTerrain
 
**Comes back at the opposite angle it came in on.
 
* RicochetsOffTerrain
 
**Comes back at a different angle than it came in on (if it was a shallow angle of incidence, the angle of reflection is shallow, etc)
 
* IgnoresCollisionWithNonWallTerrain
 
**Passes through Shootable and Bombable obstacles, but not the Indestructible obstacles (look like walls) or the exterior wall that bounds the room.
 
* NonMeleeCannotFire
 
**Prevents all its normal weapons from firing; only the implicit on-touch-damage systems will work during the duration
 
* DestroysTouchingShootables
 
**If touches a shootable while this modifier is applied, that shootable is destroyed.
 
* DestroysTouchingBombables
 
**Same deal with bombables.
 
* IgnoresCollisionWithWallTerrain
 
**Passes through Indestructible obstacles (look like walls) and the exterior wall that bounds the room. Does not pass through shootables or bombables (but you can set that flag too)
 
* SystemDisabledAndInvisible
 
**System doesn't render or do anything while this is applied.
 
* PhasedOut
 
**entity draws at half alpha
 
**entity cannot be hit by shots
 
**entity is immune to damage
 
* Self_DestroyEnemyShots
 
**when on a shot, makes it behave like its firing system had shot_destroys_other_shots
 
* Self_NotDestroyedOnCollisionWithShip
 
**when on a shot, makes it behave like its firing system had shot_is_not_stopped_by_hitting
 
* SystemAutoFireDuringSprint
 
**while sprinting, if this system is on the player ship and would not normally be fired (its key isn't being held or whatever), it fires anyway and the shots are aimed directly behind the ship
 
* RevealsWholeMap
 
**when the player has this modifier, the whole map for the current floor is revealed; if the player still has this modifier after a floor transition it reveals that new floor as well
 
* RevealsShopsItemRoomsAndBossRoom
 
**similar to RevealsWholeMap, but just for shop, item, and boss rooms
 
* SystemCannotBeDropped
 
**if the player has this on their ammo system, they cannot pick up any item that would cause their ammo system to be destroyed or swapped out
 
***same deal with consumable system
 
***similar with main gun system (no pickups destroy it, but some can swap it out)
 
* CannotPickUpItems
 
**if the player has this, they cannot pick up any items
 
*SystemShotsInheritEntityMomentum
 
**Shots fired by a system modified with this inherit the momentum of the firing ship, and will continue to move in that direction (in addition to any other movement they would do) for their whole duration. Doesn't impact time-to-live, so firing in the direction of movement makes the shots travel further, etc.
 
*SteeringDisabled
 
**Prevents the entity from changing direction.
 
*MustGoAsFastAsPossible
 
**Forces the entity to go as fast as possible in whatever direction it's facing (probably best used with SteeringDisabled)
 
*TemporarilyGrantSystem
 
**Gives the entity this system. If this modifier expires for whatever reason, that system is removed.
 
*IgnoresLocks
 
**Only matters on the player. If present, the player does not need keycards to open locked doors or chests.
 
*HideMinimap
 
**Only works on the player. As long as this modifier remains on the player, the minimap will simply not be rendered.
 
*MovesTowardReticule
 
**Makes the ship or shot move towards the reticule at a speed and acceleration based on that entity. The effects are generally pretty wacky.
 
*GetAlternateLoot
 
**if on the player, when the player opens an unlocked chest they get loot as if it were a locked chest
 
*RevealsSecretHealthRooms
 
**if on the player, sacrifical shops are always known
 
*MinibossAndCondemnedBossSkipChance
 
**if on the player, when entering a miniboss/condemned room for the first time, the boss has this % chance of not seeding
 
*ReplacesEntityTypeWithItemsFromPool
 
**if this is on the player, when a room is populated, all (related_entity) seeded are replaced with something from (related_item_pool)
 
**if the item pool is none, it doesn't replace the entity, it just doesn't seed it
 
*IgnoresCollisionWithGlassAndOneWay
 
**an entity affected by this can pass through glass walls and one-way tiles
 
*ReplacesItemPoolWithOtherItemPool
 
**if this is on the player when the game is spawning an item from (related_item_pool) it instead pulls from (related_item_pool_2)
 
**only applies when game logic calls for seeding from a pool; if it just calls for seeding a specific entity type that happens to be in pool then that doesn't count
 
**if none, related_item_pool_2 is none, just skips seeeding the item rather than replacing it
 
*ReplacesShipCategoryWithOtherShipCategory
 
**if this is on the player when the game is spawning an enemy from (related_ship_category) it instead pulls from (related_ship_category_2)
 
**unlike the item pool one, this applies to specific-entity spawns as well as category-based spawns
 
**if none, related_ship_category_2 is none, just skips seeding the entity rather than replacing it
 
  
==FlockBehaviorType==
+
* The AI Master Controller is now armed.
*Attacker
+
** And its on-death behavior has changed.
** It comes chasing after you, but moving directly for you and not paying attention to walls. 
 
**Not going to work well in enclosed areas.  Once it gets in firing range it will stop, and it will move out of range if you get a bit closer to it.  It’s kiting you, basically.
 
* Stationary
 
** sits there without moving.
 
* Wanderer
 
** wanders around from point to point at random. 
 
** Changes direction when it hits an obstacle or wall, or when it goes a certain distance (defined below).
 
**Totally separate properties that are only relevant when using wanderer (so I’ll show them here):
 
***wander_distance_min (int)
 
***wander_distance_max (int)
 
***These two properties, default 300 and 600 respectively, say how far the enemy will move before considering changing directions (assuming it doesn’t hit something else first).
 
***In other words, when it starts moving it chooses a target that is rand(min,max) distance away.
 
* PathfindingAttacker
 
** More sophisticated tracking of you, trying to come after you. 
 
**Will collide with walls as if was 64x64 in size when in this mode, so big enemies using this may wind up seeming to go through impossible gaps if you use this on them.  Best for smaller enemies.
 
* LineOfSightAttacker
 
**Same as Attacker mode, but will move toward the player if it has line of sight on the player.  This will work well in any sort of space, but mainly for enemies that lurk.
 
**Note: has no impact on whether or not the entity's weapons fire. To make the weapons require LOS on the player use requires_line_of_sight_of_player_to_fire="true" on the weapon system(s).
 
* CardinalMover
 
**Moves around in the four cardinal directions only, turning in a new direction when it hits an obstruction.  If moves for 5 seconds with no collision, will potentially change direction.
 
**Totally separate property that is only relevant when using cardinal mover (so I’ll show it here):
 
***cardinal_mover_random_turn_interval (float)
 
***Default 5.  This is what sets the “if moves for x seconds with no collision, will potentially change direction” number.
 
* Zamboni
 
**travels up until it hits a wall
 
**then goes one tile right
 
**then goes down until it hits a wall
 
**then goes one tile right
 
**repeat
 
**if it ever hits a situation where it cannot go right, it repeats the above with "left" instead; and vice versa
 
* FamiliarFollower
 
**like Attacker
 
**on entity: familiar_follower_leash_distance (int)
 
***if this entity is at least this far from the player, it pathfinds to the player
 
***if this entity is pathfinding to the player, and is no longer at least this far from the player, that path order is cleared and it falls back on Attacker behavior
 
*FamiliarCreditGathering
 
**pathfinds to the credit drop that it has the shortest path to
 
**if it can't find a path to any credit drop it reverts to FamiliarFollower for the rest of the room (to avoid frequent path checks to all the inaccessible credit drops, if any)
 
**if it touches a credit drop, it does the normal player-picked-it-up logic
 
**on entity: familiar_credit_gatherer_does_something_every_x_credits (int)
 
***every time this entity's total gathered credits (in this room; familiar state is not retained between rooms) reaches this value, it does "something" (not yet defined)
 
*FamiliarRam
 
**like FamiliarFollower
 
**on entity: familiar_ram_charge_distance (int)
 
***if this entity is within this distance of a hostile target that it can hit, it pathfinds to that entity
 
***used in conjunction with a short-ranged attack with an aoe and the destroys_firing_entity flag, it can make a kamikaze ram; otherwise it can be given guns to harass the target
 
*FamiliarBeelineFollower, FamiliarAttacksTowardPlayer
 
**Basically the same, and works like FamiliarFollower but is more singleminded about reaching the player.
 
  
==InventoryItemType==
+
* Botnet Golem
*Energy
+
** As in AIWC, fires large salvos that cause victims, once dead, to become zombie units of the same type that attack their old enemies but do not take orders from anyone.
*Keycard
+
*** So these zombies (not the golem itself) are the first third-party or "special faction" units.
*Missile
+
** Unlike AIWC these shots are no longer insta-kill, but quite powerful nonetheless..
*Credit
+
** For now zombies just stay on then planet where they start, and FRD.
*HealthShard
 
*ExperiencePoint
 
  
==MathType==
+
* Devourer Golem
 +
** Special Faction unit, one is seeded somewhere on the map at the beginning of the game (if enabled in the lobby).
 +
** Attacks everything within range (except controllers/warp-gates), and generally wins. When it does damage, it gains a portion of it back in health, to keep it going on those long hauls through the AI's territory.
 +
** Randomly picks another planet somewhere on the map to go to.
 +
*** If you feel like reprogramming the galactic wrecking-ball, this routing code is in SpecialFaction_Devourer.DoLongRangePlanning()
 +
** When it reaches destination, rinse, repeat.
 +
** Good idea to not be wherever this thing is. Thankfully it's slow.
 +
** Will need rebalancing to avoid it causing a win/loss on its own (in the last test, it wandered through the AI Homeworld and took down the AI Master Controller singlehandedly), but we're working on an approach that doesn't involve unintuitive immunities.
  
*Add
+
* Zenith Dyson Sphere
**Just adds to whatever base value is there.
+
** Special Faction unit, one is seeded somewhere on the map at the beginning of the game (if enabled in the lobby).
*AdditiveMultiplier
+
** Unarmed, and immobile, but immensely hard to kill.
**Variant combination of Add and Multiply. All modifers with AdditiveMultiplier are added together beforing multiplying the value (applies after Add and before Multiply).
+
** Periodically produces units to go to other planets and attack enemies, similar to AIWC, but instead of the single "Dyson Gatling" unit type from AIWC it simply picks from a subset of the AI's MkV Guardians. You want to know how it got those guardians? You've seen that episode, right?
*Multiply
+
** Like in AIWC, the Dyson's units have different allegiances depending on who controls the Dyson's planet:
**Multiplies the result. Note: all multiply modifiers are applied AFTER all add modifiers.
+
*** If the AI controls that planet, the Dyson hates everyone.
*AddAfterMultipliers
+
*** If a player controls that planet, the Dyson hates everyone except the AI.
**similar to Add, but applied after multipliers rather than before
+
*** If no one controls that planet, the Dyson hates everyone except the players.
*Floor
+
** Unlike AIWC, the Dyson's preivously spawned units will automatically "update" to follow any changes to those allegiances.
**Prevents the result from being below this value, unless a Set modifier is used to make it so.
+
** Also, "hates everyone" now includes other special factions, like the Devourer and Zombies (which currently means that the Dyson's units will Nom your Botnet zombies even if it likes you; we'll probably change that later).
**If multiple Floor modifiers are involved in the same computation, the highest floor takes precedence.
+
** As in AIWC, the Dyson's units won't attack an AI controller/warp-gate. Still feels kind of lame, but the alternative is either uncontrolled AIP growth or potentially-tons-of free extra territory for the player. Suggestions welcome. It'd be fun to have factions like the Devourer and Dyson be unrestrained in their ruckus-causing, without throwing the player's game into continual chaos.
*Ceiling
+
** As with the Devourer, will need rebalancing to avoid eventually flooding the galaxy with special-faction guardians.
**Prevents the result from being above this value, unless a Set modifier is used to make it so.
 
**If multiple Ceiling modifiers are involved in the same computation, the lowest ceiling takes precedence.
 
*Set
 
**Sets the result to this value, completely ignoring the base value and any add or multiply modifiers.  
 
**If there's more than one Set modifier for a particular modifier type applying at once, the one with the lowest (non-negative) value takes precedence
 
***this allows for capping MaxHealth, where the thing that can override the cap is a lower cap
 
**doesn't work with negative values (that support can be added if necessary, but it didn't fit the framework naturally)
 
  
==AnchorLocation==
+
* Zenith Trader
*Center
+
** Special Faction unit, one is seeded somewhere on the map at the beginning of the game (if enabled in the lobby).
*Left
+
** Unarmed, but hard to kill.
*Right
+
** Randomly wanders the galaxy.
*Up
+
** When present on the same planet as your Ark, your Ark gets an extra build menu that lets it build things like Ion Cannons, Black Hole Machines, etc.
*Down
+
** Like AIWC, the trader is friendly to all factions, and all factions are friendly to it.
*UpLeft
+
*** Unlike AIWC, there's one exception: the Devourer knows the Trader is not to be trusted. We suggest making your Trader purchases before the two of them meet.
*UpRight
 
*DownLeft
 
*DownRight
 
*CenterLeft
 
*CenterRight
 
  
==ShaderType==
+
* Dire Guardians:
*Normal
+
** Dire Teuthida Guardian
*Additive
+
*** Spawns Teuthida drones, which zombify things they destroy.
*PartialBlend
+
** Dire Hunter Guardian
*Multiplicative
+
*** Spawns Hunter/Killers (this takes a long time for each one), which are actually stronger than the Hunter Guardian itself. An H/K's main weapon is called a "Plasma Torpedo Shotgun", which tells you all you need to know.
*InverseAdditive
 
*InverseAdditiveWithAlpha
 
*Experimental
 
*ExperimentalCutoff
 
*HSV
 
*HSVAdditive
 
*InverseSubtractive
 
*Graycolored
 
*Grayscale
 
  
==SystemSlotType==
+
=== Post-Processing Stack And Related ===
*None
 
*Energy
 
*Consumable
 
*Attachment
 
*MainGun
 
*Missile
 
*Incredibility
 
  
==EffectType==
+
* Upgraded to Unity version 5.6.2f1 from 5.6.1p1.
*RerollShopItems
+
** This introduces some bugfixes for windows and linux on the player side, and fixes a memory leak in the profiler for us on the editor side.
**Only works inside shops. Any items on the ground that still require purchasing are removed and replaced with other items the shop could normally roll.
 
**If related_item_pool is set to something other than none, the reroll uses that specified pool instead.
 
*ChangeCurrentHullHealth
 
**Changes (target)'s hull health by (magnitude). Can be positive or negative.
 
**You can use math="Set" with this to make it just set the health to that value rather than adding/subtracting.
 
*ChangeCurrentShieldHealth
 
**Changes (target)'s shield health by (magnitude). Can be positive or negative.
 
**You can use math="Set" with this to make it just set the health to that value rather than adding/subtracting.
 
*CopyModifiers
 
**Copies the modifiers defined as sub-nodes of this effect to (target)'s modifier list.
 
*CopyModifiersToWorldToAffect
 
**Similar to CopyModifiers, but instead of copying them to all currently existing entities in the target group (entities that come into existence after the CopyModifiers effect's execution are not impacted), it copies them to the world and all entities within the target group will check that global list whenever they need to compute something. In this way it affects all current and future entities in that group.
 
** The duration on the modifiers still works, whether timed or on-room-transition or on-floor-transition. The UntilWoken duration doesn't really mean anything here though.
 
*AddSystem
 
**Adds a random item from (related_systems) to each entity matching (targeting).
 
**This is an inherently permanent addition, as opposed to EntityModifierType.TemporarilyGrantSystem. So if you want the system to "expire" it will need is_destroyed_after_finite_uses or something like that.
 
*RemoveSystem
 
**Removes all systems of the types in (related_systems), if present, from each entity matching (targeting). Does not care how those systems came to be there, or what the consequences will be from removing them.
 
*SpawnEnemy
 
**Spawns a random pick from (related_entities) within (magnitude) of the related entity.
 
**Also gives that entity a momentum between (second_magnitude) and (third_magnitude) at a random angle, if second_magnitude > 0 and third_magnitude >= second_magnitude
 
**"the related entity" is the parent entity of the related system if applicable, or of the related entity otherwise, or just the player if neither of those is applicable.
 
*StartMovementDrivingPattern
 
**any target entity that isn't currently following bullet pattern logic starts following the first bullet in (related_pattern)
 
*ChangeCurrentInventory
 
**instantly changes the player's inventory of (related_item) by (magnitude) according to (math, default Add)
 
**normally EntityModifierType.InventoryChangePerSecond takes care of any need for this, but when you want to add an exact amount (like with the probation rewards) this avoids that modifier's imprecision.
 
  
==EffectTiming==
+
* As it turns out, the experimental post-processing stack v2.0 that unity has in beta and warned "don't use in a production environment" is indeed not ready for a production environment. ;)  Was worth a shot.
*OnUse
+
** The new 5.6.2f1 won't even build for DX11 on the version of the PP stack we were using, and it was causing strange graphical artifacts for at least one tester.
**For effects on a system. Means the effect happens every time the system is activated. So if it's a shot-firing system, that's when the shot is emitted, not when it hits whatever.
+
*** Thanks to 5ounds for reporting the strange seizure-strobes. ;)  
*OnRoomSwitch
 
**For effects on a system. Means the effect happens every time the player switches rooms.
 
*OnRoomSwitch_OnlyFirstTimeInRoom
 
**For effects on a system. Similar to OnRoomSwitch, but only applies the first time a given room is entered.
 
*OnModifierAdded
 
**For effects on a modifier. Means the effect happens once, when the modifier is added to an entity.
 
*OnModifierRemoved
 
**For effects on a modifier. Means the effect happens once, when the modifier is removed (for whatever reason, not specific to probation) from an entity.
 
*OnEnemyKilled_ByAnySystem
 
**For effects on a system. Means the effect happens every time this system's parent entity kills something.
 
*OnEnemyKilled_ByMe
 
**For effects on a system. Means the effect happens every time this system kills something.
 
*OnEntry
 
**For effects on a floor or on a (player) system. Means the effect happens once, when the player enters the floor.
 
*OnLeaving
 
**For effects on a floor or on a (player) system. Means the effect happens once, when the player leaves the floor.
 
  
==EffectTargeting==
+
* Yet AGAIN we've completely redone the post-processing stack.  What's up this time?
*Player
+
** We're using the FXAA implementation by Amplify Solutions, since that's quite battle-tested.
**Targets the player entity, regardless of where this effect is.
+
** We're using PRISM post-processing to handle some color grading, minor vignetting, and sharpening.  The difference in quality from the sharpening plus the FXAA is pretty notable even if you already had MSAA cranked up.  It all works in tandem.
*AllEnemies
+
** We've also returned to Amplify Bloom once again, since that just is unparalleled in terms of its overall quality and its ability to ensure temporal stability.  We've actually cranked up the temporal stability to an unusual degree, and have a much wider radius of faint bloom, so that we get a softer effect (it was getting pretty grating in recent versions) and so that also we get an effect that has a bit of a trail after bright sources because of the temporal delay.  Looks bad in setup scenes, looks great in battles.
*AllPlayerFamiliars
+
** One of the reasons that we had moved to the unity post-processing stack was that since it is free and open-source we could simply include that in the AIW2ModdingAndGUI project.  Other than the FXAA solution, these other bits are not open source.  But it's important to be able to see what you're actually going to get as a result in-game when you're making something in the AIW2ModdingAndGUI project... so we just compiled the non-editor code into our own dlls, and then removed the front-end editor code from that particular project.  Problem solved.
*AllShots
 
*AllEnemyShots
 
*AllPlayerShots
 
*Self
 
**Targets the parent entity of the related system, if any, or the related entity if there's no specific system
 
*AllNormalEnemiesAndShots
 
*NonCondemnedBossesAndShots
 
*AllAutoPickups
 
  
==ConditionType==
+
* Experimented around with Graphics Jobs again, which is a feature that we've tried on and off with unity.
*PlayerHasNoShields
+
** It's definitely causing a lower overall framerate in this particular game, and more choppiness, so we turned it back off and won't be including it.
*PlayerIsMoving
+
** Most likely this is because of all of the instancing that we do, and the fact that offloads a lot of the work of dynamic batching already.
*EntityIsAtFullHealth, EntityIsNotAtFullHealth
 
**If this effect is on a system, refers to that system's parent entity
 
**Otherwise, refers to the player
 
  
==BulletConditionalSpawnRule==
+
* Upgraded to Amplify Shader Editor v1.0.0.012, which adds a few new goodies for us and a couple of bugfixes.
*OnlyOnWindow
 
**if the spawn point is not on a window tile, the bullet does not spawn
 
*OnlyOnNonWindowSolid
 
**if the spawn point is on a window tile (or no tile at all), the bullet does not spawn
 
*OnlyInOuterSpace
 
**if the room's environment is not OpenSpace, the bullet does not spawn
 
  
==The Meaning Of Floor Numbers (Not Really An Enum)==
+
== Version 0.450 Sound! ==
* 1
+
(Released June 22nd, 2017)
** The first floor is always the easiest, and is the first one you visit.  Naturally.
 
* 5
 
** For some time, runs end after 5 floors.  After winning 10 runs, further floors open up.
 
** This floor has the "final" boss in it.
 
* 7
 
** This floor has the REAL final boss in it, but is only accessible after winning 10 of the shorter runs.
 
  
 +
=== Post-Processing Stack Revisions ===
  
[[Category:Starward Rogue]][[Category:Starward Rogue XML]]
+
* We completely redid our post-processing stack AGAIN, this time based on the not-yet-fully-stable (whee!) unity stack v2, which is still in development.
 +
** For reference, the version we're using https://github.com/Unity-Technologies/PostProcessing/tree/v2
 +
** Why use this?  Well, Chris was getting really sick of the over-done bloom that he was winding up with the older PP stack, and couldn't fix it with any settings he could use.  The newer PP stack has not only a better control over bloom, but also a much better auto-exposure tool.  The HDR tonemapping tool seems borked at the moment, but the auto-exposure tools is yielding better results for us than we got with the Neutral tonemapper in the PP stack v1 anyway.  Would have been nice to use ACES, but oh well.
 +
** With the new exposure correction, we've actually brightened things up a tad, and there's a hint of what you might think of as eye adaptation, although that's really more a factor of exposure averaging and is a very subtle effect.
 +
** We're also now using SMAA on the CPU side in addition to the pre-existing MSAA we use on the GPU side.  Previously we were not even using FXAA on the CPU side, though we were thinking about it.  TAA is now available in PP stack v2 in the Forward rendering path, which we're excited about, but it doesn't yield sufficiently crisp results yet.  So for the moment SMAA it is.
 +
** Why all this fuss over the post-processing stack?  Well... sometime soon we have to start doing screenshots that people will start showing around on websites and seeing on Steam, so it's pretty important that things look nice enough.
 +
 
 +
=== Sound Effects! ===
 +
 
 +
* We now have a bus-based sound mixing solution in place, based on unity 5's advanced mixing capabilities, but then expanding that even further.
 +
** In our case we're setting up both directional and 2D sound sources with custom falloffs, and a maximum number of "voices" per bus, and advanced customization for clusters of sound effects (time delay between individual sound effects playing, between sound effects for the whole cluster, and even failover to a different sound effect cluster if the first cluster is still on cooldown).
 +
** This allows for us to really tune and mix the sound the way that we want, including music ducking, and general sound ducking for various types of vocal audio.
 +
** This also allows for us to have voice commands that play, but not too frequently, and for them to "fail over" to other types of sound effects to indicate orders receipt when the voice command version is on cooldown.
 +
*** Thanks to qipoi for suggesting this functionality regarding the voice commands playback and failover.
 +
 
 +
* Hugely reworked our music pipeline, as part of our new sound pipeline in general, so that it's all now piped through a central audio mixer that supports audio ducking for the music and for other sound effects as-needed for things like voice alerts and things of that nature.
 +
** It also allows for us to have certain explosions just drown everything out in an impressive way, and in general allows us to do sound mixing by bus, which can be tuned in the AIW2ModdingAndGUI project.
 +
 
 +
* The game now has proper volume handling, which it didn't have before even for the music.
 +
** These volume settings are layered on top of the volume settings from the mixer, and it all gets translated over nicely.
 +
** Players simply select a volume between 0 and 100 for any particular type of sound that they want to adjust.
 +
*** Note that for turning off sounds or voice or music entirely, it's more efficient to simply use the toggles for those so it's not silently playing those sounds or music.
 +
** The types of sound that can be adjusted are:
 +
*** Master (affects literally everything, music, etc).
 +
*** Music (just affects music)
 +
*** Sound (affects all non-music sounds).
 +
*** Voice (just affects spoken voice lines).
 +
*** Combat (affects all the sounds of battle).
 +
** Given that the actual underlying bus volumes are in -80 to +20 dB ranges, where 0 is the default (unaltered) state, and we may have altered the bus defaults in the mixer itself...
 +
*** The game takes the inputs for the "volume" as a 0-200 range, then transforms that into a multiplier against the default volume of the bus.
 +
*** Specifically:
 +
**** If you choose 0 volume it just goes to -80, if you choose 100 it stays at the bus default, whatever that is.
 +
**** If you choose anything between 1 and 99, then it multiplies the inverse cube of the percentage of that by the starting volume of the bus.
 +
***** This helps to offset the logarithmic falloff of dB reduction from 0, and feels pretty natural.
 +
***** It does mean that since we're only using the cube, and not the fourth or fifth power, that in general things still go pretty unexpectedly extra quiet below 40% or so, though.  But this gives the most gradiations in the audible range.
 +
**** If you choose anything between 101 and 200, then it multiplies the flat percentage of that by the difference between the max (20 dB) and the starting volume of the bus, added to the starting volume of the bus.
 +
***** This gives a great deal of precision in making things slightly louder, but doesn't really hide the logarithmic rise where you have to go to 180% or so to get a really substantial (10dB or more on average) rise out of the result.
 +
***** Overall this isn't quite the most natural way to handle the volume siders above 100%, but it does give the most precisions, which is probably for the best.  And it's still easy enough to tune.
 +
 
 +
* There are now computery sound effects for giving attack, move, wormhole-path-move, and construction orders.
 +
** The ones for placing construction units are particularly satisfying. :)
 +
 
 +
* There are now sound effects that play when you alter your build queue, alter your control groups, "do some other general tweaks, mainly cheats," launch warheads (this one is cool), scrap units (careful of the heart attack), start hacking something, change into hold fire mode or out of it, toggle pause, and unlock a tech.
 +
 
 +
* There are now settings that allow you to mute various parts of the battle sound effects selectively (shots firing, shots hitting, ships exploding).  This might be useful to someone else, but it's also helpful for us in testing certain sounds without the mixing.
 +
 
 +
* All of the ships/structures in the game now have explosions set for when they explode.
 +
** They fall into 14 different categories of explosion sound effect, two of which are just for warheads.
 +
** There are then a further three twos of explosion sound effect that happen for ships that are not at the planet you are presently at, or when you are on the galaxy map.
 +
 
 +
* The game now uses a blend of 2D and 3D (spatial) audio, which is pretty typical for games that are in 3D.
 +
** Things that are "HUD sounds" or other non-point-source type sounds just play normally, as does music.
 +
** Things that are sound effects coming from a ship or a shot or an explosion have direction and attenuation based on their relative location to the camera.
 +
*** This makes it substantially quieter in the battle when you zoom way the heck out, which is nice, although different sounds are attenuated at different rates -- the explosions of ships dying attenuates a lot slower, for instance, so you can keep an ear on that easier.
 +
*** This is something that anyone can tune (in a modding sense) by adjusting the prefabs in the AIW2ModdingAndGUI/Assets/AudioPrefabs/Combat folder.
 +
**** The major settings to play with there are Max Distance (the furthest out the camera can zoom is 1200, for reference), and then the Spatial Blend and Spread values.  Having a Doppler level is also possible, but tends to give strange and muddy results.
 +
**** You can combine changes here with changes to AIW2ModdingAndGUI/Assets/AudioPrefabs/OfficialMixer (click into that object to get the mixer panel), if you like. 
 +
***** One thing Chris was considering, for instance, was making it so that WeaponsHitting had a max distance of 500, over which it would attenuate, and then increase the WeaponsHitting bus from -23dB up to something a lot more substantial.  You'd then have no sounds of shots hitting beyond 500 distance, but much louder sounds of that hitting when you are progressively closer than that.
 +
***** This isn't something you can mod and just keep modded all that easily at the moment, although you can make a copy of the mixer and then point your xml (using an override) to your mixer instead of ours.  The risk being that if we make a lot of changes to the sound buses, which is most likely now while they are new, then yours may stop working and you have to make a copy of.
 +
***** At any rate, mainly if you want to mess around with that and see if there are values that you feel like give a better result, we'd always be willing to take that sort of thing under advisement. ;)  We have BadgerBadger fixing bugs already, goodness.  But anyhow, the point being that it's open so that people from the community can fiddle and share their results with everybody if that is an area of their interest.
 +
 
 +
* There is now a set of sound effects for ships entering or exiting wormholes, as was the case in the first game.  These are neater, though.
 +
 
 +
* All of the various buttons in the game can now have a click_sound xml attribute set on them, to choose between sound effects for them to play when clicked.
 +
** This also applies to dropdowns, image buttons, button lists of various sorts, etc.
 +
** By default buttons all now play the sound effect "ButtonNormal" when clicked.  You can override this to silence if you need to for a given button that also plays a sound effect via a command that is executed, if you need.
 +
** A different sound effect, ButtonStartGame, is played when you start a new game or load an existing one.
 +
 
 +
=== Shot Visuals! ===
 +
 
 +
* The forcefields and the ship-to-ship lines have been moved into the modding and gui project so that anyone can edit them.
 +
** Improvements have been made to how the various lines look, from their shaders, while we were at it.
 +
 
 +
* All of the shot graphics have also been moved to the modding project, for the same reason.
 +
 
 +
* For now taking away the side-specific bullet colors.  Frankly this makes it a lot harder to differentiate bullets by type, which is more important.
 +
 
 +
* The armor-piercing bullets now have their real graphics, which is the pre-existing orange tracer shots, but made a lot shorter.
 +
** Note that the tracer-style shots are heavily affected (in terms of how long they are) by the speed at which they are moved.  So there are now three different variants for use in different speed scenarios.  This is super easy to mod if someone is changing around shot speeds dramatically and wants the shots to look similar to how they do at the current speed.
 +
 
 +
* All of the not-yet-done shots now use the old green-style enemy shots, to make those easy to spot and then fill in the real data for.
 +
 
 +
* FINALLY got a version of the fusion rocket shot visuals going that we're actually happy with.  It has to look nice, but not too close to the other stuff.  Exaggeratedly-large so you can see it, but not so much so that it's cartoony.  Nicely colored, but emissive and bright enough you can see it at a distance.  And on and on.
 +
** We experimented a ton with trail renderers in addition to the rocket, and having those be the things that are visible at far distances, but that wound up always looking too similar to the other trail renderers (when additive particle blending was used) or extremely chuggy on the CPU (when alpha particle blending is used and thus they needed to sort).
 +
 
 +
=== Misc ===
 +
 
 +
* Fixed bug where golems were not actually being seeded.
 +
** Thanks to BadgerBadger for reporting.
 +
 
 +
* Fixed a bug where it was possible for the map seeds auto-generated to be longer than the ones you can key in manually.
 +
** Thanks to BadgerBadger  for literally fixing the bug himself.
 +
 
 +
* Fixed a bug where hitting B selects additional build units.
 +
** Thanks to BadgerBadger  for literally fixing the bug himself.
 +
 
 +
* Put in a fix that definitely prevents keybinds from triggering while a textbox is focused (we've been able to test it now).
 +
** Thanks to BadgerBadger for reporting.
 +
 
 +
* Added a link to the external tutorial on the main menu.
 +
** Thanks to BadgerBadger for literally coding the addition!
 +
 
 +
* Put in a fix where squads should now properly change their ownership color if their current side doesn't match what their previous state was.
 +
 
 +
* An error message stating "Player data archive not found at `/home/user/AIWar2/AIWar2Linux_Data/data.unity3d`, using local filesystem[user@Desktop AIWar2]$" on startup on linux should no longer display.  It was harmless, but annoying.
 +
** Note we didn't get a chance to test this yet, but knock on wood it should work. ;)
 +
** Thanks to BadgerBadger for reporting.
 +
 
 +
* World_AIW2.Instance.QueueGameCommand now takes a second parameter that says if it should consider handling local audio/visual feedback of the command being sent.
 +
** Generally speaking almost everything in the AIWarExternalCode should have that as true, so that sound effects and such can be played as need in order to register that things have been accepted.  But things from the AI should always say false.
 +
 
 +
* Fixed a bug where every full-capacity squad with more than one ship in it was drawing an extra ship.
 +
** This doesn't fix isues with squads having more living ships than they should based on ships that died; that's a separate issue.
 +
** Thanks to BadgerBadger for reporting.
 +
 
 +
* The game now notices when there are more ships specified to be in a squad than the actual formation allows for, and complains.
 +
** This was affecting autocannon minidpods (40 requested, 25 available), laser gatlings (80 requested, 25 available), and minefields (80 requested, 25 available).
 +
** The game now has two new squad formations that have 48 and 100 scale-1 formation positions in them, for handling these cases.
 +
*** Note that we're going to work on vastly better formations in general later, and we welcome formation creation by players, too.
 +
 
 +
* Stumbled upon a fix to a moderate-to-severe performance bug in unity that was calling a lot of shuffling-around of gui elements that were not even moving.  It's a bug relating to them having a parent that is not at position 0, with details you can read about here if you like: https://issuetracker.unity3d.com/issues/canvasrenderer-dot-ontransformchanged-is-called-on-ui-objects-which-transforms-are-not-moving
 +
** In some cases this dramatically reduced stutter that was coming from the GUI.
 +
 
 +
* You can now actually name your savegames.
 +
** Thanks to BadgerBadger for literally coding the addition.
 +
 
 +
== Version 0.401 Ship Batch 6 of 7, And Gimbal Perfoooormance! ==
 +
(Released June 12th, 2017)
 +
 
 +
* The game console has now been fully moved to the AIW2ModdingAndGUI project (source code aside), and has been re-skinned using our own graphics and text mesh pro.
 +
**This may not have seemed like a high-priority thing to do, and indeed it was not in and of itself, but it validates a particular GUI creation workflow that we now have, as well as providing a concrete example for that type of GUI.
 +
*** Basically our existing GUI creation methodology is all based around xml creation of things and populating them certain ways.
 +
*** But now we can also take an entire GUI canvas, create it in the WYSIWYG unity editor in the AIW2ModdingAndGUI project, and then wire it up in a completely traditional-for-UGUI fashion and after that let it be triggered from the dynamic GUI.  These are even loaded using the existing "gui prefabs" logic that the xml-oriented GUI uses.
 +
** The end result is just as performant in both cases (and basically identical), and so mainly the question is of which approach is easier for a given piece of the GUI.  There's no one right answer.  Even the xml-oriented version is using prefabs that have a bunch of nested stuff, but this is just taking it to a completely other level of having the entire canvas/window populated.
 +
*** At any rate, being able to do this now and having an example of how to do it was well worth the time in this particular build.  It should open up options better for the upcoming GUI revisions.
 +
 
 +
* A massively new way of drawing the "sprite gimbals" over squads in the game is finally complete.
 +
** We tried a variety of approaches, but for various reasons dynamic batching, instancing, and so forth all yielded subpar results when individual sprites were made up of often up to 6 sub-parts (main icon, border, flair, mark level, and health bar).
 +
** We're now baking the sprites into meshes prior to them ever being instanced, which cuts the graphics load of the gimbals to around a sixth of what they previously were.
 +
** That said, the sprites themselves still need to be instanced even after being baked, and to do that we need a single mesh for all the types for the most part.  So we're hiding data in the uv2 and uv3 channels that let us know which instance properties to conditionally apply to which vertices, which in turn lets these things colorize themselves (via HSV shift) as needed.  But since not everything needs to be colorized, our new ubershader for the baked group is now actually more efficient than before, making the savings more than a drop to 1/6th of the previous load from this source.
 +
** Performance improvements in this area might not seem like that big a deal, but on a GTX 1070 with 5k ships on the screen, the icons were approximately half of the visual load.  Facepalm, right?  So this has been a big priority.
 +
** The downside of the new approach would seemingly be that now these icons are harder to edit, though, if someone wants to mod.  Bummer... except that it's just as easy as ever! :D
 +
*** We've created editor tools in the AIW2ModdingAndGUI project that allowed us to merge meshes, set the uv2 and uv3 channels properly, and so on.  You can re-bake the meshes as desired, and we can do so quite easily as well.  You can't do it by xml anymore, but that's a pretty small thing.
 +
 
 +
* Fixed a bug in the prior build where the gimbal icons no longer reacted to player mouse hovering or clicking.
 +
** This was because of the changes in the hierarchy of pieces of squad parts in the last version.
 +
** Thanks to TheVampire100 for reporting.
 +
 
 +
* When you are placing ships/structures on the map, there's now a filled circle that shows the radius of the footprint that ship will take up.  It then also shows the icon of the ship in white over where the footprint is.
 +
 
 +
* Fixed an issue where the missile turret was not assigned its flair properly.
 +
 
 +
* The game now automatically checks its models for missing materials, or materials not set up for instancing.
 +
** There were then a number of ships that we fixed that on so that they have instancing set up properly.
 +
 
 +
* The font_size property now actually works on the new text labels in the game (not buttons or anything else presently).
 +
 
 +
* The game now has icons for the various resources, which can be inserted into text with <sprite> tags from text mesh pro.
 +
** Unfortunately the process for getting those in there requires the creation of sprite dictionaries embedded in the main game Resources folder at the moment.  We will likely alter that at a future time, but for now that's stuck.
 +
** The process for getting new sprites in there is pretty convoluted in general at the moment, to be honest, so that's again something we'll have to work on later.  But it does work, and it does perform well!
 +
 
 +
* Fixed a bug where "dfgdfg" would show briefly as the planet name in the prior build.
 +
** Thanks to BadgerBadger for reporting.
 +
 
 +
* Updated to Amplify Shader Editor v1.0.005, which has a number of new features and some at least minor performance improvements.
 +
 
 +
* Fixed an issue with the AI Warp Gates not having their mechanical parts rotating properly.
 +
 
 +
* Put in some code to automatically tell us when our animators have messed up.
 +
 
 +
* The game now has a nice fade-in effect whenever you're switching planets or in and out of the galaxy map, making things feel more polished.
 +
 
 +
* Fixed a problem with the mod support where every dll had to define a type which implemented the IInitialSetupForDLL interface, and further required a specific naming convention for that type.
 +
** Now when loading a dll it looks at all types exported from it and runs the RunInitialSetup() of each IInitialSetupForDLL it finds.
 +
** If it doesn't find any, it won't mind.
 +
** Thanks to Draco18s for reporting.
 +
 
 +
* The very low end of the camera zoom now has a few more gradations where it shows more of a side-facing view, and then the very lowest zoom level actually looks back UP slightly, allowing you to see tall ships and structures better, and in general get a little more cinematic of a view.  This has no effect on the higher zooms.
 +
** Thanks to BadgerBadger for inspiring this change.
 +
 
 +
=== New Ships ===
 +
 
 +
* Bonus Fleet Ships:
 +
** Vampire Claws
 +
*** Cloaked melee ships that heal themselves when they do damage.
 +
** Vorticular Cutlasses
 +
*** Melee ships that damage themselves when they do damage (when balanced, their dps will be much higher than vampire claws, for example).
 +
** EtherJet Tractors
 +
*** Cloaked Jets with Tractors. What could go wrong?
 +
 
 +
* Dire Guardians:
 +
** Dire Warp Beacon Guardian
 +
*** The AI can always send waves to the planet this guardian is on, and if it is on alert this is likely to happen.
 +
*** Not to be confused with the Dire Warp Bacon Guardian (despite internal typos to the contrary), partner-in-crime to the Pancake Golem.
 +
** Dire Commander Guardian
 +
*** Increases reinforcements sent to the planet it is on.
 +
*** Triggers waves (like a raid engine) while this is on alert.
 +
** Dire Shredder Guardian
 +
*** Internally constructs and launches shredder drones (vicious little melee ships).
 +
 +
* Guardians:
 +
** Vampire Guardian
 +
*** Can be very hard to kill if you don't kill it quick, because of its ability to heal itself from doing damage.
 +
** Implosion Guardian
 +
*** The Dire Implosion Guardian's little (and far more common) brother. They're a real pain in the rear if you're a golem...
 +
 +
* Golems:
 +
** Seeded like Flagships, you find these, clear their planets, and claim/repair them to gain control of them.
 +
** Unlike flagships, these are rarer, claiming them costs AIP, and they don't have the quasi-Ark functions for building/repairing/etc. Instead, they're considerably more beastly than Flagships and some have unique abilities.
 +
** Armored Golem
 +
*** Short-range brawler.
 +
** Artillery Golem
 +
*** Long-range sieger.
 +
** Black Widow Golem
 +
*** Massive paralyzing-tractor capacity, and does engine damage with its shots.
 +
*** The "if you move while tractoring something, it moves with you" logic has also been implemented.
 +
** Regenerator Golem
 +
*** Regenerates ships you lose on its planet, at the cost of some of its own health.
 +
** Cursed Golem
 +
*** Has powerful fast-firing railcannon, but damages itself in proportion to the damage done.
 +
** Hive Golem
 +
*** Internally constructs hive drones, which it launches in large groups against any threat on the planet.
 +
 
 +
== Version 0.400 Usability and the GUI Pipeline ==
 +
(Released June 6th, 2017)
 +
 
 +
=== Usability Improvements ===
 +
* Reorganized the bottom menu to better emphasize the function most people expect from the number keys in strategy games with real-time simulation. Namely: control groups.
 +
** So now the 1-9 buttons along the bottom of the screen are the control groups 1-9.
 +
** And the 10th button (button 0) is a "Menu" button that opens the master menu that used to be there.
 +
*** Though that no longer has the "commands" sub-menu.
 +
** If you have a selection, the game shows the commands menu (as a bar instead of a stack) above the bottom bar, and the 0-9 keys map to that instead of control-groups/menu.
 +
*** And backspace will cancel your selection (if you have no deeper foldouts), thus returning you to the bottom-bar context.
 +
** The upshot is that if you select your Ark, you'll see a "Build" button in the command bar at the bottom of the screen, among other things an Ark can do. Similar with other unit-producing things.
 +
 
 +
* The buttons in the command menu (now shown whenever you have a selection) now are only visible if they can be executed with the current selection:
 +
** FRD only shows if there's a mobile military ship.
 +
** Scrap only shows if there's a non-Ark.
 +
** Build only shows if there's exactly one type of builder unit.
 +
** Hacking and Warheads only shows if there's the Ark.
 +
 
 +
* Added some direct keybinds for the sake of near-term sanity:
 +
** P
 +
*** Toggles pause.
 +
** B
 +
*** Selects a builder unit on the planet and opens the build menu.
 +
*** If a builder is already selected, selects the "next" builder, if any.
 +
** T
 +
*** Opens the tech menu.
 +
*** If tech menu is already open, closes all menus.
 +
** Escape
 +
*** Opens the system menu (save/load).
 +
*** If system menu is already open, closes all menus.
 +
** Space
 +
*** Closes all menus.
 +
** You can change any of the above in your inputmappings file.
 +
 
 +
=== Visuals And Moddability ===
 +
* TextMesh Pro has now been integrated into the game (version 1.0.55.56.0b9). We have the paid version, but we're using the free version so that we can include it with the ModdingAndGUI project.
 +
** This lets us do a lot more advanced text rendering at no extra performance cost, as well as giving us basic functionality like proper kerning.
 +
 
 +
* The first place we've set to using TMPro is the galaxy map, where now the text is both in a better font as well as a lot more readable.
 +
** The actual places where the fonts are set up for the galaxy map, and things are oriented around planets, is now also in the ModdingAndGUI project so that it can be edited by folks as desired.
 +
 
 +
* Darkened all of the new skyboxes to fit with the new HDR rendering.
 +
 
 +
* Made it far easier for people to edit skyboxes quickly, thanks to a new button in the header of the skybox editor.
 +
 
 +
* The ruined network nodes now have proper graphics.
 +
 
 +
* The advanced starship constructor now has proper graphics and animation now.
 +
 
 +
* Dropdowns in the game are now actually fully skinned for the first time, making them consistent with the rest of the GUI.
 +
** They also use the TMPro text to show their text, making their text sharp, too.
 +
** Their scrolling speed is also finally reasonable when you use the mouse wheel, too.
 +
 
 +
* The fortress and experimental fabricator now both have proper graphics implemented.
 +
 
 +
* We've done EXTENSIVE improvements to the GUI system, with a whole new GUI pipline that is massively more efficient.
 +
** Some more details are here: http://arcengames.com/ai-war-2-v0-400-released-usability-and-the-gui-pipeline/
 +
 
 +
* The sidebar is back, as well, even though it doesn't look great yet.
 +
 
 +
=== Misc ===
 +
* Fixed a bug where saves triggered in the save menu could happen while some changes to gamestate were still ongoing, leading to the data being saved in an inconsistent (and sometimes non-loadable) fashion.
 +
** Also added a warning message that will show if this particular corruption happens again, though it shouldn't be able to.
 +
** Thanks to BadgerBadger for the report and save.
 +
 
 +
* Fixed a bug that could cause a hang in the mapgen logic.
 +
** Thanks to drspikes and BadgerBadger for reporting.
 +
 
 +
* Fixed a bug where various internal tech-groupings were showing as selectable menus (ironically named "Not Shown").
 +
** Thanks to BadgerBadger for reporting.
 +
 
 +
* When there is invalid data somewhere on trying to load a ship that does not exist, the game now does a better job telling you what the heck is happening. This would mainly be something helpful to modders and us devs.
 +
 
 +
* Put in massive numbers of performance improvements in how the GUI interfaces with unity.
 +
 
 +
* Put in a bunch of new error checking on the GUI side, so that if things are set up wrong at any point, it now yells instead of failing silently.
 +
 
 +
* Tractor turret tractor-multiplier from 30 => 3.35, which is slightly more than enough for one squad of MkI tractors to indefinitely hold one cap (10 squads) of MkI fighters. Previously it could hold... more. A lot more.
 +
** Tractor effectiveness is also now reduced by the tractor turret "squad" taking losses.
 +
 
 +
* Put in some logic to prevent minor gc allocs related to the galaxy map when you're not viewing the galaxy map.
 +
 
 +
* Fixed a bug in the last couple of versions where ship animations were not always playing when there were a ton of ships on a planet.
 +
** Thanks to BadgerBadger for reporting.
 +
 
 +
* Bunches of performance improvements have been made to the movements of squads and their icon gimbals.
 +
 
 +
== Version 0.301 The New HDR Visual Stack ==
 +
(Released May 30th, 2017)
 +
* Engine Damage Repair has been implemented.
 +
** Works similarly to hull/shield repair, but does not actually cost metal.
 +
 
 +
* Changed balance_seconds_per_fight to 15 from 20, and balance_seconds_per_shot to 2 from 4, massively speeding up the feeling of combat from what it felt like in the prior version. It's now much more like what it was in past versions, without having such bullet spam in giant battles that there's a bunch of slowdown.
 +
** Thanks to BadgerBadger for reporting.
 +
 
 +
* Fonts are now sharper in the GUI, although there's still room for improvement. Blurriness causing legibility problems is a definite issue to some extent still.
 +
** We've also updated the font on the small buttons at the bottom of the screen to be more readable, although we still want to update that even further in the future.
 +
** Thanks to Sounds and BadgerBadger for reporting.
 +
 
 +
* New backgrounds for dropdowns.
 +
 
 +
=== HDR Graphics! ===
 +
* We had thought this wouldn't be possible with our visual style as recently as one version ago, but it turns out it is!
 +
** Also, prior to version 5.6 of unity, it ''literally'' wasn't possible at all, at least not without losing hardware MSAA support (which is the best sort of antialiasing available these days, and fastest).
 +
 
 +
* The game now uses HDR graphics for the main camera, allowing for a better color range and fancier lighting effects, etc.
 +
** One of the most obvious examples is the way the rings on the end of the laser turrets glow very bright blue now, whereas before they would white out fast and so we had to keep them pretty non-bright.
 +
 
 +
* We're using a new reflection cubemap against our scenes, and have tuned a ton of the materials to have better values to give themselves really high quality results without an over-blown specular highlight at certain angles to the main scene directional light.
 +
** Kinda related to this, we're doing new tonemapping now, which maps back down from HDR to the LDR range better, and helps give us a richer color without things having to be so darn glowy _everywhere_.
 +
 
 +
* The bloom effects have been completely replaced with another set, which is able to use a lot more precision in what it does.
 +
 
 +
* The game now uses the bloom and tonemapping from the relatively-new [https://www.assetstore.unity3d.com/en/#!/content/83912 official unity postprocessing uber-stack].
 +
 
 +
==== Known Issues ====
 +
* Thanks to the tonemapping, the backgrounds are presently too bright relative to the ships. We simply didn't have time to get to that, and didn't want to hold up the rest of this release over that.
 +
 
 +
==== AIW2ModdingAndGUI Capability Updates! ====
 +
* Since this [https://www.assetstore.unity3d.com/en/#!/content/83912 unity postprocessing uber-stack] is freely available, and even open source at that, we're now able to show you actually what ships would really look like in the real game when you are working in the AIW2ModdingAndGUI project.
 +
** This is enormously important in particular for being able to reliably set up the space nebula backgrounds, which have their characteristics altered some by the post-processing stack and which you need to be able to see in order to properly create them.
 +
** As part of this, we're no longer using Amplify Bloom or Beautify.
 +
** Also as part of this general work, we've updated all the various shaders and ship models and materials in the examples folder there.
 +
 
 +
* To aid in background creation, as well as in general giving more examples of ships and how their shaders are used, there are a bunch of new ships that have been added to the example project: data center, lightning corvette, mlrs corvette, spider, and starship constructor.
 +
 
 +
=== Bugfixes ===
 +
* Fixed a bug in the improvements to shot staggering that caused divide-by-zero errors when the game was paused (because it actually runs zero-length frames during that time so the game can still respond to you).
 +
** Thanks to BadgerBadger for reporting.
 +
 
 +
* Fixed a variety of errors that could happen with accidental extra calls to clean up objects (those extra calls are GOOD, since they often are coming from a few sources that need to double check things properly). This should also help performance minorly when objects are destroyed compared to pre-0.300 versions.
 +
** Thanks to BadgerBadger for reporting.
 +
 
 +
* Fixed some bugs that could prevent shield repair.
 +
** Thanks to BadgerBadger for the report and save.
 +
 
 +
* The sidebar is removed temporarily, since it was so busted anyway and overlapping things strangely.
 +
** Thanks to BadgerBadger for reporting some of the related issues it was having.
 +
 
 +
* Fixed some bugs that caused the build menu buttons to collapse into a pile in the bottom-left of the screen.
 +
** Thanks to BadgerBadger for reporting.
 +
 
 +
* Reworked the "Quit Game" button on the master menu to no longer be a "immediately chuck the gamestate into the grinder" function, but rather "tell the game that once it's done executing the current sim frame to close the gamestate". This avoids various race-condition null exceptions when quitting while the sim threads are going.
 +
** Thanks to BadgerBadger for reporting.
 +
 
 +
* Improved the inter-cluster connection logic of Clusters to be much less likely to draw long connections that overlap other clusters.
 +
** Thanks to BadgerBadger for reporting.
 +
 
 +
== Prior Release Notes ==
 +
[[AI War 2:Earlier Than Early Alpha]]

Revision as of 11:24, 5 July 2017

Starting State

Okay! We've extended the alpha period beyond what we had originally intended, but we're going ahead and giving out the Early Access keys to kickstarter backers on the date we originally specified. Meanwhile, we're pushing the date for early access back. That link explains a lot of the reasons.

If you're one of the many who struggle with playing the game such an incomplete state, check out the instructions

We also have a blog at https://blog.arcengames.com for dev diaries and other fun topics.

Also, here's Chris's todo list.

And here's what we've been doing for the last few months

Known Issues

  • The interface in general is horrible, and you need to go into the PlayerData folder and edit your settings file manually if you want to make settings changes.
  • Various ships are implemented but don't have real graphics, so they just show a little "rock" instead where the ship graphic would be. You can still see the ship icon and whatnot just fine.
  • All ship shot types use the same graphics right now.
  • Only some of the sound effects are in, and only a couple of music tracks.
  • Particle effects are also limited.
  • Ships currently just sit there in their squads, rather than flying around within their squads.
  • Balance needs a lot of attention, with your help.
  • There's no tutorial yet, and there's basically not much in the way of a lobby beyond map types and seed. You can't choose your player color yet, even.
    • Compared to the actual gameplay mechanics, we felt like these were ancillary things, but they are coming up in importance sooner than later.

What Is The Purpose Of This Phase?

Short Answer: To make the game fun, which it is not yet. Please don't fret on that!

Long Answer: There's still a lot to do on the game obviously, as stated in the last blog post. But there's a lot of good stuff here to tinker with now, and we're really looking forward to having more people bashing on it. It's not a "fun, balanced game that just needs some polish" yet, but it will be really useful for us to have more people finding the pain points both in the interface (which is currently atrocious) and the actual gameplay flow (which, from a macro standpoint, is still pretty immature).

The underlying technology and components for making a fun game are here, and that'd a very critical step towards it being a fun and balanced game, but that's not where we are just yet. In a lot of respects we kind of reordered things: the underlying tech is somewhat more advanced and more polished than we had anticipated at this point, and that is pretty important because it gives us a better idea of what we CAN do in the engine. It gives us a better bounding-box for setting up things so that we can build an interface around what is possible, and have the scale of battles reflect what is possible performance-wise, and so forth. On that front, I'm super happy with where we are.

But yeah, the next step is to finish implementing the last of the "before early access" ships, and then to actually make a GUI that isn't eye-gouging as well as a game flow that doesn't have any obvious deficiencies. Right now there are some notable concerns about parts of the game flow regarding how you don't really need to keep territory as much as in the first game, and certain other bits of the feel from a strategic standpoint are "off." Some of that is just because xyz AI feature maybe isn't in place yet, but other pieces are more about the design of certain ships or mechanics. These are things we want to iron out before we go full-Early-Access, and we need the help of folks like you to do so. We're trying to streamline certain aspects of the first game, but we don't want to do that at the expense of what made the original game cool.

The engine for this one is so flexible that we could just recreate most of what the first game was if we felt like it, but we'd really rather not for a variety of reasons that should be apparent to anyone who tried to get into the first game and bounced off it, or who played the first game for a huge number of hours but wanted certain fundamental improvements. Now that all the basic frameworks are getting in place here, we're at a point where we can start thinking about those things.

Version 0.501

(Not yet released -- we're still working on it!)

Note that this one is going to be a little slower coming, just because of some life stuff going on. Other than that we theoretically should be moving into quicker release cycles. ;)

  • Adjusted the shader to try and lighten the Experimental Fabricator model a bit.
  • Added the attribute " y_offset_of_icon="20" " to the fortress xml entry to help with the flickering issue.
  • Adjusted the radii on several ships and turret types to help with overlapping selection boxes.
  • Added "Start With First Planet" toggle button to the lobby, defaults off. If on:
    • The planet you start on begins with the controller and resource spots under your control.
    • There's no initial AI presence on the planet you start on.
    • Your Ark starts next to the controller on that planet instead of near the edge of the grav well.
    • Your starting AIP is what it would have been after conquering the first planet.
    • Thanks to... well, everyone, for letting us know that fighting that first battle every time got old.
  • As framework for the start-with-first-planet option, the "Conduct" table has been moved out to external XML. It's basically just a boolean value you can check for in mapgen or whatever other external logic, but you can also add arbitrary per-sim-step logic if you like. Whether it works or not is up to you, of course, but it's a pretty flexible hook.
  • Fixed a number of issues that were preventing your "last game lobby settings" from persisting across executions of the application.

Version 0.500 Ship Batch 7 of 7

(Released June 27th, 2017)

New Ships! (Note That More Are To Come Pre-1.0, But Not Pre-Early-Access)

  • The AI Master Controller is now armed.
    • And its on-death behavior has changed.
  • Botnet Golem
    • As in AIWC, fires large salvos that cause victims, once dead, to become zombie units of the same type that attack their old enemies but do not take orders from anyone.
      • So these zombies (not the golem itself) are the first third-party or "special faction" units.
    • Unlike AIWC these shots are no longer insta-kill, but quite powerful nonetheless..
    • For now zombies just stay on then planet where they start, and FRD.
  • Devourer Golem
    • Special Faction unit, one is seeded somewhere on the map at the beginning of the game (if enabled in the lobby).
    • Attacks everything within range (except controllers/warp-gates), and generally wins. When it does damage, it gains a portion of it back in health, to keep it going on those long hauls through the AI's territory.
    • Randomly picks another planet somewhere on the map to go to.
      • If you feel like reprogramming the galactic wrecking-ball, this routing code is in SpecialFaction_Devourer.DoLongRangePlanning()
    • When it reaches destination, rinse, repeat.
    • Good idea to not be wherever this thing is. Thankfully it's slow.
    • Will need rebalancing to avoid it causing a win/loss on its own (in the last test, it wandered through the AI Homeworld and took down the AI Master Controller singlehandedly), but we're working on an approach that doesn't involve unintuitive immunities.
  • Zenith Dyson Sphere
    • Special Faction unit, one is seeded somewhere on the map at the beginning of the game (if enabled in the lobby).
    • Unarmed, and immobile, but immensely hard to kill.
    • Periodically produces units to go to other planets and attack enemies, similar to AIWC, but instead of the single "Dyson Gatling" unit type from AIWC it simply picks from a subset of the AI's MkV Guardians. You want to know how it got those guardians? You've seen that episode, right?
    • Like in AIWC, the Dyson's units have different allegiances depending on who controls the Dyson's planet:
      • If the AI controls that planet, the Dyson hates everyone.
      • If a player controls that planet, the Dyson hates everyone except the AI.
      • If no one controls that planet, the Dyson hates everyone except the players.
    • Unlike AIWC, the Dyson's preivously spawned units will automatically "update" to follow any changes to those allegiances.
    • Also, "hates everyone" now includes other special factions, like the Devourer and Zombies (which currently means that the Dyson's units will Nom your Botnet zombies even if it likes you; we'll probably change that later).
    • As in AIWC, the Dyson's units won't attack an AI controller/warp-gate. Still feels kind of lame, but the alternative is either uncontrolled AIP growth or potentially-tons-of free extra territory for the player. Suggestions welcome. It'd be fun to have factions like the Devourer and Dyson be unrestrained in their ruckus-causing, without throwing the player's game into continual chaos.
    • As with the Devourer, will need rebalancing to avoid eventually flooding the galaxy with special-faction guardians.
  • Zenith Trader
    • Special Faction unit, one is seeded somewhere on the map at the beginning of the game (if enabled in the lobby).
    • Unarmed, but hard to kill.
    • Randomly wanders the galaxy.
    • When present on the same planet as your Ark, your Ark gets an extra build menu that lets it build things like Ion Cannons, Black Hole Machines, etc.
    • Like AIWC, the trader is friendly to all factions, and all factions are friendly to it.
      • Unlike AIWC, there's one exception: the Devourer knows the Trader is not to be trusted. We suggest making your Trader purchases before the two of them meet.
  • Dire Guardians:
    • Dire Teuthida Guardian
      • Spawns Teuthida drones, which zombify things they destroy.
    • Dire Hunter Guardian
      • Spawns Hunter/Killers (this takes a long time for each one), which are actually stronger than the Hunter Guardian itself. An H/K's main weapon is called a "Plasma Torpedo Shotgun", which tells you all you need to know.

Post-Processing Stack And Related

  • Upgraded to Unity version 5.6.2f1 from 5.6.1p1.
    • This introduces some bugfixes for windows and linux on the player side, and fixes a memory leak in the profiler for us on the editor side.
  • As it turns out, the experimental post-processing stack v2.0 that unity has in beta and warned "don't use in a production environment" is indeed not ready for a production environment. ;) Was worth a shot.
    • The new 5.6.2f1 won't even build for DX11 on the version of the PP stack we were using, and it was causing strange graphical artifacts for at least one tester.
      • Thanks to 5ounds for reporting the strange seizure-strobes. ;)
  • Yet AGAIN we've completely redone the post-processing stack. What's up this time?
    • We're using the FXAA implementation by Amplify Solutions, since that's quite battle-tested.
    • We're using PRISM post-processing to handle some color grading, minor vignetting, and sharpening. The difference in quality from the sharpening plus the FXAA is pretty notable even if you already had MSAA cranked up. It all works in tandem.
    • We've also returned to Amplify Bloom once again, since that just is unparalleled in terms of its overall quality and its ability to ensure temporal stability. We've actually cranked up the temporal stability to an unusual degree, and have a much wider radius of faint bloom, so that we get a softer effect (it was getting pretty grating in recent versions) and so that also we get an effect that has a bit of a trail after bright sources because of the temporal delay. Looks bad in setup scenes, looks great in battles.
    • One of the reasons that we had moved to the unity post-processing stack was that since it is free and open-source we could simply include that in the AIW2ModdingAndGUI project. Other than the FXAA solution, these other bits are not open source. But it's important to be able to see what you're actually going to get as a result in-game when you're making something in the AIW2ModdingAndGUI project... so we just compiled the non-editor code into our own dlls, and then removed the front-end editor code from that particular project. Problem solved.
  • Experimented around with Graphics Jobs again, which is a feature that we've tried on and off with unity.
    • It's definitely causing a lower overall framerate in this particular game, and more choppiness, so we turned it back off and won't be including it.
    • Most likely this is because of all of the instancing that we do, and the fact that offloads a lot of the work of dynamic batching already.
  • Upgraded to Amplify Shader Editor v1.0.0.012, which adds a few new goodies for us and a couple of bugfixes.

Version 0.450 Sound!

(Released June 22nd, 2017)

Post-Processing Stack Revisions

  • We completely redid our post-processing stack AGAIN, this time based on the not-yet-fully-stable (whee!) unity stack v2, which is still in development.
    • For reference, the version we're using https://github.com/Unity-Technologies/PostProcessing/tree/v2
    • Why use this? Well, Chris was getting really sick of the over-done bloom that he was winding up with the older PP stack, and couldn't fix it with any settings he could use. The newer PP stack has not only a better control over bloom, but also a much better auto-exposure tool. The HDR tonemapping tool seems borked at the moment, but the auto-exposure tools is yielding better results for us than we got with the Neutral tonemapper in the PP stack v1 anyway. Would have been nice to use ACES, but oh well.
    • With the new exposure correction, we've actually brightened things up a tad, and there's a hint of what you might think of as eye adaptation, although that's really more a factor of exposure averaging and is a very subtle effect.
    • We're also now using SMAA on the CPU side in addition to the pre-existing MSAA we use on the GPU side. Previously we were not even using FXAA on the CPU side, though we were thinking about it. TAA is now available in PP stack v2 in the Forward rendering path, which we're excited about, but it doesn't yield sufficiently crisp results yet. So for the moment SMAA it is.
    • Why all this fuss over the post-processing stack? Well... sometime soon we have to start doing screenshots that people will start showing around on websites and seeing on Steam, so it's pretty important that things look nice enough.

Sound Effects!

  • We now have a bus-based sound mixing solution in place, based on unity 5's advanced mixing capabilities, but then expanding that even further.
    • In our case we're setting up both directional and 2D sound sources with custom falloffs, and a maximum number of "voices" per bus, and advanced customization for clusters of sound effects (time delay between individual sound effects playing, between sound effects for the whole cluster, and even failover to a different sound effect cluster if the first cluster is still on cooldown).
    • This allows for us to really tune and mix the sound the way that we want, including music ducking, and general sound ducking for various types of vocal audio.
    • This also allows for us to have voice commands that play, but not too frequently, and for them to "fail over" to other types of sound effects to indicate orders receipt when the voice command version is on cooldown.
      • Thanks to qipoi for suggesting this functionality regarding the voice commands playback and failover.
  • Hugely reworked our music pipeline, as part of our new sound pipeline in general, so that it's all now piped through a central audio mixer that supports audio ducking for the music and for other sound effects as-needed for things like voice alerts and things of that nature.
    • It also allows for us to have certain explosions just drown everything out in an impressive way, and in general allows us to do sound mixing by bus, which can be tuned in the AIW2ModdingAndGUI project.
  • The game now has proper volume handling, which it didn't have before even for the music.
    • These volume settings are layered on top of the volume settings from the mixer, and it all gets translated over nicely.
    • Players simply select a volume between 0 and 100 for any particular type of sound that they want to adjust.
      • Note that for turning off sounds or voice or music entirely, it's more efficient to simply use the toggles for those so it's not silently playing those sounds or music.
    • The types of sound that can be adjusted are:
      • Master (affects literally everything, music, etc).
      • Music (just affects music)
      • Sound (affects all non-music sounds).
      • Voice (just affects spoken voice lines).
      • Combat (affects all the sounds of battle).
    • Given that the actual underlying bus volumes are in -80 to +20 dB ranges, where 0 is the default (unaltered) state, and we may have altered the bus defaults in the mixer itself...
      • The game takes the inputs for the "volume" as a 0-200 range, then transforms that into a multiplier against the default volume of the bus.
      • Specifically:
        • If you choose 0 volume it just goes to -80, if you choose 100 it stays at the bus default, whatever that is.
        • If you choose anything between 1 and 99, then it multiplies the inverse cube of the percentage of that by the starting volume of the bus.
          • This helps to offset the logarithmic falloff of dB reduction from 0, and feels pretty natural.
          • It does mean that since we're only using the cube, and not the fourth or fifth power, that in general things still go pretty unexpectedly extra quiet below 40% or so, though. But this gives the most gradiations in the audible range.
        • If you choose anything between 101 and 200, then it multiplies the flat percentage of that by the difference between the max (20 dB) and the starting volume of the bus, added to the starting volume of the bus.
          • This gives a great deal of precision in making things slightly louder, but doesn't really hide the logarithmic rise where you have to go to 180% or so to get a really substantial (10dB or more on average) rise out of the result.
          • Overall this isn't quite the most natural way to handle the volume siders above 100%, but it does give the most precisions, which is probably for the best. And it's still easy enough to tune.
  • There are now computery sound effects for giving attack, move, wormhole-path-move, and construction orders.
    • The ones for placing construction units are particularly satisfying. :)
  • There are now sound effects that play when you alter your build queue, alter your control groups, "do some other general tweaks, mainly cheats," launch warheads (this one is cool), scrap units (careful of the heart attack), start hacking something, change into hold fire mode or out of it, toggle pause, and unlock a tech.
  • There are now settings that allow you to mute various parts of the battle sound effects selectively (shots firing, shots hitting, ships exploding). This might be useful to someone else, but it's also helpful for us in testing certain sounds without the mixing.
  • All of the ships/structures in the game now have explosions set for when they explode.
    • They fall into 14 different categories of explosion sound effect, two of which are just for warheads.
    • There are then a further three twos of explosion sound effect that happen for ships that are not at the planet you are presently at, or when you are on the galaxy map.
  • The game now uses a blend of 2D and 3D (spatial) audio, which is pretty typical for games that are in 3D.
    • Things that are "HUD sounds" or other non-point-source type sounds just play normally, as does music.
    • Things that are sound effects coming from a ship or a shot or an explosion have direction and attenuation based on their relative location to the camera.
      • This makes it substantially quieter in the battle when you zoom way the heck out, which is nice, although different sounds are attenuated at different rates -- the explosions of ships dying attenuates a lot slower, for instance, so you can keep an ear on that easier.
      • This is something that anyone can tune (in a modding sense) by adjusting the prefabs in the AIW2ModdingAndGUI/Assets/AudioPrefabs/Combat folder.
        • The major settings to play with there are Max Distance (the furthest out the camera can zoom is 1200, for reference), and then the Spatial Blend and Spread values. Having a Doppler level is also possible, but tends to give strange and muddy results.
        • You can combine changes here with changes to AIW2ModdingAndGUI/Assets/AudioPrefabs/OfficialMixer (click into that object to get the mixer panel), if you like.
          • One thing Chris was considering, for instance, was making it so that WeaponsHitting had a max distance of 500, over which it would attenuate, and then increase the WeaponsHitting bus from -23dB up to something a lot more substantial. You'd then have no sounds of shots hitting beyond 500 distance, but much louder sounds of that hitting when you are progressively closer than that.
          • This isn't something you can mod and just keep modded all that easily at the moment, although you can make a copy of the mixer and then point your xml (using an override) to your mixer instead of ours. The risk being that if we make a lot of changes to the sound buses, which is most likely now while they are new, then yours may stop working and you have to make a copy of.
          • At any rate, mainly if you want to mess around with that and see if there are values that you feel like give a better result, we'd always be willing to take that sort of thing under advisement. ;) We have BadgerBadger fixing bugs already, goodness. But anyhow, the point being that it's open so that people from the community can fiddle and share their results with everybody if that is an area of their interest.
  • There is now a set of sound effects for ships entering or exiting wormholes, as was the case in the first game. These are neater, though.
  • All of the various buttons in the game can now have a click_sound xml attribute set on them, to choose between sound effects for them to play when clicked.
    • This also applies to dropdowns, image buttons, button lists of various sorts, etc.
    • By default buttons all now play the sound effect "ButtonNormal" when clicked. You can override this to silence if you need to for a given button that also plays a sound effect via a command that is executed, if you need.
    • A different sound effect, ButtonStartGame, is played when you start a new game or load an existing one.

Shot Visuals!

  • The forcefields and the ship-to-ship lines have been moved into the modding and gui project so that anyone can edit them.
    • Improvements have been made to how the various lines look, from their shaders, while we were at it.
  • All of the shot graphics have also been moved to the modding project, for the same reason.
  • For now taking away the side-specific bullet colors. Frankly this makes it a lot harder to differentiate bullets by type, which is more important.
  • The armor-piercing bullets now have their real graphics, which is the pre-existing orange tracer shots, but made a lot shorter.
    • Note that the tracer-style shots are heavily affected (in terms of how long they are) by the speed at which they are moved. So there are now three different variants for use in different speed scenarios. This is super easy to mod if someone is changing around shot speeds dramatically and wants the shots to look similar to how they do at the current speed.
  • All of the not-yet-done shots now use the old green-style enemy shots, to make those easy to spot and then fill in the real data for.
  • FINALLY got a version of the fusion rocket shot visuals going that we're actually happy with. It has to look nice, but not too close to the other stuff. Exaggeratedly-large so you can see it, but not so much so that it's cartoony. Nicely colored, but emissive and bright enough you can see it at a distance. And on and on.
    • We experimented a ton with trail renderers in addition to the rocket, and having those be the things that are visible at far distances, but that wound up always looking too similar to the other trail renderers (when additive particle blending was used) or extremely chuggy on the CPU (when alpha particle blending is used and thus they needed to sort).

Misc

  • Fixed bug where golems were not actually being seeded.
    • Thanks to BadgerBadger for reporting.
  • Fixed a bug where it was possible for the map seeds auto-generated to be longer than the ones you can key in manually.
    • Thanks to BadgerBadger for literally fixing the bug himself.
  • Fixed a bug where hitting B selects additional build units.
    • Thanks to BadgerBadger for literally fixing the bug himself.
  • Put in a fix that definitely prevents keybinds from triggering while a textbox is focused (we've been able to test it now).
    • Thanks to BadgerBadger for reporting.
  • Added a link to the external tutorial on the main menu.
    • Thanks to BadgerBadger for literally coding the addition!
  • Put in a fix where squads should now properly change their ownership color if their current side doesn't match what their previous state was.
  • An error message stating "Player data archive not found at `/home/user/AIWar2/AIWar2Linux_Data/data.unity3d`, using local filesystem[user@Desktop AIWar2]$" on startup on linux should no longer display. It was harmless, but annoying.
    • Note we didn't get a chance to test this yet, but knock on wood it should work. ;)
    • Thanks to BadgerBadger for reporting.
  • World_AIW2.Instance.QueueGameCommand now takes a second parameter that says if it should consider handling local audio/visual feedback of the command being sent.
    • Generally speaking almost everything in the AIWarExternalCode should have that as true, so that sound effects and such can be played as need in order to register that things have been accepted. But things from the AI should always say false.
  • Fixed a bug where every full-capacity squad with more than one ship in it was drawing an extra ship.
    • This doesn't fix isues with squads having more living ships than they should based on ships that died; that's a separate issue.
    • Thanks to BadgerBadger for reporting.
  • The game now notices when there are more ships specified to be in a squad than the actual formation allows for, and complains.
    • This was affecting autocannon minidpods (40 requested, 25 available), laser gatlings (80 requested, 25 available), and minefields (80 requested, 25 available).
    • The game now has two new squad formations that have 48 and 100 scale-1 formation positions in them, for handling these cases.
      • Note that we're going to work on vastly better formations in general later, and we welcome formation creation by players, too.
  • You can now actually name your savegames.
    • Thanks to BadgerBadger for literally coding the addition.

Version 0.401 Ship Batch 6 of 7, And Gimbal Perfoooormance!

(Released June 12th, 2017)

  • The game console has now been fully moved to the AIW2ModdingAndGUI project (source code aside), and has been re-skinned using our own graphics and text mesh pro.
    • This may not have seemed like a high-priority thing to do, and indeed it was not in and of itself, but it validates a particular GUI creation workflow that we now have, as well as providing a concrete example for that type of GUI.
      • Basically our existing GUI creation methodology is all based around xml creation of things and populating them certain ways.
      • But now we can also take an entire GUI canvas, create it in the WYSIWYG unity editor in the AIW2ModdingAndGUI project, and then wire it up in a completely traditional-for-UGUI fashion and after that let it be triggered from the dynamic GUI. These are even loaded using the existing "gui prefabs" logic that the xml-oriented GUI uses.
    • The end result is just as performant in both cases (and basically identical), and so mainly the question is of which approach is easier for a given piece of the GUI. There's no one right answer. Even the xml-oriented version is using prefabs that have a bunch of nested stuff, but this is just taking it to a completely other level of having the entire canvas/window populated.
      • At any rate, being able to do this now and having an example of how to do it was well worth the time in this particular build. It should open up options better for the upcoming GUI revisions.
  • A massively new way of drawing the "sprite gimbals" over squads in the game is finally complete.
    • We tried a variety of approaches, but for various reasons dynamic batching, instancing, and so forth all yielded subpar results when individual sprites were made up of often up to 6 sub-parts (main icon, border, flair, mark level, and health bar).
    • We're now baking the sprites into meshes prior to them ever being instanced, which cuts the graphics load of the gimbals to around a sixth of what they previously were.
    • That said, the sprites themselves still need to be instanced even after being baked, and to do that we need a single mesh for all the types for the most part. So we're hiding data in the uv2 and uv3 channels that let us know which instance properties to conditionally apply to which vertices, which in turn lets these things colorize themselves (via HSV shift) as needed. But since not everything needs to be colorized, our new ubershader for the baked group is now actually more efficient than before, making the savings more than a drop to 1/6th of the previous load from this source.
    • Performance improvements in this area might not seem like that big a deal, but on a GTX 1070 with 5k ships on the screen, the icons were approximately half of the visual load. Facepalm, right? So this has been a big priority.
    • The downside of the new approach would seemingly be that now these icons are harder to edit, though, if someone wants to mod. Bummer... except that it's just as easy as ever! :D
      • We've created editor tools in the AIW2ModdingAndGUI project that allowed us to merge meshes, set the uv2 and uv3 channels properly, and so on. You can re-bake the meshes as desired, and we can do so quite easily as well. You can't do it by xml anymore, but that's a pretty small thing.
  • Fixed a bug in the prior build where the gimbal icons no longer reacted to player mouse hovering or clicking.
    • This was because of the changes in the hierarchy of pieces of squad parts in the last version.
    • Thanks to TheVampire100 for reporting.
  • When you are placing ships/structures on the map, there's now a filled circle that shows the radius of the footprint that ship will take up. It then also shows the icon of the ship in white over where the footprint is.
  • Fixed an issue where the missile turret was not assigned its flair properly.
  • The game now automatically checks its models for missing materials, or materials not set up for instancing.
    • There were then a number of ships that we fixed that on so that they have instancing set up properly.
  • The font_size property now actually works on the new text labels in the game (not buttons or anything else presently).
  • The game now has icons for the various resources, which can be inserted into text with <sprite> tags from text mesh pro.
    • Unfortunately the process for getting those in there requires the creation of sprite dictionaries embedded in the main game Resources folder at the moment. We will likely alter that at a future time, but for now that's stuck.
    • The process for getting new sprites in there is pretty convoluted in general at the moment, to be honest, so that's again something we'll have to work on later. But it does work, and it does perform well!
  • Fixed a bug where "dfgdfg" would show briefly as the planet name in the prior build.
    • Thanks to BadgerBadger for reporting.
  • Updated to Amplify Shader Editor v1.0.005, which has a number of new features and some at least minor performance improvements.
  • Fixed an issue with the AI Warp Gates not having their mechanical parts rotating properly.
  • Put in some code to automatically tell us when our animators have messed up.
  • The game now has a nice fade-in effect whenever you're switching planets or in and out of the galaxy map, making things feel more polished.
  • Fixed a problem with the mod support where every dll had to define a type which implemented the IInitialSetupForDLL interface, and further required a specific naming convention for that type.
    • Now when loading a dll it looks at all types exported from it and runs the RunInitialSetup() of each IInitialSetupForDLL it finds.
    • If it doesn't find any, it won't mind.
    • Thanks to Draco18s for reporting.
  • The very low end of the camera zoom now has a few more gradations where it shows more of a side-facing view, and then the very lowest zoom level actually looks back UP slightly, allowing you to see tall ships and structures better, and in general get a little more cinematic of a view. This has no effect on the higher zooms.
    • Thanks to BadgerBadger for inspiring this change.

New Ships

  • Bonus Fleet Ships:
    • Vampire Claws
      • Cloaked melee ships that heal themselves when they do damage.
    • Vorticular Cutlasses
      • Melee ships that damage themselves when they do damage (when balanced, their dps will be much higher than vampire claws, for example).
    • EtherJet Tractors
      • Cloaked Jets with Tractors. What could go wrong?
  • Dire Guardians:
    • Dire Warp Beacon Guardian
      • The AI can always send waves to the planet this guardian is on, and if it is on alert this is likely to happen.
      • Not to be confused with the Dire Warp Bacon Guardian (despite internal typos to the contrary), partner-in-crime to the Pancake Golem.
    • Dire Commander Guardian
      • Increases reinforcements sent to the planet it is on.
      • Triggers waves (like a raid engine) while this is on alert.
    • Dire Shredder Guardian
      • Internally constructs and launches shredder drones (vicious little melee ships).
  • Guardians:
    • Vampire Guardian
      • Can be very hard to kill if you don't kill it quick, because of its ability to heal itself from doing damage.
    • Implosion Guardian
      • The Dire Implosion Guardian's little (and far more common) brother. They're a real pain in the rear if you're a golem...
  • Golems:
    • Seeded like Flagships, you find these, clear their planets, and claim/repair them to gain control of them.
    • Unlike flagships, these are rarer, claiming them costs AIP, and they don't have the quasi-Ark functions for building/repairing/etc. Instead, they're considerably more beastly than Flagships and some have unique abilities.
    • Armored Golem
      • Short-range brawler.
    • Artillery Golem
      • Long-range sieger.
    • Black Widow Golem
      • Massive paralyzing-tractor capacity, and does engine damage with its shots.
      • The "if you move while tractoring something, it moves with you" logic has also been implemented.
    • Regenerator Golem
      • Regenerates ships you lose on its planet, at the cost of some of its own health.
    • Cursed Golem
      • Has powerful fast-firing railcannon, but damages itself in proportion to the damage done.
    • Hive Golem
      • Internally constructs hive drones, which it launches in large groups against any threat on the planet.

Version 0.400 Usability and the GUI Pipeline

(Released June 6th, 2017)

Usability Improvements

  • Reorganized the bottom menu to better emphasize the function most people expect from the number keys in strategy games with real-time simulation. Namely: control groups.
    • So now the 1-9 buttons along the bottom of the screen are the control groups 1-9.
    • And the 10th button (button 0) is a "Menu" button that opens the master menu that used to be there.
      • Though that no longer has the "commands" sub-menu.
    • If you have a selection, the game shows the commands menu (as a bar instead of a stack) above the bottom bar, and the 0-9 keys map to that instead of control-groups/menu.
      • And backspace will cancel your selection (if you have no deeper foldouts), thus returning you to the bottom-bar context.
    • The upshot is that if you select your Ark, you'll see a "Build" button in the command bar at the bottom of the screen, among other things an Ark can do. Similar with other unit-producing things.
  • The buttons in the command menu (now shown whenever you have a selection) now are only visible if they can be executed with the current selection:
    • FRD only shows if there's a mobile military ship.
    • Scrap only shows if there's a non-Ark.
    • Build only shows if there's exactly one type of builder unit.
    • Hacking and Warheads only shows if there's the Ark.
  • Added some direct keybinds for the sake of near-term sanity:
    • P
      • Toggles pause.
    • B
      • Selects a builder unit on the planet and opens the build menu.
      • If a builder is already selected, selects the "next" builder, if any.
    • T
      • Opens the tech menu.
      • If tech menu is already open, closes all menus.
    • Escape
      • Opens the system menu (save/load).
      • If system menu is already open, closes all menus.
    • Space
      • Closes all menus.
    • You can change any of the above in your inputmappings file.

Visuals And Moddability

  • TextMesh Pro has now been integrated into the game (version 1.0.55.56.0b9). We have the paid version, but we're using the free version so that we can include it with the ModdingAndGUI project.
    • This lets us do a lot more advanced text rendering at no extra performance cost, as well as giving us basic functionality like proper kerning.
  • The first place we've set to using TMPro is the galaxy map, where now the text is both in a better font as well as a lot more readable.
    • The actual places where the fonts are set up for the galaxy map, and things are oriented around planets, is now also in the ModdingAndGUI project so that it can be edited by folks as desired.
  • Darkened all of the new skyboxes to fit with the new HDR rendering.
  • Made it far easier for people to edit skyboxes quickly, thanks to a new button in the header of the skybox editor.
  • The ruined network nodes now have proper graphics.
  • The advanced starship constructor now has proper graphics and animation now.
  • Dropdowns in the game are now actually fully skinned for the first time, making them consistent with the rest of the GUI.
    • They also use the TMPro text to show their text, making their text sharp, too.
    • Their scrolling speed is also finally reasonable when you use the mouse wheel, too.
  • The fortress and experimental fabricator now both have proper graphics implemented.
  • The sidebar is back, as well, even though it doesn't look great yet.

Misc

  • Fixed a bug where saves triggered in the save menu could happen while some changes to gamestate were still ongoing, leading to the data being saved in an inconsistent (and sometimes non-loadable) fashion.
    • Also added a warning message that will show if this particular corruption happens again, though it shouldn't be able to.
    • Thanks to BadgerBadger for the report and save.
  • Fixed a bug that could cause a hang in the mapgen logic.
    • Thanks to drspikes and BadgerBadger for reporting.
  • Fixed a bug where various internal tech-groupings were showing as selectable menus (ironically named "Not Shown").
    • Thanks to BadgerBadger for reporting.
  • When there is invalid data somewhere on trying to load a ship that does not exist, the game now does a better job telling you what the heck is happening. This would mainly be something helpful to modders and us devs.
  • Put in massive numbers of performance improvements in how the GUI interfaces with unity.
  • Put in a bunch of new error checking on the GUI side, so that if things are set up wrong at any point, it now yells instead of failing silently.
  • Tractor turret tractor-multiplier from 30 => 3.35, which is slightly more than enough for one squad of MkI tractors to indefinitely hold one cap (10 squads) of MkI fighters. Previously it could hold... more. A lot more.
    • Tractor effectiveness is also now reduced by the tractor turret "squad" taking losses.
  • Put in some logic to prevent minor gc allocs related to the galaxy map when you're not viewing the galaxy map.
  • Fixed a bug in the last couple of versions where ship animations were not always playing when there were a ton of ships on a planet.
    • Thanks to BadgerBadger for reporting.
  • Bunches of performance improvements have been made to the movements of squads and their icon gimbals.

Version 0.301 The New HDR Visual Stack

(Released May 30th, 2017)

  • Engine Damage Repair has been implemented.
    • Works similarly to hull/shield repair, but does not actually cost metal.
  • Changed balance_seconds_per_fight to 15 from 20, and balance_seconds_per_shot to 2 from 4, massively speeding up the feeling of combat from what it felt like in the prior version. It's now much more like what it was in past versions, without having such bullet spam in giant battles that there's a bunch of slowdown.
    • Thanks to BadgerBadger for reporting.
  • Fonts are now sharper in the GUI, although there's still room for improvement. Blurriness causing legibility problems is a definite issue to some extent still.
    • We've also updated the font on the small buttons at the bottom of the screen to be more readable, although we still want to update that even further in the future.
    • Thanks to Sounds and BadgerBadger for reporting.
  • New backgrounds for dropdowns.

HDR Graphics!

  • We had thought this wouldn't be possible with our visual style as recently as one version ago, but it turns out it is!
    • Also, prior to version 5.6 of unity, it literally wasn't possible at all, at least not without losing hardware MSAA support (which is the best sort of antialiasing available these days, and fastest).
  • The game now uses HDR graphics for the main camera, allowing for a better color range and fancier lighting effects, etc.
    • One of the most obvious examples is the way the rings on the end of the laser turrets glow very bright blue now, whereas before they would white out fast and so we had to keep them pretty non-bright.
  • We're using a new reflection cubemap against our scenes, and have tuned a ton of the materials to have better values to give themselves really high quality results without an over-blown specular highlight at certain angles to the main scene directional light.
    • Kinda related to this, we're doing new tonemapping now, which maps back down from HDR to the LDR range better, and helps give us a richer color without things having to be so darn glowy _everywhere_.
  • The bloom effects have been completely replaced with another set, which is able to use a lot more precision in what it does.

Known Issues

  • Thanks to the tonemapping, the backgrounds are presently too bright relative to the ships. We simply didn't have time to get to that, and didn't want to hold up the rest of this release over that.

AIW2ModdingAndGUI Capability Updates!

  • Since this unity postprocessing uber-stack is freely available, and even open source at that, we're now able to show you actually what ships would really look like in the real game when you are working in the AIW2ModdingAndGUI project.
    • This is enormously important in particular for being able to reliably set up the space nebula backgrounds, which have their characteristics altered some by the post-processing stack and which you need to be able to see in order to properly create them.
    • As part of this, we're no longer using Amplify Bloom or Beautify.
    • Also as part of this general work, we've updated all the various shaders and ship models and materials in the examples folder there.
  • To aid in background creation, as well as in general giving more examples of ships and how their shaders are used, there are a bunch of new ships that have been added to the example project: data center, lightning corvette, mlrs corvette, spider, and starship constructor.

Bugfixes

  • Fixed a bug in the improvements to shot staggering that caused divide-by-zero errors when the game was paused (because it actually runs zero-length frames during that time so the game can still respond to you).
    • Thanks to BadgerBadger for reporting.
  • Fixed a variety of errors that could happen with accidental extra calls to clean up objects (those extra calls are GOOD, since they often are coming from a few sources that need to double check things properly). This should also help performance minorly when objects are destroyed compared to pre-0.300 versions.
    • Thanks to BadgerBadger for reporting.
  • Fixed some bugs that could prevent shield repair.
    • Thanks to BadgerBadger for the report and save.
  • The sidebar is removed temporarily, since it was so busted anyway and overlapping things strangely.
    • Thanks to BadgerBadger for reporting some of the related issues it was having.
  • Fixed some bugs that caused the build menu buttons to collapse into a pile in the bottom-left of the screen.
    • Thanks to BadgerBadger for reporting.
  • Reworked the "Quit Game" button on the master menu to no longer be a "immediately chuck the gamestate into the grinder" function, but rather "tell the game that once it's done executing the current sim frame to close the gamestate". This avoids various race-condition null exceptions when quitting while the sim threads are going.
    • Thanks to BadgerBadger for reporting.
  • Improved the inter-cluster connection logic of Clusters to be much less likely to draw long connections that overlap other clusters.
    • Thanks to BadgerBadger for reporting.

Prior Release Notes

AI War 2:Earlier Than Early Alpha