With Everlive being officially released just three weeks ago, we are happy to announce that the first game powered by our BaaS solution is on the market.
Jigsaw Puzzles HD is a picture puzzle game for Windows 8 PCs and
tablets. Using Everlive, the developers from Enless Soft were able to
dramatically reduce their time-to-market and also facilitate their
ongoing game-related tasks.
We contacted them to get more information on how they used Everlive in their game and what was the development experience with our service. It turned out to be a really interesting story, so we decided to share it with everyone here, on our official blog.
In the following paragraphs you will learn how the developers from Enless Soft used Everlive to make a great cloud-enabled app with minimum efforts. The following Everlive features and concepts will be covered or mentioned:
As mentioned above, Jigsaw Puzzles HD is a picture puzzle game. Everything there is about images. The game turns them into jigsaw puzzles and challenges you to match all the pieces. You can read more and download the game from its official page in the Windows Store.
We’ve tried to present the whole story here: from the problems through their actual solution and implementation in Everlive to the plans for the future.
Jigsaw Puzzles HD is a successor of Jigsolve Me!, a picture puzzle game for Windows Phone. Jigsolve Me! was one of the first apps that Enless Soft released for Windows Phone, around two years ago.
The devs really wanted to have a Windows 8 version of the game. They planned to add some new features and additional means to monetize their app. The Windows Phone version only had “free” and “paid” versions, and the new version had to have in-app purchases.
Of course, while the devs were planning the porting of the game to the new platform, they faced some challenges and had to make decisions on how to overcome them.
Size of images
The Windows 8 version of the game is targeted on tablets and desktop PCs. This means the images have to be in much higher resolution, making them large in size. To enable this the images must be downloaded on demand, not included in the installation package.
Dynamically adding new images
The developers wanted to be able to constantly add new images to the game. They wanted to enable in-app purchases as a means to monetize their app and wanted to be able to release many paid image packs without releasing new version of the app to the marketplace.
Integrating the Windows Phone version
The Windows Phone version of the app must also be updated to support the new features and new ways to monetize. For this all the data must be and infrastructure must be shared so that users have seamless experience.
Now, let’s dig a bit deeper and see find out the actual implementation and how the above challenges are solved using Everlive.
The first thing that comes to mind is, of course, the data model. It was created using the requirements for the game:
Solution: the separate image files are stored as files in Everlive. This makes them automatically available for use through the Everlive SDKs. To represent a single playable image in the game, a content type named Image was created. It groups the files for the different sizes of the image and also holds the title and the description. To group images in packs, an ImagePacks type was created. It also has a title and description, plus a cover image.The image pack also contains the in-app product ID, which is used to make the integration with the Windows Store, when a user wants to purchase the image pack. Finally, a content type was created to hold the free image of the day. It just has an ID from the Images type and a date.
As you can see from the data model, this game has no security-critical data in it. However, it is very important that you secure your apps so that no one can delete or modify something that can break the whole system. In this case, all data is managed by the developers of the game. Users should have read-only access.
Solution: the security policy of all three content types for the game is set to read-only. This means that anyone can read the data, yet addition or modification of data can only be done from the portal or by using the master key.
A very important aspect of each cloud-enabled app is the synchronization of data between the device and the cloud. For Jigsaw Puzzles HD, there is relatively small amount of data in the cloud and it changes rarely. The app only reads data, addition and modification is only done by the developers.
Solution: all data is read from the server and stored locally when the game is launched. This is a convenient solution for small amounts of data. It also boosts the performance of the game, since requests for data are not made on-demand, but data is pre-fetched.
The HD in the name of the game signifies that it features high-resolution images. The resolution of the images is 2560x1600. However, most tablets and even desktop monitors have lower resolution. If every device downloads images in 2560x1600 this will result in very high bandwidth (e.g. more money on the bill), and also worse performance on the device, since it will have to downscale images a lot.
Solution: each image is stored in several common device resolutions. Whenever an image is requested, the game checks the resolution of the device and downloads the image version which is a best match. This results in a small increase of file storage(several versions of each image are stored), but also in a significant decrease of bandwidth usage.
If you are familiar with Everlive, you know that it offers a way to work with your cloud data directly from the Everlive Portal. While this is very useful, the user interface there is a generic one, meant to cover many scenarios at once. There are some cases where it is necessary to have a custom UI, build with your specific data in mind.
This was exactly the case with Jigsaw Puzzles HD. Developers needed to be able to add new images and image packs easily. Also, the “image of the day” must be updated from time to time so that newer images also get rotated.
As you might guess, this can be done from the generic UI of the Everlive Portal. However, it is not convenient because of the relations in the entered data. You should select an image pack every time you create an image. Also, creating a single logical image consists of uploading all the different resolutions for it and associating them with the item.
Solution: Enless Soft decided to create a simple tool that will help them manage everything related to their app. The tool is internally called “Image Definer”. The Image Definer is a desktop WPF app and it uses the .NET SDK to connect to Everlive.
The tool is used to facilitate the process of adding new images. It allows you to select an image from the local computer and automatically resizes it in different resolutions and uploads the files to Everlive. With this tool, uploading a new image is just a few clicks, as it should be. The Image Definer uses the master key to work with Everlive, so that it has access to everything without the hassle of logging in.
Currently, the Jigsaw Puzzles HD game has four image packs each with 15 images in it. One of the image packs is free and the others are paid. This means that only 15 images can be downloaded by users who have not purchased anything. To download and play the other images, you must purchase the corresponding image pack. This makes certain that the cost of the service will not surpass the income.
The game is currently in its early days and is a fit for the freemium edition of Everlive. When it gains more users, the developers can upgrade their Everlive subscription as they grow, without the need to invest from the start.
The game is received well from public and the developers from Enless Soft are determined to continue to add new features and support it. As it turned out, even more Everlive integration is planned. Here is a list of planned features given to us by the game designers and our suggestions on how to easily get them done with Everlive.
As the number of images in the game grows, it is only natural that some rating and review system is introduced. This makes the app more social and allows everyone to share their opinion. It will also help the developers to choose new images that are more likely to be appreciated by customers.
Solution: with Everlive this can be implemented easily, using an additional content type which will store the ID of the rated image, the ID of the user who gave the rating and the actual rating value. Using a combination of cloud code and power fields the average rating of an image could be calculated server-side and returned to the client as a property of the image.
As it is now, the game allows you to pick your own images and solve them as puzzles. While this is great, those images live only on your device. The game designers want to allow users to share their images so that everyone can play with them. Of course, this will be done after approval from the developers, so that offensive images do not get published.
Solution: addition of new images can be allowed easily from the client. They will be marked as inactive with cloud code and only activated after approval from the developers (with master key for the app). The approval mechanism can be easily integrated in the Image Definer app.
At present, the Windows 8 version of the game is much more advanced and has more features than its Windows Phone predecessor. The devs want to provide equal experience on both platforms, meaning they must port the new features to the old Windows Phone game.
Solution: using the Everlive Windows Phone SDK, it should be very easy to integrate the same functionality in the Windows Phone version of the game. An important thing here is that the Everlive SDK supports Windows Phone 7, which was very important for the developers, since their game was built in the early Windows Phone days and is targeted to Windows Phone 7. Having to upgrade to Windows Phone 8 will leave out of the picture their first and most loyal customers.
We believe that this simple game is a good showcase of how Everlive can help you deliver cloud-enabled products with minimum efforts.
We are working closely with the developers of the game so that we can help them get the best out of our service and deliver a great experience to their customers. Also, from their difficulties we are learning what we can improve in our product.
Feel free to ask us any questions on the implementation of this game or concerning the integration of Everlive in your own projects.
Finally, feel free to drop us an email with your own apps or games that use Everlive. We are always happy to see what people are building with our service. And we might have some tips for you that will save you development time.