Inspiration
We wanted to capture the feeling of actually performing magic: choosing an element, raising a hand, and releasing a spell through physical interaction. That idea became Aethren, a fantasy game that connects a custom wearable controller with cinematic storytelling, tactical encounters, and competitive spellcasting.
Our inspiration came from the atmosphere of dark fantasy adventures, the strategic decisions of role-playing games, and the physical engagement of motion-controlled play. We wanted the controller to feel like part of the world, with players actively participating in each spell.
That vision also led us to a question: what would happen if two players could face each other as spellcasters? Alongside the story and cooperative encounters, we built Duel, a real-time PvP mode where aiming, movement, timing, and resource management determine the outcome.
What it does
Aethren combines three experiences: a story adventure, cooperative boss combat, and head-to-head magical duels.
Story adventure
Players enter a rain-soaked forest, confront a dangerous wolf pack, and reach a deserted castle guarded by the Ruined Gatekeeper. Illustrated environments, animated enemies, dialogue, music, and environmental effects establish the atmosphere throughout the journey.
Adventure combat revolves around twelve spells across Fire, Frost, and Storm. Each element offers different tactical possibilities, including direct damage, protection, crowd control, and disruption. Players manage health, magic power, and stance while deciding how to respond to each encounter.
The enchanted glove makes spellcasting physical. Its rotary dial selects spells, while buttons, a touch sensor, and motion inputs contribute to casting rituals. Players perform sequences of movements and inputs, with timing affecting spell effectiveness. Discovering additional spells creates opportunities to experiment with new strategies.
Webcam-based pose tracking also supports defensive movements such as sidestepping, ducking, and blocking.
Cooperative combat
Two players on separate screens can face the Ruined Gatekeeper together through a shared glove hub. Each player has their own health, magic power, and turns, making cooperation a matter of coordinating attacks and surviving the same encounter.
Duel: real-time PvP
Duel lets two players on the same glove hub challenge each other directly. Both players appear as contrasting, glowing silhouettes, making their movement visible within the arena.
Players choose between four spells: Ember, Bolt, Frost, and Nova. Each has a different combination of damage, magic cost, blast radius, warning time, and effectiveness against a block.
Spells are aimed using the tracked position of the caster’s hand. Casting creates a visible attack zone that fills before impact, giving the opponent an opportunity to move away. Dodging depends on whether the player’s tracked head and torso have cleared the attack area when the spell lands.
Blocking requires holding a defensive pose before impact and consumes a limited guard resource. Magic power and guard recover over time, so players must balance pressure, positioning, and defense. Large attacks can push more damage through a block, while smaller, faster attacks offer different ways to pressure an opponent.
The mode includes opponent pairing, a readiness countdown, victory and defeat states, and mutual rematch requests. Mouse and keyboard fallback controls also support testing when a camera is unavailable.
How we built it
We built the browser client with React and TypeScript, using Vite for development and bundling and Zustand to manage gameplay state. The adventure presentation combines illustrated scenes, video animation, canvas effects, and layered interfaces. Motion handles transitions, while audio cues reinforce story events and combat actions.
The wearable controller uses an Arduino Uno R4 WiFi with a Grove Base Shield, buttons, a touch sensor, a rotary angle sensor, an accelerometer, an LCD, and a buzzer. Its firmware streams sensor readings over Wi-Fi using UDP. A Node.js hub bridges those readings to the browser through WebSockets and carries feedback commands back to the glove.
We used MediaPipe to detect body landmarks locally in the browser. Calibration establishes a baseline for interpreting movement, while pose-confidence checks help distinguish intentional defensive actions.
The project includes an Express and Socket.IO service for story rooms. Cooperative boss combat uses the glove hub to relay player actions and battle snapshots, with one player’s client coordinating the shared fight.
Duel uses the same hub infrastructure with a different synchronization model. Each player’s client evaluates incoming attacks against its own tracked body position, then reports the outcome to the opponent. This keeps local defense evaluation responsive. The clients exchange compact body-landmark coordinates, spell events, and results; the duel visualization does not require transmitting raw webcam video.
We render the PvP silhouettes, aiming indicator, and spell zones with HTML Canvas, keeping frequent pose updates outside React’s rendering cycle.
Challenges we faced
One of our biggest challenges was translating physical movement into dependable game input. Sensor readings are continuous and noisy, while game actions need clear boundaries. We had to distinguish deliberate gestures from incidental movement and prevent one action from triggering multiple times.
Synchronizing combat rules with presentation was another challenge. Spells have preparation, release, impact, and completion phases. Damage, status effects, animation, sound, and turn progression all need to agree about when those events occur. Interrupted animations and delayed callbacks also need to leave the encounter in a valid state.
Hardware introduced practical complications, including sensor wiring, different LCD behavior, Wi-Fi connectivity, and ownership of gloves across multiple screens. Diagnostic tools helped us inspect raw inputs and isolate problems.
PvP introduced a different set of design questions. An attack needs to feel threatening while giving the opponent a readable opportunity to react. We balanced warning times, attack sizes, mana costs, and block effectiveness to create distinct spell choices.
We also had to translate camera coordinates into a shared arena consistently. Mirrored body positions, hand-based aiming, and collision checks need to agree so players can understand why an attack hit or missed. Guard timing and a limited guard resource make blocking a deliberate decision.
Networking connected all of these systems. Cooperative encounters need a consistent shared battle state, while duels need responsive local movement and clear communication of outcomes. Supporting both taught us to choose synchronization strategies around the needs of each mode.
What we learned
We learned that physical interaction depends on clear feedback as much as input recognition. Players need to understand what the game detected, what action is happening, and how they can respond. Visual prompts, spell indicators, sound, and glove feedback all contribute to that clarity.
Building PvP taught us that responsiveness and fairness require careful tradeoffs. Local defense evaluation reduces the delay between movement and its result, while competitive play creates additional challenges around validation and consistency between clients.
We also learned the value of separating hardware communication, pose tracking, game rules, networking, and presentation. That separation let us reuse the glove and tracking systems across story encounters, cooperative combat, and duels.
Most of all, we learned that an experimental controller needs thoughtful onboarding. Calibration, tutorials, readable prompts, and fallback controls are essential to helping players understand and enjoy the experience.
What’s next
We want to expand the story with more encounters, deepen spell discovery, and continue refining gesture recognition across different players and environments.
For Duel, our next priorities are broader playtesting, spell balancing, stronger validation of competitive results, and improved handling of tracking interruptions and network delays. We also want to explore additional spells and arena variations that reward different approaches to aiming and movement.
Across every mode, we plan to improve the glove’s comfort, simplify setup, and make physical spellcasting feel increasingly natural.
Built With
- arduino
- arduino-uno-r4-wifi
- c++
- computer-vision
- css3
- express.js
- grove-sensors
- html5
- javascript
- mediapipe
- motion
- node.js
- pnpm
- react
- socket.io
- tailwind-css
- typescript
- udp
- vite
- vitest
- web-audio-api
- websockets
- wifi
- zustand
Log in or sign up for Devpost to join the conversation.