31 May 2012 by Nightwrath
This article represents a personal opinion after reading the previous 2 posts made by Felix (see A different kind of optimization and More about resource usage): and I originally wanted to post a small comment, but as I wrote it, I realized it would become too big for just a comment.
I think that first of all we should be aware of a basic fact which we tend to forget many times while arguing about games/engines: the fact that video games are a luxury, not a necessity.
As a user you do NOT actually NEED to play a game, it’s a leisure activity, after all. It’s something you do instead of… watching TV for example, because others may enjoy reading etc. Therefore the fact that a specific game does run in IE 9 and does not in IE 8 may not seem so stressful – after all, it’s not like lives depend upon it, it’s not the software for an airplane.
The best analogy that comes to my mind is the big slot machines from 70s where you inserted a coin and played a game (before home computing), and I don’t think that the first pong could have been played anywhere else since it was “programmed” upon hardware. The fact is… no one really cared. It was a game after all (you could live on without trying pong anyway). And that is leisure. A luxury, after all (cause you can get cheaper leisure, without the need to insert money into a machine).
The thing about luxury is that you know what you spend your money on. For example a friend of mine spent 1000 euros on a top gaming machine – that means his actual intention was to actually play certain “demanding” games on it. He will surely get mad if he cannot play Crysis 2 on his computer (he paid big bucks for this).
However, when it comes to actual “needs”, well… I still know of at least one corporation which keeps a certain business application from the 80’s and several ancient systems where there are legacy applications that still do their job. So, when you have to make an update there… you go back in time, literally. 🙂
THAT is an area where if something which works on a version of browser does not work in another… the problem may become serious.
Now, about the OpenGL vs “real” 2d part: the fact that a 2d game requires a 3d library in order to function may seem like a stretch, and maybe back in 1999 it would have been a huge one. Not so much… today. Almost any computer that was made in the last 7 years has a crappy GPU that supports one way or another at least some basic 3d functionality. I am not talking about bloom or anything fancy, but displaying vertices, texturing and lights. Most of the integrated Intel stuff has this.
So, the fact that a laptop from 2005 does not support 3d features is not exactly a tragedy, it’s more likely a system that was never designed beyond its scope. And that system was not designed for gaming. However, many games did work on it – very nice thing. Even some primitive 3d ones – even better. However, it is rather stretching to try and run a flashy game developed TODAY (2012) on a system that back in 2005 was not thought for such a purpose – gaming.
Let’s make an analogy – it’s 1999 and you have a computer from… 1992. All of a sudden there is this very cool game everyone is talking about called… Baldur’s Gate. But, oops my computer cannot run it, even though I pretty much play Dune 2 on it on regular basis. The point is… things do move on. Just like life. Some things need to remain the same (business things, critical applications), others will be played perhaps someday in emulators built by enthusiasts.
From the gaming industry point of view (and I am looking at Blizzard, since they are champions of PC gaming) the cycle of “life” for compatibility when it comes to computers is for about 5 years (example: you could play World of Warcraft back in 2005 with a top machine from 2001). From an indie dev point of view… depending on the artistic/assets value you may extend this cycle up to any point (you can go back to ASCII, I guess). From a hobby-ist point of view… you usually target whatever machine you got at home / or work 🙂
The fact that after so many decades we do not have another universally accepted “visual” standard besides OpenGL should not be that depressing, because after all even today you can play Quake, a game that was made 16 years ago (mind blowing, if you come to think about it). In my humble opinion any technology that resists even after a decade – it represents a proven case of solid and reliable option. And 15 years is a very long time – for technology that is almost an eternity, time enough for about ANY computer to support it. So, from this point of view I don’ see a major problem that all new 2d games require OpenGL in 2012 (we are not in 2001 anymore, by the way).
The argument against OpenGL and the fact that so many 2d games preceding let’s say 2004 are working without any 3d acceleration. That much is true, however some historical and practical reasons must come forward when we talk about “classics”. An example: Baldur’s Gate was originally working in 640×480 resolution, which even in 1999 was becoming obsolete. Now, think about today’s visual standards when it comes to 2d, and not only. Baldur’s Gate 2 ALREADY had an option to enable OpenGL effects back in 2000 (a time when many people has 1996-98 tech). So, OpenGL is NOT the enemy here.
Beyond the memory/processing problem of modern 2d, the real problem that I see here is the one regarding development tools. Those are not easy to come by, well, unless you make some cheap Final Fantasy 3 clone (I am not talking about the browser here, I know that Flash for example is a different beast).
We talked here about the Baldur’s Gate series, so let’s use Infinity Engine as an example. The problem with that engine is that its tools are… sucky at best, a development nightmare. The engine was not a piece of jewelry in itself, but the games built upon it, which were actually a collection of scripts and brilliant artwork. However, the scrips themselves were… a nightmare-ish process, and one of the main reasons that the Enhanced Edition team does not wish to change anything when it comes to the actual game flow – rules, battles etc
The Artwork from Baldur’s Gate / Icewind Dale has become stuff of legend, a beacon of quality for 2d, and yet… it’s hard to replicate. Apparently Bioware/Black Isle used somewhat to… 20 or so different programs for making the game, and had a very sluggish process for development. Many of the indie devs today do not have that kind of man power nor money to replicate such methods. They must rely on whatever tools they find or make themselves. However, if you want to deliver a game in the next few years you’d better use at least 2-3 tools ALREADY made by others, otherwise you’ll never make it. Or, you’ll never get beyond a pong clone.
Of course, you can always make a game that resembles Final Fantasy 3, after all a pretty fine game for its time – IF and only IF you are OK with the fact that your tech and/or art is stuck back in the early 90’s. But how about late 90’s? Or early 21st century? Everyone of these “steps” means more resources and effort into something that apparently should be effortless – a 2d game. Some problems that were not that apparent in 320x… like resolution appear to be huge “elephants” in 1920x… resolutions, fonts, sprites scaling, animation etc
Making a game is not an easy task, that much has been said. However, to “fight” the development tools make things even harder. So, when the “modern” tools for 2d make life easier the programmers, who are embracing them quite quickly, and deservedly so. And many of the new tools are using opengl under the hood. Using opengl become a necessity when development times for the actual tools decreased considerably, and the updates came quicker, and worked almost identical on most configurations.
The “resources” part comes to bite our “collective” asses in certain situations, though. Let’s say I bought a gaming system 2 years ago. It was not top notch, but still very decent. Heck, most of today’s most demanding games are working decently on it. However, at some point some title comes up and it’s running… awful. On a gaming system, not a business system, and maybe not even on average/low details. Now, here we have a major problem.
The analogy is that you get a gaming console and the game designed for it that you wish to play does not… play. In part or at all.
Here is where the development teams for major video cards and developers from AAA titles are starting to slap each other for that weird video function that nobody cares about, but which is heavily marketed and does not work correctly (if at all) on different configurations. I don’t see a problem here if we are talking about Crysis 3 or some title that wants to push the hardware further. However, things like this have become more common on “middle range” titles, and that is starting to alarm me. Some titles are not working on systems using ATI cards and so on. Now, THAT is a big problem.
Here I see most of the problems arising and they all happen because of the… tools/engines and rushed development times. Also, on PC, many devs seem not to care anymore about any restriction, as if there is no limit to hardware performance. The result – sluggish performance, even on new systems. And looking at the way the market is looking right now, things don’t seem to get better (many titles do not sell well enough for the company to survive etc).
As an example of bad or no optimization – Everquest 2 still struggles on many recent hardware configurations, even if the game appeared in 2004, before World of Warcraft.
I did leave out of our discussion the browser situation, because I personally do not see the browser as a gaming medium. I don’t say it isn’t – many games are using it, and Runescape proved you can have millions without any trouble. However, the browser is not primarily designed for games, and yet it has become one of the most used mediums for PC gaming, especially for casual gaming (at this point probably there are more people playing Farmville than there are those playing Solitaire). This situation may seem like a paradox.
There is a common point when it comes to browser games – the word “casual” pops up almost every time. So, the gamer who plays something in the browser is not necessarily someone who will buy a video card DX 11 compliant. He will play his Farmville from a netbook, if that is possible. I guess here the browsers version battle is stronger, because the browser itself can be seen as a “machine”. The casual player will not buy a new video card or increase the memory in order to play your game. Heck, they will not even upgrade their browser version unless it is done automatically. This is the case where the developer must “downgrade” in order to reach his customer (if that is what he is looking for in this market).
If this were to happen only in browser gaming maybe things would not be that sad. Unfortunately, I recently saw a little visual demonstration for some GUI library that had to use WebGL. Unfortunately, those components that wanted to use specific functions were not supported. So, the demonstration could not happen properly.
So, in a way I understand Felix’s pain when it comes to browsers, because his hobby is to build casual games and this is the perfect medium for him. I disagree when it comes to the classical 2d game specific to the desktop, because in this age the “2d vs 3d” discussion should not be about the technical aspect, but about the artistic choice. Of course, that does not mean I agree for a developer to start and use Unreal Engine 3 in order to build a pong clone (unless they just experiment with it).