23
\$\begingroup\$

I am developing a game intended for desktop computers.

I am afraid of developing a game that will be too costly in aspects of performance, so I am wary of using a machine that might be better than the target devices.

However, I don't know yet what the target devices will look like when my game is finished in 5 years.

How do Indy developers choose a device for developing their game in order not to get carried away with its performance?

Just an example to make it more clear:

If a developer had access to a quantum computer, I guess they shouldn't use it. Else they would lose their ability to estimate the performance on the target devices.

Or is the "developer machine selection approach" not how it's done, and instead, there is simply a certain tri count limit for everything? (I remember that for RE4, there was simply a hard limit for tri count for meshes)

\$\endgroup\$
9
  • 1
    \$\begingroup\$ What platform? Web or desktop? \$\endgroup\$ May 22, 2021 at 12:25
  • 24
    \$\begingroup\$ Not really an answer, but personally I bought a very very cheap used PC (the absolute cheapest one I could find) and tried out my game code on it. I wouldn't develop on that computer, but I run prebuilt binaries on it. It's also great for avoiding "works on my machine". It's worth mentioning that I was not making Crysis and it was one of my goals to make something that ran well even on very old hardware. \$\endgroup\$
    – jrh
    May 22, 2021 at 21:57
  • 1
    \$\begingroup\$ @EnderShadow8 Desktop for a start. \$\endgroup\$
    – tmighty
    May 22, 2021 at 22:12
  • 3
    \$\begingroup\$ "access to a quantum computer" are we talking development or playing the game? Because how powerful your development machine is isn't the same as how power the gaming machines will be... \$\endgroup\$
    – WernerCD
    May 23, 2021 at 4:21
  • 1
    \$\begingroup\$ Assuming that game development lasts a few years, today's "good gaming machine" is going to be a worse "last generation" machine by the time the game is released. \$\endgroup\$
    – Peteris
    May 23, 2021 at 19:06

4 Answers 4

58
\$\begingroup\$

Intentionally doing everything on a weak PC when a stronger one is available to you is just masochism. Developers run lots of tools in parallel to the game which require resources, and also do various amounts of offline processing. Game engine editors, IDEs, compilers, graphic and modeling programs, audio processing etc. can take far more resources than the game itself. Even just 30 seconds of additional loading time each time you run the game can be a huge time waster when you do that a hundred times each day. So intentionally using suboptimal hardware is just hampering your work experience and productivity.

Nevertheless, continually testing the game on multiple configurations is part of the Quality Assurance (QA) process of every well-organized game project.

Larger studios can afford to have whole QA labs stacked with dozens of PCs in all imaginable configurations. They hire a couple highly paid QA engineers who create automated test suits, and an army of lowly paid QA testers to play the game manually. That QA department then tests the game over and over during development and reports any new performance or compatibility problems to the development team. When the developers can not reproduce the problems on their development machines, then they occasionally have to borrow one of those test machines to reproduce and fix the problem.

Smaller development teams or solo developer of course don't have the resources to afford such rigorous QA. Nevertheless, it can still be a good idea to have an older/weaker PC around to check from time to time if the game still runs on it. Even just having a single other PC available for testing can catch a lot of those "works on my machine" problems.

Also keep in mind that technology marches on while you are developing your game. When your game is planned for release in 5 years, then the high-end gaming PC you are sitting at right now will be an outdated model on release day. So developing your game for your current specs will give you a pretty wide audience in 5 years. That means if you are going to treat yourself with a new Intel Core i11-14900 with an RTX 5090 GPU in a couple years, don't eBay the old one right away.

\$\endgroup\$
6
  • 24
    \$\begingroup\$ It might also be worth drawing parallels from console development. There, we know exactly what system specs we're developing for. And yet console development kits are typically higher-spec than the consumer models - usually with significantly more memory for instance. That lets us run un-optimized debug builds on them, and have headroom for work in progress assets that still need trimming, or logging and debugging info. Then we can test the game in "retail emulation mode" or on separate test kits with exactly the consumer console specs to make sure it will run right for our players. \$\endgroup\$
    – DMGregory
    May 22, 2021 at 14:13
  • \$\begingroup\$ @Philipp This is not a fun question: What would you need an RTX 5090 GPU for? I can only imagine RealityCapture. Anything else? Oh, I forgot baking... I don't have experience with that yet. \$\endgroup\$
    – tmighty
    May 22, 2021 at 15:21
  • 9
    \$\begingroup\$ @tmighty People ask this question about hypothetical future graphics hardware since computer graphics exist. There will always be something you can not yet do in real-time on current GPUs, and GPU vendors will figure out a way to make it possible by cramming yet more logic gates into their chips. \$\endgroup\$
    – Philipp
    May 22, 2021 at 15:45
  • \$\begingroup\$ @tmighty It depends on the team member. The level designers and coders will most probably not need an RTX 5090 to do their job or even doing normal playtesting. However, your 3D artist and modeler can make great use of it. Once assets are optimized they should not need much resource to render and coders & level designers can often work with low res placeholders. But the person creating the assets and optimizing them will need more GPU resource \$\endgroup\$
    – slebetman
    May 24, 2021 at 8:38
  • 1
    \$\begingroup\$ @DMGregory reminds me of an absurd situation. A uni prof was astounded his program crashes on student PCs while working elsewhere. Turned out the uni cluster could afford the 60GB memory leak in his code. \$\endgroup\$
    – Vorac
    Jul 29, 2021 at 14:29
