I don't game but I've found Kinesis split keyboard (https://gaming.kinesis-ergo.com/edge/) + vertical mouse cured my wrist/forearm pain. That plus a desk at 27" instead of a "normal" 32" are one time ergonomic expenses that are absolute no-brainers for programmers.
It took a lot of trial and error to find the setup that worked for me. I think the above is the right 80/20 solution. Worth a shot and hope it ends up helping someone. FWIW, the Kinesis keyboard has a nice tilt that corresponds with the vertical mouse tilt.
Using a vertical mouse completely cured my wrist pain. They are clunky and an eyesore, but if you feel the slightes pain in your wrist, I urge you to get a vertical mouse and at least use it part of the time. I got a cheap rechargeable one for 30 euros and it feels very natural. Swtiching between regular mouse and vertical ones is no problem at all.
This might be an ill-formed question given not knowing the specifics of the source code, but do you think Phoenix LiveView can be used to manage state through websockets vs the JSON payloads described in the article?
Sorry I don’t really know enough about LiveView to give a good answer. The protocol involved here is a fairly unsophisticated game networking protocol sending delta updates of object properties and transforms at 10Hz or so, and takes the approach of ownership transfer to orchestrate which packets are authoritative. If a reader who knows LiveView understands what I just wrote, they may be able to answer :) (the library for Hubs doing this is networked-aframe)