Posts tagged ‘Tiles’

Tile Me!–1 Month After Release

Well that was… unexpected. What started as a 2 day weekend project which I thought MIGHT be downloaded by some die-hard Windows Phone fans and never expected to go over 1,000 in the first month, ended up being downloaded by over 35,000 people in just 1 month (1st of August – 1st of September).

It all started with the first article on WPCentral (there are a total of 4). The app got downloaded over 2,000 times in just 24 hours. I got a lot of great feedback, my twitter timeline was exploding with Me tiles as avatars. The most requested three features were custom text, high quality PNG support, and animated GIF support.

I immediately started working on the custom text feature which was very easy to implement and the first update was live just few days after the release of the first version. I then started looking into GIF, but since it was going to take me longer to figure that out, I decided to go with PNG support. To add PNG I also had to add SkyDrive integration which was well received by the users. With the release of that update, WPCentral published another Tile Me! article. Again, new reviews started popping up and people liked the new update, but the important thing here is that people liked that I was constantly communicating with them (on comments sections on the websites the app was featured, Twitter, Email etc.), listening to their feedback and adding new features almost every week. So, a Protip: Listen and communicate with your audience.

The SkyDrive integration was quite easy and straightforward with async/await for Windows Phone 8. On Windows Phone 7 on the other hand, I could not reuse any of the WP8 code, so I had to do it with events, which was a bit annoying.

After PNG, it was time for the hard stuff… animated GIF. It took me several days, and I was almost giving up on it, but I eventually managed to figure it out. Once I finished implementing it on WP8, I started working on porting it to WP7, but since that was going to take several days to finish (most of the code was not reusable 😦 ) I decided to publish a new update just for the WP8 users.


Boom another article from WPCentral and with that, the official Nokia US twitter profile tweets about Tile Me! Achievement unlocked I guess :). What happens next? A WPCentral reader posts a loophole that allows animated GIFs on Twitter. This results in the fourth WPCentral article! A lot of people used the tutorial to animate their Twitter avatars, which gave my Twitter timeline a great Windows Phone vibe. Unfortunately, Twitter closed the loophole two days after the WPCentral article and posting new GIF avatars is no longer possible *sad panda*.

Today, Nokia Conversations, and official Nokia page, wrote an article about Tile Me! (thanks guys) and that should help in spreading the word even more about the app. I currently have a beta test with few people, which are the greatest Tile Me! fans. The new version will add Twitter integration, so the users will be able to upload their Me tiles as Twitter avatars within the app.

The app was also featured by several other pages like WMPoweruser, GSM.MK, WindowsQuebec etc. I would also like to thank WinPhanDev for doing a short interview with me.

Thanks for reading. Until next time!

* Image created by Sean “TheWinPhan” Johnson.


Sparrow Progress Report #2

Time for another short update on Sparrow. In this post I will briefly write about what I was working on in the last two weeks, and I’ll show you one of the four player aircraft that will be available in the first version.


As I noted in my last post, I started working on the levels two weeks ago. I am almost done with the fourth level, and I must say I am still not bored from testing and tweaking all those enemy waves. Compared to Aqua Guard, I’m having much more fun creating the levels for Sparrow.

The best part in creating the levels is definitely the boss battles (yes there will be several bosses to blow up!). I was having trouble killing the third boss, but luckily I gave it to a mate, Aleksandar (he worked with me on Aqua Guard, you can check his blog here) who killed it without losing a single life. This proved two things: I suck at my own game 😦 , and I must give early test versions to other people before I come up with any conclusions.

I kinda shot myself in the foot when I was asked in a TV interview (during the crazy local media coverage) about how many levels we planned for the first version. Even though we hadn’t decided yet, I said 10 levels, so now we (read that as I) must create at least 10 levels.

Background Tiles

In the first week of February my brother was working on several enemy aircraft and bosses. I believe we ended up with some nice sprites even though this is the first time he is doing pixelart. Few days ago he started drawing some background tiles, and I like where things are going. I will post a screenshot soon; maybe next week.

In the WOWZAPP build, we were using a full texture for the background which used a lot of resources and you could notice slight FPS drops at times. So now, I had to write some code for tile drawing. First I browsed  the net for open-source level editors where we could quickly use the tiles Alpay created to create backgrounds for the levels. We are now using Tiled which has everything that I needed. It saves the levels in a nice XML file which can easily be parsed.

Alpay is drawing 16×16 tiles and because WP7 has a resolution of 480×800, that means 1500 tiles are drawn on screen at any given time. At first I was stuck with updating the positions of 9000 tiles (6 full screens) which was an OK number and not causing FPS drops. If I increased the number of tiles, I encountered drops in FPS. Then I came up with a simple solution of first loading all the tiles during a loading screen to an array, and then using another array of 1530 tiles (one full screen and one row of 30 tiles just above the top) which was used for drawing the tiles. Now, I only have to update 1530 tiles and check the position of the last row. If the last row is out of the screen I extract the next row from the big array that contains the whole level. Now, I can load a lot of tiles (tested loading 72000, worked without any FPS drops) without the need of updating the ones that are off screen.

Collision Detection

I first decided to go with per-pixel collision on Sparrow, but as soon as I reached Level 3 where I increased the number of objects on screen, I encountered FPS drops. I tried optimizing it by checking every other pixel, but no luck. I narrowed the issue down to a certain Texture2D method, GetData(). Apparently the FPS drops happened when I was extracting the color values from the textures. I was even using collision rectangles (extract only the area covered by the rectangle where the intersection between two sprites happens) rather than extracting the colors of the complete textures.

I was definitely not going to decrease the number of objects on screen, so I decided to return to rectangle collision, but a little more sophisticated one. Now I am using Rectangle arrays for each object that contain several rectangles to cover the objects. For example, I can cover the Su-27’s area with only 3 Rectangles. The performance drastically increased and I can’t notice any visual problems with the collisions.

Are we going to miss another deadline?

Hopefully, we aren’t. There are two more weeks until February ends, and we should have at least 8 levels until then. The menu screens might not be all ready by then, but temporary stuff shouldn’t be a problem when giving the game to several people for testing. If you have a Windows Phone and are interested in testing the game before it is released, let me know.

Rahim is currently working on implementing Scoreoid for achievements and score tracking. In the last two weeks he was also working on save states and menu screens for choosing aircraft, levels and weapons.

The Screenshots

This is a Su-27 Flanker which is a playable aircraft.

OK, I know I said I will only show one aircraft, but I really like how the Su-25 Frogfoot looks, so I must show you that one too. The Su-25 will be an enemy plane.

Thanks for reading!