Designing a Game for Android Wear: Virtual Pets
I’ve had my Android Wear device, the Moto 360, for about 9 months now. It’s been a great tool to quickly manage notifications and complete simple actions as I’m traveling between classes at my university. There have also been many great apps for the platform, some of which I’ve developed. The platform has grown quickly thanks to the momentum of Android developers, going so far as to build a YouTube app even though it’s a small screen.
Yet as handy as those apps are, I haven’t seen a similar growth in Android Wear gaming. There seems to be a lot of uncertainty as to how games should be developed and what the experience should be. With that in mind, I decided to build a game that could serve as an indication of how this form factor could actually be a great gaming platform in its own right.
Before I created a new project, I had to decide what kind of game to make. This is an important step because it’s obvious right from the start that not every game is going to work well. There’s no hardware input, little screen real estate, and not much in the way of processing/graphics either. Although this limited the broad range of genres, I came across a project that would be perfect for a watch: virtual pets.
Games of this genre, like the popular Tamagotchi, have long been successful among kids and teens including myself. What made the game so great was its mobility in an era without smartphones and tablets. It was a personal device that was always with me and I could always play with it. As I read more into the topic, I discovered that Tamagotchi games were on the rise again. People are looking for casual games of this sort, and Android Wear is a platform that is looking for great, optimized games.
The game, Cybercritters, is currently on Kickstarter. Development has been going well, with updates going to each device almost daily. Throughout this project, I have learned a few things about how to use both the phone and the watch together to give a great user experience.
The first part of the game, right when you download it, has to be signing in to Google Play Games. This can only be done on the phone, though the watch gives you a simple button to open it up.
I have read the documents on Android Developers about moving information between each device and have developed some methods that make it easy to synchronize data between the phone and the watch as well as sending actions between one another.
This link is important because it’s not easy to develop a full game on Android Wear. Screen real estate prevents a large number of menus and options. Yet to make a full game users will want some settings that let them customize their experience. A good solution for this problem has been to make settings that run on the phone and sync those settings to the watch. That way you get the same experience on both devices without needing to go too deep into watch navigation. This practice works well for other parts of the app as well. After you hatch a pet, you use the phone to name it.
These are all infrequent parts of the app though. The goal of Cybercritters is to design a game for Android Wear, and that means the watch must have a full game and not a companion. Thus, all the core parts of the game have been written for the phone and the watch so the user doesn’t have to pull out the phone after every interaction. There are some instances where the phone is required, and that’s not necessarily a bad thing. It’s important to keep phone usage to a minimum though.
Even though the game is being written in the same language it is being written twice, one for each form factor, I don’t need to reinvent the wheel each time I want to add something. I’ve taken time to carefully plan the underlying structure of the game. Using object-oriented design, the game has been designed in a way that minimizes custom code. The majority of it can be copied between the Wear and mobile versions so that everything is built on top of a single codebase. When a bug is then reported, I can just fix it once. When I want to add a new feature, I just implement it once.
The same mantra is used for the rest of the app. Most of the graphics are shared between both devices. All of the strings can be shared. By keeping both parts the same, it saves development time. I know that everything is where it should be.
All that said, there are some ways to improve the user experience on the watch beyond the capabilities of the phone. The watch is a very personal device and a great platform for watchfaces. If the wearer has ambient mode enabled, their watchface is always on and always running an app. As a developer, a watchface represents a great opportunity to make your app so good it’ll always be on the user’s mind. As a user, a watchface represents the most important information to you in a way that’s always accessible.
When I started to plan my game, a watchface was a feature that I thought a lot about. Unlike an app, or a game, the information density had to be even smaller. People want information at a glance and don’t want to go through hoops to do that. Another key issue is that in ambient mode, the watchface is devoid of color and is only updated once a minute. These things are done to extend battery life. An ambient watchface shouldn’t be doing anything complicated.
In designing the watchface, simplicity was key. I started off with the same base I used for the visit. I replaced some of the text with important information, like the time and number of steps taken. When the device slips into ambient mode, it’s simplified further so that the time is the key focus of the screen. To reduce the number of pixels on, the graphics on screen are replaced with simple outlines. Thus, battery life is maintained.
The game is far from over, and the campaign still has two weeks left. I recommend you check it out. Supporters can get exclusive rewards including early access to the game, which has already started. As I continue to develop this game, I will undoubtedly learn more about game design and adapting an experience across form factors and screens. As it stands today, I already have learned a lot about sharing data, sharing code, and still creating great user experiences.