In defiance of
Betteridge's law of headlines, the TL;DR is "Yes".
Now that we have that out of the way, let me back up a bit.
Back in
June last year, I published a blog showing a technology proof of concept where some pixels were moving around in a web browser, with the aim of making a spectate client for the web. This ended up being called "phaserapp", and a few of you have tried it out.
As of today, I am officially killing off that project. This should not come as a surprise to some of you, because it's been non-functional for a while now. It's a bit unfortunate, but I think it's for the best. There are a couple of reasons why I think so. First off, the project pushed a very aggressive new layout as a proof of concept, where the game field took up most of the space available on the screen/window. This is fine for a basic test, but it turned out to cause a lot of problems in terms of how to visualize all the information we all expect from the client. Showing chat and event logs is tricky, showing player cards ends up very difficult and the overall slowness of running the application in a web browser turned out a bit problematic too. On top of this, Phaser (the framework I chose to build on) didn't end up feeling very mature and a lot of seemingly simple things turned out to be huge nightmares. And the final nail in the coffin was the way modern web browsers handle applications running in a background tab, where everything simply stops and gets queued up to be rendered all at once when you finally go back to the application tab. In addition to this, there was very little outside interest in assisting with the project, partly because Phaser turned out to be so hard to work with.
In
April this year, I posted a blog talking about the issues we have with the current 1024x768 client and why I feel this needs to change. I spent a lot of energy on the proof of concept for that project, and so did Garion who spent a lot of time drawing images to test with. These blogs were met with a LOT of negativity over a couple of weeks time and I simply ran out of steam to push forward with it at the time. I think it's important to state here that I still believe scalable icons is the way forward, but let's not dwell on that for now (there will be plenty of time to complain later down the line of this new project).
So where are we at now? What has happened since then?
For a couple of months, I have been considering options, where I was down to two primary ones to choose from:
1. Electron - Effectively an embedded version of Chrome running as a standalone application. It's cross-platform, it's tried and true technology and it's a known development platform for me.
2. OpenJDK - The open-source version of Java. Again, tried and true, and I know the platform.
Here, I could have added a section as to why the current client platform isn't viable for the future, but I'll skip that for now unless people *really* want to know (in which case I'll write another blog entry specifically about those issues).
Either way, I was having a hard time making a decision between these two choices for some time, and was feeling pressured into making a call either way. Both were equivalent in terms of pros and cons and either would have been fine.
Until
Stowelly mentioned another platform that he might be interested in: Unity.
To me, that was a big "Uhm, well of course Unity. Why didn't I think of that?" moment. Unity is, for those who don't know, a super serious big commercial game engine. I'm sure that the majority of you have played many games built on Unity.
The core platform used for developing is C#, which is what I do for a living, so I have no trouble with the language itself. So I downloaded the editor and started playing around and I, together with some help from
Stowelly and
flashman1234, now have an embryo of a client that connects to games and shows some very basic information about what's happening.
There is very little useful stuff to show as of yet unfortunately, but my hope is to be at roughly the same stage of progress as the phaser project had by mid-january. My rough development path is the same this time around, where a spectate client is the first major milestone, followed by replaying and finally being able to play.
As for supported platforms, my absolute requirement is Windows, Mac and Linux. All three are supported by Unity, and we have tested the small amount of code that's in place on all three platforms. In addition to this, we are not ruling out mobile platforms at this stage, and the code currently is able to run at least on an iphone/ipad simulated environment. Mind you, mobile platforms are not the primary concern but it would be silly to not at least try to maintain compatibility just in case we end up wanting to push something like a spectate client for a tablet at some point.
For this project, I am again looking for assistant developers and possibly some people with artistic skills (graphic design, sound design, overall UX design) as well. The project is Open Source (under the MIT license) and is hosted on Github:
https://github.com/christerk/FFBUnity.
I'm sure some of you are interested in looking and following the project as it moves forward and I encourage as many of you as possible to do so. If you, however, are seriously interested in contributing I would recommend getting in touch with me so I can invite you to the development Discord channel (on the main FUMBBL Server) where all the people currently involved are present (Candlejack, flashman1234, Stowelly, SzieberthAdam and I).
It's early days for this project still, but I feel confident that this is the correct technical platform for a future FFBClient.