I’ve been asked quite a lot how we organize our projects. I tried to explain the best I could and today I was going to write a huge blog post about it. Instead of that, I’ve put 9 minutes of video that show how and why Bruce Ali is organized the way it is.
By the way… choose 720p and full-screen it.
I’ve been writing and re-writing a lot of code lately. Somewhere between the work to be done and the work I want to see done, there are dozens of thoughts and discoveries that are worth sharing. Some are puzzling, others are simply brain melting.
A long time goal: behaviors! What is it? How does it work? Well… imagine you write this line of code in a Bold Pixel Engine entity:
And from that moment on, the entity will always rotate to the mouse position. That’s a behavior.
Imagine that you could say that instead of facing you’d want it to rotate to the mouse position at a given speed, or with a tween, or that you want it to evade another entity or to find the path to a certain point. Now imagine that behaviors could applied to time… that you could tell your engine time would slow down so you could see all in slow motion…
Well… I wrote two behaviors and it works like a charm!
Flash Player is somewhat smart
I’ve noticed that if you copyPixels() or draw() outside the target bitmapData area, it won’t render anything. Having thousands of objects outside the rectangle area is absolutely meaningless, even if you apply a transformation matrix and draw.
I thought about the possibility of creating a camera object… suddenly this possibility became obviously closer since there will be no need to verify if an object is supposed to be rendered, Flash Player does that for me, I just have to pass the right rectangle… awesome! or at least I’m thinking it will be!
I really needed a rest a couple of nights ago… so nothing better than writing some new functionalities! My goal was to write filters to apply in layers. After noticing that most flash filters need a BlurFilter applied on top of it, I decided to make it simple and just work with one BlurFilter and one ColorTransform in each layer.
BlurFilter is a huge performance killer, so I played around with only applying the filter to whatever the area the filter needed to be applied to and it works great! The bigger the area, the bigger the performance impact that’s for sure!
ColorTransform seems to have no impact. I’m betting that the pixel color is calculated directly when drawing… if this is true… it’s quite smart!
All in all and since I didn’t want to use any other filters for performance issues, I noticed that with just a little tiny bit of patience, blur and color transform can do most of the cute effects we might need, from shadows to glows to motion blur.
Brain melting the possibilities
A camera with behaviors, like moving to an area with tweening. Flames coming out of a structure and then exploding in thousands of particles flying around with fire trails. Zillions of projectiles flying around in a huge map… wow… this weekend really caused a brain melt.
Need to finish the tutorials to Bold Pixel Engine v1 because v2 is already shaping.
Are you into developing multiplayer games? I bet you are! Have you been through the headache of supporting it? I bet you haven’t!
In the beggining there was darkness…
Most developers dream of adding multiplayer games to their portfolio and the less wise or experienced often run to embrace a multiplayer project from any tool that offers a tiny bit of ease of use and more than often they either fail or face the fact that their game is not half of what it could be and already took twice the amount they thought it would take.
A good idea: Nonoba’s MP API
Sometime ago Nonoba offered a great API for multiplayer games. We tried it and technically we loved it. It was easy to implement, server-side code was written in C# (which brought tears of happiness to our eyes) and we did a rather small but entertaining game in a couple of days. Enough to say that from a technical point of view, Nonoba proved its point.
Unfortunately from a commercial point of view this API was not interesting for developers such as us, that want to license games. All multiplayer games powered by Nonoba’s MP API showed Nonoba’s branding, which is only natural: they support the servers, they have the service, so if we want it, we have to stick with it, after all, it’s free! All in all Nonoba’s multiplayer API is amazing for developers that do it simply for the love of it with no commercial interest.
So I must say that for all this time we were on a strange position: we love the technology, we hate the branding! Good thing about Nonoba is that they have people that want to hear from developers and believe me I wasted a lot of their time explaining why that didn’t work for us, hoping Nonoba would understand that if it didn’t work for us, it wouldn’t work for many developers.
Player.IO: A Huge Step Forward
Someone once told me:
Do you know what really works? McDonald’s! Everyone can go home, make a big burger and eat it! But for $1 you can eat the burger, without having to cook it and without having to wash dishes.
Let’s translate this to multiplayer game development…
For a given amount of money I can code multiplayer games without having to setup and maintain infrastructure… makes sense? Good, let me present you Player.IO!
All I’ve mentioned above regarding the technical aspect of Nonoba’s API probably stands. I say probably because we haven’t done any code with it for a long time, but I believe that if it’s any different, it’s because it’s better, not the opposite.
The good part is that no branding is present, at least no portal’s branding. As we speak, the free version (yes, there is a free version) will show Player.IO branding, but that’s not competition for any portal, so it’s ok I guess. Moreover, if you sell a license for your game, you’ll probably should consider a plan.
We haven’t touched Player.IO, we just have an idea of what we’ll get from it because of what we tried from Nonoba’s API. What I really like about all this is not the technical part or the branding being gone, but the great feeling that someone was smart enough to hear from developers and take a huge step forward with a strong commercial offer that can fit pretty much any development need.
Player.IO looks very solid and promising, we’ll try it as soon as possible and hopefully confirm it.