Conversation
DroidEventSchemas gained 'reel-stream' in #15134 without the spec being updated, so droid:test failed on `toHaveLength(21)` against 22 keys. The count assertion has drifted three times now (19 -> 21 -> 22) because it carries no information about which key changed. Compare the sorted key set against an explicit list instead. A missing or unexpected event now fails with the key name in the diff, and the partial toContain list it replaces no longer silently misses new keys.
Unused in practice and awkward to fly. Removing it also retires a black-screen suspect: while active it set visible=false on every mesh in the scene and relied on effect cleanup to put ~3000 of them back, holding a Map entry per mesh for the duration. Its two sim gates go with it — PropRenderer no longer short-circuits the frame and ThirdPersonPlayer no longer zeroes input or blocks pointer lock. playerAnchor and drei's OrbitControls stay; both have other consumers.
The vendored water lib builds its wave surface from PlaneGeometry(2, 2, 200, 200) — 40k quads, 80k triangles each. A visible oasis carries two of them (above + below), so one pool cost 160k triangles: more than a third of the frame at spawn, and far past what the PSX look needs. Measured on a production preview build at the same spawn state: 412,963 -> 269,347 peak triangles, exactly 2 x (80,000 - 8,192). Segment count is now a constructor arg on both passes, defaulting to the vendored 200 so the vendor files stay drop-in, with the app choosing the value in water/constants.ts. Caustics are left at 200: their grid drives caustic pattern detail rather than scene triangles, and headless warping drops the player out of the streamed world, so the coarser value could not be compared visually here. That one is a single constant away if it looks fine on real hardware.
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…off reserved itemdb fields (#15154) * docs(plan): professiondb Phase 2b-Rust engine consumers * feat(bevy_items): add professiondb loader module * chore(axum-kbve): embed professiondb-data.json for the gameserver * feat(engine): move Rust skilling gate/XP to professiondb; regen itemdb proto * chore(axum-kbve): drop stale SkillingInfo comment after professiondb rewire
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Wall and door sets are authored at 512 with a colour, normal and har map each, so the art alone held ~21MB of the ~68MB of texture memory. Downscale them into dist at build time, mirroring how gltfpack packs the models: public/textures stays full-res LFS truth and retargeting is one constant. Measured on a production preview build: texture VRAM 68.2MB -> 49.2MB textures 19 of 42 shrunk, 6374K -> 2027K on disk Normal and har maps are kept. This is a PS2-era look rather than PS1 hardware accuracy, so the POM height and normal shading tuned in #14123 stay intact; only the resolution drops. Downscaled bytes ship at the same URL the source had, which is the exact setup that served stale models twice before, so the hash plugin now covers textures too and salts them with the target size — the source never changes when only MAX_TEXTURE_SIZE does. Versioning moved into assetBase's existing URL modifier, the one choke point every three loader already passes through, so no call site needed touching; URLs that modelUrl already versioned are left alone instead of stacking a second query. sharp lands as a root devDependency (already present in the store) and the pass fails the build rather than silently shipping full-res art if it is missing. Power-of-two sources are asserted to stay power-of-two so tiling seams cannot drift.
…ive-webgpu (#15161) Consolidates dependabot PRs #14719, #14720, #14722, #14723, #14725. - prost/prost-build 0.13 -> 0.14 in uniti; aligns with every other crate in the workspace, which was already on 0.14. Regenerates the checked-in proto modules (additive Eq/Hash derives only). - syn 3.0.2 -> 3.0.3 (Cargo.lock). - @nxlv/python 22.2.1 -> 22.2.2. - postcss-merge-rules ^7.0.8 -> ^8.0.1. - react-native-webgpu 0.5.15 -> 0.6.3, bumped in both the root manifest and apps/kbve/kbve-react-native so the app does not resolve a second copy. Peer ranges are unchanged and Canvas/useCanvasRef/useDevice still export from the package root. Not included: expo-dev-client 57 (#14728) requires Expo SDK 57 while the workspace is on Expo 56, and pnpm/action-setup v6 (#10241) which is stale and only covers part of the workflows still on v5/v4.
Field was never read: catch odds scale off hp/max_hp/status, and the caught pet is minted from the live combatant snapshot. Combatant already carries level, so WildTarget.level was a second copy free to drift. Fixes `-D dead-code` clippy failure in arpg-server:lint.
…per build (#15162) public/textures is a bake output, not a master — pack_maps.py already writes into it — so resizing on the way into dist re-derived deterministic bytes on every build, and dev kept serving the 512s. That split is the same dev/prod divergence that hid the gltfpack mesh-name bug, and closing it the other way would have meant a second resize path plus a dev cache to keep in sync. Downscale the committed art once and drop the build pass. Dev and production now serve identical bytes because there is only one copy. Build cost goes from 233ms per uncached build to zero, sharp leaves the dependency tree, and the texture hash no longer needs a size salt since a retarget changes the file itself. art/textures/downscale.py is the repeatable step, sitting next to pack_maps whose SIZE now matches. 19 textures, 6374K -> 1686K on disk.
Phases A and B of #15159. Pets could be caught, healed and named, but not grown: PetProgress.xp was initialised to 0 and never incremented anywhere, and base_xp_yield and growth_rate were declared on NpcPet with no readers outside a test fixture. A mechamutt caught at level 5 stayed level 5. Phase A brings the Rust parser up to the PetInfo proto, which had drifted ahead of it: gender_ratio, secondary_element and evolutions were present in the proto, the generated JSON and the TS schema, but absent from NpcPet, so the sim silently dropped them. Also authors cyber-hound, the species mechamutt has pointed evolves_to_ref at since it was written — nothing read evolutions, so the dangling reference went unnoticed. Two data guards now fail the build if either recurs. Phase B adds simgrid::progress: the six canonical growth curves keyed off the species' growth_rate, xp_yield, and grow_pet as the single writer of PetProgress and the level-driven half of PetVitals. Level-up carries current HP across proportionally rather than refilling it — phase D of #14948 made battle damage persist, and a free heal per level would hand it straight back. A grown pet ends up stat-identical to one minted at the same level, since both go through level_scale. On the server, finish_duel queues each owned pet's share into PendingPetXp and apply_pet_xp drains it in its own system — the same split vitals.rs uses, because growing a pet needs &mut PetProgress and &mut PetVitals, which PetBank reads. Only fainted foes pay out, so a forfeit wins the battle and earns nothing, and a catch pays nothing because the pet is the reward. The wire is unchanged: PetView already carries level and xp, and the hub already renders both. A progress bar needs xp_to_next, which the client cannot derive without mirroring the curves; that ships with phase C, which changes the wire anyway for move-learn prompts. Also drops WildTarget.level, which #15028 added and never read — the caught pet is minted from the live combatant, so its level comes from the battle.
…reicon Unity migration (#15164) * docs(plan): professiondb Phase 2b-Unity consumers * docs(plan): professiondb Phase 2b-Unity — engine-neutral runtime view * professiondb: emit engine-neutral runtime view + add sync:professiondb * professiondb: regenerate data + runtime view + Unity sync * rareicon: add professiondb runtime-view POCOs * rareicon: add professiondb cache + loader system * rareicon: materialise harvest/compress from professiondb runtime view, drop dead itemdb defs * professiondb: add descriptor to sync:professiondb cache inputs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release: Dev → Main
15 atomic commits ready for main
Features
7343938)ff8eac6)01825a3)Bug Fixes
299d442)738576d)Performance
cc796e4)a978ff4)Build
2198d13)Refactoring
ba45da9)01dda77)Tests
da819c1)Chores
fe15ee0)e421366)77b8280)d6b7553)Builds on merge
This PR is automatically maintained by CI — KBVE Studio