Friday, March 8, 2013

Fragmenwhat?

Just yesterday I read a post in a group where a developer proudly presented how his game runs on pretty much any iOS device. But he could not do that without saying he would never develop for Android because of the Fragmentation issues. A similar thing happened today on Twitter, where @gaminghorror wrote "App developers: stick toiOS! Seriously: http://bit.ly/WHbzs7" and was heavily retweeted, the one I read first prefixed with "Holy cow! 80% of active device == 156 device models".

Actually, this makes me angry. I develop software since I'm about 11 or 12 years old, and I'm now 41. I've seen how the transition from Assembler and fixed hardware in a few systems (most sticked to the Commodore 64) broke the neck of many a famous game designer of this time, when not only "Home" computers started to have an operating system but also dynamic ram management and, oh my god, with the advent of later Amiga Versions and the big success of the pretty modular IBM compatible PCs it was over for them. They didn't think outside the box of full control and the comfort of pretty much knowing what hardware there is.

So gaming died out, didn't it?

Uhm, no. And not even consoles of today, despite having the same predictable hardware per franchise and iteration, work that way in coding anymore.

If you develop an AAA Title today, you either built or licence an engine, and its part of said engine to make sure it runs on as many systems as possible without bothering the game designers with it. E.g. Rockstar built the RAGE engine. While the engine has different code on any platform the game is available on, the parts that make an individual game, design, scripting and so on tough are the same. And that same engine makes it possible to have the game on a 640x400 display, as well as... holy cow, are these three Full HD displays? The engine is now five years old, but it was used in as recent (and different) games as L.A. Noir and Red Dead Redemption. That the later is console only is pure politics, not a technical limitation.

But that Rockstar is hardly an indie, and can throw 150 million us dollar on a project. So is that article on Flurry right, "Are Indie App Developers Becoming an Endangered Species?" and if so, is this because of Androids Fragmentation((c) Steve Jobs) issue?

