.metadata
Versions
Every version of this package its world published, newest first by when it first appeared. A version published again later keeps its place.
feat(doom): authentic Doom-marine player avatar (8-dir PLAY-sprite body, first-person local) build_player.module authors the marine body assets via asset.create: 8 view-rotation stand + walk materials (mirror-packed PLAYA-D, rotations 6/7/8 are real h-flipped textures), a death-frame sequence, and a shared sprq_PLAY quad at Doom scale. DoomPlayerBody.component renders the body the way Doom multiplayer does: the owner hides its own body (entity:hide on isLocal -> first-person), every other client renders + rotates it from the bearing of that client's camera relative to the player's facing; walk vs stand from movement speed. Selects among the authored doomspr_PLAY_* materials (no runtime authoring). doomguy.bundle (tag: playerAvatar) = first-person controller root + marine body child. World avatar_default_play=doomguy, camera_default_play=@builtin::controller.first_person. --- feat(doom): 8-directional sprites â aim-based player body + enemy walk rotation Shared doom.sprite_decode module owns the mirror-pack decode + doom_billboard material authoring (one source); build_player + build_actors are thin callers. Player body: DoomPlayerBody now picks its rotation from the camera bearing relative to the player's AIM/look direction (Doom-authentic) â the owner publishes its look facing into replicated faceX/faceZ fields, remotes read them. A player backpedalling while aiming at you shows their front. Enemies: build_actors authors 8-rotation walk atlases per monster (POSS/SPOS/ TROO/SARG/BOSS); DoomMonster picks the rotation from the camera bearing vs the monster's movement heading, so a monster moving away shows its back instead of always facing the camera. World camera: DoomCamera (world-content cameraBehavior) is the first-person follow camera (reads Camera.follow); camera_default_play points at it. --- fix(doom): first-person pitch inversion + ground monsters (floor-snap) DoomCamera: flip pitch sign so dragging down looks down (was inverted). DoomMonster: floorSnap() raycasts straight down each active frame and snaps y to the floor, so monsters stay grounded when crossing sectors of differing height instead of keeping their spawn-sector height and floating. --- fix(doom): robust monster floor-snap + reliable player look-facing channel floorSnap now casts from just above the feet (+1.0) so it only snaps DOWN to the floor beneath the monster, never up onto a column top / overhang it stands beside (the earlier +4.0 origin snapped monsters onto columns, which read as floating / oversized corpses on death). Player body facing: DoomCamera publishes the horizontal look direction into the avatar root's (replicated) rotation; DoomPlayerBody reads the root's forward instead of writing Sync fields from the hidden body (which did not propagate). Removed the unused faceX/faceZ fields. --- feat(doom): weapon system (6 weapons, selection, viewmodel) + facing sign fix doom.weapons: shared roster (Fist/Chainsaw/Pistol/Shotgun/Chaingun/Launcher; plasma+BFG are registered-only, absent from shareware). build_weapons authors a ready+fire viewmodel texture per weapon. DoomGame: currentWeapon state; number keys 1-6 select the owned weapon in a slot (slot 1 prefers chainsaw over fist); first-person weapon viewmodel anchored bottom-center, flashing the fire frame on each shot (DoomWeapon bumps firePulse); HUD shows the current weapon's ammo pool + name. DoomPickup auto-switches to a newly-picked weapon. DoomWeapon: fires the current weapon per its stats â hold-to-fire gated by the weapon's cooldown (auto chaingun), melee weapons need no ammo, the launcher adds splash damage around the hit. Stats moved out of the component into doom.weapons. DoomCamera: derive the published look-facing from the camera's own forward (the -Z basis) so the body's faceX/faceZ matches the actual aim (fixes the 180 flip). --- fix(doom): lazy-require doom.weapons in components (world module index not ready at scene-apply) DoomGame + DoomWeapon required doom.weapons at module-load time, which runs during scene apply before the world module index is built, so the require failed and the components dropped (no HUD, no weapon). Require it lazily at first use. --- fix(doom): weapon viewmodel via resident runtime textures (UI image can't load world .texture assets) The UI image widget shows '[loading]' forever for world .texture assets (they are not GPU-resident). doom.weapon_textures uploads each viewmodel sprite as a resident runtime texture (renderer.texture.create) and returns a name->guid map; DoomGame's viewmodel references those guids. Removed the unused doomgun_*.texture assets + build_weapons.module. Forces a one-time gun+HUD re-render once the textures resolve (they load after the first frame). --- fix(doom): playable combat â inline weapon roster + gun-texture decode (component require collapse), live-public HUD, horizontal auto-aim, corner HUD, respawn ammo --- feat(doom): composite real muzzle-flash sprite (PISFA0/SHTFA0/CHGFA0/MISFA0) onto the weapon fire frame via picture offsets --- fix(doom): 8-dir billboard handedness (player+monster), standalone body visibility, despawn-safe DoomPlayerBody --- chore(doom): delete dead weapons/weapon_textures modules (inlined into components); add README+.metadata sidecars to sprite_decode/build_player/build_actors
01KVFCPE64F8FZPYGFB61WR6PTec50c4758eBrowse filesCompare from here