Astro League was inspired by games such as foosball, Subbuteo, pool and Rocket League. We wanted to make a real-time head-to-head soccer that worked well with multitouch controls.
What it does
Astro League is a soccer game, where players attempt to score goals by firing projectiles into the footballs in order to knock them in the right direction. The game uses custom gestures to control the firing of projectiles and the placing of 'blocker' walls, which allow a player to temporary block the path of oncoming balls. Projectiles are constrained by an ammo counter that re-fills over time, encouraging accuracy over the bullet-spam approach, although depending on the situation sometimes both work. This is a desktop Windows app that integrates with the Lenovo Aura interface.
How we built it
The game was developed mainly in C# using the Unity 3D engine. Most of the effort went into the custom gesture recognition and visual effects. The gestures were coded based on the raw input data from Unity's API. Whilst Unity goes a long way to help with regards to rendering, we put quite a bit of time into the custom shaders: the burnup dissolve effect of the asteroids and the convolution pixel shader ripples. Unity's own physics and mesh colliders meant that the game object interactions were mostly fairly simple to implement, meaning we had time for some polish in the competition schedule.
Challenges we ran into
The two main challenges we faced were performance and the integration of a touch library. I had a fantastic old multitouch library I intended on re-using, but this was not compatible with Unity's window handle, so I had to re-create it based on Unity's API. It was the first time we've hit performance issues since learning Unity, so we had to familiarise ourselves with Unity's profiling tools and in particular how Unity batches draw calls.
Accomplishments that we're proud of
It's always good to hit a deadline. We had some unexpected things come up and get in the way of development, but we managed to compromise on some features as appropriate to balance both getting it done and to a good standard.
We're especially proud of our first custom shaders in a Unity game. Modern devices have fantastic graphics capabilities, so it's great to be able to show them off.
What we learned
The major learning points on this project were convolution shaders, Unity performance optimisation and the Unity touch API.
What's next for Astro League
Right now we have a solid little game. The next step is to let people play it and get some feedback. We have some ideas for how to extend the concept with some new features and game modes, but it'd be good to watch some complete strangers get to grips with it, as that's a good test for what works and what doesn't.