29 votes, rating 6
Recently, there has been a bit of rumbling on the forums regarding SVG icons and a scalable client. In order to not have to respond to the same questions over and over again in forum threads and on Discord, I figured I'd write something in a blog instead. This is the first blog in what is inevitably going to be a series due to the immense scale of it all (pun intended).
Let's start at the beginning. Back when FFB was introduced on the site, the client was designed to run on modest hardware, and modest screen resolutions. Modest in this context is 1024x768, which even back then was relatively old but there were certainly people who still used it. Personally, I was running on a 2560x1440 display and the client was painfully small on that screen. Even then, I was speaking to Kalimar about the possibility of supporting a scaled client but that was something he wasn't prepared to put in the time to get done. It's a big undertaking for sure.
Roll forward to today, and we're still running on the same 1024x768 optimized client even though times have moved further on and despite the relatively modest hardware people on this site uses, 1920x1080 is the most common resolution, followed by 1366x768. These are both wide-screen (16:9 aspect ratio), which by far dominates current computer setups. Some people have high-resolution screens, again the 2560x1440 or even 4k (3840x2160). On these types of panels, the current client is really really small and it's really difficult to tell the current icons apart on them.
On top of this very different landscape of resolutions we have today, a number of people want to be streaming their gaming session. Unfortunately, the client we use here simply doesn't allow streaming to be done very well. It's awkward to broadcast, and rescaling it in video software makes it look blurry. This means people simply don't stream FUMBBL games, which is a huge shame considering the potential it has for bringing in more people and allowing us who frequent the site to watch other people play with a running commentary at the same time.
Now that Kalimar has more or less stepped away from development on the client, and I am the person who is in charge of the code and future developments, this is something I want to change. I want the client to run on modern displays, I want those of us who have high-resolution screens to be able to scale it without resorting to poor workarounds and I want people to be able to stream FUMBBL games.
I've known fully well that pushing a project like this will involve hundreds if not thousands of hours of work, not only for me but for graphic artists who contribute art. I also know that there will be a fair amount of resistance towards this because in the end, it's a completely new identity for the game we all have played for over 16 years (!). The current system is comfortable for us old-timers, but the reality is that we have to modernise. While we aren't going to ever become a triple A game title in terms of graphical quality, I think it's certainly time for us to move forward to something more modern.
This underlying premise is crucial to understand, and I'm pretty sure that some of you won't agree with it. That's fine, everyone is allowed their own opinion. In my mind, though, this is not negotiable and I will do whatever I can to push through with this one way or another.
Something that is also important to understand is that we are very early in this process. While Garion and Subs have put in a fair amount of time to produce initial concept art, this is not written in stone by any means and we are actively welcoming more artists to join in and come up with concept pieces for evaluation.
But before we get into that, let's back up a bit and talk about what a scalable client means.
The primary piece of the game client is the field, and that is absolutely the core of the problem, and what needs to be resized. As it stands now, the field is setup up as the 26x15 squares we all know with 30 pixels per square (plus 2 additional pixels in both directions, but let's ignore that for now).
Living within these 30x30 pixels of a square are all of our little virtual friends and enemies. Once a decision has been made to rescale the field, the icons pretty much need to follow. At the 1024x768 resolution we run now, 30 pixel squares are pretty much optimal. It's very hard to scale this up in any significant way. Once we accept a wide-screen aspect ratio, though, going up to 35x35 is absolutely doable without completely redesigning the client.
As an aside, I am more or less requiring that the whole field is visible at the same time and that we don't want to be scrolling back and forth on the field. This is both quite good in terms of overview of the field, but also technically simpler. At this stage, I am not going to entertain any ideas that involve scrolling the field.
Anyway, pushing forward to the most common resolution, we're looking at maybe 50x50 pixel squares, a full 67% increase in both directions (or a 178% increase in area per square, depending on how much of a marketing person you are).
In between, there are a number of variations that could be done. It would, in theory, be possible to set up a vertical field with 35 pixel squares on a 1920x1080 display (which is not going to be the first thing I spend time on for sure, but it could be something for the future).
At 4k display resolutions, you're looking at something on the order of 100-110 pixel squares, which are simply massive. Obviously, few people run FUMBBL on that kind of display but it's still a consideration for me.
In a sense, my primary goal is to change the way the current client optimises for 1024x768 and leaves higher resolutions in a compromised state into the reverse. I want 1920x1080 to be the primary resolution at a slight cost for those who run displays at 1024x768. The most typical laptop resolution of 1366x768 is still an important one for me and will not be neglected.
With these varying field square sizes, the icons have to follow. There would be very little point of scaling the field if all that did was to make the icons look tiny.
And at this point, I'm going to cut this blog short. The purpose of this part is to establish my thinking about the need for a scalable client and the way that leads to requiring icons to scale with it. In my next blog, I will go more into the problem of scaling icons and pixel art in general.
Thanks for reading!
PS. Please try to not post comments that go beyond this specific initial part. There will be plenty of time to talk about icon scaling algorithms and chibi-style bobbleheads further on in this blog series :)