Cocos2D meets robertszeleney


robert_iconI have heard, that no matter where you are in Austria, you are always in danger of falling off a high mountain. Which kind of explains why Austria has never won the European Championship in soccer.  I have also heard, that in a cave, carved into a snow filled mountain, with indoor swimming pools and free bars, lies the company Djinnworks. The masterminds behind a huge array of games, all starting with the word “Stickman”. It might sound boring, but trust me, it is not. 

Cocos2D: Hi robertszelecz … ehh robertszhleze … ehh … is it okay if I just call you Robert?

Robert: By all means. I always thought that the pronunciation of Szeleney is really difficult for german speaking guys, but the first time I visited the USA I learned that other non-german speaking countries have much more problems with it actually ;)

Cocos2D: Thanks, and thanks for taking your time on this.

You have been a long time user of cocos2d. Could you please tell us a little bit about yourself, and how you ended up in game development?

Robert: Well, I started coding way back in the days of the C64 and Amiga times. While I was in high school I started SkyOS, which is/was an operating system written from scratch for x86 PCs. I really loved working on this. Extreme low level stuff, you touch almost any area of programming from x86 assembly CPU internals, chipsets, device drivers, entire GUI, filesystems, network stacks, applications, etc… and in general, the most difficult challenge I could imagine and so much to do that you will not be bored for the next 30 days if you desire. Later, at around 20 and while still working on SkyOS I started a job working on a realtime graphical user interface for automation devices. In 2008, soon after the first original iPhone got released (and it was obvious that the days of traditional kind of operating systems are over) I tried myself on mobile programming. I started with a few very small test applications and games to get used to mobile programming itself and to learn the mystical and “secrets” of this so called app store. The first real game project which also immediately jumped the charts to #2 overall paid worldwide was Rope’n’Fly (which didn’t even have sound output back then ;) ). Initially coded with cocos2d-0.8 and Box2D. This game was a huge success (revenue wise) and after settling with a company – who didn’t like the success of a game with a swinging ragdoll from building to building – I joined forces with Heiko Hufnagl to bring the next game to its success. Soon later we released Stick Stunt Biker, Stickman Cliff Diving, Line Birds, Line Runner, Wingsuit Stickman, etc… which we all got in the top #100 overall paid apps. So, a few years later, we upgraded our company, hired new employees and are still working on new and exciting games.

SDMTCocos2D: I simply have to ask you this first. I always got the impression that you have build a game engine on top of cocos2d. Is that correct?

Robert: Depends on the definition of game engine actually. Basically we use cocos2d at the lowest layer for rendering and input handling. On top of cocos2d we have a really huge layer which we actually call the “game engine”. The game engine itself handles a lot of stuff in common for almost any game we made. (Whenever we make a new, everything which might be needed again is built right into the game engine). Additionally there is a Game Editor which plays hand in hand with the game engine allowing to create complex resolution independent menus, design complete landscape games, edit physic shapes and properties, animate characters and sprites with IK, etc…. Another important part is the platform abstraction and handling of reusable game components. ( We cross compiled directly to Android before most of the well known cross compile tools from today were available).  Other things, like entire in-app shop logic and graphical representation, score management, Ad network mediation, cross promotion, etc… everything is handled in this engine. This allows us to quickly create new games and have 95% of the support stuff immediately ready. By making all this tools in-house we are really flexible in designing or changing the tools to our exact needs and quickly react on the current market.

Cocos2D: What kind of extra tools / applications do you use?

Robert: The usual set of tools needed for mobile game development actually. XCode, Photoshop, Cinema4D, etc… and really huge set of our in-house built tools. Usually we always try to develop tools on our own. This tools make exactly what we want/need, optimized to allow quick game and prototype development.

Cocos2D: I read somewhere, that because of your in-house tools, you would probably not be the first to transit to V3. What do you think is important when increasing the major version number of an API, and how have you handled updating your own in-house tools?

