Build 69721 fixes most (hopefully all) instances of builders not moving in range to assist something when they're a certain distance away. [Before playing this latest build of Planetary Annihilation, we ask that our community makes sure their eyeballs are planted securely in their skulls. Also, it's probably an excellent idea to turn off all your mods. New builds with the amount of eye-poppingly awesome changes like this one often introduce issues with outdated mods.] Huge news! Huge update! Over the last three or so weeks, we’ve been churning out an epic amount of changes to Planetary Annihilation. Today, we’re releasing all of them in this Mega Update you’ve, hopefully, just received. So, what’s new? The first thing we think you’ll notice is how much faster the game now runs. PA is quickly becoming a leaner and meaner machine than ever before courtesy some extra cycles devoted to ratcheting up the polish. Feel free to blow away your foes with a few more units, build a couple more factories, and play on more multi-planet systems. Basically, enjoy the smoother ride. Speaking of rides, take note of the new Commander entrance animation. After picking your spawn point, your Commander will come screaming into battle in a orbital pod of doom. We also added a new spawn option that, if selected in a lobby, allows you to spawn anywhere on a map. This option brings a new kind of aggression that foreshadows the huge and unrestrained battles Planetary Annihilation is known for. Icing on the cake? We've re-designed the lobby screen, as well as splashed a new coat of paint on Spectator mode, stat screen, and the game end user interface. Oh, and one more thing: watch out (or cackle with glee) whenever you make a new system in the editor. Planets that intersect in orbit now explode when they touch. Enhanced patch notes available below. Check them out, and don't forget to head over to the forums to discuss them in detail! Detailed Changes: [AI] Added an AI confif file to make it easier to change how the AI decides how many factories and fabbers to build. [AI] Fix for AI units not moving while underwater [AI] Updated AI to improve starting build and ramp up time. [AI] difficulty balance pass. [Audio] Adding looping music tracks for Battle. Audio balace, falloff and template work. [Audio] Adding a new FMOD parameter "view_frustum_distance" [Audio] Fix surround sound inversion bug [Balance] Give commander enough production to basically equal 3 mex, 3 power plants. [Celestial] Enhanced planet collisions [Celestial] Tweak the celestial physics limitations so that elliptical orbits are much more possible. [Client FX] Fix commander explosion not having lod distances set. [Game Start] The commander cinematic now shows up for all players, not just the host. [Gameover] Title and styling varies with game state (shows defeated, game complete, or victory). [Gameover] Shows a summary of selected stats for the player. [Gameplay] Fixed boom bots damage [Gameplay] fix the default action when clicking on an unfinished factory to now repair the factory instead of assisting it. [Gameplay] Move feature icons (aka metal spot icons) to the surface of the water, which is where we place metal extractors. [Gameplay] Fix for units not reclaiming wreckage that overlaps a build area. [Gameplay] Fix projectile turn rate code. [Gameplay] Fix for multiplayer games not spawning multiple commanders. [Gameplay] Switched commander spawn delay to 5 seconds so timing works with Ben's new spawn effect. [Gameplay] tweeked torpedo launchers so the turret isn't as low. This will hopfully make them work better when built on the shoreline. [GW] Fix for GW game over not abandoning the game. [Keyboard] Fixed 'q' and 'shift+q' bindings both firing. [Lobby] Added "land anywhere" option to the lobby. [OpenGL] Fall back to 2.1 context if 3.1 fails. [Pathing] Fixed not coming to rest when smaller unit assists larger unit causing the smaller unit to push the larger unit around. [Perf] Recon performance work ; Recon was causing quite a bit of late game performance hit. Work on improving this. [PIP] Added PiP mirror mode. [PIP] Added "last alert" pip mode. [SDL] Integrate Windows version of SDL port. [Settings] changed some confusing option titles: focus paths -> order previews. on / off -> energy on / energy off. [Spectating] Spectators now get the celestial activity alert. [Stats] Lots of behavior bug fixes (graph will now update at the correct times). [Stats] Added a table view (which can show either a snapshot of current stats of the game averages). [Stats] Stats history will be requested when the player becomes a spectator (since the collected history may not show oppenent data). This can take awhile since we can only ask for one slice of history at a time. [Stats] added new army stats: units built / units lost / enemy units destroyed. changed the damagable interface to accept a damager, who will may be given credit when the damagable is killed. currently only unit kills are tracked. added new fields to the army stats message sent by the stats_viewpoint. these new fields are not currently used yet, though they are sent to the ui. [Stats] the live game stats panel can now show data for multiple armies. [System Templates] 5 player system updates and adding a smashable asteroid to the 4 player-4 planet system. [System Editor] When dragging planets, round position to the nearest 100 [System Editor] Added simulation time display [System Editor] Turned off the editing controls while simulating. (Changing those will result in basically corrupting your system.) [System Editor] Fixed the simulation reset not going all the way to 0. [System Editor] Changed the physics time step to be frame rate independent. [System Editor] Correct the orbits of moons around moons (etc) when moving a base planet. [System Editor] Make any planets veolicty grabber grabbable (not just the selected planet) [System Editor] when you drag a planet with a moon, move the moon with the planet. [System Editor] Draw orbits for all planets. [System Editor] Changed the "simulate" button to "stop" while simulating. When "stop" is pressed, the system will reset to the initial state. [System Editor] A very coarse pass on fixing up some default planets. To any future planet designers, mass 1000 is *almost* never the right choice. I don't want to go so far as to enforce a larger mass on the server, but please use 5000 as the 'default' moon mass. [UI] camera controls will no longer automatically change when the active keymaps change. the live_game scene now subscribes the active keysmaps and wil update the camera controls when required. [UI] Fix for ghost structures under construction not going away if they atrophied while hidden under the fog of war. [UI] Fix for features and ghost structures not going away when a planet was destroyed if your camera was not focued on that planet. [UI] adding an option to squech global chat. [UI] Added the radius to the planet list in the server browser. [UI] Fix path displays for elliptical orbits. [UI] Fix for being able to select invisible build bar tabs. [UI] enabled spectator-only chat. Spectators (or defeated players) now have their own team chat channel. Also, there is now an option to prevent spectators from chatting with live players. This option can be set in the lobby.
Extended Checkin Notes: [Gameplay] Weapon vs water fixes. - TML missiles will now properly turn and hit targets that are under water. - Ship cannons no longer target units under water. - Weapon range capsules are now correctly constructed taking minGroundHeight into account. [Gameplay] Damage volume work: - PBAOE now creates a damage volume - Updated commander death weapon, mines, and bomb bots to use the PBAOE damage volume - Commander's death explosion now behaves like nukes, hooray! [Balance] Commanders fight better vs naval and air New torpedo weapon - damage: 250 - rate of fire: 2.0 [Balance] New aa missle - damage: 200 - splash damage: 200 - rate of fire: 2.0 - splash radius: 2 [Balance] Balance Changes: T1 AA Turret: Health: 500 -> 1000 Metal Cost: 300 -> 225 Weapon Range: 100 -> 150 T1 Assault Bot: Metal Cost: 90 -> 45 Vanguard: Metal Cost: 1200 -> 1500 --------------------------------------------------------------------------- [Pathfinding] V O X E L S : the new nav library - Voxels * All integration error related to crossing sector borders is _gone_. * Voxels are a more general approach, simplifying much of the code. * There is a Voxel for every AABB location that intersect with polygons. * They are 4x4x4 meters (the 2d grid was 4x4 meters) * Voxels have World Layer flags which determine pathability. * nav library is about 70-80% changed (converted to use Voxels) * Feels so good to check this in - 3D Voxel Integrator Integration looks at 6 neighbors if they exist (generally it's 4-5). In 2D I would look at 4 so the difference here is minimum. The 3d integration math is... much more involved than the 2d math, however the more expensive math only happens when all 6 neighbors exist. - VoxelTree : Fast Spatial Query support With the ability to look for voxels that have specific world layer flags. VoxelTree lookup is faster than sector to sector 2d grid traversal Speeds up AI Quieries and Structure placement Tests I noticed faster client response times - WL_Unpathable has been added for fast 'unpathable' lookups. - Fixed long standing 'get within range' for fabbers/flame tank issue. [Engine] HGrid work: - Major re-work of HGrid that makes it way, way, way faster - Warning: wall of words incoming. Mostly because it took me awhile to figure out exactly what HGrid was before I could figure out what to do with it. So I figured it was worth writing an essay for future selves. Useful comments also included in hgrid.h - Although this is big and scary looking the new code is way, way simpler. There's 40% less code! Less code and more speed. It brings a tear to my eye. - First, a description of what HGrid - The HGrid is a loose, sparse, heirarchical 3d grid. Whoa. That's a mouthful. - Loose octree would be a simpler description but it's less fun to say and somewhat more ambiguous. - Grid: It's a grid. - 3d: It's a grid along the x, y, z axes - Heirarchical: Layered where each grid cell has small grid cells inside it all the way down. - Sparse: not all grid cells in the space exist.The vast, vast majority do not. - Loose: objects are not fully contained in a cell. instead their center point is in a cell and that cell is at least as wide as the object's diameter. - The loose property is of particular interest. Non loose grids have the unfortunate property that objects straddling grid borders have to go "up" a level in the hierarchy. Even at the top level there are degenerate edges such that even a tiny object will be in the top most level and must be checked by all objects. By being loose all objects can be in a fixed level based on their radius. They are then put in a bucket based on their center point, which is also super fast to calculate. - The consequence of being "loose" is that for a given object you don't have to test just within it's grid cell and up the heirarchy. You also have to test neighbors. And neighbors up the heirarchy. More buckets but fewer bucket pairs. - Ok so all of that is what the HGrid is. Which honestly wasn't clear before. But that doesn't discuss this change list. We're still not ready for that! Next, what the code *was*. - The old code was slow. Very very slow. It was built on the idea that hashing bucket keys is fast. And checking if a hashed key exists is fast. That's all laid out by The Orange Book. It casuallys says for more speed you can make it heirarchical (which we very much need). Unfortunately our particular use case, small things on the surface of a large sphere, is somewhat degenerate. It results in a huge number of potential neighbors almost all of which CAN'T exist because they are under the surface or in the air. Bah hum bug. What happens is late game hundreds of thousands of hashes and lookups per tick resulting in a 10 to 40 ms PhysicsWorld::broadPhase - The worst case number of pairs to consider for physics is n^2. Every object potentially collides with every other object. For our game n is on the order of thousands. n^2 is therefore millions. Far far too large. The goal of the broadphase is drastically reduce the number of pairs to be considered by the narrowPhase. - New code time! - The new code broadphase takes only a couple of milliseconds. And even that can be made faster when it's worth it. - The new code is also super, super simple which is nice. - The meaning of the hgrid is the same even. - The new HGrid stores bucket pairs. The broadphase then generates object pairs for all objects in those bucket pairs. It is still n^2 object pairs for a given bucket pair, but the size of n for each bucket is quite small. - FWIW in at least one real game scenario that number of pairs created by the broadphase for n objects is on the order of 1n to 10n. That's pretty reasonable.
Updated. Where our the unicorns? Elliptical orbitz. Awesome! Now to see if I can get two planets collide into each other. Like you used to be able too. Edit: you cannot set up a system and have two planets collide into each other within 30 minutes like you used to be able to.
Time to work out what the 20 check-ins between the last PTE and this one are! I had the previous build listed as 69544 for some reason, it was actually 69564.
I think I've figured out why bomb bots don't seem to be working - they are doing friendly fire. If they are in mass, the first one (and the second that actually fires, etc) takes out a big chunk of his fellows and you don't get anywhere near the damage you expect. p.s. As I write this I see the scorch marks disappearing. Is that on purpose?
Ok, I did a quick test: Vision flicker in this build. It only occurs when PiP is activated, when lathing on main screen. Hitting ctrl+p always stops flicker. Easy repo- run PiP, start lathing. Happens every time for me. Though it's really weird that ctrl+p stops the problem. Also, ctrl+p shows up in PiP, which makes it really hard to read. Dxdiag.txt Edit: I don't know if it matters, but programs are stupid about my CPU. It is running at 4.8GHz, no throttling/C-step/parking/whatever. Dxdiag says ~3.5Ghz.
Scrolling is very weird for me. Scrolling out fast is way slower than scrolling in, but doing a single click of the wheel in either direction seems fine. I can't set the zoom speed high enough to be able to comfortably zoom out but zooming in is too fast. Shouldn't the speed be independent of the direction of the zoom so that we can easily go back and forth?
Also, strange (albeit trivial) bug. If you change resource scaling to 5, and hit enter on numpad it won't change to 5.0 Well my comp sucks, so it was run on lower settings. Looks a bit better on higher settings.
So actually it looks like maybe it's just an issue with the zoom depending on the scroll wheel speed. If I scroll really fast, the camera barely moves. Scrolling slowly allows it to zoom faster, which is really weird.
Scrolling for me is weird too. It seems linked to FPS, where the lower my FPS, the slower the scroll speed. This is reeeaally bad for me, but is going to be horrific for those who start the game with 60 and get to 10FPS by the end of the match.
Something I've noticed in the new build is that the lobby is no longer default-filtered to only show In-Lobby games. This is the only option I care to view (I'm sure others will agree).
Scrolling used to use native code to make sure it registered correctly. I wonder if they changed it so that it listens for every scroll wheel event in javascript, which would have the effect we are seeing.
Some more AI updates that, i think, went out with this build. AI should no longer try to target or even really pay attention to units being built on factories (since they cannot be attacked). AI should send better attack platoons. AI no longer builds assault bots. AI should do a better job of building radar. AI no longer goes bot factory first. Think that about covers it.