8
\$\begingroup\$

What you're trying to do is called "premature optimization" and it's considered a great evil (1st google link https://stackify.com/premature-optimization-evil/)

In short, performance optimization should only be done:

  • when it's factually measured to be a real problem (may never happen)
  • by measuring performance with dedicated tools and improving only what harms it (usually a very localised part of your code and not the one you would have expected)

You're putting your project in danger at the moment. Instead, you should focus on a MVP and get market feedback as soon as possible (in ~3 month, not 5 years)

Also if your game really takes 5 years to be developed, the machines in 5 years will be much more powerful or maybe a different form factor or architecture.

Not your question but: "indie game 5 years of development" is a red flag. I'd recommend reading https://gamesfromwithin.com/sometimes-you-have-to-let-go Also remember that creating = 50% building 50% marketing.

\$\endgroup\$
6
  • 2
    \$\begingroup\$ "Instead, you should focus on a MVP and get market feedback as soon as possible (in ~3 month, not 5 years)" Yup. Release it as an Early Access game on Steam. \$\endgroup\$
    – nick012000
    May 24, 2021 at 1:40
  • 16
    \$\begingroup\$ Disagree with this. It's not a premature optimisation, it's developing for your target hardware. You can't develop for your target hardware if you don't know what it is, which is the crux of the question. This kind of "worry about performance later" style of development leaves you with a whole mess of problems when you're coming to release. \$\endgroup\$
    – Yann
    May 24, 2021 at 9:55
  • 1
    \$\begingroup\$ @Yann: Target hardware can be either discrete (PS4/PS5) or continuous (PC's). This question is specifically about desktop PC's, so you don't need to make a hard decision up front. There will always be a percentage of PC's that are just too slow, and there will be someone who is still running Windows XP. \$\endgroup\$
    – MSalters
    May 25, 2021 at 13:44
  • 1
    \$\begingroup\$ @Yann: What I mean is that you don't start developing for PC's with a hardcoded assumption that you will or will not rely on e.g. AVX, when the release is still 5 years out. Optimizing now for AVX or SSE4 definitely is premature optimization. It's not just AVX, there are a dozen similar factors. Even plain old RAM is such a factor. \$\endgroup\$
    – MSalters
    May 25, 2021 at 15:14
  • 1
    \$\begingroup\$ I totally agree with red flag though. Planning indie for 5 years and for state of the art graphics sounds like a recicpe for desaster. \$\endgroup\$
    – Kami Kaze
    May 25, 2021 at 16:22
5
\$\begingroup\$

As an indy developer, I use whatever I have available. In my case, the desktop machine is a couple years old, so I'm not much afraid I'll overwhelm my players.

There are two easy things you can do:

  1. Use an engine that allows you easy access to quality settings so that players can change them to match their device.
  2. Use a few different machines (friends, etc.) for testing - not for development, but from time to time run the game on those machines to check if it runs smoothly.

Don't overdo it, though and don't wreck your brain too much - see the other comment about premature optimisation.

\$\endgroup\$
2
\$\begingroup\$

The following answer talks in general terms. It is definitely possible to purposely make a game that uses 100% of available resources, but in general terms, you shouldn't worry about it.

Modern computers are ridiculously powerful. Unless your game is doing very specialized computations that you know will use all available resources, I think that as an indie developer you are very unlikely to even come close to the limits of modern computers.

The main bottleneck for game development pipelines today is content. Modern GPUs can draw millions upon millions of triangles per second. To get close to the hardware limitations, you need very high definition 3D models that are very expensive to create. We're talking about tens of millions of dollars of budget to make a game with consistently high quality art assets to naturally reach the limits of modern hardware.

On the other hand, a powerful computer lets you do many things at the same time: coding, debugging, graphics editing, audio editing, project management, and so on. Not using a powerful machine for game making is setting up yourself for a world of pain.

\$\endgroup\$
7
  • \$\begingroup\$ "It is definitely possible to purposely make a game that uses 100% of available resources" It's very hard, if not impossible, to use 100% of all resources (all cpu cores at max, fill whole memory, max gpu load and max gpu mem). Not 100% of all resources, but there are types of games / tech which can easily bring a hi-end modern machine to its knees, e.g. implementing naively (= not on purpose) a voxel terrain (from millions to tens of millions of cube objects for a terrain alone). If you do no optimizations to your voxel "engine", you are most likely doomed to fail. \$\endgroup\$
    – menfon
    May 24, 2021 at 14:31
  • \$\begingroup\$ @menfon: did I mention that I was talking in general terms? Voxel based games are one of many types of games. \$\endgroup\$ May 24, 2021 at 14:40
  • \$\begingroup\$ Particle effects can hit the triangles limit very quickly, if you accidentally trigger a trillion per frame. \$\endgroup\$
    – wizzwizz4
    May 24, 2021 at 19:40
  • \$\begingroup\$ It's actually very easy to bring any halfway modern machine to a crawl when you're using any of the common 3D engines and put in a bunch of badly optimized assets. Suddenly you're pushing a shitload of polygons, or throwing shadows everywere, or trying out 500 point lights without deferred rendering or something. \$\endgroup\$
    – Tom
    May 25, 2021 at 12:38
  • \$\begingroup\$ @Tom: why go through the trouble? Just make one thread per CPU core, set the priority to real time, and run infinite loops. I'm talking about reaching the limits while making a game seriously. \$\endgroup\$ May 25, 2021 at 14:23

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .