In the last couple of weeks, I have been working on a little proof of concept code that I've been thinking about for some time. Over the weekend, this small endeavor got to a point where there is a tiny kernel of functionality so in light of this I wanted to share this with you. Let's start with a screenshot (which you undoubtedly looked at the instant you loaded the page):
Obviously, this looks very similar to the FFB client, except it's running in the context of the web browser instead of in a separate Java application.
Before you guys get too excited about this, I have to stress that this is *very* early in the development process. It is able to connect to a game, and the players do move around, but that's almost all it does. So what's the plan?
First off, the idea is to make it able to spectate games (which it sort of does now, but obviously it needs to support more things; dice rolls for one..). This will allow me to implement the network communication stack, the underlying data model and come up with a workable user interface (UI) and user experience (UX; how the user interface works) without having to replicate the rules of the game into the client. Long-term, I want to move this client forward to do replays and then finally being able to actually play the game.
Why am I doing this?
A few reasons. The primary reason is that I want to do it. It's a lot of fun to work on something like this, and I get to play with new technologies and work on new architectures, doing things I'm not super familiar with. There's a lot of learning to be done for me, which I truly enjoy.
Another reason is that I have for a very long time been relatively unhappy with how small the current client looks on modern displays. Similarly, the current client is not very friendly for streaming (which is often done in 760p and/or 1080p), which is a problem all on its own.
The current client also requires something called a code signing, which is a frustratingly annoying process (and costs a fair bit of money). Having it in HTML5 will avoid that problem and remove the need for this.
When will it be done?
Good question. I am hoping to be able to have a first alpha version that is able to spectate matches relatively quickly, hopefully by the end of July. It may not support all events in the game, but it should at least handle the core parts of the game. There's a long road to get to that point, including a bunch of architectural work. The latter is critically important but unfortunately takes a fair bit of time and also doesn't produce any visible results.
Also, because this project is pretty large as a whole, I am willing to take on a few assistant developers if there are people out there who are interested in a project like this. The code is currently hosted on a private repository on Github, with a small group of people able to see it. If you are honestly willing to help out with the project, and have time to do so, feel free to send me a private message and we can talk. For reference, this code is written in TypeScript and uses Phaser3 for rendering. If you're only interested at looking at the code because it's fun, please wait until it's fully open sourced. For now I only want to talk to people who are genuinely interested and capable to contribute to the project.
What's the plan going forward?
My plan is to dedicate a lot of time during my vacation from work to this (which effectively means July). If there is interest, I may do a few developer streams for this on the Youtube channel
I'm quite interested to hear what you all think of this project. Even with the small amount of code that's in place right now, it's very exciting to see a web application talking to the FFB server and see the players move around the pitch.