Skip to content

Releases: m0nnnna/MeoWoW

v0.1.6

Choose a tag to compare

@github-actions github-actions released this 11 Sep 21:41

v0.1.6

Added

  • Mail can now be written, not just read. A compose window opens from the mailbox's "Send Mail" button — recipient, subject, body and a money field — and outgoing letters can carry up to twelve item attachments: right-click a bag item while the form is open to attach it, the same gesture trade offering already uses. Deleting an emptied letter is a deliberate two-click affordance-then-confirm, matching how discarding a bag item already works.
  • The minimap now draws with the game's real chrome — the actual border texture and player arrow — instead of a plain stroked circle and a triangle, plus +/- zoom buttons beside the wheel.

Performance

  • Standing inside a building no longer tanks the frame rate. The Lion's Pride Inn ran at 40fps because the collision index lumped an entire vertical column — floor, the storey above, the roof, every wall between — into one bucket; it's now split by height, cutting indoor collision checks roughly 9x and lifting the inn to 60-70fps.
  • The world connection no longer wastes up to 15ms every single frame waiting on a Windows timer quirk when the stream goes quiet — draining the socket now polls without blocking.
  • Render distance now matches the original client's default (397 units instead of 12,000), distant particle effects (candles, torches) are no longer drawn full-size from far outside view, and several frame phases that used to be measured as one lump got split apart and fixed individually. Goldshire went from 68fps to over 100.
  • Buildings are now culled room-by-room ("portal culling") instead of drawing a whole city whenever you're inside any part of it — Ironforge's building draws dropped from 731 to 128 and its interior clutter from 357 to 74 draws. Ironforge, previously the slowest city in the game at 13fps, is now the fastest of the three at a 140fps median.
  • Opening a trainer with a long spell list used to freeze the client for over 17 seconds (one particular trainer offers 86 spells); it now reads the spell database once instead of once per row offered.
  • Newly-visible creatures and NPCs no longer cause a hitch the first time you see them — loading their model now happens on a background thread instead of blocking the frame.

Fixed

  • Characters could fall through the world on a hillside above a cave, or occasionally in shallow water over sunken riverbed props. The standing-surface check now takes whichever of the terrain or nearby collision geometry is actually higher, instead of always preferring one over the other.
  • NPCs wearing a cloak rendered it as a flat white sheet instead of the painted texture.
  • A character model ear-geoset regression was fixed, restoring correct default ear geometry on models that expose the newer geoset slot.

v0.1.5

Choose a tag to compare

@github-actions github-actions released this 05 Sep 13:21

v0.1.5

Added

  • Quest rewards are named and hoverable. A reward used to draw as item 2224 x1; it now resolves through the item cache, colours by quality, and hovering shows the full tooltip. Fixed a bug where picking the second reward choice snapped back to the first every frame, because the server re-sends the offer on every re-query and the reset wasn't conditional on the quest actually changing.
  • Item tooltips warn about gear you can't use — wrong class, wrong race, armour too heavy, or too low level — with a red line under the name, and show a green stat-by-stat comparison against whatever's currently worn in that slot, including weapon DPS.
  • Right-click a worn item to send it back to the bags, the missing counterpart to equipping by right-click.
  • Your own character's look now updates live when you equip or remove gear, instead of staying frozen at whatever you were wearing at login.
  • Fountains and canals render as water. WMO buildings carry their own liquid (MLIQ) separately from terrain water, and it was never parsed; Northshire Abbey's fountain and Stormwind's canals now draw blue instead of not drawing at all (or, briefly, as green lava — the format encodes liquid type as a legacy index, not a direct DBC id).
  • Resurrect at the spirit healer instead of needing a corpse run, with an arrow on the ghost's dead screen pointing at your body the whole way there.
  • The client notices when the connection drops and returns to the sign-in screen (pre-filled from your last session) instead of sitting on a frozen world forever.
  • Multiple sign-in profiles. The sign-in screen remembers a list of account+server combinations, most recently used first, with an opt-in "save password" per profile that goes into the OS credential store, never into a file.
  • Chests and gather nodes opened by a cast now loot correctly, waited out for the server's own cast time instead of a client guess.
  • Combat voice no longer overlaps into a wall of noise — one grunt or effort line per creature per fight, roughly every two seconds; death cries and first-aggro snarls are unaffected.
  • The client's window and taskbar icon are now generated from a single PNG master at build time instead of being drawn in code.

