I thought I’d write a sort of “lessons learned” thing about my Battlefield 3 related NodeJS application.
As of writing this, the service has been down for several months. The very first idea with it was simply to see if it could be done. Then, the next idea was to see if I could make a few bucks with it. Overall, I’m in the negatives with it, but I had one paying customer so that’s something right there ;)
Continue reading for some more insights…
The tech stack
As mentioned in the post about the architecture in BF3 Web Commander, this was entirely built on top of NodeJS.
Which was a perfect fit for the task at hand. Building the application was a really good way to learn more about Node, and how it works and what it’s good for.
I can recommend Node for anything that involves realtime processing of events, messaging, etc., and any web applications which have similar requirements.
Several NodeJS versions went past while developing the application. Despite node not having been at 1.0 at that point, there were no major issues with backwards compatibility between versions.
The “business plan”
This part came mostly as an afterthought. I realized there was some demand in the market for an easy to use web-based admin tool for Battlefield 3 servers, and mine would fit the bill pretty nicely.
Positive feedback from existing users of the free version was encouraging, so I decided to just see what comes out of it. There were several competitors in the space of BF3 admin tools, which were pretty well established (more on that later), but Battlefield 3 Web Commander was much easier to use than the alternatives and it had some very convenient features in comparison.
Integrating PayPal was a pain. I wouldn’t recommend that to anyone. Not only were the docs hard to find, they were confusing and incomplete.
Next time I do something that requires payment processing, I will definitely look at other options first. I did get the PayPal system working eventually, but it was a bigger headache than it should’ve been.
Based on some research I decided to just ask for 5 USD per month as the price of the service. Some of the other tools were a bit cheaper than this, but I didn’t want to start competing on price since that wouldn’t make any sense. Mine was better in some ways, and the difference in price was minimal anyway.
What went wrong
The biggest thing that went wrong was probably that I completely lost interest in Battlefield 3. The fact I was enjoying the game was a big factor to why I had ever started the project, and when I stopped playing the game, I lost interest in working on the project.
Contributing to my lack of interest to work on the project was also the lack of users.
Why were there no users?
The fact that my tool was much easier to use than the alternatives did not seem to be a big enough factor. As mentioned earlier, the other tools were rather well established, and also marketed by server providers. Essentially my tool had zero visibility in a market that seemed to be entirely controlled by the established tools.
The price seemed to be an issue as well. Even though the difference was only few dollars, it seemed to be a very big deal for many.
What was learned
Eventually I took the system down. I had had one paying customer for it, which was pretty nice considering when I started the project I had absolutely no intention of making any money from it.
I had ran the service on my VPS, which I would be paying for anyway, so I didn’t really lose any money on this that I wouldn’t have spent to begin with. I had a domain name, but the revenue from the single customer covered that :)
Considering the idea for making it a SaaS application was mostly an afterthought, I’m really considering it as a successful experiment in turning a random project into a product. If I had originally intended to make money from it, then it would’ve been a failure for sure, as there wasn’t really any room in the niche.
If anything, in order to succeed, I would have had to have all the features of the others + a better UI. I only had a better UI. Having all the features of the others was pretty much out of the question due to the nature of the application.
It is pretty obvious now after everything, but it was not at all obvious when I still worked on the application.
Perhaps with these lessons learned, next time I will actually make enough to cover my VPS costs too… :D