Darn no! Well, may be simple minded ones that will go the same route as the 8 bit game developers, the ones that retweeted. See, not only is that assumption wrong, in reality its just the other way around. The breeding ground for applications (Apps ((c) Steve Jobs) has been the Web (first with CGI than more and more advanced languages on the server side), Java, Flash and now HTML5 and what they all have in common is an independency from a certain platform on the side of the user. And all had to manage the fact that they cannot exactly predict the size of the screen or even the means of input on the users side. Works like a charm on most systems, with the exception of one: iOS

meet the relevant part of the iOS SDK agreement:
"3.3.2 — An Application may not itself install or launch other executable code by any means, including without limitation through the use of a plug-in architecture, calling other frameworks, other APIs or otherwise. No interpreted code may be downloaded or used in an Application except for code that is interpreted and run by Apple’s Documented APIs and built-in interpreter(s)."

So Java Runtime and Flash Player or anything like it are not allowed on iOS. And JavaScript (as in HTML 5) only works as Safari Module, which any other browser on the system has to implement to use it. Development for iOS pretty much means coding in the awful Objective C and some, maybe just some C or C++.

Good that there are still solutions out there. Like Xamarin that compiles from C#, or game engines like Game Maker or Unity. which are all in price ranges accessible to indies.

The article then lists the distribution of android mobile phones over so and so much percent of the android mobile market and compared that with the much smaller number of Apple mobile devices. That is pretty much irrelevant on two grounds:

Different screen resolutions. Actually I don't see the difference here. It starts with 320 to 480 on an iPhone 1 and ends currently with an iPad 4 at 2048 to 1536, all at 4 to 3, oh nos, wait, there is the iPhone 5 with 16:9. So you have to take care of that, too. So that's pretty much for anyone who wants to have the luxury of painting every pixel on the screen at an exact point. Espacially if the framework (the iOS SDK, see above) doesn't really support dynamic UIs. Ususally devlopers don't develop for anything less than the iPhone 3s anymore. With Android you have phones starting at a 200 to 320 display. But users of those don't expect to get the same apps that exists for other resolutions, if you wan't to support anything, lets say below 640x400 today, you have to create the UI for it, just as tablets often are better if you shape the UI accordingly. The most common formats are 640x480 (older or very cheap phones), 800x480 (cheap phones or tablets, and some last gens like the Galaxy S2) and 1280x720 (or 1280 × 800 with extra space for the Softkeys) and in the near future Full HD, 1920x1080. You may notice that those higher resolutions orientate themselvs on the standards for video, displays and TV. The whole reason the iPhone 5 broke the 4:3 ratio was because of that, too, but failed to adjust the pixeldensity. The very lack of support for dynamic screen sizes now hit them back, if they'd change that to a video friendly HD too, the developers would have rebelled, because they had to redo the whole layout, not just stretch it somewhere in the middle ;-)

Image: The Youtube app on an iPhone 5 before it was redesigned to use all the space, while on Android it scales pretty well, here on an Samsung Galaxy S3 in HD, like the video shown.

For games its pretty easy on both systems, you support 2 or 3 resolutions and scale the screen accordingly.

But those many, many different devices? Android itself provides a pretty good abstraction layer, espacially when you use Java, and if you need certain hardware, you can easily check in the code for it. So its pretty much a non issue that only becomes one, when you learned developing on a very limited platform and never done anything else. Speeking of fragmentation only shows every other developer that you are very closed minded, and can only move in a very small canvas, most likely provided by a certain fruit company. It's no coincidence, that the CEO of that company invented its use in this context. That guy was a marketing guru, not a developer, and if you actually listen to older speeches of him he once said the exact opposite. But I love the arrogance that is inherent in it. The whole world does it wrong, only Apple does it right. And you wonder why the rest of the world thinks you also believe in the Second Coming of Jobs?

Thursday, March 7, 2013

#1GAM Very early March preview

I spent a lot of time thinking of what I will do as next #1GAM. Again, it should be something that can be done fast, because this or the next month I have to move and will have nearly no time for it, and I must work on the marketing and the monetization of Playmory. Yet I had a first idea, but than a second rammed into it, and I began to search for easily available charactersprites for a few tests on NPCs and Pathfinding. So I ended up importing some of the 16x18 character sprites on Open Game Art. Than I needed something where the NPCs can interact, so I started to implement the map parts too. And since my first experiences with Game Maker have shown me it handles it better when it does most of the part I had to make most of the 16x16 fields of those an object of themselves, which means, by now I have am Objectcount far over 100, and since not every object got its own sprite(-object) they use the same with different image numbes.

more than 100 objects

It's not hard to guess what my next move is: A map / level editor. Yet one question that is a matter of taste bugs me. I will scale it up, because otherwise the characters are hardly visible:

(Click on the photo and than do that again on flickr to see the original)
A very early first look

Which one do you like more. The interpolated or the sharp, visible pixels? Retro would be more like the first, because in the 80's we had no HDTV ;-)

Tuesday, March 5, 2013

Good news and bad news...

... which one do you here first?

Well actually, the time you read this, it's to late to change the order and so I tell you the bad first:

I had to pull my published HTML 5 versions of Playmory. The instability of the sound mixed in with the cracked flow by fixed play length of sounds cummulated to a whopping 1.8 out of 5 rating. HTML 5, if it worked, would have gotten me a lot of attention with I now to have drive in by other means.

But the good thing is, that I got the Android the Android Version on the Google Play Store, Android Pit and even Amazons Appstore. It's really the medium where Playmory excels and is the most fun, and it shows in the first comments :-) Yet it wasn't as uncomplicated as it could have been, one store did reject the game, again because a default behaviour of Game Maker. It just registers every addservice you can use (and I don't, Playmory is free of any nagging) and permissions for that. I had a lot of trouble fiddling out how I can get the lowest possible permissions that let Playmory still run and updated it on all four markets.

My favorite (January) #1GAMs

The #OneGameAMonth challenge (in short #1GAM) had over a thousand indie and hobby, and-soon-to-be-indie game designers publish new games. I cannot say I played them all, and many deserve a review, but there were three games that stood out for me:

1. Blockulous

Platform: Android. Price 0,99 USD

A fun 3D physics puzzler it had an addictive effect on me. You am presented with a construct of blocks that might remind you of your childhood, and you have to remove some of the blocks to get one certain stone on the top of another. For just one dollar its a steal.

2. sync lab

Platform: Various, I'm not shure I found them all. Price from free to 0,99 USD 

I found the game in the Steam-Workshop for Game Maker, and loved it. You have to fill up certain spaces by cloning yourself and every clone makes the same move, which makes it quite a puzzler.

3. Super Grid Run

Platform: iOS and Android. Price from free to 0,99 USD


A really fast game where you have to dodge obstacles and collect some gems on the way. As simple as the gameplay is, as much fun it is.

Saturday, March 2, 2013

Finally HTML 5 and Android

Today was a really good day. Despite the fact that I wanted to take it slow today, combined with my efforts late last night, I managed to debug the Android and the HTML 5 version. The later did only work with a compromise that breaks the flow of the gameplay somewhat - the Sounds are played for a fixed length now instead of as long as they are with a max of 5 seconds. A tester said on iOS you cannot here sounds at all :-( but it works well on OS X and Windows (if you tried it out on other platforms or browsers beside Chrome and Safari please feel free to tell me about it in the comments). Of all the versions I published now, the Android version is the most fun. You can sideload it here.

I like to spare the casual reader of what exactly was wrong, but you can read the details here if you like. Later I published the HTML 5 version on Clay.io and got it was authorized soon after. So you can play it there. I may add PBL (Points, Batches, Leaderboards) later on with the provided interface. I was thinking about some kind of arcade mode anyway. And yep, possibly advertisement and social functions (a ka nagging).



And after all that I spend a nice evening with my best friend in the city, visiting a sushi bar and watched Cloud Atlas. See, I still manage to "have a life" ;-)

Friday, March 1, 2013

Playmory - Post Mortem

I only started with #OneGameAMonth January the 25th, so after I finished just enough of Risc'n'Resc to call it a game with a start, middle and an end I wanted to do something less demanding to have spare time in February to really make something out of Risc'n'Resc. And as the theme "Sound" was announced I pretty quickly came up with the idea. Little did I know. My tool of choice is YoYos GameMaker, and it is easy, to see why. From one codebase you can publish to the mobile platforms Android, Windows Phone 8, iOS and Windows 8 RT, the desktop operating systems Windows (and with a Version bought from Steam, to the Steam Workshop), Windows 8 (a bit separate from the others), Max OS X and the "Joker" HTML 5 (at least a way to provide gaming fun to Linux, too). Or so they say, but I have to come to this later.

On Risc'n'Resc I worked until 5:30 a.m. the first here (which was still in the timeline that is dictated by US west coast timezone and I only slept 2 hours, because I had some fixed business dates in the morning. So I was surprised myself when I had a first visual concept later that day. And I was pretty quick and the next day I already  presented a first online video of the board creation animation:



At the 6th I already had a 2-4 player version running and began to develop the a.i. but than I recognized that the event system of GML was not really up to it, and I started refactoring on the 7th. On the same day, @McFunkypants, the creator of #1GAM (no chance in hiding the connection to twitter) anounced Demo Friday and to have a running demo, I used forked code - meaning an earlier copy of the directory, to create an executable of the aforementioned  mulitplayer version for windows. And while I did that, GameMaker overwrote my original files, because somewhere it is renembered - and I destroyed a days work of refactoring. In my youth, teachers called that "Learning by pain". I needed about 5 hours to get where I was  and than I created my own asynchronus eventhandling, which I published as free zip. And than I stopped.

I had already learned that it is not really a good Idea to use GameMaker for something that affords a lot of code. The engine helped me with the animations, but the IDE part and the language were horrible. GameMaker is ideal for specific kinds of projects, like this quick demo I did in about an hour:

Demo platformer

There was a lot going on after that as I decided to make Gamedevelopment my future and also that I will move from Z├╝rich, Switzerland to Berlin, Germany, which meant I had a lot to learn about Berlin, the best way to move, German laws, marketing for indy games and I started looking out for investment. Before I could think out loud "Crowdfunding" a potential investor contacted me, which cost me quite some time, too. I wrote a business plan, had endless talks, but in the end it was obvious that he promised more than he could do. Which means much of that time investment didn't even come to fruition. So I got back to the development of Playmory no sooner than the 22nd, not a full week until the deadline of the 28th. Lacking an easy documentable object structure I needed about a day alone until I was into the code again to further my work and even than I had to write the code for the a.i. twice, because with the data structures of GML my first attempt had no future. Unity, with C# as a "scripting" language (actually it's bytecode) looks sexier by the day.

Than again something happened. As a midweek special Steam sold the GameMaker Master Collection with all its export plugins for half the price. I reacted immediately and with some help from my best friend (I hadn't topped up my PayPal enough and have no credit card).

And after the update my project was a mess. I only could get it working again by creating a new project and manually rebuild all the assets and objects there, bit by bit... another useless day gone. But there was something that got me over that and that was Playmory on my mobile:

Playmory on Android

But while the Android export kept its promise, HTML 5, so important for my planned marketing affords, did not work. And that means, no Windows anything 8, because all of them are based on HTML 5 and a lot of configuration fu. But that was something I could puzzle out after the deadline, as it it got late... the 27th. Playmory was feature complete, but there were still some funny bugs, and as it later turned out, those were all problems with the GameMaker engine, sometimes acting in funny ways. After identifying them I could write failsafes into the code, but that is not really good coding, and it nags me that GameMaker forces me to do it this way. The last day, Yesterday, I then spent do as much polish as I could get into it before I finally called it a day just in time before the month changed (in my own timezone, this time). And guess what? The Android export had now a funny bug too. When I open the Credits splash screen, nothing very demanding, the app crashes. And with the Galaxy S3 I ran into a deadlock, which really shouldn't be possible, but may be I had no failsafe in place for this special situation, that only happens every 100th run or so.

Actually I was quite angered and wrote a request this morning in the YoYo support forum and guess what. No answer yet. At least I got a stable Windows version and could place that in the Steam workshop, where I quickly climbed up to the first page of "Most wanted this week" which saved me a place directly on the start page for GameMaker:

Yay, made it on the startscreen :-)

So my next plans? Finding out why it doesn't run well on other platforms and fixing that, before I even can think of more polish or more features for a next (most likely paid or with in game purchases) Version.

Some features I plan to act on:
Making the "dumber" A.I.s more human like, e.g. misplacing or forgetting sounds more the longer ago it was selected.
  • The tablet/phone setting where the players sit in the corners and the board is directed to them when its their turn. (It's pretty obvious why that wasn't a priority, is it?)
  • Making animations for collecting stones, changing player and for the final win.
Before I forget it: I made a product page for Playmory that you can find here where you can download the Windows version, too.