AI War 2:Final Pre-Beta Checks

From Arcen Wiki
Jump to navigation Jump to search

Known Issues

  • The interface in general is not great, but is getting better.
  • 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.
  • Most ship shot types use the same graphics right now.
  • Only some of the sound effects are in, and only a couple of music tracks.
  • Balance needs a lot of attention, with your help.
  • There is a tutorial, but it's new, and we're not sure how comprehensive you'll find it.
  • The lobby is still very small, and a work in progress.
  • Multiplayer may have some issues at the moment, although we need more testers on that.

Version 0.708

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

Version 0.707 Activating Mk2 Grinding Machine (Part 2)

(Released February 17th, 2018)

  • New Ship Visuals
    • ArmoredGolem mesh and materials, LODs, and integrated.
    • ArtilleryGolem mesh and materials, LODs, and integrated.
  • New Formations
    • AutocannonMinipod new formation,prefab and LODs.
    • Eyebot new formation, prefab and LODs.
    • Bomber new formation, prefab and LODs.
    • Raider new formation, prefab and LODs.
    • Raptor new formation, prefab and LODs.
    • Spider new formation, prefab and LODs.
    • Armorship new formation, prefab and LODs.
    • Infiltrator new formation, prefab and LODs.
    • Sniper new formation, prefab and LODs.
    • Space Plane new formation, prefab and LODs.
    • Space Tank new formation, prefab and LODs.
  • When the Sim layer wants a squad to die it now tells the Vis layer "Please kill this squad at your leisure" instead of "Make this squad disappear right now." This fixes a bug where sometimes a squad would just vanish instead of exploding properly.
  • The "Attack" section of the resource bar now will show which planets are under attack and how strong the attack is when hovered over, just like AIWC
  • When choosing where to place a Shield Generator, draw a circle around it to show the radius of the Shield. This way you can figure out whether the shield generator covers the structures you want it to.
  • Since the main menu logos bugged so many people in the GUI focus group, but Chris liked the effect of them being metallic instead of 2D, we figured we'd start with a compromise and see how people react in the next version: https://youtu.be/YwhpRBkuFJs
  • Updated the game so that we're now able to draw wireframe circles with greater precision than before, if we wish.
    • We can now draw them not just with 48 vertices, but also with 90, 180, or 360 vertices.
  • Turned down the temporal filtering on our bloom effect on the main menu, to remove smudging. Also removed the chromatic aberration, since some people were not reacting all that favorably to it.
  • If you are holding down Ctrl (or whatever button is configured to send you through wormholes on left-click), then the wormhole names now pop forward above everything else for you to view them.
    • As part of this, there's new code demonstrating that any unity GameObject that is set to have its layer as 24 will now be drawn by a new overlay camera that is higher than everything but the GUI.
  • All of the "voice work" (ha) is now in place for the Zenith and Spire races. They have pretty freaky sound effects that are a mixture of organic and mechanical in nature. Special thanks to Sinematic and Bluezone for the base effects used in these.
  • Dead turrets do not contribute to the Strength Count for the sidebar anymore
  • Added some protection against null exceptions, and more detailed logging for them, in the sidebar drawing code.
  • Fixed some discrepancies in how text was scaled (based on resolution and/or the ui-scale setting) compared to other UI elements.
  • Fixed a bug in the "make the tooltip always be on top logic" where some code could modify unity-engine state from off the main thread. Unity gets very grumpy when we do that.
  • Split out unit-on-death logic into "first death" and "any death", since things like controllers can die and be reclaimed several times during the game.
    • AIP-on-death and such goes in the first-death logic.
    • Most other stuff goes in any-death logic. For instance, the checks for taunts/messages when certain things die.

