Skip to content

Releases: hulryung-uo/anima-client

Anima v0.6.0 — you can chop a tree, and the night is dark

Choose a tag to compare

@github-actions github-actions released this 25 Aug 13:24

Anima v0.6.0 — you can chop a tree, and the night is dark

A from-scratch, cross-platform (macOS + Windows) Ultima Online client.
Signed and notarized on macOS, so it opens without a Gatekeeper warning.

Downloads

  • macOS (Apple Silicon) — Anima_0.6.0_aarch64.dmg
  • WindowsAnima_0.6.0_x64-setup.exe

What's new since v0.5.0

This release came out of re-reading ClassicUO against the shipped code rather
than against our own notes. Most of what follows is not a missing feature — it is
something that looked done and was not.

Night exists now. Dusk, night and dungeons never darkened, and the whole
light.mul shape-and-colour pass behind them had never once executed. The two
light levels the server sends are on opposite scales — 0x4F is a darkness, 0x4E
is a brightness floor that Night Sight raises — and we were comparing them with
min, which pinned the result to zero forever and made Night Sight darken the
screen. Torches, lamps and spell fields light the ground for the first time,
carried lights follow you, and a wall now blocks the glow behind it.

You can chop a tree, and mine a cave floor. Map statics were drawn but were
never click targets, and every ground target we sent hardcoded graphic 0 — so the
server built a "land" target and the harvest system, which needs a static,
could never match. Underneath it, tiledata.rs had been reading item height and
name from an offset four bytes wrong since forever: every static height was
really an ASCII character of its own name, and the "nodraw" placeholder cull had
never matched anything.

Find your party on the map. Party and guild positions (0xF0) were absent in
both directions, which is exactly the case a party needs — the server reports
only the members you cannot see.

Playing it feels different. Footsteps (no server sends them — the client has
to make them). Mobiles fidget when they stand still. Projectiles burst where they
land. Effects are depth-sorted into the world instead of painted over it, which
also stopped a bolt from revealing someone hidden behind a wall. Fierce storms
render instead of showing clear sky. Poisoned creatures are visibly green.

Interface. Macros are ordered sequences with delays, target-waits and mouse
or wheel bindings. Persistent name plates, including for ground items. Pinned
health bars with drag-select. Right-click closes a window. Context menus. Alt+click
to follow. Corpses open themselves. Last target, target self, one-key bandage.
Stat locks. Party tell, kick and loot permission. The target cursor now says
whether it is harmful or beneficial, and warns before an action that would flag
you criminal.

For contributors

The gate grew a step. Two workstreams independently declared a top-level const
of the same name in different files; the browser concatenates every script into
one scope, so that is a SyntaxError which aborts the later file and kills the
client — and node --check, which compiles each file alone, is structurally
blind to it. scripts/check-web-globals.mjs now compiles them together in the
page's real load order, in CI as well as locally.

docs/CLASSICUO_GAPS.md records what each change was verified against and, just
as deliberately, what it was not. Two things in this release are still not
verified and say so there: an effect light (no effect art on this data carries the
light flag) and the exact hand position of a carried light.

Anima v0.5.0 — containers, options and the journal

Choose a tag to compare

@github-actions github-actions released this 14 Aug 16:04

Anima v0.5.0 — containers, options and the journal

A from-scratch, cross-platform (macOS + Windows) Ultima Online client.
Signed and notarized on macOS, so it opens without a Gatekeeper warning.

Downloads

  • macOS (Apple Silicon) — Anima_0.5.0_aarch64.dmg
  • WindowsAnima_0.5.0_x64-setup.exe

What's new since v0.4.1