Fixed

  • Two crashes that killed the whole process with no panic or backtrace. A corrupted network read could leave the packet cipher permanently desynchronised, and a parser would then size an allocation from the resulting garbage byte count — one observed case tried to allocate 137GB and the process was simply gone. Reads are now tracked so a partial read can't silently desync the cipher, and no record count is trusted past what the packet body could actually hold.
  • Jumping and falling were badly broken — six separate live reports (boosted over fences, no fail on a missed jump, instant landings, phasing through fence posts) all traced to one line: the jump arc was anchored to the ground under the character instead of to where the jump started, so crossing uneven terrain mid-air silently added or removed height. Falling didn't really exist as its own state either. Both are fixed, along with three collision bugs the rewrite exposed (fence posts not colliding, a wall-crossing guard that could be bypassed, and getting stuck dead against an obstacle instead of sliding along it).
  • Transparent effects like a fountain's water curtain could be painted over by unrelated opaque geometry drawn later in the frame, because blending order was only correct within a single model, not across the whole scene. Blended draws now happen in their own pass after everything opaque.
  • Quest items you hadn't picked up yet showed as Item 11119 instead of their real name, because nothing asked the server about an item until the first copy landed in your bags. The tracker and quest log now ask for a quest's item objectives as soon as the quest is known.
  • A resurrected character's old corpse marker could stick on screen forever, pointing at the leftover bones instead of clearing once you were alive again.

v0.1.4

Choose a tag to compare

@github-actions github-actions released this 28 Aug 23:13

v0.1.4

Performance

  • Ironforge went from 13fps to a frame that holds 77-83fps with hundreds of bodies on screen. Nothing was being culled: every resident tile, model, and WMO room was drawn every frame regardless of what the camera could see. Terrain, models, and buildings (down to individual WMO rooms) are now frustum-culled, in both the main pass and the sun's shadow pass.
  • Fixed an O(n²) in collision. Every step queried a grid lookup per nearby triangle rather than once for the cell, which turned a walk through a crowded room into millions of triangle tests a frame.
  • The minimap was rescanning its entire 18,644-entry index every frame, once per room of the building you were standing in. Now cached.
  • Sound effects and music were being re-read and re-decompressed from the archive on every play, including every footstep and every time an ambience loop ended. Now cached.
  • GPU instance buffers were being allocated fresh every frame instead of reused.
  • Removed a redundant duplicate ray-cast in the follow camera, and stopped posing/simulating skeletons and particle systems that are off-screen and out of reach.
  • Fixed a frame-timing bug in the profiler itself that was misattributing a slow frame's cost to the next frame, manufacturing a phantom multi-millisecond stall that had nothing to do with vsync.

Added

  • An XP bar under the action bar, with current/next-level progress.
  • A level-up effect — a chime, a screen-anchored burst, and a "Level N!" banner.
  • Rain and snow ambience audio, and precipitation no longer falls indoors.
  • Tab-target, cycling the nearest attackable mob; Ctrl+Tab cycles the party instead. Excludes players, talkable NPCs, and critters.
  • R as a second autorun toggle, for keyboards without a reliable Num Lock.
  • Retail-style on-screen notifications for the sound/music toggles (Ctrl+S, Ctrl+M).
  • Handling for cross-map transfers (zoning between maps, not just areas within one).

Fixed

  • Targeting yourself froze the selection bracket and misplaced your own floating combat text at your login spot, since the local player's position is never echoed back through replicated state.
  • Right-clicking through another player now reaches the NPC or mob standing behind them instead of always selecting the player.
  • Tab was silently being swallowed by the UI's own focus-cycling, which also left movement keys unresponsive afterward. Tab is now given to the game first.
  • Autorun only cancelled on S and Down despite claiming to cancel on any movement key; now it does.
  • Tab was targeting players, questgivers, and critters, not just mobs.
  • A questgiver's mark stayed stale after you turned in the last objective, since finishing a quest changes nothing about the log's id list.
  • The target bracket and questgiver icon floated near a sheathed NPC's feet instead of centering on their body.
  • Texture-only capes weren't resolved from equipped items.
  • NPCs (e.g. Eagan Peltskinner in Northshire) rendered slightly floating above the ground, from a small, tolerated gap between the server's stated spawn height and this client's own terrain query.
  • Floating combat text spawned at the target's feet and was silently dropped whenever the target's position couldn't be resolved (e.g. a corpse despawning right after a killing blow).
  • Right-clicking a lootable object with no chest icon (e.g. a gathering node) showed no cast bar or animation, unlike an actual chest with the same lock.
  • Minimizing the window caused a brief flicker as if it were closing, from repeatedly reconfiguring the swapchain to a degenerate 1x1 surface.
  • Fixed WMO area-audio defaults and minimap tile placement.