Balance

  • The Warden fleet has been hit with the nerf bat again. Being outnumbered 3 to 1 in most battles isn't much fun.
  • Added a new AI Type, "Tsunami" that spends most of its resources sending Waves at you
  • Added a new very-minor faction called "The Lost Spire Frigate," which gives you a way to find and capture a spire frigate for your own use like you would a zenith golem. The spire frigates are the smallest and weakest of the spire faction ships, but are still quite formidable. The main body of spire ships in a real spire faction won't be coming until after 1.0, so this is a nice preview. And in the long run, it's still a fun little way to get an extra spire ship when desired without having to enable all the other larger and more complex spire bits.
  • Ships that have taken "cloaking damage" from firing are now subject to the normal delay before they can regenerate any cloaking points.
    • They also take cloaking damage proportional to their max cloak, not their current (that makes sense when there's an enemy tachyon to reveal them, but it's too harsh if there's no such).
  • AOE shots like the plasma torpedo now travel to their target's last location, if the target is destroyed while the shot is midflight.
    • The AOE shot will thus be more likely to detonate in a useful location, though it's still possible to "miss" this way.
  • Plasma torpedoes no longer do full damage to up to 10 targets in range; instead they do full damage spread over all targets in range. The spread isn't necessarily even, but it makes a decent effort to distribute the hurt.
    • This removes their ability to punch huge holes in very dense formations, but maintains their ability to (for example) melt unprotected missile corvettes in alarming quantities.

Bottom-Left Menu Revisions

  • The button that opens it has been removed, and now it's always visible.
    • The button used to display the name of the current part of the menu shown, but that name's now displayed above the menu.
  • Instead of one "base" menu when you have a selection, and another when you don't, those have been combined into a smaller set.
    • Some functions have been shuffled to a sub-menu ("Special Commands").
    • Others have been removed because they're much better off handled by the keyboard (and maybe some small top-level buttons when we get to redoing the ingame UI) :
      • Selecting a control group
      • Assigning the current selection to a control group
      • Toggle FRD
      • Free Look
    • And the Objectives button has been removed as it wasn't very useful. Can be revived later if a workable design arises.
  • The backquote (`) and 0 keys no longer have the special meaning of closing the entire bottom-left menu or opening the base layer.
  • Instead of responding to the 1-9 keys, these buttons now respond to the F1-F9 keys (F10-F12 are theoretically supported, but the menus are set up to cap at 9 buttons).
    • The open-console keybind has been changed from F3 to Ctrl+F3 (though that might be changed to something further from Ctrl+F4).
  • 1-9 now always refer to their corresponding control groups, regardless of the state of the bottom-left menu.
    • And 0 now refers to a 10th control group.
  • The sub menus now draw in different colors depending on your "depth", so it's clear when you switch menus that something has changed about that menu.

Version 0.706 Activating Mk2 Grinding Machine (Part 1)

(Released February 10th, 2018)

  • Updated the visuals for the AI Warp Gate to now be consistent with the new (and final) wormhole graphics used in the game, as well as being in the new PBR style in general for the gate part of it.
  • New graphics have been added for the Dyson Sphere warp gate, so that it looks like it also belongs with the other wormholes and the AI Warp Gate, but just... much more Dyson.
  • Now that the dyson sphere is actually the background planet at which you are located (as it should be), we have the dyson sphere warp gate more locally at the planet. The description of that was still acting like it was describing the dyson sphere itself, and was referring to the "local planet," where actually there's no planet this time, just a star. This gets confusing fast. At any rate, the description of the dyson sphere warp gate has been updated to hopefully be more clear without introducing nomenclature issues for new players.
  • The background planets now all rotate at 1/3 the speed they previously did, since it was a bit on the dizzying side before.
    • Thanks to Cyborg for suggesting.
  • The Dyson Sphere now also rotates in the background, like other planets.
  • The next (smallish) batch of voice acting is now in. The fighter squadron leader now has a voice, by voiceofsr, and responds to your attack and move orders. He's a bit on the the cocky side, but not annoyingly so.
  • The voice work for attack and move orders is now always delayed by about half a second, and the underlying beep is always played prior to that, so that there's a consistent nonverbal style of attack or move order sound always played, which helps provide a foundation for understanding at an... ear-glance... what is happening.
    • This also allows us to do voice move orders for the wormholes, which previously we were not doing.
  • Fixed an issue where the voice command items were not respecting the disable voice setting in options.
  • Quiet unnecessary audio effects from minor factions
    • Off-planet combat audio now only triggers when you have vision of that planet (so when the Devourer is destroying Far-Flung planets you won't hear about it).
    • Fix a bug in the Nanocaust and Dyson factions that was causing Move Command noises to be played whenever they moved their ships around.
  • Fixed a very longstanding bug where one of our random-picking algorithms (a random draw bag) returned the first item roughly twice as frequently as the other items. Now the distribution is effectively even.
  • Fixed a bug where switching a lobby faction slot from (say) Devourer to Dyson caused a crash.
  • Fixed a bug in the support-for-different-homeworlds-in-MP code that was causing the tutorial to crash on start.
  • Fix a bug where sometimes a shot might use stale data for its ship Target. This would cause error messages and sometimes ships would fail to blow up visually.
  • The overall method for detecting squad mouseover has been changed to now use radius on the plane of the playing field rather than collider checks.
    • This improves the performance in one of our test savegames from having over 7.00ms of PhysX thrashing down to just 0.12ms of efficient vector math.
    • The downside of this approach is the fact that we use cameras that are often at an angle, and so it's quite possible your cursor can visibly be "over" a ship in terms of being between your eyes and the ship, but since the ship is below the plane of play the red cursor is actually well off to the side somewhere.
      • This mainly applies when you are VERY zoomed in, and have the camera tilted a lot, or when the ship is very large. So we'll be putting in some future work to deal with those cases. But for now the massive performance improvement is very very much worth it.
  • Added protections against null exceptions when changing lobby faction settings rapidly.
  • Vastly improved the RAM handling of the vis layer for squads and gimbals, and made it so that they are now reused cross-ship-type rather than being per-ship-type. There can now be up to 6000 squads on a single planet before there's any sort of extra hit to performance with new squads getting added (aka the time it takes to set up the new ships, that is). Before it was having that performance hit on every squad added including the first one.
    • In the grand scheme this doesn't really change much performance-wise during runtime, but when a lot of ships appear at once, or you move to a planet with a lot of ships types you haven't yet seen during this execution of the game, then it prevents a notable pause that was happening there.
  • Slowed down many shot types to make it easier to have "volleys" have more variation.
  • Updated Visuals
    • Updated Advanced Research Station visuals.
    • Updated Coprocessor visuals.
    • Updated Data Center visuals.
    • Updated Design Template visuals.
    • Updated Experimental Turret Controller visuals.
    • Updated Ruined Network Node visuals.

Interface Improvements

  • Reorganized the Settings menu to display Settings by Category instead of just showing all of them at once. It is actually usable now!
  • Fix a bug where the "Show Mark Levels" setting was doing the opposite of what you requested.
  • Selecting "Mobile Military" with "M" no longer also selects things like Fortresses
  • The Ark will now always be considered the key unit of a control group it is part of.
  • Fixed a longstanding very minor annoyance that nonetheless soured the experience somewhat: the little double-red-circle at the mouse cursor was jittery, previously. Now it's smooth as butter.

Balance

  • Roughly halved the Warden population cap (which is based on the AI Sentinels' current budget, which is mostly based on AIP).
  • The Warden fleet now won't camp less than 3 hops away from your territory, meaning it's got to cross at least one full planet to interfere if you attack a planet bordering you.
    • On Warden Difficulty 6-9 it's allowed to camp one hop closer.
    • On Warden Difficulty 10 it's allowed to camp adjacent to you.
  • Wardens now avoid planets under the influence of hostile factions, not just the control.
  • The Dyson can now decloak enemies on its planet.
  • Fuel costs reduced by roughly 25%.
  • Warp Gates and Design Backup Servers now die when the AI loses the planet's Controller.
  • The Devourer now assiduously avoids pathing through a planet with a King unit (Ark or Master Controller), to limit the number of games it ends singlehandedly.
  • Carrier Starship drones now self-attrition if their carrier is dead or not on the planet.
    • Also fixed a bug where the drones could "forget" their AI and stop dead.

Subsquads and Intra-Squad Formations

  • The individual-ship formations (those inside a squad, not the multi-squad formations) are now read out of xml in an FormationIntraSquad class type.
    • This is replacing our old method of loading these formations from asset bundles, and makes it so that anyone can create formations without needing unity to do so. The aiw2squads asset bundle is now pointless and can be removed from future builds.
    • The formations can still be set up using the old approach if desired, however. Then just attach the new SquadDataDumper component to the root transform of the old style squad, hit play in the AIWar2ModdingAndGUI project, and it will dump your xml results to the console log. This is not the preferred approach anymore, but it's there and is handy.
    • The ability to have different formations per faction type was actually set up incorrectly previously. Fixed.
  • The balance_ships_per_squad entry on individual ships has been removed. This was a bit inconsistently used, and was only being used for ships that had a cap of 1 ship per squad.
    • Most things had already been moved over to the Granularity object, but not quite all; now everything has.
    • As far as that goes, all of it is now handled on the Granularity object.
    • Previously the total number of ships and the total number of squads per granularity were defined, which was confusing. That meant ships per squad had to be inferred.
      • Now ships per squad and total squads are defined, and total ships is inferred instead. This also has the benefit of never resulting in bad divisions if the person creating the xml made a mistake.
  • The Multi Needler Corvettes are now the first example of our new "subsquad rendering" approach that we'll be using for a number of the fleet ships.
    • Rather than having a separate GameObject with all its attendant overhead for each ship, we're instead merging some of the ships into groups -- in this case, into two groups of three rather than five groups of one.
    • This lets us save an enormous amout of overhead and makes the game run faster while drawing actually more ships than before.
    • We're also combining this with an approach where we're having the ships (in the small squads at least) bob up and down to give them some more visual interest.
      • But the really cool thing about this is that we're using colors baked into the vertices of each subsquad ship before we combined them so that they are at different offsets in their bobbing, actually making them look a lot more separate than they are.
    • The main downside of this approach is that we can't blow up individual ships using this approach; just entire subsquads at a time. So we have to balance performance against that. The GOOD side of that, however, is that individual explosions are a lot more impressive, since more ships going up at once looks cooler anyway.
      • In practice, you're unlikely to notice any difference except that explosions look cooler, there are more ships and they have better formations, and the performance is better. The Multi-Needler actually isn't really a stellar example of this, since we only get a savings of 60%. In other cases we'll be able to save up to 80% or more if we want. Even so, the performance improvement is really notable in one of our test cases that was spamming hundreds of multi-needler squads.
  • Also the Multi Needler Corvettes have been repainted in the new style, and have their LODs and whatnot updated. They also use an actual intra-squad formation that looks nice, as well as having the proper squad hover radius.
  • The Fighter now has been combined into 4 subsquads of 5 ships each in a squad, rather than one squad of 20 raw ships. Its formations have also been set up to look better, although it's still pretty ragtag by design with these.
    • Not only does this lead to a better performance profile per-ship, but also this lets us do LODs for the vertices of the combined subsquads, which is a secondary benefit we hadn't even thought of before. So this now saves on vertices as well as the culling, batching, and so forth logic.
  • Fighters now use different formations, and indeed different subsquad-models, for humans and the nanocaust compared to the AI. This is more a matter of proving out we can do this and providing an example test case, but fighters are of course also something that are much more common than a lot of other ship types.
    • The AI fighters remain kind of skewed to the side and in an aggressive wedge. The humans are in more of a downward-sloping diamond. The nanocaust are in kind of a skewed strange diamond that's fitting with their corrupted nature.
  • Laser Gatlings are now the third ship type to use subsquads. Rather than 40 individual ships (slooow), there are now 42 ships shown in 6 subsquads (that's 2 extra ships for a savings of more than 85% in terms of performance.

Version 0.705 Hotfix

(Released February 3rd, 2018)

  • Continued incremental progress on Game Lobby tooltips
  • The Nanocaust can now have its intensity set in the Game Lobby. This will cause the Nanocaust to Frenzy more or less frequently
  • Tweak some settings to be more readable (DisableSound is now "Sound", for example, because negative options are confusing)

AI Refinement

  • Fixed a bug in the AI retreat code where the "prefer closer wormholes" logic did way more work than was really necessary, which contributed to slowdown on the long term planning threads.
  • Fixed a bug in the AI retreat code where the "prefer wormholes to planets that won't murder me" logic ignored the strength of the retreating force itself (so everything looked super scary unless there was an AI force already there).
  • Fixed a bug in the AI Overrun logic where it wouldn't leave enough behind to efficiently deal with any non-military units (controller, resource points).
  • Fixed a bug where AI Guardians could be "partially freed", and showed as threat but were still could not leave their planet because they were guarding the controller (they now break the guard relationship in that case and become fully threat).
  • Toned down the impact of "nearby unengaged mobile hostile strength" on the AI's willingness to commit to an attack, if that strength is more than one hop away (previously it scaled by distance on just about every other usage of this data, but not this one).
  • Made the AI more willing to operate on planets "under the shadow" of a nearby huge human fleet if those planets were completely empty of hostiles.
  • Fixed a bug where the AI could issue an attack order against a neighboring planet and the ships close enough to the wormhole would go through without checking to see if they should wait due to strength imbalance.

Version 0.704 About that Flair

(Released February 2nd, 2018)

  • All of the ship icons are now a bit larger (not much!) in how they display in the gimbals in the main game view and on the galaxy map, so that they are easier to see. Just because of the shaping of the new icons, showing them that small was not quite working out as well as hoped, but now it's good.
  • There is a new gimbal_icon_size_multiplier xml tag for all game entities that can be set to some value to make ship icons larger or smaller relative to the baseline. For instance:
    • All of the "king" type units now show up with size 1.5, as do a lot of the really dangerous stationary toys that the AI might have on a planet, as do player flagships, AI usurpers, and most golems.
    • The controller on a planet, and the dire guardians, show up as size 1.35.
    • Regular guardians and non-flagship starships now show up as size 1.25.
    • The devourer golem and the zenith trader now show up as size 2.
    • Most of the drones now show up as size 0.7, although the hunter-killers show up as size 1.25 instead despite ostensibly being drones.
    • All of this is of course subject to further tuning, but the mechanism for doing said tuning is now there, and a good first pass is in place for making things more or less prominent on the battlefield as needed.
  • All of the remaining ship icons are now in place, including the starship versions looking different from their flagship counterparts.
    • This is now a whopping total of 155 ship icons -- thanks, Blue!!
    • This includes icons for the Nanocaust ships and structures, which are in place, and the interplanetary guns, which are not; but it does not include icons for the spire, which are also not in place. Those latter two are going to be post-1.0 additions, as they were stretch goals from the kickstarter that we can't do justice in the same amount of time it will take to create the base game itself.
  • Fixed up the at-mouse-cursor tooltip in a few ways:
    • To now always display above EVERYTHING, including over dropdown lists that have popped up, so you can properly read what is in the dropdown list.
    • To show a bit more to the right and down from the mouse cursor, so that the standard windows mouse cursor doesn't overlap the text at all.
    • To make it give a bit more height to itself whenever it has multiple lines, because in the top resource bar it was often coming out of its display area previously.
  • In the prior version of the game (0.703), you may have noticed that a lot of the icons were really hard to decipher in the main view because their borders were stretched out strange; but they looked fine in the sidebar and other menus.
    • For the 90px ship icons that are shown in the main view, it turns out that those need to have border images that are 102px in size. That extra size allows for borders that extend beyond the 90px base of the original ship icon when need be.
    • This change is super easy to make: it's just a matter of creating a photoshop batch action that takes the existing 90px border icon image and increases the canvas size to 102px instead, with the border icon image remaining centered, then re-saving over top of itself. If anyone ever needs any larger icons, they can use that extra space, but otherwise it's just empty pixels for now.
  • Updated Ship Visuals
    • Updated the visuals on Advanced Research Station, Coprocessor, Data Center, and Design Template.
    • Beam Cannon LODs and integrated.
    • Alarm Post mesh and materials, LODs, and integrated.
    • Ruined Network Node mesh and materials, LODs, and integrated.
    • Super Terminal mesh and materials, LODs, and integrated.
  • Fixed some bugs where a thread that was in "abort requested" AND "stopped" states simultaneously (it's a flag enum, so it can have multiple values at once) was not being considered as being in a terminal state, which led to various panicking over threads not terminating, etc.
  • Fixed a bug where intentional thread-aborts were causing screen-blocking error messages (the situation isn't ideal, but it shouldn't be acting like a crash).
  • Fixed some bugs where a planning thread being killed would skip its finally-block teardown logic, causing the game to think the planning was still going and thus the game was unwilling to finally release entities that had been killed.
  • Fixed a bug where a control group would never "forget" an old entity ID it had previously owned unless it was directly removed from the group by player action. This lead to ever-increasing numbers, even across save/load. This wasn't a big deal except that the number looked weird, but it was definitely untidy.
    • It also strips the already-dead entity-ids out of all you control groups when you load an old save.
  • Hitting "P" during the game lobby no longer starts the game.
  • A button has been added to the Main Game screen to make it easier to report bugs.

Version 0.703

(Released February 1st 2018)

  • Fixed a bug where the window size settings were not being properly applied in the standalone game.
  • Main menu ship changes: the main wing of the ship no longer has giant glowing bits; the unity bloom has been removed; the amplify bloom has been toned down from 0.8 to 0.5 in intensity; the extreme chromatic aberration has been toned down a bit.
  • Fixed an issue with the sound effect clips list and voice group lists using the wrong random method and thus being able to hit IndexOutOfRangeExceptions.
  • No longer shows sidebar information when you don't have vision of the planet. It instead shows only your active Control Groups and a message saying "You don't have vision here"
  • Main menu ship improvements:
    • The bloom on the main menu is less intense than before, even on the parts that still emit (unlike the wing).
    • The AI War 2 logo is way larger on the ship on the main menu, and the Arcen logo is somewhat larger.
    • Made a lot of updates to the main menu ship so that it moves about a bit more and thus exposes itself from a wider range of perspectives. Also made it so that there are more and better thrusters at the back, and so that the ion bar at the front of the engine is letting off particles.
  • Fix a bug where entering the settings menu from the Main Screen before starting a game would skip the Game Lobby when you tried to start a game
    • Thanks to Bummeri for reporting
  • Ships with cloaking now display their remaining cloak strength when you hover over them
  • Updated the game to now use the "monolithic version" of UnityEngine.dll, rather than the split-out one. This will hopefully prevent the crashing issues that we were seeing on OSX in the last version.
  • Fixed a variety of bugs with the ship orders voice command playback code, so that now that works properly. The current only voice commands relating to ships (which this is about) is for civilian ships and their move orders.
    • Part of this was to make it only call the voice prompt of the most-common ship voice group within the current selection when you issue orders. Aka, if you mostly have ships selected that give bomber-style voice chatter, it plays that instead of the voice clip for the one fighter-style voiced ship in your mix.
  • Updated the voice bus in general to allow for up to 7 overlapping voices at once, if players are giving that many orders. However, that bus has been renamed to VoiceRoutine to make it clear that's what this is for. The really important voice notes are under the Alerts bus, which does sound ducking on the voice routine bus.
  • Hitting B to select the next Builder unit (Flagship, Ark, Controller, etc) will now also open the Build Menu for that unit.
  • Fixed a bug that was preventing the most recent version of the game from launching at all on OSX.
    • Thanks to Taichikitty for reporting.
  • The objectives window now suggests repairing Golems.
  • Updated the newest versions of the game camera to no longer care if the cursor is over top of the gui for purposes of detecting screen edge scrolling.
    • Thanks to lessster for reporting for absolutely annoying this was; we don't play with the edge scrolling on, and so hadn't noticed.
  • Updated Ship Visuals
    • Integrated Plasma Torpedo Launcher.
    • Warhead Interceptor mesh and materials, LODs, and integrated.
    • Advanced Starship Constructor mesh and materials, LODs, and integrated.
  • Some tooltips are present in the Game Lobby, but they are underneath the dropdown window

New Icons For Ships!

  • Maaaassive updates to the way the game icons are drawn. This has been 20 calendar days in the making, at this point, and has well over 120 individual new icons.
    • Basically the old system of having a smaller number of base icons, plus "flair" to distinguish the sub-type... stunk. It was unclear and even Chris, who came up with the idea, was constantly confused by it.
    • We've now gone back to a system more like the first AI War, where everything has its own unique icon, and the idea of flair is (mostly -- more on that in a minute) gone.
    • In order to keep some of the visual consistency between icons, however, we've worked on a "visual nomenclature" for icons, so that things like turrets are easy to identify at a glance, as are things with laser weapons. So seeing a laser gatling or a laser turret for the first time would give the observant player an idea of what those things do without ever having seen them before. This was the goal of the flair previously, but it was just very unhappily executed -- mainly because the style and arrangement of that nomenclature was far too separated from the core colored icon itself.
    • Now, the underlying engine mechanics for flair -- something short and wide that goes under the icon like flair used to -- is still there. We're leaving it in place, because it isn't hurting any performance areas, and Badger had the thought that it might be nice someday to have a toggle or similar to hold down and then have "flair" show up telling you some attributes about each ship. We don't have any plans to do this prior to 1.0, but if someone wants to mod it that's fine, or if we later decide to do it.
  • Updated the right-hand sidebar to now show the borders for ships in black, rather than white. This is a lot easier to read, and is more consistent with the icons in the main view.
    • When hovering over a ship type either in the sidebar or in the main battlefield area, it now highlights any matching types with a white border instead of black. On your team or other teams -- so that's handy for seeing who has how many bombers, etc, at a glance. And it makes the right-hand sidebar feel more responsive to mouseover.
  • The design of the build menu items has been updated a bit. Since there is no longer flair, these now show the main icons larger and to the right, and some other things moved leftward. This isn't remotely the final design for these, and they are now definitely wider than they have to be, but it's a start.

Multiplayer Work

  • Fixed several bugs that were causing the join-game process to take way longer than necessary.
  • There's now a textual display of the connection status on both the client and host during the join-game process.
  • Fixed several other bugs that were generally hosing multiplayer.
    • There are still a bunch of issues in actually getting connected and potentially in performance during the game, but we're getting there.
  • Different players can now pick different starting planets in the lobby.
  • Different players get their own color consistently.
  • Fixed some bugs where the first player always got certain claimables, rather than the player present.

Version 0.702 Activating Mk1 Grinding Machine

(Released January 25th, 2018)

  • The galaxy map camera now has the same bloom effect that the main game view does. Mostly this has no real visible effect, but when you see a dyson sphere, well...
  • Fixed a super annoying bug with the dropdowns, where basically the topmost item was not being shown.
  • Tweak the options for Octopus Map (per Tadrinth's suggestion)
  • Visual Bugfixes
    • Fix a bug where displaying active orders (with Shift) showed lines going off the edge of the screen when units were assigned to go through wormholes
    • Ship to Ship lines (like Tractors) now go from randomly chosen members of the Source and Destination squads, not always the first member of each squad
    • Fix some issues with shots not correctly hitting their targets (both Shielded and Unshielded cases)
    • When the game is lost, hide the gui while the "You Have Lost" text is printed. The GUI will then come back after a few seconds so you can look around the galaxy.
    • Fix a bug where we weren't updating shots on a number of vis frames, which makes things look choppy
    • Fix a bug where we weren't correctly killing all the ships in a squad when fatal damage was done
    • When a shot hits its target, set its "Time till I die" to 0 since it just hit something. Otherwise shots could linger strangely on the map.
    • There is a known visual bug where if your squads are shooting a shield from point-blank range, it can look like the shots are going through the shield.
  • Ship visual updates:
    • The "science generator," which was previously (and always temporarily) just some random building on each planet, is now properly a "husk" of a ship from an old ancient race. Studying these husks, of which there are 5 visual variants, gives your scientists Science points, just as the random building-thingy always did in the past.
      • For those interested, these are actually Neinzul husks, which is kinda neat. They're still glowing with internal fusion reactions even thousands of years after falling in battle. They use actual models for Neinzul units that were originally created for overpainting in Stars Beyond Reach.
    • The Space Planet has had its visual updated to look a bit more science-fictiony and fit better with the rest of the aesthetic of the game. This mostly had to do with the cockpit and its glow.
    • The space tank also needed a little love, to be a little more tank-like and a little more in line with the other ships. Fixed.
    • The new Spire visual updates are all in place, although not used in the game yet.
  • The wormhole visuals have been redone yet AGAIN. (Anyone keeping count? Not even sure how many times that is now -- at least five, maybe more).
    • The new visuals are no longer particle-based, but instead use a couple of GPU-instanced sphere-ish meshes. The overall effect is... probably slightly more efficient than before, but it's hard to be exact with that, because it depends on your hardware and what the limiting factors are in your visual throughput. Overall it's not much of a difference either direction, though.
    • The big reason for the change with this one is that now this is a true 3D object again, rather than billboarded particles. This makes a lot easier task for us in terms of creating a warp gate with visuals that fit with the visuals of the wormholes, and it also makes the wormholes look VASTLY better when you zoom in close to them. Before it was getting painfully pixelated because of the sprite-based nature of those particles.
    • And lastly, this is more cohesive with the way that the visuals for special effects have been headed in this game; it's all very geometry-based, now.
  • A variety of updates have been made to our sound playback engine to make things quicker for us to set up, and to better-accomodate the needs of our voice pipeline (where things should not be said too frequently, and if nothing is available to say because of that rule, then a nonverbal sound effect should be played instead, on the proper sound bus in both cases).
  • The first voice acting is now integrated into the game: the engineering commander, played by Ra Palacio, now cheerfully accepts your orders for building construction.
  • Plasma Torpedoes are now AOE weapons that can hit up to 10 distinct squads. Their dps is still balanced on an average-targets-hit of 1 because generally they'll hit a shield and that's it. Once the shields are no longer covering the formation they become very dangerous to the stuff around.
    • The new AOE visual effect for these is pretty awesome.
    • The shot speed on these has also been cranked down so they aren't so insta-hit.
  • Fixed some bugs where an anti-shield weapon would only get the bonus when hitting a shield if it was targeting a shield; if it targeted a non-shield target under the shield it wasn't getting the bonus.
  • Lightning Corvettes:
    • Squad size: 5 => 2
    • Rate of fire: Normal (1x rof, 1x dps) => Very Low (0.25 rof, 0.8x dps)
    • Range: Short (1x range, 1x dps) => Very Short (0.3x range, 1.2x dps)
      • It actually had to be almost this close to hit already, so this is more of a bugfix to avoid it firing without hitting.
    • Similar changes were made for Lightning Turrets.
  • Grenade Launcher:
    • Cap from Mild-Low (100 ships, 0.9x dps) to Very-Low (30 ships, 0.75x dps)
    • Rate of fire from Normal (1x rof, 1x dps) to Low (0.5x rof, 0.9x dps)
    • Similar rof change to Flak Turrets.
  • One exception has been added to the rule that "if a mobile squad runs into an enemy shield, the squad is pushed out of the way".
    • That exception is "The Ark is Chuck Norris. Therefore, if the Ark would get pushed, the enemy _shield_ gets pushed instead."
    • This means that if you're willing to risk your Ark in the middle of the fight, you can push enemy shields off their defenses like a bowling ball.
  • Fixed some bugs preventing sidebar mouseovers from showing unit data if there was more than one unit in that "cell".
  • Fixed a null exception when using the formations without a shield generator in the group.
  • Fixed some bugs where the warden/hunter fleets could get confused if you started a game, quit, and started another without closing the application.
  • Fixed a bug where the "escape menu" stayed open when used to quit a game (so it would be open when you started another game).
  • Put in additional protections to ensure that all secondary threads do terminate if they run too long (with a warning message so we can be notified if it's common).
    • And also some new protections to ensure those threads are promptly terminated when you quit a game, so that starting another game doesn't run into stale threads still doing stuff in the background.
  • Nerf the Dyson spawn rate at higher intensity; this makes it actually vaguely playable at up to 10 (I hope).
  • Fixed a bug where a dying squad could disappear and then briefly reappear before disappearing again for good.

Version 0.701 Hotfix

(Released January 15th, 2018)

  • Updated Ship Visuals:
    • Adjusted the size of the Armor Ship, Infiltrator, Sniper, Space Plane, Space Tank, and the Grenade Launcher. Completed the integration of the Autocannon Minipod, Raptor and the Spider.
    • Experimental Fabricator mesh and materials, LODs, and integrated.
    • Lightning Warhead, LODs, and integrated.
    • Warhead Nuke, LODs, and integrated.
    • Flak Turret, LODs, and integrated.
    • Ion Cannon mesh and materials, LODs, and integrated.
    • Orbital Mass Driver mesh and materials, LODs, and integrated.
    • Warhead EMP mesh and materials, LODs, and integrated.
  • The game has now been fully updated to Unity version 2017.3.0p1, from the prior version 2017.1.0p4 it had been running on.
    • As part of the upgrade, the performance of the game has improved in general by a little bit, and we have better ability now to profile it.
    • We've also now gained the ability to make a number of changes to PhsyX-related parameters that were previously slowing the game down quite notably; the performance footprint of moving squads around has fallen by at least half, now, which is awesome.
      • The key change made was to turn off the automatic syncing of transforms every time transform position or rotation was changed in the sim. Now those just sync prior to FixedUpdate. The only reason the syncing needs to happen at all is so that we can do raycasting to determine what ships the mouse may be hovering over.
      • That said, we were also able to change the contacts generation from the legacy contacts generation to their newer persistent contacts manifold, and we were able to turn off the main PhysX simulation in general, and we were able to change the broadphase type from the old-style sweep and prune to the newer multibox pruning broadphase, which is more efficient particularly when there are a lot of entities near one another on the y axis (gee, that sounds awfully much like our exact case!).
        • It's debatable how much these secondary changes really improved at all, since we're only using the PhsyX data for raycasting. But raycasting has to happen every frame (to know where tooltips are as you move the mouse around potentially rapidly), so if there is even a slight benefit that's nice. The big thing was the transform sync insanity fix.
      • On the other hand, it's a bit disappointing that we only cut the CPU footprint of the transform movements in half; a lot of that is likely because of the nature of how we have our squads composed. We will likely make some changes in that area in the coming week to take the performance of this aspect of the game even higher.
  • Slight improvement to the efficiency of syncing gimbal (icon) positions with the positions of their squads.
  • Fixed a longstanding issue where selecting one builder and then another could lead to an empty build menu (for instance, first the ark and then the starship constructor) because it thought it was the same menu and didn't refresh.
  • Fixed a bug from the last version where the turret and starship build menus would show as completely blank unless you'd researched at least one item from the respective category.

Version 0.700 Hunting The Wild Beta Beast

(Released January 12th, 2018)

  • IMPORTANT NOTE: contrary to our normal practice (even in alpha/beta), we've broken all old savegames with this version. Just too much AI-state data moving from "one set for the whole world" in the Core implementation to "for each faction that needs it" in the moddable External side, etc.
    • We obviously won't do this kind of breaking change after release, per our normal approach with AIWC.
  • Added some options to the Start Game lobby to allow waves with homogenous or varied composition, and to select the amount of advanced warning you get for a wave.
  • Fix a bug where Maze, D18Swirl and D18DensityMap weren't displaying the correct map type in the Save/Load screens
  • Right-clicking a build menu item or build queue item now acts like alt+left-click:reduces the amount of that unit queued.
    • Thanks to Kahuna for suggesting.
  • Fixed a longstanding bug that generally prevented the showing of health bars for guardians/etc in many circumstances.
  • First pass at descriptions for all in-game units. Cursory, possibly incorrect and needs flavour, but it's something at least.
  • Completely redid how the intra-squad formations were set up, so that now it's both more efficient, and more importantly more correct.
    • There no longer seem to be any cases where ships in a squad are spawning on top of another ship within the same squad, and if they do it will now throw a warning error.
    • Additionally, if a formation is too small for the number of ships that the game says should be in it, then it will now throw errors rather than just stacking the ships on top of one another.
  • Fixed a bug where the Warden Fleet could attack one of "your" planets if it is an AI planet you conquered after the Wardens "set sail", so to speak.
  • Split out a ton of our asset bundles so that they are not so monolithically huge anymore. This shrinks our largest one by about 400mb, and moves those into smaller ones that are a few hundred megs each, by type.
    • Also removed some accidental dependencies we'd developed between a couple of the asset bundles. This helps things load faster.

Major Visual Improvements

  • Updated ship visuals:
    • Grenade Launcher mesh and materials, LODS and integrated.
    • Infiltrator mesh and materials, LODS and integrated.
    • Space Plane mesh and materials, LODS and integrated.
    • Sniper mesh and materials, LODS and integrated.
    • Space Tank mesh and materials, LODS and integrated.
    • Sentinel Frigate mesh and materials, LODS and integrated.
    • Laser Gatling integrated.
    • Assault Starship mesh, materials, LODs, and integrated. Plus MK variant sizes.
    • Carrier Starship mesh, materials, LODs, and integrated. Plus MK variant sizes.
    • SiegeStarship mesh and materials, LODS, and integrated.
    • SniperStarship mesh and materials, LODs, and integrated.
    • Stealth Starship mesh and materials, LODs, and integrated. Plus MK variants.
    • Laser Turret LODs, and integrated.
    • Lightning Turret LODs, and integrated.
    • Missile Turret LODs, and integrated.
    • MLRS Turret LODs, and integrated.
    • Needler Turret, LODs, and integrated.
    • Sniper Turret, LODs, and integrated.
    • Spider Turret, LODs, and integrated.
    • Tractor Turret LODs, and integrated.
  • Updated structure visuals:
    • Experimental Turret Controller mesh, materials, LODs, and integrated.
    • Advanced Research Station mesh, materials, LODs, and integrated.
    • Advanced Factory mesh, materials, LODs, and integrated.
    • Forcefield Generator mesh and integrated.
    • Fortress mesh, LODs, and integrated.
    • SpaceDock mesh, LODS, and integrated.
    • WarheadSilo mesh, LODS, and integrated.
  • Additional visual enhancements (iterative improvements: things are better but not perfect)
    • The number of ships in a squad should now more accurately reflect a squad's health
    • When a ship takes lethal damage it now changes to a "Dying" graphical state instead of using particle effects.
    • Ships start burning the same visual frame that a shot hits the target, not the frame afterwards. It makes things feel snappier.
    • When a squad is reinforced, the reinforcing ships use a cool "Warping In" effect
    • When you first move your view to a planet, damaged squads should now have the correct number of ships
    • Lightning and Flak AOE effects are in use by the appropriate units
    • When a structure is under construction, use an "Under Construction" visual effect for it. The effect is either Green for "normal construction" or Yellow for "blocked construction". Construction is blocked if you have paused construction or are out of metal
  • The game now displays, in fiery animated letters, "YOU LOSE," then on another line, more slowly, "HUMANITY HAS PERISHED," when you lose the game.
  • Massively improved the visuals of the ship on the main menu. Come on, it's the first thing people see. ;)
  • Major update to the starfield backgrounds!
    • Remember those awesome ones that we were showing off during the kickstarter and for a while after that? Well, Badger did as well. ;) Those have returned.
    • We took them out, previously, because we had a variety of complaints from players who were saying that they were too bright and were distracting from the main combat. But that sentiment isn't unanimous by any stretch, and these backgrounds look COOL.
    • Our plan is to make it so that players can exclude the sort of backgrounds they don't like (ones that are too bland, or ones that are too bright) for in-game purposes.
    • Meanwhile, we've updated which ones can show up on the main menu, and in the galaxy map, and these should be ones that are pleasing to everyone in terms of being more varied and more thematically appropriate for those parts of the game.
  • You can now select the style of planet backgrounds you want: All of them (default), just the "fancy bright" (old style) ones, or just the "dim" (more recent) ones.
    • This is a per-client setting, so you can have different BG visuals for a planet per player if players choose different values from those settings.
    • Note that these settings only take effect when creating a new game or loading a savegame or joining a multiplayer game, so changing these in the settings menu while already playing won't change anything.
  • The "Burning And Dying" effect has actually be transformed into a full, GPU-only explosion effect where vertices are offset over time based on the direction of their normal, and a "burn ramp" effect makes emissive textures come in white, then very bright, then fading a bit more.
    • Translation: EXPLOSIONS WITHOUT PARTICLE EFFECTS. :D
    • Basically what this does is make the battles way more epic, but without having the expensive (in CPU AND GPU time) particle engine get involved.
    • This is actually barely any more expensive on your GPU or CPU than having the ships just disappear at death, and it's actually slightly more efficient than our first "burning and dying" effect, which was itself very efficient. So... yeah. Go team explosion. :)
  • Bloom, ah... finds a way.
    • Right. So bloom, which we've added and removed and tweaked a million times, is now back... but in a very weak and subtle way.
    • This style of bloom finally avoids the pitfalls we were seeing before, but it is what lets the emissive ramp of the new "burning and dying explosions" actually look like explosions where there is none.
    • The result is super effective, and we can actually make a variety of different death "explosions" of differing intensities, colors, and whatever else we want, based on the type of ship, building, who owns the ship... anything we want.
    • It's SO effective, in fact, that we might ditch our literal particles altogether, in favor of performance. This also tends to look a lot better, since it is by definition exactly the size of the ship or structure that is exploding, unlike the true particle effects.
  • In fact, we've now taken the "burning and dying" to the next level after all.
    • The ships and structures no longer throw off particles on death at all -- not shuriken particles like they used to, anyway.
    • Instead, it now has burning and dying effects that can be defined per ship type, rather than globally. There are different colors (slightly) for the last ship in a squad compared to all the others, and structures have a different pattern of disintegration.
  • Forcefields now have a reactiveness to being shot, visually showing a pulse on themselves. We may make this fancier in the future, not sure, but the current effect is very efficient.
    • This is also something that presently does not properly block the shots that are heading to forcefields at the moment for some reason, so there's a bit of visual inconsistency, but it's getting there.
  • Bloom REALLY finds a way... now Amplify Bloom is back (again), although vastly more subtle now in terms of how it is applied.
    • This prevents the flickering of the new explosions that was happening with Unity's own post processing stack, and in general looks a lot more sophisticated.
    • You can see how much more sleek it looks right from the main menu; kind of a Blade Runner vibe to the glow, now, rather than a Star Trek 2009 feel. Much better than the latter, or than none at all.
  • We're now actually drawing the Area of Effect (AOE) shots when they happen, or at least most of them. We initially went with a style that was based on the built-in Unity Shuriken particle system, but as we had feared that simply crumbled before our massive simulation.
    • Instead, we're now using some custom vertex-animation approaches that are all GPU-instancing based and (nearly) completely GPU-side. The performance impact of this in one pretty sizeable battle that we were testing was a drop of 10ms per frame of overhead that Shuriken had been causing.
    • In the really large battles, there are still some performance issues surrounding all the ships moving around (of all the silly things to be slow), mainly just because of unity's underlying system being inefficient. Fortunately, in 2017.3 they have introduced a way to bypass most of that inefficiency, but we're presently running on 2017.1 and will need to upgrade the game sometime in the next few weeks or month or so.

Major Camera Improvements

  • Added a major new type of camera, which is now the default, and which has two modes: Basic Strategic and No-Pan Strategic.
    • The Basic Strategic one works... well, basically like you would expect it to, based on AI War Classic.
      • It fixes a lot of the fiddliness of the Angled and Top-Down cameras previously available in this game.
      • Because this is from a third party, however, unfortunately this has to remain closed-source, unlike the other cameras.
    • This camera also now introduces two new hotkeys: R and F, for tilting itself up and down.
    • Since the camera is able to zoom in MUCH further than before, and has great tilt and pan and rotation controls, the free-look mode is not implemented on it.
      • Using this camera you can actually zoom down inside a squad of bombers and pan through them easily, etc. You can actually see the ships up close in general! Yet it's not fiddly to get from that extreme zoom to the other extreme of zoom, seeing the entire planet.
    • In general the zoom is very graduated so that you have more degrees of zoom as you get further in, and additionally the edge scrolling, WASD-scrolling, and middle-mouse-to-pan scrolling all work more smoothly at each zoom level.
    • On the no-pan variant, the middle mouse button being held down instead takes you into a "tilt and rotate" mode.
    • The rotation in this camera is based around a "turntable" concept for where you are pointing your cursor (or where the focal point of the camera is, anyway). This is different from the "tripod" style rotation that was there before in the other cameras (and is still there in them -- you are free to use any of our cameras, still).
    • Finally the camera feels like a friend rather than a foe! ;)
  • Previously when you were in free-look mode and then came out of it, the rotation of your camera would be all messed up in the Angled and Top Down camera modes. Fixed.
  • Fixed some general jerikiness that happened on occasion in our camera movement in particular; it was present in our old camera code as well, but more easily noticeable in our free-look camera code and our new camera that is part of this release. The jerkiness was also affecting some other random things, like fade-ins and a few timers. It was not affecting ship movement, however.
    • So what was up? Well, we were using Time.deltaTime, which normally is fine... except in a game where there are garbage collection calls every so often, you'll get very harsh spikes that are noticeable in animated stuff, particularly camera movement. We're talking about the difference of 100ms or so, but it's still substantial enough to feel really off.
    • Fortunately Unity provides a built-in Time.smoothDeltaTime, which automatically smooths those out so that we don't even have to do any of the hard work ourselves. We've now switched everything over to using that.
    • Incidentally, it wasn't just the garbage collector that was throwing this for a loop -- since our underlying simulation runs at a lower framerate than the visual part of the simulation, some frames are definitely longer than others. That was leading to micro-stutters that were irritating but possibly below the level where you'd be able to pinpoint what was bugging you.
    • All fixed now, at any rate, near as we can tell!
  • The game now supports separate speed adjustment multipliers for "fast mode" for cameras panning, rotating, and zooming on the galaxy map and in the planet view. There was no purpose in having a fast mode for tilt, because that's a pretty fast and definitely cosmetic thing anyhow.

Larger Planet Gravity Wells!

  • The radius of each planet's "play area" has been doubled, moving AIW2 much closer to AIWC in spatial scale.
  • The xml data relating to distances has been reworked:
    • Rather than one constant for the radius of a grav well and a variety of multipliers based on that (seconds for ship to cross grav well, what % of the radius a short-range-weapon has, etc), there's now constants for:
      • Grav well radius.
      • Base unit radius.
        • These used to be constants for every unit; these are now happily all multipliers, making broad adjustment much easier as well as avoiding raw distance units existing in multiple xml folders.
      • Base shield radius.
      • Base weapon range.
      • Base AOE radius.
      • Base ship speed.
      • Base shot speed.

AI Difficulty Levels

  • AI Difficulty is now selectable in the lobby, ranging from diff 1 (AI strength budget-to-fight-you is about 20% of normal) to diff 5 (the default, normal budget) to diff 10 (AI strength budget-to-fight-you is about 1000% of normal).
    • Lower difficulty is somewhat "dumber" with its units, specifically it waits longer before considering retreating during an attack (i.e. how long your turrets get to shooting-gallery a wave that's not strong enough to threaten you) and it waits longer before sending waiting threat off to join the Hunter Fleet.
    • Higher difficulty waits less time for both of those things.
    • The old core-dll definition of difficulty has been removed, replaced by a definition in the external (moddable) code.
  • AIP is now tracked per-AI-faction, and has been moved almost entirely from Core to External (moddable). The remaining core fields that store AIP numbers (how much AIP on death, etc) only have effect because External uses them.
  • The AI Warden Fleet and Hunter Fleet now have their own difficulty settings.
    • The Warden Fleet's population cap is now based on that setting and the base income of the Sentinels faction.
    • The Warden Fleet now starts with a certain difficulty-based % of its population cap already filled, so it can oppose your attacks earlier (it still starts at the AI homeworld so you have a little breathing room).
    • The Hunter Fleet, on difficulty 6 or above, now starts with some strength. That strength is based on the base income of the Sentinels faction and the Hunter Fleet's difficulty setting.

Balance Changes

  • All Starships now have a cap of 1 (per mark level) instead of 5/4/3/2/1 for Mk1/2/3/4/5. The strength per cap is the same.
    • This better distinguishes their role from fleet ships; they're much more distinct and individually powerful.
  • Shield Generator cap from 5 to 2, with the same strength per cap, to cut down on the piles and piles.
    • This also makes the AI use fewer of these; they're more individually powerful but won't cover as much area (also makes exposed units more likely).
  • You can now research Mk2 and Mk3 Shield Generators (giving you a potential total per-planet cap of 6, up from last version's 5).
  • The under-the-hood math for AI Shield Guardians now uses a "cap" of 1 instead of the 5/4/3/2/1 for Mk1/2/3/4/5 like other guardians (and how starships used to be).
    • Again, this reduces shield piles, maintains shield strength, but increases likelihood of exposed units.
  • Your Ark no longer projects a shield.
    • Probably the biggest single change to shields, actually. This will help players not expect to always have the whole fleet under cover, and not expect to bring the Ark along on every fight once they have a Flagship.
    • You still have the MkI Shield Starship that you can unlock at the start; it has roughly 1/3rd the shield strength the Ark used to have, so you can still protect your missile corvettes and such to some extent.
    • If you unlock the MkII Shield Starship, their combined shield strength is equivalent to what the Ark had, though not covering as big an area.
    • The Ark's defense type is now "Armor", meaning that the ships which get a bonus against it are all short-ranged.
  • Halved the amount of strength the AI puts into shields on planetary defense.
  • Fixed a bug where starting AIP was 60 instead of the previous 30. And while we were at it, reduced it to the 10 it was in AIWC (somewhat counterbalances not starting with starships or turrets unlocked).
  • You no longer start with any Starships or Turrets unlocked. You decide whether more fleet ships or a starship (or even turrets) are more helpful in your early battles.
  • You no longer have to gather your starting planet's Science; it's automatically gathered when you start the game so that you don't have to wait for it before making your first moves.

Prior Release Notes

AI War 2: Making Alpha Fun