The balance between quality and accessibility.

So, I was wondering what your guy’s opinion is on how much you should worry about what computer can run your games? The reason I bring this up, my current project runs like a champ at 60 FPS solid. The only time I can get it to dip is if I plaster about 30,000 particles on the screen. That’s totally insane, considering I doubt there will ever be more than a few thousand on the screen at once. But, it runs like a champ on my desktop gaming PC. My Desktop has 16gb of Ram, a SandyBridge i7 and a GTX580.

Loading the game on my laptop is a different story, it runs at a somewhat staggered 58-60FPS (still butter smooth really, but it can tell by watching the FPS meter it isn’t a “solid” frame rate anymore) and it can only handle about 3000-4000 particles before it drops to about 20-30 FPS. Once you hit about 10k particles it becomes unplayable.

But here’s the catch, my laptop is an UltraBook. (this one specifically) It’s not designed to play games, it’s designed to be a super mobile laptop that still has enough power to do day to day tasks. It also had an i7 (Mobile version of the SandyBridge), 6gb (not 16gb) of Ram and the wonderfully blazing fast (note: Sarcasm! :P) IntelHD graphics that comes with almost all business PCs. So when it comes to gaming, it’s worthless.

The laptop can run a few games though, like Towns, Diablo (the first one), Red Alert 2, Starcraft 1, most any old Dos-era game. It can even run a few semi-modern games like Hotline Miami. But generally speaking it is not designed for gaming and it sucks at it.

Should I give a damn my game doesn’t run well on lower end laptops/PCs? I imagine any computer with a “real” GPU of any kind from the past 6 or 7 years should be able to run my game, but my game is finally hitting the level where those business-class machines soon won’t be able to play it anymore. This is a bit sad, because I wanted the game to be “hypermobile” in the sense you can put it on anything from a gaming machine down to that old POS donated desktop at the local middle school and the game would still run well enough to play. But if it can’t run on my laptop, a somewhat new (1 1/2 years old) business-class laptop, that means those really low end machines are probably going to have the same issues.

So, my long-winded question is this: Should I care? It’s not like I’m not trying to optimize code, don’t get me wrong. But the game’s engine/graphics is simply just becoming too complicated for those budget machines. I’m just curious if I should drop the idea of making it run on “almost anything” and focus on making it run on low-mid and higher machines that actually have at least a budget GPU in them.

Probably best to aim for average PC’s from at least 2-3 years ago unless the graphics quality is an important part of your game.

Ah good god, accidentally closed the tab after typing rather large, intricate reply. :emo:

Basically: Proper optimization: find the bottleneck, and optimize against it.

In this case the bottleneck is pretty much going to be either: the CPU, the GPU, or the memory.

Profile. If you get low frame rates and the CPU is maxed out (note that could mean 25% on a quad core if you only use 1 thread), then there’s your problem.
If not, and memory usage is fine, then it’s likely the GPU, so review how you’re doing things there.

Also determine if an optimization is feasible. If it’s CPU-bound on an i7 (assuming you can’t thread it, or it’s already threaded), then have fun making it run on crappy machines, although you might just be doing something horrendously wrong. Again, feasibility.

oh of course, I plan to do as much optimizing as possible. I’m pretty sure right now my bottleneck is CPU usage. But considering I still have to write in a whole slew of other systems, based on where I am at now I’m sure by the time I’m done this game probably won’t run on clunky old machines.

I still plan to utilize your suggestion on my blood particles, but oddly enough the current HashSet system doesn’t seem to be an issue. The framerate drop with the 30-40k particles doesn’t really happen until the particles are all sitting on the ground (and the HashSet isn’t even being accessed because no new particles are landing on them). So really it’s just a rendering issue tracking all those particles. But I have plans to improve rendering even further, I just haven’t gotten around to it.

I was just curious if you guys would bother making your games run on dated machines, or just focus on budget gaming rigs and up? I can’t imagine any non-gamer types wanting to play a “Retro” game anyway. So, I would assume 95% of my target audience will have at least an obsolete half-decent nVidia or ATI card. :smiley:

I am guessing you are using java2d or some non-batching opengl rendering? I ask this as my first gen i5 with integrated graphics can quite easily do 50k sprites/particles. The bottle neck becomes fillrate which is a GPU limitation.

I would say that you should not target the average gamer’ish desktop in the last 3-5 years as you are not going to make a game that visual can target that range. With the level of visual fidelity we can reasonably produce as indie game devs, most of our games should run on phones/tablets.

