Refraction

local & remote asynchronous multiplayer action shooter

Play it now at refraction.fun!

Controls

WASD or arrow keys to run up, left, down, and right.

Point and left-click to point and shoot. You want to shoot the other teams; careful of friendly fire!

The bar at the top of the game window shows a combination of remaining ammunition and remaining shots in the current clip. The clip limits shot frequency (has a capacity and continuous reload speed), and ammunition limits total shots per round.

Your player is marked with a black X. Teams are denoted by colors (blue, orange, green, magenta).

Below the game window is a switch to toggle local vs online mode. In online mode, you pick a username and pass turns between your and other usernames.

System requirements

Just a computer browser with a keyboard and mouse. Mobile devices are not yet supported (the UI would first need some major improvements, and the game window would need touch control support). Most browsers should work (I’ve done cursory testing in Chrome, Firefox, and Safari).

Gameplay

Your objective is to get as many of your players to the opposite base as possible, while at the same time allowing as few of the players from the other team get to your base as possible. You get one point for each player that reaches the opposing base within the time limit.

The game can be played with 2, 3, or 4 teams. The arena is a square, and each base is a corner. Let’s assume the game is just 2 teams, blue vs orange, and run an example.

  • The first turn, blue moves to the opposite corner, which seems easy enough. Score is 1 to 0.

refraction_playthrough_local_1_1

  • Orange then runs the opposite direction, and takes out blue’s first player on the way. Score is now 1 to 1.

refraction_playthrough_local_1_2

  • Back to blue two, who manages to shoot orange one before they can shoot blue one. Blue scores 2 points! Score is now 3 to 1.

refraction_playthrough_local_1_3

  • Orange two avenges orange one, but not quick enough to save them. Score is now 3 to 2.

refraction_playthrough_local_1_4

  • Blue three takes out orange two, saving one of the blue team to score 2 more points. Blue now leads significantly, 5 to 2.

refraction_playthrough_local_1_5

  • Orange three struggles to help out, and doesn’t manage any kills until the other orange players are already dead. Score is 5 to 3.

refraction_playthrough_local_1_6

  • Blue four heads straight for orange three, taking them out before they can shoot anyone. Score is now 8 to 3.

refraction_playthrough_local_1_7

  • In the final round, orange four fails to make much of a difference, letting blue score again. The final score is 10 to 4.

refraction_playthrough_local_1_8

Eventually, the game is over (default is 8 turns). The winning team has the most points total. The game then enters playback mode, and we can review how it went!

refraction_playthrough_local_1_9

Customization

I added a game configuration section where some basic game settings can be set prior to playing the first turn.

You can currently customize:

  • number of teams
  • number of rounds
  • player run speed
  • player radius
  • bullet tracer length
  • frame limit (round time limit, in frames)

Development

Refraction is a pretty early prototype, so I’ll be updating it frequently and am looking forward to suggestions.

It’s also open source and shared on GitHub at ogallagher/refraction. Check it out!

Planned improvements

  • pick a design theme and replace the placeholder graphics with something cooler
  • redesign the page interface so the layout is not so sparse
  • fix gameplay for 3 and 4 teams
  • expand the arena by adding some camera panning
  • extend game mechanics with player abilities, secondary attack, items (details unknown)
  • add passwords to prevent account sabotage
  • add mobile support
  • and more ?

Credits

Author: Owen Gallagher
Graphics library: paperjs
Web design library: bootstrap
Server hosting: Amazon Web Services

Development log

Comments

Log in with itch.io to leave a comment.

The networked multiplayer features are currently disabled (and have been for several months)