Robert: Depends actually. In our case its definitely backwards compatibility. We have still a lot of games using cocos2d-1.x. Normally we would not update such old games anymore. But we are for quite a long time in the iPhone/Google business already and had to learn a few things the hard way. Almost every year there is something which just forces you to upgrade your old games. For example, new hardware it should run on, or policy changes from the App Store teams which require new frameworks (for example Ads) which then requires game updates. For such updates, where you have to touch 3 or 4 years old code it is extremely important that all frameworks which get updated are 100% backward compatible. Else, test effort gets unimaginable complex. Internally we solved this by having our game engine 100% backwards compatible always. This way we can simple replace the old game engine folder from lets say Rope’n’Fly 1 which was released 2009 with the game engine folder from Stickman Tennis 2015 which was just released. The new game engine version will automatically detect that Rope’n’Fly is still using cocos2d-1.x and recompile all assets, sprites, and most important, the entire game configuration automatically. The game engine is not just a set of classes but contains also the entire build pipeline taking care of extracting PNGs from photoshop layers, converting audio files, adjusting assets for the desired platform, encryption, server side configuration, ad management, etc… But this system has disadvantages too. For example, whenever a framework changes its logic completely and/or has logic-incompatibility changes to its public methods we can’t handle this automatically. Technically spoken, as soon as we can’t #ifdef in a reasonable effort we cannot upgrade to a new framework easily.

Cocos2D: Back to the most important thing. Gameplay. Do you even have time to play games, and if so, which ones are on your tablet at the moment?

Robert: Unfortunately there is not much time left for me for playing games. The few spare minutes I have I usually spend on trying new games, new genres, and trying to think of a new game ideas in general. But this doesn’t mean that we don’t fire up our PS4s when we come together for our weekly meetings of course ;)

Cocos2D: Having tried quite a few of your games throughout the years, one of the aspects I personally think has improved immensely, is how fun your games are to play. They have matured to a state where I think they should be compared to the best. 

Is good gameplay something you have deliberately worked on improving?

Robert: Well, being able to concentrate more on the gameplay and polishing is something we owe to the success of the early games. When we started coding for mobile devices we had a clear goal:  develop fast, release quickly. Back in 2009 and 2010 we released new games every few weeks. Back then, it didn’t made sense to invest months in a game just to see the game failing. We might have been out of business for a long time already if we did so. So, it was simple: Develop fast, release early, make money. As of now, when you have 20 well going games on multiple platforms selling almost themselves with no effort required to keep them going, its now possible to dedicate more time to a new game, fully polish it, adding more gameplay related stuff and details, investing more time in the menus. From our personal view we still try to squeeze 12 months of work for all the ideas and things we would like to see in a new game into a 2 month time slot. You still have to set tight deadlines as the mobile game market is still a very fast moving market. But who knows, maybe in a year or two we can expand the reserved time slot for a new game to 4 months already. There is still a lot of potential to improve various aspects of our games which we would love to be able to do.

RNF4Cocos2D: And if you should pick one of your games, which you a bit more proud of than the rest, which one would it be, and why?

Robert: It’s really hard if not impossible to decide for one single game which I’m most proud of. If I could take three, they would be: Rope’n’Fly for being the very first very successful game and smoothing the way for us into mobile game development, Stick Stunt Biker for the most successful game ever (more than a year in the top 100 overall) and the recently started Stickman Sports Series.

Cocos2D: I have to admit, that I am a big fan on how Djinnworks has continued to evolve. If possible, could you lift the veil a bit on your plans for the future?

Robert: At the moment we have three new games in progress (Stickman Downhill – Monstertruck, Stickman Battlefields and a new Stickman Sports game). As an experiment we are working on them simultaneously, we will see how this works out ;)

For the future we have a lot of new game ideas and we will also release sequels again for the best going games. Overall, we will also expand to new platforms and always keep ourself changing to adapt to the current market challenges.

Cocos2D: And that concludes the interview with Robert.

As I have followed Djinnworks over the years, I am immensely impressed with what they have achieved, and it is so  cool to know, that they build all this on top of Ricardo’s amazing 2D engine.

Discuss it here

djinnworks

SB