I say that you should make it run an on many computers as you can. I try and make sure everything can run at a steady 30-60 fps on my laptop. This is because my laptop is a POS. So if they can run on it, they can run on just about anything.

Final note. Profile profile profile.

Related to what Stumpy said, I wrote a game (not worth posting really) a couple years ago while stranded in a cabin in the mountains on my 2009 budget craptop. (family “vacation” you see)
The whole thing pretty much froze whenever a particle burst happened (often, considering the arcade-y feel I had going), but ran pretty smooth when I started pooling the particle objects. I had determined that the object allocation rate was overwhelming the GC on my single-core comp, and was apparently correct. Ran at a nice 60hz on anything that has a JVM implementation and a display, even given that it was 3D-rendered-with-Java2D. (something like 3% cpu usage on my desktop) So having a really crappy dev (or at least test) machine does have that benefit, although it’s really annoying the rest of the time.

Send me a PM if you want a performance test on truly crappy hardware, although I can’t guarantee it will even run :stuck_out_tongue: :point:

[quote]i7 , 6gb of Ram, IntelHD graphics. So when it comes to gaming, it’s worthless.
[/quote]
Huh ?
My dekstop PC has only 4gb RAM and something AMD akin to an i7. Why would RAM even matter, your games need like 5 GB of RAM ? :smiley:
Yeah the video card sucks kinda, but like the Intel HD Graphics 4600 plays battlefield 4 on low settings so I dunno what you’re talking about.

And these are AAA games. If your game uses too much power, I would look into making it faster, yeah…

Ask yourself what audience you are developing for. Without answering that question any kind of optimization is premature.

Is your intended audience a select group of fanatical gamers who have expensive and up-to-date gaming rigs? Go for quality.
Or perhaps you’d like as many people as possible to play your game? Go for acccessibility.

A great source of somewhat reliable data (in case you want to seriously figure this out) is the Steam Hardware Survey:
http://store.steampowered.com/hwsurvey/

You can use this to figure out (with quite some work) what hardware requirements will cover most of the market.

We’re aiming directly at the Steam audience. I develop on a 5 year old rig with Win 7 64-bit, a 2.6GHz quad-core i7, and an Nvidia GTX280. It’s still a pretty hot system by Steam hardware survey standards, even though it’s 5 years old, but then it did cost me £1000. I’m aiming to get Battledroid to run at a solid 60Hz with a large surplus of units in a vague attempt to simulate having a lower end system but of course the proof of the pudding is in the tasting and all that, and I’m going to need some crappier systems to test it on really. Intel systems in particular are a problem, seeing as the drivers don’t support an extension we’ve based the engine around :slight_smile: Which is annoying.

Cas :slight_smile:

Having a slow computer is a good way to test for potential performance issues.

Its too easy to overdo resource demanding procedures and graphics if you
develop on a high end system (ending up to run sloppy on an avarage system),
So regularily checking your project on a slow system can show you what to be cautious of.

I always aim for the lowest end computer I can get my hands on… so accessibility.

The problem is that, as indie developers, unless you are developing for some company getting people to just “play” your games is the hardest parts. The more that you can do to make sure you get eyes looking at it and playing the game, the better. It makes sense, at least in the early days, to make sure people can play the game you are developing without much issues or cruddy frame-rates.

There are workarounds for such problems like actually making it possible to select graphic settings. You can achieve the best of both worlds that way by making sure that regardless, people will be able to play your game. The other thing you can do is release a prototype version of a game, so that people might be tempted to see what the bigger version is like down the line.

I dunno, but visibility in indie gaming is very very important, especially in PC. Who knows the amount of people who scour these forums and do not have great PC’s to run games on. All those are potential fans that can add up to fame in the future. Having less people look at your game is the same like shooting yourself in the foot in most cases.

It is just an opinion though. Really good graphics are very good for attracting attention certainly. However, I just love games that can display a consistent theme. I appreciate worlds in where all the piece of that world look like they belong in the world. As long as a game accomplishes that, aiming for graphics is just developer vanity…

I program on a 4gb mac mini with I’m pretty sure only an intel i5 processor and I don’t even know what graphics card I have. I figure if it can smoothly run on my mac it can work just about everywhere. So, maybe, if you have multiple computers, develop on your average computer. (As long as it’s not unbearably slow that is)

My projects use to take a while being developed, so the hardware I start with is usually old when the project is done. At time my own hardware has been older than 5 years, so I figured if it runs on my old can, it will run on enough other hardware as well.

Currently I’m in the rare situation to have a somewhat up to date computer (i7, 8gb ram, no idea graphics), so I use my laptop at work as a testbed at times. It’s much slower.