A-Blast

WebVR, A-Frame, three.js

Save the world from the Cutest Creatures in the Universe!

A-Blast

Introduction

Wave shooters are probably the most popular genre in the first crop of VR games. From the point of view of the implementation, they are also the easiest to make: you don’t have to move the player around (so you don’t need to implement any locomotion feature) and this simplifies the stage since there is only one fixed point of view. Also, the interaction with the enemies is easy too: just shoot and detect bullet collisions. As simple as wave shooters are, they are quite fun to play and some of them really make you feel the anxiety of the player character (eg: Raw Data).

With A-Blast we wanted to create one game focusing on adding smooth playability, quality assets, and a real example of the capabilities of A-Frame and browser performance. We also wanted to dogfood our own tools (A-Frame and Firefox with WebVR).

A-Blast gun

During testing we found many problems with performance, so we needed to optimize several parts of the initial implementation and some features were added to A-Frame to help with this task (like the pool component).

The gameplay is straightforward: just grab your weapons, aim to the characters floating around, and pull the trigger. You can also dodge and shoot enemy bullets in order to keep your 5 lives intact. The more characters you blast, the more points you get, and then enter the (local) Hall of Fame.

We wanted to keep the gameplay time under 5 minutes to have a good turnover in demo stations at fairs and conventions.

Prototype

I started working on the game building the assets myself, and the gameplay was a bit different from how it ended. You were also on a platform in the middle of the space and some enemies start to appear around you, emitting a specific sound (that with the spatial audio will let you know where they are), so you will need to turn around and hit them.

A-Blast gun

The basic difference with the final gameplay is that in the original the enemies appeared around you, in 360º and the overall gameplay feels faster, and harder, as you needed to move too and avoid the lasers while in the released version they spawn in a 180º area.

A-Blast gun

While building the prototype I was learning a lot about game feel too, for example after watching the "art of screenshake" talk I was working on improving the shoot animations, particles and sparks:

I was including many details that probably not many people noticed but still I liked to work on them, for example the decals system:

A-Blast gun

By the time I had already a prototype working, we hired Diego Fernandez as technical artist, and he started working on some concept art for the new guns (Although we didn't use them and transitioned from actual guns to paintball guns).

A-Blast gun

It was quite obvious the quality improvement on the assets after he arrived:

A-Blast gun

He also did a really nice concept art but it was also discarded for the final release:

A-Blast gun

Final thoughts

Retrospectively, I believe the initial gameplay was better than the one we released. It was more dynamic as you needed to move around 360º and skip the bullets from the enemies. Just comparing the reactions from people playing to the final version (posted above) with the prototype, you can see that in the latter the game feels more dynamic, as people need to move around 360º and skip the bullets.

That was my only concern, as overall the overall aesthetics of the released version were superb and all the effects, particles, explossions were really well made in really short period of time.