Full Changelog: v0.1.3...v0.1.4

v0.1.3

Choose a tag to compare

@github-actions github-actions released this 23 Aug 13:01

v0.1.3

Fixed

  • A staircase that could not be walked up. Northshire Abbey's grand lobby staircase refused every walking attempt outright — treads shallower than the character's own collision radius made the second riser register as an ordinary wall. Climbable with no jump needed now.
  • Stealth and shapeshift forms couldn't be turned back off with the same button. Pressing Stealth or a shapeshift a second time silently did nothing, because re-casting a toggle the character already holds is discarded by the server before it replies. The button now sends a proper cancel instead of a recast.
  • Chests (Milly's Harvest and similar quest pickups) didn't open. These use a different interaction than doors, mailboxes, and levers, and were silently ignored. Right-clicking a chest now casts the correct lock-opening spell instead of a no-op request.
  • Animation crossfades stretched or compressed limbs. Blending was done on completed model-space poses, which moved child bones independently from their parents mid-transition — most visible around shoulders, wrists, and fingers. Transitions now blend in bone-local space before the hierarchy is composed.
  • The follow camera lost track of what it was looking at on stairs and near ceilings, spinning through walls, clipping into rooms it had already left, and occasionally crashing outright. Fixed the stale aim after ducking under a low ceiling, added an indoor distance cap and a multi-ray wall check, and smoothed out the resulting judder.
  • A rare crash on minimizing the window or on the very first texture upload, from mishandled wgpu/egui surface and texture-delta state.
  • ADT-placed props were misoriented (most visibly fence ends) — doodad rotation now matches the client's own angle composition.
  • M2 textures on the map (e.g. animated signage) no longer animate/bound correctly during a draw.
  • Particle-only mesh batches were suppressed by matching an asset filename, which could miss or misfire on models it hadn't been told about. Now detected structurally, from the parsed model and its decoded texture alpha.

Added

  • Item tooltips. Hovering a bag or worn item now shows its name (coloured by quality), armor/weapon stats, stat bonuses, and a resolved description of any on-use effect.
  • Quest reward choice. Quests offering a choice of rewards now show all of them with a picker, instead of always silently taking the first.
  • A Close button on the loot window, so a corpse with items still on it can be walked away from without taking everything.
  • A global cooldown sweep and a persistent auto-attack ring on the action bar — most castable abilities have no cooldown of their own and previously gave no feedback at all when pressed.
  • A rogue's combo points, drawn as pips under the target frame.
  • Other players now visibly shapeshift and stealth. A druid in Bear Form is drawn as a bear; a stealthed rogue fades to 45% opacity and crouches, visible to whoever can actually detect them.
  • WMO doodad sets are rendered. Authored props inside buildings — fountains, lamps, and similar — were previously discarded entirely.

Full Changelog: v0.1.1...v0.1.3

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 21 Aug 21:03

v0.1.1

Fixed

  • Destroying a bag item didn't work. Picking up an item and dropping it on open ground to confirm destroying it was silently swallowed by the camera-drag controls — the interface had no notion that an item was currently held, so the click fell through to the 3D view instead of the "Destroy?" prompt. Dropping/destroying now works reliably.
  • Quests that skip straight to turn-in with nothing left to hand in used to open a completely empty questgiver window. That header is now parsed, so the reward/turn-in screen shows up correctly.
  • Right-clicking a lootable creature with no health data replicated yet could be misrouted into an attack attempt instead of opening its loot. Loot/attack routing now also checks the server's own lootable flag, not just health.
  • Added support for a generic "interact with this game object" request (doors, levers, quest pickup objects) — previously only mailboxes had a working right-click interaction; anything else silently did nothing.
  • Camera collision now tells a wall from a low ceiling instead of always treating a low overhead surface the same as a wall in front of the camera.

Added

  • Gossip menus now show an NPC's actual scripted dialogue lines ahead of any quest list, so multi-step conversations can be clicked through instead of only ever seeing quest rows.
  • Vendor windows are now their own frame, styled like the trainer window (buy only for now — no sell window yet).

Known issues

  • The Milly's Harvest quest interaction (and possibly similar quest pickup objects) is still not confirmed working end-to-end; investigation continues.

Full Changelog: v0.1.0...v0.1.1

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 20 Aug 04:05