Container windows, two ways. Containers now open either as the authentic
gump
— the container's own art is the window, chromeless over the world,
sized exactly to the texture the way the traditional client draws it, dragged by
the art and closed with a right-click — or as a grid view (Options →
Gameplay), a tidy celled grid whose title bar shows the container's own icon and
name. That naming matters more than it sounds: the server gives a pouch and a
backpack the same gump, so the authentic window genuinely cannot tell them
apart; the grid can. Opening and closing now play the right per-container
sounds, taken from the reference client's own table — a backpack thumps, a chest
creaks, a corpse stays silent.

A real Options dialog. Settings are grouped into six categories in a left
rail — Audio, Video, Interface, Gameplay, Windows, Session — instead of one flat
list with the window launchers mixed in among the toggles. Underneath, the panel
is now generated from a single declarative table, so an option is described once
rather than kept in step by hand across three places.

The journal is its own window. Dragged, and resizable in both directions,
remembering its size and position like the other windows. U and J are now
independent: U hides the status panel, J shows or hides the journal.

Fixes. Tree and character shadows are back under whatever casts them (they
were sliding left, worse the taller the art).

Upgrading

Two small one-time changes if you used v0.4.1: the journal's remembered height
resets once (it now stores width and height), and if you had ever pressed J
to hide the journal it starts hidden — J or Options → Windows → Journal brings
it back.

First run

Anima ships no game data. On first launch it auto-detects an existing UO
installation, or asks you to point it at one.

Anima v0.4.1 — signed & notarized

Choose a tag to compare

@github-actions github-actions released this 13 Aug 04:13

Anima v0.4.1 — first signed & notarized macOS build

Identical to v0.4.0 in code. The macOS .app and the .dmg are now signed
with a Developer ID and notarized by Apple, with the ticket stapled into
both — so Gatekeeper opens the download without the "Apple could not verify…"
warning. No right-click-Open or xattr workaround needed.

Verified on the released files: spctl -aaccepted, source=Notarized
Developer ID
for both the app and the dmg; stapler validate passes on both.

Downloads

  • macOS (Apple Silicon) — Anima_0.4.1_aarch64.dmg
  • WindowsAnima_0.4.1_x64-setup.exe

See v0.4.0's notes for the feature changes in this line.

Anima v0.4.0 — human-playable polish

Choose a tag to compare

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

Anima v0.4.0 — human-playable polish

A from-scratch, cross-platform (macOS + Windows) Ultima Online client.

Downloads

  • macOS (Apple Silicon) — Anima_0.4.0_aarch64.dmg
  • WindowsAnima_0.4.0_x64-setup.exe

What's new since v0.3.0

Rendering fidelity. The world is drawn the way the reference client draws
it, one rule at a time. Terrain gets directional lighting on stretched
(sloped) land — the light belongs to map corners, so shading is continuous
across the ground instead of faceted per tile. Lights now use the real
light.mul shapes and colours rather than a plain radial glow. Characters
and trees cast shadows. Seasons substitute real art — grass becomes
snow, green trees become bare — instead of a colour wash. TileFlag.Translucent
art (spiderwebs, blood, curtains, ocean waves) draws at partial alpha.
Roofs and ceilings fade as you walk under them instead of popping off.
Mobiles fall over when they die, corpses wear what they died in, and
StaticFilters can render trees as stumps or hide vegetation.

HUD and windows. A configurable info bar, a counter bar for
reagents and supplies, a combat book (all 32 weapon moves), a racial
abilities book
, network stats, and an object inspector that shows both
the client's beliefs and the raw record the server actually sent. The journal
gains colour, tabs, timestamps and resizing; containers draw as the bag they
are
rather than a grid; an ignore list; and every window now stays where
you put it
and comes back on screen.

Interaction. Steer a ship from the keyboard, post and reply on bulletin
boards
, write in a writable book, edit map pins, click to loot a
corpse
, and use the decoded chat system. The agent contract gained five
menu/rename verbs.

Fixes worth calling out

