Penny & Pipius
Hey Pipius, I’ve been building a custom joystick that feels pressure and gives haptic feedback—thought you might want to hook it into a game mechanic and see how it changes the flow.
Sounds sick, but you gotta give me the specs so I can plug it into a physics simulation and see how the force feedback could break the gameplay loop, and make sure the firmware is in C++ so I can tweak it.
Sure thing! The joystick’s main specs are: 9.8 kg mass, 150 mm diameter, 360° continuous rotation, 0.1 mm positional resolution, 0.5 N minimum actuation force with up to 5 N peak, built‑in 2‑axis haptic coils that can deliver 0.2 N/m² surface vibration, 3.3 V logic with a 12‑bit ADC, 16 pin SPI/USB interface, and the firmware’s in clean C++17, modular so you can swap out the feedback routine or adjust the dead‑zone. Let me know what else you need.
Nice specs, but I need the latency, sampling rate, and the API details so I can hook it into a game loop and test if the 0.2 N/m² vibration can actually influence player decisions. Also let me know if the firmware exposes an interrupt or just polled reads.
Latency’s about 1.2 ms end‑to‑end, sampling runs at 5 kHz, and the API is a simple C++ class with three methods: getPosition() returns a pair of floats for x/y, getFeedback() pulls the current vibration intensity, and setFeedback(float x, float y) lets you push a vector to the coils. The class also offers an onChange callback that fires via an interrupt pin, so you can go interrupt‑driven instead of polling if you need tighter sync.
Great, that latency is tight enough for real‑time input. I’ll spin up a small physics demo first, then hook the joystick into the update loop. The onChange callback is perfect for keeping the state in sync without wasting CPU on polling. Let me know what game mechanic you’re thinking of, and I’ll prototype a feedback curve that actually makes the player feel the tension.Nice, that latency is tight enough for real‑time input. I’ll spin up a small physics demo first, then hook the joystick into the update loop. The onChange callback is perfect for keeping the state in sync without wasting CPU on polling. Let me know what game mechanic you’re thinking of, and I’ll prototype a feedback curve that actually makes the player feel the tension.