Wrote a quick performance test yesterday comparing movieclips with our own blit engine. Usually tests are performed with a number of objects. To test several loads, usually a different number of objects is used to test the results. I didn’t want that since we all know that many games don’t have a fixed ammount of objects rendered. Even if object pooling is used, what concerns me is the objects rendered.
What I did was to create one object per frame and then move all the existing objects away from the starting point. This would give an instant visual reference about how well blit performs against movieclips.
Give it a try and then read on.
Tried it? Cool!
Movement is time-based in both tests, this means that test 1, ran with movie clips took longer since the spread is bigger. This indicates a frame drop, but if you run it again and notice that there are different spreads, so not only it drops but it drops in a rather inconsistent way. Obviously the test also took longer to conclude.
On the other hand, blit engine performs rather smoothly, to the point where frame drop is not inconsistent and allows the objects to stay pretty close to each other. Above that, the test is damn quick compared to the first one, proved by the small spread (although I could’ve included a clock, I admit).
This is nothing we didn’t already know, I agree! The true testing will be with animation, rotation and scaling of blit entities.
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.
I was feeling good about me, our work and a fine goal we met today. I was preparing to leave a short note on twitter or a small blog post, not about it, but more because of it…
I opened my email client and started to read what seemed to be one of the many “I love your work so much that you have to mention my work!” emails we receive. But as I was reading it, I felt it was something different…
You see, I’m a firm believer that one of the problems of the Internet is that everyone is looking for a special name, something that looks good and easy to read and retain as a domain name also, but few, very few, live up to the tag of their own name. This means that a site called Best of Online Games must be different. It can’t be yet another gaming site, it can’t be yet another script game portal. It has to at least try to be something different.
So I visited the site, noticed a nice article about us (which was the reason for the email we received in the first place) and noticed a fine philosophy behind it. Best of Online Games looks as a nice game portal, but features developers, news and other articles about this industry niche that is online gaming.
As promised, as soon as BPE has a couple of games under its belt, it will be made available. There are a couple of games going on with it and those are almost done, but the engine’s part is finished.
With all we’ve been through with it, refactoring was needed so I put a bit of work in the engine this evening (coding on a Saturday evening… geek!) and I’d like to show you how to do something with it.
I’d love that you take a look at the code and let me know if you think it is easy to follow, since this is the philosophy behind most of BPE’s classes.