A whole class of pathing defects, closed. The scene's statics stream is both
the draw list and the browser's pathing input, so any object dropped for a
drawing reason silently lost its pathing data too — leaving the client blind
to things the server can still see. Six sites had this shape: the ceiling cull,
tiledata nodraw statics and items, invisible-but-solid multi components
(including every boat's own hull), and two draw budgets that deleted whole
records. All six now emit a never-drawn record that carries pathing bits and
nothing else, and budgets degrade rather than drop. Measured witnesses included
an 18 Z-unit error on a ship's origin tile and a HouseLadder rung the client
could not see.

Also fixed: land that was being stretched where the reference draws it flat,
black ground read as holes, mobiles wearing gear they had taken off, and a
tiledata flag that had been sitting under the wrong name (WET was in fact
Translucent — one nibble apart, and the neighbouring bit is load-bearing for
walking onto water).

First run

Anima ships no game data. On first launch it auto-detects an existing UO
installation, or asks you to point it at one.

Anima v0.2.0

Choose a tag to compare

@github-actions github-actions released this 27 Jul 14:04

Anima v0.2.0 — character creation, housing and movement

A from-scratch, cross-platform (macOS + Windows) Ultima Online client.

Downloads

  • macOS (Intel + Apple Silicon) — Anima_0.2.0_universal.dmg
  • WindowsAnima_0.2.0_x64-setup.exe (installer) or Anima_0.2.0_x64_en-US.msi

What's new since v0.1.0

Character creation — a step-by-step wizard: name and gender, stat
allocation, a free skill picker (or a profession preset), full appearance
(skin, hair, beard, shirt, pants) with a live paperdoll that recolours as
you choose, and the shard's real starting cities with the descriptions and
coordinates the server itself advertises. Existing characters are a clickable
list; a rejected delete no longer drops your session.

Housing — placing a house now shows the actual building under your
cursor while you pick the spot. Walking into a closed door opens it
(optional, on by default). You can walk up a customizable foundation's stairs.

Movement — the client computes its own standing Z (a port of ClassicUO's
CalculateNewZ), so slopes and stairs no longer make the avatar bob or snap.
Boat decks are walkable.

Rendering — pixel-accurate clicking (clicking a sign no longer hits its
hanger), stairs and walls no longer hide your character, camera zoom
(wheel / trackpad / +/-), and draggable HUD and minimap panels.

First run

Anima ships no game data. On first launch it auto-detects your existing UO
client files (.mul/.uop) — checking known install locations and a
configured ClassicUO — and asks with a folder picker if it can't find them.
You bring your own legally-obtained UO client; nothing copyrighted is
distributed here.

Note — unsigned build

Not yet code-signed, so the OS will warn on first launch:

  • macOS: right-click the app → OpenOpen (once), or
    xattr -dr com.apple.quarantine /Applications/Anima.app.
  • Windows: SmartScreen → More infoRun anyway.

See docs/DISTRIBUTION.md.

Anima v0.1.0

Choose a tag to compare

@github-actions github-actions released this 24 Jul 05:18

Anima v0.1.0 — first desktop release

A from-scratch, cross-platform (macOS + Windows) Ultima Online client. Connects
directly to a UO server and renders the world in a native window.

Downloads

  • macOS (Intel + Apple Silicon) — Anima_0.1.0_universal.dmg
  • WindowsAnima_0.1.0_x64-setup.exe (installer) or Anima_0.1.0_x64_en-US.msi

First run

Anima ships no game data. On first launch it auto-detects your existing UO
client files (the .mul/.uop files) — checking known install locations and a
configured ClassicUO — and asks with a folder picker if it can't find them. You
bring your own legally-obtained UO client; nothing copyrighted is distributed here.

Note — unsigned build

These bundles are not yet code-signed, so the OS will warn on first launch:

  • macOS: right-click the app → OpenOpen (once), or
    xattr -dr com.apple.quarantine /Applications/Anima.app.
  • Windows: SmartScreen → More infoRun anyway.

Signing/notarization is wired and opt-in — see
docs/DISTRIBUTION.md.