On the latest DevGamm 2014 conference I met talented developers from Gamua team. Daniel Sperl and Holger Weissböck – these guys developed Starling and Flox, cool and useful tools for game developers with Flash background.

On the conference Daniel speaks about development mobile games with Starling framework and Holger about Flox as the cloud backend for your game.

We talked a lot and as a result is Q&A session about Starling and development at all.
But wait what is Starling?

Starling

Starling is a framework for game developers who want to publish their games on multiple platforms. It relies on AIR, Adobe’s cross-platform runtime that works on both desktop and mobile. Since Starling uses the GPU for all its rendering, it produces very fast games with lots of special effects.

Companies like Rovio, Zynga and Ubisoft use Starling. The most famous Starling-powered game are the “Angry Birds” games on Facebook; and there are some Disney games I’m not allowed to talk about! ;-)

eggs

Starling 1.5 includes bunch of new features, you can check them all on the Gamua blog. In brief, all is faster and better. Now it is possible to use huge texture atlases up to the 4096×4096 size. Also now it is possible to store rotated sub textures.

As the developers say “It just works™” and I totally agree with them. Now lets move to the Q&A.

devgamm

How was Starling born?
Back in 2009, we worked on several games for iOS, and there was simply no framework available that I really liked. I’d done lots of Flash development before, so I thought it would be cool to have the Flash API for the iPhone! That’s how the Sparrow framework was born, which is Starling’s sister framework for Objective-C. And then, suddenly, in 2011, Thibault Imbert from Adobe contacted me and told me that they’d be interested in having a framework just like Sparrow for Flash, using the brand new Stage3D library they were working on. I was thrilled about that opportunity, of course — still am today! That’s how it all got started.

Why do you develop a game engine but not any games?
Actually, I always planned to develop games, too! It just turned out that maintaining such a library is, in itself, a huge project. I’m constantly in touch with the community, looking through bug reports feature requests, and this doesn’t leave much time for anything else. I’m sure the opportunity will come up again, though!

So community as well actively participate in development, for example Starling Particles extension also included into the Adobe Gaming SDK. What other interesting extensions are committed by users? And how often community adding new features or fixing bugs?
I’m always amazed by the time that Starling users spend in our support forum. If you’ve got a question and post it in the forum, chances are good that it will be answered in a couple of hours! And many interesting extensions are from other developers; for example the “PixelMask” extension that adds pixel-level masking to Starling objects. Or the Graphics extension that can provide basic vector functionality. People are posting code all the time! I’m super happy about that, but of course it also means a lot of time commitment for me, to look through all of that and comment on it.

Development environment. What IDE you are using and what is your favorite one?
I am using Flash Builder because it has the best integration with Adobe AIR and works out of the box. However, many Starling developers are using IntelliJ IDEA and are speaking very highly of it! So I might look into that one day. The latest Flash Builder version has always been a little buggy, so it’s good to have alternatives.

If you’re developing on Windows, FlashDevelop is also a good alternative. I’m doing all my development on a Mac, so that’s not an option for me, unfortunately.

Are you working at home or at the office? How do you coordinate your working process?

office

I’m sharing a small office in Upper Austria with my colleague Holger. After Gamua was founded, I tried to work from home for a while, but I ended up bunkering in my home for too long, not seeing the real world any more! So that didn’t work out too well. ;-)

While I’m doing all the Starling and Sparrow development, Holger is responsible for our latest project, “Flox”. We’re both very passionate developers, so it was important for us to split up our responsibilities.

Tell us some words about Sparrow, because auditory of the Objective C developers is wider than Flash. How much attention is being given to the development of Sparrow at the moment?
Sparrow has had a little hard time during the last months, because Apple introduced “Sprite Kit”, which is very similar to Sparrow. This was a little hard for us at first! However, I still think that there’s an audience for Sparrow. After all, it is Open Source: you can tinker with it and fix any problems yourself. If there’s a problem with Sprite Kit, good luck reporting it to Apple! They probably won’t listen; and even if they fix it, you have to wait for the next iOS release.
There’s a brand new Sparrow version coming out within the next two weeks! It’s a major improvement, for example it’s almost three times as fast! Furthermore, it has almost the same feature set as Starling, which makes it a very powerful game engine.

Is there any kind of features migration from Sparrow to Starling and vice versa?
No, there’s no way to migrate from AS3 to Objective-C. However, Sparrow understand the same file formats, e.g. for bitmap fonts and atlas textures. And since the classes are so similar (almost all class and method names are the same), it’s really easy to port a game over. Objective-C is actually a great language, and in some areas it’s even easier to use than AS3! For example, you don’t have to worry about the Garbage Collector; the latest versions have become very smart with memory management.

