News

The Dawn weapons

The Dawn set in the Blender viewport on a grid floor: a tome, a quiver and arrow, a blade, a bow and a staff

The Dawn set is our first full set of weapons: a blade, a bow with its own quiver and arrows, a staff and a tome, one for each way to fight. This post covers how they're designed, and how each one is rigged to sit right in a hand.

Designed for a role

We're a classless game, so the weapon makes the fighter, and each Dawn weapon is shaped by what it does in a fight.

  • The blade is one-handed dark steel under a gilded star guard, for fighting up close.
  • The bow is a carved recurve tipped in gold, for distance and precision. Every bow ships with its own designed arrow and quiver. They're part of the bow, not separate items, so a new bow is three models and a few lines of data.
  • The staff is held in one hand. It's a channel, not a club: the staff gathers the power while the free hand conjures the spell and releases it. So attacks barely move the staff, and spells leave from the other hand. We tried an off-hand focus first, and it never fit.
  • The tome is for healing. It's carried closed, by its spine, in the off hand, leaving the casting hand free.

Carved wood, gold fittings, pale wraps and a star or sun on every piece make the set read as one family. Proportions were set in play, not on paper. The staff became a walking staff by stretching its shaft alone, leaving the head and the wrap untouched. The arrow was slimmed and lengthened until it sat right at full draw.

From model to game in one step

Each weapon has a small spec file beside its source model. It says which axis runs to the tip, which way the working side faces, where the grip's centre is, and its triangle and texture budgets. One script builds the whole set:

  • It moves the model into one shared frame: the origin at the grip, the tip along one axis and the working side, such as a sword's edge, along another. Every weapon and tool uses that frame, so one set of rules holds them all.
  • It reduces the model to its budget and gives it fresh UVs, because decimating across a model's own UV seams smears its texture.
  • It bakes colour, roughness, metal, normals and ambient occlusion from the full-detail model.
  • It writes a sockets file with the grip point and the grip's measured cross-section.
  • It reloads its own exported file and renders both sides, so we check what Unreal will actually read.

Finding the grip

The grip is measured, not guessed. A weapon's width and colour along its length show the wrap, narrow and bright, between the pommel and the guard. Its centre and cross-section, thickness through the palm and depth along the fingers, go into the item's data. A test measures the mesh at the grip and fails if the data and the mesh disagree.

The bow needed one more step. With the string's serving included, its grip measured a centimetre off towards the string, so the build re-centres the grip on the riser alone.

A hand that closes on it

Animations come from clips made for another hand holding another grip, so fingers either wrapped air or sank into the handle. Now a custom node runs last in the body's animation graph, after every animation. Each finger starts open, and each joint turns about the shaft until its segment touches the grip's cross-section, allowing for the finger's own thickness. Joints stop at their natural limits, and each finger has its own firmness: an archer's bow hand is a touch relaxed. The weapon is placed on the same solved shaft, so the fingers and the weapon always agree.

The solve names anatomy, the index and little-finger knuckles, the wrist and the palm, rather than a bone's axes, so it works on any humanoid hand. A new held item is data only.

Rigging the bow

The source bow came with a carved string. The build fits that string as a line through its clear middle stretches, so the limbs' curl near the tips is never cut, removes it, and adds our own string, which the bake colours from the original cord.

The bow has five bones: a root, the grip, the upper and lower limbs, and the string at the nock. The string blends from the nock to each limb tip, so a pulled string forms a clean V. In game the bow is posed after the body has animated: while you draw, the string follows your draw hand, and the limbs flex towards the pull. On release the string eases back. The directions come from the geometry, not from axis conventions.

The kit arrow lies on the string only while your draw hand holds it, running from the nock past the riser and along your bow hand's index knuckle, with its fletching square to the bow. It vanishes the moment you loose, and the shot flies the same arrow. All of it is presentation: the server decides when the shot leaves and what it hits, never the string. Goblin archers draw with the same rig.

Carried and stowed

Out of combat, weapons are stowed. The bow and staff sit diagonally across the back, leaving the other diagonal free. The blade goes to the hip, and the tome hooks onto the belt by its spine. The quiver rides across the small of the back, its mouth by the draw hand so the fingers find the fletchings. A stowed bow or staff gives way to a glider pack.

MetaHuman bodies have no weapon sockets, so each stow point is a bone plus an offset in the item's data. The offset is solved in the skeleton's reference pose, not the live one: a bow stowed while lying in water once stayed crooked after the swim.

Built for a crowd

  • Everything a character carries is multiplied by the number of players on screen, so every item balances quality and cost as it's made. Opaque parts are Nanite meshes on a budget by size: about 40,000 triangles for a metre-long weapon, 20,000 for the tome and 8,000 for an arrow.
  • Textures match the piece: 2K for the weapons and the quiver, 1K for the tome and the arrow.
  • The string, the limbs, the nocked arrow and the finger solve are all presentation, worked out on each machine from the animation already playing. None of it travels over the network.
  • The item catalogue holds soft references, so a weapon's meshes load only when someone carries it.

What we learned

  • Name the anatomy, not the bone axes. A grip frame borrowed from another sword once turned an axe's edge back towards the person swinging it. A symmetrical sword blade had hidden the problem.
  • Measure axes from the model. Our first arrow imported backwards, with the head at the nock, because its source lay diagonally. Its axis now comes from its measured centre line.
  • Bake onto fresh UVs. Decimating across the source's own UV seams smeared its texture.

Tell us

If you've rigged bows in Unreal, how did you handle the string? And what makes a weapon feel right in your hands in an MMO? Write to us at hello@worldofaccords.com.

‹ All news