Phaser Core animations

Some animations I have been working on this week. This is still work in progress so it may differ substantially from end product!



FighterBFireWeapon FighterBStandBy

Find more information on PhaserCore game at IndieDB or at the official web page!


PhaserCore dev update #2

I have uploaded an small video showcasing the new weapon system in Phaser Core. As soon you stop firing, the game enters into “bullet time” allowing to easily switch weapons. This has been designed with phone and tablets in mind as it easily allows interacting with the ship without being killed so easily.

The menu shows the remaining time available for each weapon with a circular gauge. Once activated, the ship is surrounded by a bigger circular gauge displaying the remaining time available.

So far I’m happy with that control system but will be revised in the future with feedback from everyone.

Fly safe!


Dev update #1

As promised, I will keep you up to date regarding the development of Phaser Core.

I’m currently working on some visual enhancements regarding secondary weapons. Currently the user has no feedback on the remaining time available for each weapon. This will be fixed by displaying a serie of circular gauges that shows how the time is recharged by picking up powerups and how it depletes by actually using the weapons. I will explain the concept in an upcoming post this weekend.

For now you can watch the new video with in-game sfx and music and improved video quality!


A few days ago I released an initial “approach” to a 2D/3D computing library written in C++ with the ultimate idea to optimized ShadingZen (a java 2D/3D Engine). In its current state you can find various generic templates and some SSE specializations for 3 and 4 component vectors, matrices, quaternions and soon rays and bounding boxes. Those are the foundations for various common spatial queries algorithms too.

The source compiles against Boost 1.53 (its only dependency so far) on some semi-compliant C++11 compilers (cross-platform library!):

  • Linux GCC 4.7.20121109 (probably works with 4.6)
  • MacOSX Clang 3.2 (using libc++)
  • MSVC 2012

Supported SIMD instruction sets:

  • SSE: Yes, 4.1
  • NEON ARM: No
  • AVX: No

I have spent some hours this weekend tuning the Boost.Build2 scripts to ensure everything compiles in those various systems with unit testing and with just one command. I’m leaving android for some near future.

You can found the repository here: Feel free to contribute!

Android Performance (Object Pools)

This is the second part of my series of post about avoiding some performance hit caused by dalvik GC, first entry is here:

Object factories are quite useful in this context as they avoid object to be GC’ed and also avoid allocating new memory which also incurs in some overhead.

In java this is done quite easily. For our objects to be poolable we need them to conform to an interface:

public interface Poolable {
   public void initializeFromPool();
   public void finalizeFromPool();

We also need to create a pool which allocates new objects if needed, and keeps the pool moving. The soruce code can be best viewed at GitHub here:

There is one drawback with this implementation, we need one pool for each kind (or type) of object we want to be poolable. With some more code we can have a jack-of-all-trades pool which can create any kind of object. ShadingZen has an specialized pool that creates rendering task of any type (assuming they inherit from RenderTask), the code can also be found here.

A 3d rendering engine is huge loop creating and destroying objects, thus reusing some of them will make a huge difference on mobile platforms.

Happy coding!

GPU Compute Slides

Some interesting slides on GPU compute aimed to 3D engine programmers: It goes beyond rendering and how it can be useful in other situation to offload work to the GPU. It also contains some smart ideas on how to improve overall algorithm performance. Worth a read.

Nikon F4

I don’t know why but looks like software people also likes photography. Must be there something about brain cells organization thats leads you to go down the software path that also determines your chances to like photography…who knows…

So that’s me, one of those out there that love photography and spent some time trying to improve it at any chance.   This post is about the Nikon F4, one of the most innovative cameras in history, and why I find it great.

I bought mine about one year ago, at ebay. My dad had one when I was a child and I was fascinated ever since, and I’m still are. In fact, I have never used my Nikon D80 again. Nikon D80 viewfinder cannot top with Nikon F4 one and composing is just not the same.

The Nikon F4s (the one with the MB-21 battery grip) weights a ton but feels strong and has all knobs at the right positions (yeah, it had knobs and I miss them in moderns cameras!). I just hope it never falls, and if it does, do NOT fall on my feet. It was built like a tank and it feels that way.

My flickr’s stream

This camera introduced many features that we used everyday today, for example integrated autofocus motor drive, matrix metterring, shutter balancer to reduce shutter-shake…you can read some history at this Nikon’s web page.

For me, the camera has the right buttons and knobs at the right place and you won’t need to deal with obscure menus and sub-menus, it’s User Experience is perfect 😉 Add on top of that a great viewfinder with 100% coverage.

There just one thing that is not right but shouldn’t be a problem 99% times you use the camera. The built-in LCD that is used to display shutter’s speed is not back-lit, which makes it almost imposible to read in low-light conditions. But probably in such situation you can’t even take photos unless you are using a 800+ ISO film. It not a big hassle for me.

If you ever consider buying a film camera, think on getting a Nikon F4.


EDIT: As commented below by @tonutunnelõnu the LCD is backlit.