0.9.14: the net is finally a net
This is the biggest update since the rewrite, and most of it comes down to one sentence: the goal now behaves like a goal. Along the way we fixed the scoreboard crediting the wrong team, players who appeared to march on the spot, and a handful of things that had been quietly wrong for weeks.
The nets are new as well. They arrived a few days before this build: a dark rounded frame with lit edges and a circuit-pattern mesh, so the goal now matches the arena around it.
The goalie is new too
The nets were not the only thing to change on the ice. The goalie model is new as well, and it reads differently from the skaters at a glance: a heavier build, more armour through the legs, and its own lighting.
Goals count properly now
Three separate things were broken here, and all three had been broken for a while.
Shots from behind the net counted. So did shots from the side, and shots that clipped through the post. The goal volume only ever asked whether the puck had touched a box in space. It never asked how the puck got there. A goal now has to arrive through the mouth, travelling into that end of the rink. Wrap-arounds still count, trickles over the line still count, and a puck arriving from behind the goal line does not.
The scoreboard credited the wrong team. If the home side scored, the goal sometimes went up on the other team's number, and the wrong end played the conceded reaction. The nets carried their own setting for which team they belonged to, and it had been wrong through two generations of net models. We stopped trusting it. Goals are now credited from where the puck physically is on the ice, and if a net's setting disagrees, the game records that in the log and scores it correctly anyway.
And the puck went through the netting, because the net mesh shipped with no collision on it at all. Pucks and players passed straight through the back and the sides.
The fix that stopped anyone scoring
Fixing that last one properly took most of a night, because the obvious fix is a trap. Give the net mesh collision and it seals the goal mouth, which means nothing can ever score. We shipped exactly that at one point, and scoring silently stopped working.
Where we landed:
- You cannot poke the puck through the netting any more. Stand behind the goal, push your stick in, and the puck stays outside where your body is.
- Goalies can get into their own net, which they could not do at all before. Once they are in there the netting is solid for them too, so the way out is the way in.
- Nothing blocks you skating around the net. We tried invisible walls, they felt terrible, and they are gone. Skate right up against it from any angle.
The players who marched on the spot
If you have played alongside someone standing still and watched their legs cycle like they were walking in place, that was real. It was also only happening on your screen, not theirs.
We fixed this four times before we fixed it. Every attempt was a smarter way of guessing whether a player was moving by watching how they moved on screen. The problem is that on ice, letting go of the keys does not stop you. You glide for a couple of seconds. Your own machine stops animating the moment you release, because it knows what your hands are doing. Every other machine only sees motion, and for the length of that glide, motion and input genuinely disagree.
The fix was to stop guessing. The server already knows which keys you are holding, so it now tells everyone else. One extra piece of data, and the whole class of problem disappears.
Goals feel like goals
The arena dims and the net lights up, teal and white flashes settling into red and fading out like an ember. A spotlight follows the scorer until the next faceoff. Pucks leave a trail when they are moving fast, so a hard shot reads as a hard shot, while passes and stickhandling stay clean. Goalies get a moment too, a short flash for a genuinely clutch save, which has to be a hard shot you got to quickly.
Feel and flow
Shootouts breathe now. The gap between attempts was four seconds, which turned out to be no time at all to register what had just happened before the next shooter was already staged. It is seven seconds now, and the goal celebration compresses itself to fit inside that window instead of still playing while the next attempt starts.
Goalies are protected in their own crease, so you can no longer strip the puck off a goalie in his paint, and holding the puck in the crease brings a whistle at five seconds instead of seven and a half. The ability HUD now shows how many charges you have and the cooldown you are actually waiting on, meaning the one coming back soonest rather than the one that just started.
Faceoffs no longer stack players on a single spot, and the positions respect what you picked. Rejoining a match mid-game gives you your HUD back, where previously you would play out the rest of the match with no scoreboard and no cooldowns. The ghost puck at the boards is gone, the one where the puck left your stick for you but not for everybody else.
Still on the list
A goalie inside his own net can still shoot the puck out through the netting. It is a narrow case, the real fix needs a deeper change to how the puck moves, and it is queued. Shots from outside also still pass visually through the net mesh in a few spots. They do not score, but it looks wrong, and we would rather say so than let you find it and wonder.
What we need next
The work from here is feel, and feel is the one thing we cannot judge from our side of the screen. One change in particular has only ever been tested locally: the animation fix needs two people moving and stopping near each other at real latency before we will call it done.
That needs people on the ice. If you want to be one of them, sign up for a playtest.
