Here's a flat demo video
...and here's a 360 video - hop in!
You can click and drag your mouse on this video to look around! You may also look around using a Google Cardboard.
Here's the writeup.
Visions of Luke
This project didn’t start out with swords at all, it started out with fairies. As a weekend project, I wanted to create a ‘fairy’ ball that would fly around a room with a trail. The objective would be to chase that fairy with one of your hands, effectively turning the ball into a choreographer. Once the fairy ball idea had started to take shape, I started thinking of the scene from Star Wars where Luke is being trained on a lightsaber by Obi Wan Kanobe. In this scene, there’s a little floating ‘fairy ball’ which Luke must defend against while being unable to see.
The most important part of this project to get right was the behavior of the swarm. It's critical that the swarm moves around in space randomly and naturally. I wanted to give the swarm a real feeling of being a conscious entity. To accomplish this, at a semi-random time I generate a semi-random point, and that point is what every member of the swarm is gravitationally attracted to. This gives the swarm an accelerating, orbital nature that makes each ball feel alive independently, but still part of the same hive-mind.
Swarms are mesmerizing in proportion to the amount of objects in them. To allow the player to affect this important aspect of the swarm, I created a growth mechanic - when a swarm member is hit hard enough it splits in two! Striking the heart of a swarm will cause it to swell in size considerably.
Light, and Light Sabers
Once the swarm was feeling good, it was time to get a weapon in hand. One of the great parts about the Star Wars scene I was inspired by was the metal blindfold that Luke wears. I knew to capture the feeling of that scene, I would need to play with darkness. To this end, I created a space in which the only light source was the light saber itself. This makes moments when the light saber is off very unsettling and ominous, but turns the moments when players are swinging at the swarm, saber on, into brilliant displays of shadow and motion.
I learned very quickly that attacking a swarm of balls is not very satisfying without some modification - you slice right through the center of the swarm, but because your saber is thin, the larger swarm remains mostly unaffected. I wanted it to feel more satisfying without making unrealistic hitboxes (turns out giant light sabers feel more like baseball bats), so I created a core at the center of the swarm's gravity well. This core, when hit, explodes outwards, sending members of the swarm in every direction, and damn does it feel good.
Finally, I implemented haptic feedback using controller vibration so that players can feel balls ‘pinging’ off their lightsaber. I asked myself if a real lightsaber would give resistance like that, and I think the answer is - probably not ...but I put it in anyways! It really enhances immersion to feel the enemy physically. It transforms the environment from a vaporous hologram, into something which feels like you can reach out and touch.
It was at this point that my play tester started unconsciously reaching out with her non-saber hand to try and push balls out of the way.
Defeating the Enemy
Because the swarm multiplies as you carve through it with your saber, it can quickly get out of hand. To balance this out, I created a moment when a swarm member is first cut in half where players have the opportunity to reach out and grab the fragments with their non-saber hand before they rejoin the swarm. Adding this mechanic allows the player to overcome the menacing, swarming hive and become a much more empowered entity in the space themselves. Players have been so eager to gather shards that I have had to reduce the play area so that people wouldn’t smash controllers into walls, TVs, and hapless designers who get a bit too close to the action.
Empowering players to have moments of total control over their environment is an incredibly fun and liberating experience, so I created a goal for collecting orbs - to power up a force push that lets you bully the swarm. Being able to fling the entire swarm around turns the power dynamic of the game on its head, and gives players the feeling that they ARE the Jedi, and they WILL defeat the swarm.
May the force be with you.