Tell us some words about AIR’s new background execution mode, is it mobile workers or other entity? I see it mentioned in what is new for Starling 1.5.
Background execution mode has nothing to do with workers (which are still only available on Desktop). It means that you can execute some code while app has moved into the background. You can’t do much — iOS will limit what you can do, in order to save battery — but it’s useful for some things, like finishing a download.

How you did you meet your teammate?
I’ve known Holger since Kindergarten, actually! He’s always been one of my closest friends; in fact, we’ve gone through exactly the same schools! Then, after university, we worked in different companies for a while, before joining again to found Gamua.

Do you plan to add new members to your team? For example game development department.
Not at the moment, no. For one, we want to keep the team small and the processes easy. As soon as a company gets bigger, a lot of time pours into managing meetings and writing plans. I want to program, not to be a manager! Of course, there’s a limit about how much you can do with two people, though. So if we’d start another project, for example, we’d need to grow our company — there’s no way we could take on any additional work in the current set-up!

What approach or methodology are you using for development? Any Unit tests coverage?
You found my weak spot! Starling has unit tests, but they don’t cover all of the framework. It’s not easy to test stage3D code, so I’d need to set up some special environment for this, and I’ve never found the time to do that.

How does the Adobe sponsorship work, for example if I’d have an idea for a super duper tool?
As described above, I was approached by Adobe, not the other way round. So I don’t know how one would approach them to get a sponsorship! I guess you have to work on something which fits their tools and strategy really well, and then need a bit of luck!
The sponsorship works really well for us, I couldn’t be any happier about it. They leave me a lot of freedom with the direction I want to take with Starling. They just want it to be a great tool for game developers.

Any roadmap or plans for the next Starling release?
I’ve got lots of ideas for new features, but the requests from the community are always my highest priority. I want Starling to be as stable and reliable as possible! I only want to add new features when everything that’s already there works flawlessly.

How old are you? Tell me how you come to the IT?
I’m 33 years old, and I’ve been interested in computers since we got our first Commodore 64 in the 80es. I started programming in High School and learned most of it just by toying around with BASIC. I always found it fascinating that you could somehow tell this little gray box what you wanted, and it would actually follow your orders!

Where you studied?
I studied “Media Technology and Design” in the “University of Applied Sciences” in Upper Austria, which taught me a great deal about both design and programming. That’s why I’ve always loved game development: you need both talents for that.

Do you have family or kids?
Actually, I married just a few days after the first release of Starling, back in 2011! I can tell you, that was a busy time … organizing a wedding and finishing the release at the same time (while still working in a day job!), that was quite an effort. But it worked out well, and now that I can work on Starling as my day job, I’ve got much more time for my wife, too. ;-)

How do you spend your free time? Do you like to travel? How often? What is favorite place?
Actually, I love to spend my time with a good book on the couch or in the sun — or with the latest Zelda or Super Mario title, I never miss one of those! Other than that, I like to ride my bicycle through Austria’s countryside, and to travel to a foreign country from time to time; not the typical beach holiday, but to drive around by car and see a lot of the country. I’d love to make a longer trip to Russia, one day! If I just knew the language …! ;-)

Bike, cool! I know many developers fond of bikes. What kind of bike is yours?

smartbike
Haha, most of you will laugh when they see what I use to move around! I don’t know why, but I’m a fan of everything small and portable. As a child, I didn’t have a NES, but a Game Boy! And now, I’ve got a Smart and a folding bike! The perfect fit, because I can easily pack my bike into the back of my car. ;-)

Here are some images, so you get an idea. (Those are not actual photos of my vehicles, but they are very similar.)

Are you first time here in Russia? Do you like it? What do you remember most of all?
Yes, this was the first time for me to visit your beautiful country! It’s a shame that I could just get a small glimpse of Moscow. But I got to know a lot of really nice people, and I’d love to come back soon, with more time to really get to know your country and your people!

Our team released new mobile game for kids. WipeIt game based on AIR and use Starling for Stage3d rendering.

An interactive learning game for kids aged 1+.

At 1 year old, children develop finger movements and cognitive activities. They investigate, learn and understand the world around them, learn the colors.

In this funny animal learning game, children can “paint” colorful animal pictures by sliding their fingers over one-color contour images. What’s also important, you won’t have to wash paints off your your child’s skin and clothes!

The game has a simple, intuitive interface that allows children to play without help from adult. It also supports multitouch, allowing you to complete tasks together with your child.

Even at 3, children will enjoy this game and play more deliberately, accurately outlining the actual animal contours.

Here is link to the google play store:

https://play.google.com/store/apps/details?id=air.com.inspiritgames.wipeit

iOS version is in Waiting For Review state. I hope it will be reviewed soon.

This week our snake game remake was finally released at inspirit-flash-games.com. Our team has decided to self-distribute this mini game, instead of selling primary/exclusive license sponsorships (this moment we accept site-lock bids only). Self-distributing will allow us develop better promotional strategies for our next game, which is on the way already.

