On this page
Monday 2nd Investigating potential issue with rail invalidation not rewinding far enough at high time speedAdding extra information to the inspector for data pages Doesn't seem to be a real bug Cleaning up February notes Modifying orbit rail picking to be done mostly in parallel jobs, instead of the main thread.Probably slower for a small number of picks, but scales much better for large numbers. Added live-integration based extrapolation back into rail sampler (temporarily removed last month while developing live integration system) Tuesday 3rd Drafting "what is kessler" for Discord Considering sensor/tracks refactorCurrent system:Relationships:Sensor Platform (E) -> Sensor (E)Sensor Platform (E) -> TrackCollection (C) -> Track (E)Sensor Platform (E) <- Track -> Target (E) System updates sensor(s), sensor updates track(s)This is a problem, sensor updates do a lot of spatial querying (expensive) and chase a lot of entity relationships (expensive) New idea: Wednesday 4th Thursday 5th Friday 6th Converting deviation decay systems to jobs Converting sensor cross reference systems to jobsNot doing this, they all reference the same data as each other so there's less parallelism available without a refactor Improving TypedEntityReference in Myriad.ECS (faster, simpler) Monday 9th Improving visualisation in RADAR test scene Creating components for tracks, for the new sensor updating system Created system to initialise tracks with sensor info Created system for RADAR Scan Created system for RADAR Track todo: Tuesday 10th Updating RADAR track system to decide which tracks it should trackOverall tracking is slower, the more targets there are Creating RADAR scanningCount contacts Decide which ones to track Determine beam angle and SNR based on worst case assumptions about track position/range etc todo: Profiling Wednesday 11th Creating system to calculate all kepler positions every frame, sensors systems can use this to check LoS Caching RCS (radar cross section) per-track Pre-calculating some values in RADAR scanner and re-using them every frame Jobbify RADAR scanCan't do this with current structure, list (components) contains a list (of sensors) Created system to do LoS checks once, all sensors can use this Thursday 12th Investigating GitHub CI runner for Unity projects Debugging issue with resource disposal in job queriesJob gates take a copy of the handle, so it's being disposed twice (on both copies) Needs future work to improve this Testing obstacles/LOS with RADAR Friday 13th More work on CIAccess token for private packages Hanging forever while running edit mode tests? Improved sensor track inspector (fixing perf issues with lots of tracks) Setting up test coverage reporting Tests for various helpers/extensions:Colour Span StatsVariance is wrong (incorrect weight) StdDev is wrong (same reason) Find Min/Max List Rail serialisation QuaternionsIsNaN checks check is incorrect Enum Plane ULong v128/v256 TimeSpan Monday 16th Updating editor version to 6.3.11f1 More tests!long3Fixed off-by-one bounds checking, actual memory safety error! BoundsMinMax BitList128 BitList256 FixedSizeStackList Metre3 LineSegment3DSphere intersection test broken Line closest point not clamping to segments properly BoundsSphere Double3Extensions NativeHashMapExtensions NativeArrayExtensionsTests RootFinderInverse interpolation checks the bounds of the guess incorrectly, sometimes guessing a worse value NativeSliceExtensions NativeHashMapExtensions NativeMultiHashMapExtensions SimpleRandom NormalizedRay3DDouble normalisation (not a bug, just inefficient) UnityMathematics.Random.Extensions System.Random.Extensions Up to 13.2% total coverage ColorConverterFalling back to default colour (magenta) due to incorrect formatting JSON SingleOrArrayConverter InterceptCalculatorFailing to calculate intercept during projectile boost phaseRunning out of iterations in the root finder Reduced max-time, no point searching for intercepts so far into the future Designing orbital intercept solverWriting a lambert solver, going to need this to solve intercepts in keplerian space Tuesday 17th Continuing with lambert solverBuilding a single-revolution variant (this is what I actually need 99% of the time) Tests Optimisation Messing with some ideas for a cool menu design Wednesday 18th TestsOctree Parallel Octree Ray3DFixed NaN for parallel/zero length rays ExponentialMovingAverage SweptBoundingSphere DualRailZipper More menu work Thursday 19th Tests will continue until morale improvesSceneUnit SceneUnit3 SingleExtensions NetworkWriter/NetworkReader extensionsJobExtensions GameObjectExtensions BoundsCone long3 operators Root finder fuzzingFixed bug in handling negative ranges which caused it to diverge away from solution! Particle swarm optimisation 22.6% coverage Creating scene for testing orbital gunnerySystems for shooter and defender Tag components Refactoring system/scenario loading Adding some new capabilities to campaign/scenario loading"Parallel" orbit generation Vector generators Friday 20th Fixing RootFinder bug exposed yesterday Gunnery test scene Refactoring NBody setup Fixed thread safety issue in Myriad.ECS query jobs Monday 23rd Investigating why test bullets are not having their position setRecent changes for extrapolation in rail system added a requirement that Nbodies have the capability to make burns (needed for extrapolation). Bullets don't have this! Added 1 second of extrapolation to all rails when first created, gives time for position systems to warm up Added activation to scene objects, so they can be disabled until the position is first set Investigating parallelising FindClosestVisualProximitySystemNeeds access to Entity which isn't possible in a job query Exposing EntityId array in Myriad.ECS Tuesday 24th# Updating Myriad+Unity integration to expose entities to job queries Updating FindClosestVisualProximitySystem to use job for some of the work Attaching gun (using bullet chain system) to test ship Wednesday 25th Refactoring some more bullet culling systems Encountered exception testing at high time speedIndexOutOfRangeException in Myriad.ECS.Worlds.Chunks.Chunk.AddEntityAdding tests to cover thisReproduced the error - full chunks are not handled properly in some cases Fixed Also optimised Archetype.HasComponents checks while working on thisReplaced set membership check with array lookup Created basic system to point guns at assigned targets Thursday 26th Implementing gun aiming properly Switching job query scheduler to use finer grained scheduling (per archetype+component, instead of just per archetype)Updating safety system Updating all query types Updating Unity+Myriad package Friday 27th Improving bullet renderingShorter Brighter Additive blending Replaced texture with a soft curve Randomised brightnessRemoved this, don't have a stable per-bullet ID to use in the shader for randomisation Setting up test projectiles with collisionsTarget needs:BroadphaseSphereNarrowphaseColliderNeed to tag collider leaves with entity IDMade this optional - use the root entity if the leaf is not tagged with an entity Optimising collision handling system Fixed damage model lookup (no longer fetching armour damage model from the bullet!) Setting up damage modelTarget needs ArmourComponents.DamageModel Bullet needs BulletDamageContainerAttach to gun, it will be auto copied to bullets Narrowphase collision handling is incredibly expensiveLooks like it's the job completion that's taking time Monday 30th Added temp code to delete entities as soon as they take a hit from a bullet Setting up kinematic chain for turrets (base rotates to azimuth, barrel rotates to elevation) Messing with some ideas for rendering flares from phased array lasers Tuesday 31st Finished up temp systems for turret pointing Added a new system resource cleanup to Myriad.ECSUsing this in bullet system group Ported turret rotation code to a proper system Researching assignment problem (optimally assigning PDCs to incoming targets)Algorithms:Hungarian algorithm is optimal, but O(n^3) Greedy assignment (assign best gun to best target, repeat) is fast but non optimal Auction Algorithm is fast and near optimal Some extra complexity:Multiple targets (jobs), more than number of PDCs (workers) Costs change constantly (every bullet that is fired reduces the danger, since that target has a probability to be destroyed) Multiple guns could attack one target Some guns might want to target groups of close objects (e.g. flak) Some guns may attack multiple targets, but get less efficient for every one they attack simultaneously (e.g. phased array laser) Building system to link together gun targeting and turret kinematic chain