Prototyping of Star Corsairs MMO is now complete
What?!?! All this time I was still working on a prototype? Well that’s what happens when you don’t work on it full-time (I’m still employed but it’s coming to an end really soon). But it might not be prototyping as most consider it.
For me the process of working on prototypes is still so far to make sure I can actually complete what I’m about to begin. Yes of course it’s also to check if seems fun but I don’t make any commitment until I’m sure I can finish what I’m about to begin. I guess my wife would tell you that’s why it took me 13 years before marrying her …
I know that nothing is out of reach but I’m still very insecure. That’s why I want to make sure I have all the cards in my hands before making a move. It’s good and bad I know but that’s the way I am. The good thing is that now I have all the cards in my hands to carry on with Star Corsairs MMO.
Step one: What does a space game look like
For that I have first built 2 single-player Flash games (Star Corsairs and Star Corsairs: Dogfighters). My wish was that those first 2 games would find a sponsor before I start to work on something bigger but that didn’t happen. Sure it would have sent a much positive signal to find a sponsor but I know that casual Flash games don’t target the same people as MMOs. Whatever by completing these 2 games I gained some quite valuable experience. For example just giving a shot at designing spaceships without any artist and testing what makes a space game “feels right”. By “feel right” I mean the kind of feeling you might get by watching the first 15 minutes of Revenge of the Sith.
Step two: Making sure I can build another MMO
There was no way I was going to rely on some tech I built myself again. Golemizer achieved what it was meant to achieve I guess but it’s not good enough for me. I need some tech that can support my ambition and I need tech that won’t have me wasting countless hours on some core code I should have coded better. It’s quite satisfying to build a MMO from the ground up but honestly that’s not the best way to make a living. You end up spending way too much time on basic functionalities and not enough on fun stuff. In the end players will play your game because of the fun stuff and not because they are amazed you have been able to build that stuff on your own.
So testing SmartFoxServer was the second I did. Of course there was other options but non with the same kind of support as SmartFoxServer. I’ll leave the other options to devs with more money and with more risk tolerance than me. If I’m going to release an indie MMO then I don’t want to waste time just because I cannot find a working example or because the guy that built the tech on the other side is away from home for 2 days. Yes that’s sad but that kind of risk is not for me so no need to try to convince me that SmartFoxServer cost too much or whatever. If I don’t make enough money to pay for the license of SmartFoxServer then this project will be a failure anyway so it’s not part of the equation for me.
In no time I was able to build a simple demo involving SmartFoxServer and my previous code from my single-player Star Corsairs games. It was enough for me to know I would be able to handle what would come next. Specially that I haven’t coded in Java for about 10 years and was able to do the stuff I needed to do with SmartFoxServer in about 2 days.
Step three: Adding real MMO elements to the demo
Okay so I’m able to use SmartFoxServer but am I able to do the more complex stuff I want to do with it? The minimum I need is some PvE and some mining. Oh and I also need something to build interfaces quickly (thanks to AsWing for that). I’m not talking about other stuff for now because if I’m not able to do those things right then I’m better be able to do the other stuff otherwise I’ll just go sell French fries somewhere and stop to think about developing games.
The first step was to find a way to synchronize movement for all players. What a player see on his screen must be what another will see as well (or mostly). It’s really the most tricky thing I encountered so far while working on MMOs simply for the fact that I’m no math genius or coding guru. Golemizer allowed me to handle things simply by having really small zones and non-important players movement but this time I needed to raise the level of difficulty a bit. I tried as hard as I could to get smooth curving paths for spaceships but that’s not going to happen. Here I’m actually using something closer to Dark Orbit but with an additional factor: maneuverability (more on that later).
Once I got that out-of-the-way then I knew there was some hope to build that space MMO I wanted to build for so long. I’m sure many people would tell you that it’s not much to be proud of but for me it is. That’s what you get for doing everything yourself. Everything you do seems easy to everyone else. On the other hand everyone else is just too busy to do what you are doing …
Step four: Making sure the game can be delivered the way you want it to be delivered
What? Okay I just mean here that you can make sure stupid stuff is handled properly. For example I don’t want players to play in a 600×600 pixels frame. If they have a really huge screen then I want them to be able to use this whole screen to play the game. You can do that with most offline games so why should an online game be different?
That’s when I hit the limit of Flixel. See the way Flixel works is that everything is put on a single bitmap. That bitmap remains the size you have decided in your code. This means that if you have a really big screen that you might have to play the game in that silly small 600×600 frame I built. When I tried to trick Flixel in using a huge 2000×2000 pixels frame I then faced huge performance problems. That’s when I knew I had to move on from my old single-player code to something out of any pre-built framework.
Now don’t get me wrong here. If you are new to Flash / AS3 game development I strongly encourage you to use a framework like Flixel. There’s really no need to make your life more complicated by trying to build everything yourself. Frameworks like Flixel are really great. All my previous Flash games were built with it. It’s just that you can’t expect a specific framework to answer all your questions.
For example Flixel is really great if you need to handle collisions or simple velocity movements. The fact is that in Star Corsairs most of the stuff is entirely driven by the server. I just don’t need all the power Flixel is offering me. An MMO can’t give too much power to clients so a lot of what Flixel is doing was just irrelevant for Star Corsairs. Still very useful for client-driven games but not for an MMO.
Fortunately moving on from Flixel to a pure AS3 approach took me about 2 days. It’s still very important to know that I didn’t changed much from my Flixel-driven code. All classes have the same name, same functions but some stuff related to bitmap handling and movement is different.
Bottom line is that if you are new to AS3 don’t spit too quickly on frameworks that already handle the basic stuff. Learn with them and if one day you have to do stuff they can’t handle then you can consider not using them. Not doing that is just silly. It’s all open-source anyway so you can still change things to have the framework do what you want. It really goes to the core of how that framework was thought to work.
Step five: Starting to care of how things look
Well at that point it means the game can be done. If you still haven’t thought if your concept is fun then it’s your own problem. But when you are starting to think about “I should make this that color” then you know you can do anything you need to release the game. That’s where I am. That’s where I was when I knew I could release Golemizer even though it was my first game.
So it means Star Corsairs MMO is now an official confirmed project. I can do it and it will be done. If you wish to bet against me please do. I could enjoy a few extra dollars …