Bulldozer Snake is based on the use of classical snake-game mechanics, though there are lots of enhancements. Main game goal is to collect as long trailer-tail as possible and deliver it to the base.

Short gameplay video:

Features which slightly differ our game from legendary ancestor:

  • Vehicle (snake-head) moves freely and turns smoothly throughout the gaming area (no tiles).
  • To make tail longer a player needs to collect cargo-items, each of them takes 25-100% of trailer capacity. When the tail becomes long and bulldozer hardly moves forward a player can deliver cargo to the base.
  • The more trailers bulldozer carries the more fuel it consumes. You need to control fuel-level and refuel periodically.
  • The musical environment depends on the number of trailers carried by bulldozer and becomes more complex as the tail-length grows.
  • Game has a simple achievements system and several types of bonuses to enliven the gameplay.

Play Bulldozer Snake and feel free to leave your comments.

Previous posts focused on Sokoban game like simple Prototype and then prototype with textures was prepared without refreshing any documentation for A3d.

Well I checked A3d examples and found that there is SkyBox feature. And it is really easy to add animated characters to scene, and then choose prepared animation. And it is better to fix axes before use and etc… Good experience for future to read manuals before coding.
Black voodoo manipulations with camera angles now removed, because all axes became native for A3d engine.

Now camera have free mode too, use F button to activate that mode, then use W,A,S,D and mouse to control camera.

Other controls are the same, keyboard arrows Up, Left, Right.

Here you can check latest sokoban version with animated guy:

This movie requires Flash Player 9

Read more…

Emanuele Feronato added textures and some environment to Sokoban game prototype made with Flare3D.

I reproduced this prototype on Alternativa3D engine. And here you can find it:

This movie requires Flash Player 9

Generally this port is bit different from Emanuele’s version. I can’t find information about feature like SkyBox in Alternativa3D, so this feature coded manually. Another difference is camera behavior. Emanuele binds camera to object and during rotations player object stand still and only camera fly around by its orbit. In Alternativa3d version object rotates too, this allow us to face player object it to it’s current direction. Camera is not binded to the object directly it is binded to object container and we can manipulate with player object in container, add animations, rotations etc. But both variants are good I think.

Read more…

Emanuele Feronato italian geek and PROgrammer prepared two great blog posts with Sokoban game prototype. As all of his examples Sokoban prototypes have good code and can be clearly understood.

Here are links to them:

Flash 3D Sokoban prototype with Flare3D
and
Flash 3D Sokoban prototype with Away3D

We have reproduced this prototype using Alternativa3D engine. Alternativa3D is intended for displaying 3D graphics in the Flash Player environment. The possibilities with Alternativa3D are comprehensive and diverse. The technology is widely used in different spheres ranging from 3D websites to multiplayer browser games and applications for social networks in full 3D.

And here is the result:

This movie requires Flash Player 9

Read more…

Handy Unicode range generator for font-embedding into AS3 and/or Flex applications. Read more…

Flex contains configuration file, flex-config.xml, located at "/Applications/Adobe Flash Builder 4/sdks/4.0.0/frameworks/flex-config.xml". The file is used in the compilation phase, and options defined in it are read and applied by the application complier.
You can modify this file, to bring some of its options into play. You also may use separate custom config file, which can be sent to compiler as a parameter.
It is also possible to create local configuration file, placed in the folder containing main application file (AS class, or MXML file). Configuration file must be named the same as application file plus "-config.xml" suffix. Mxmlc automatically searches for a local configuration file in that folder.:

Configuration files will be read in the following priority (highest first):

  1. Options set in the command line have precedence over all other configuration files options;
  2. Options from custom configuration file, specified by load-config compiler option, have precedence over local configuration file;
  3. Local configuration file has higher priority than flex-config.xml file;
  4. flex-config.xml file has the lowest priority.
Read more…

Operating with embedded graphics and fonts of flash application during development is significant, since unique cross-browser (and cross-platform hopefully) look is one of key RIA/flashgame features. This article reviews font embedding for pure AS3 project, as it's the most universal way for embedding. Flashplayer uses device fonts for textfields by default. So if you specify the font property of TextFormat object, then the given font must be available on device where flash-application is running. If the preferable font is missing, default system font is used. You should embed the font to assure the font is displayed properly on any computer. Embedding gives some more advantages: font symbols can be rotated, fonts provide smoother playback when zooming, fonts are anti-aliased. The following font file types are supported by Mxmlc compiler for embedding:

  • TrueType fonts (*.ttf);
  • OpenType fonts (*.otf);
  • TrueType Collections (*.ttc);
  • Mac Data Fork Fonts (*.dfont);
  • Mac Resource Fork TrueType Suitcases (don't have file extension).
Read more…