What would be an ideal poly count for a mobile racing game?

Is ~50k polys / car much?
I’m making a stage rally game. There is one car on the course. The trees would be billboard or really low poly, around 1-2k/tree. There won’t be a lot of additional meshes except the road,which should be fairly detailed(bumpy) and some cliffs. Grass will be minimal and billboard.

So the question is could I make the cars around 40-50k? I could use some more polys on the cars, and especially on the rims. The cars are around 30k each with a minimal interior. They are not bad looking, but they could be a lot prettier.

For comparison RR3 and Asphalt 3 have around ~25k polys. I downloaded some riped models from CSR Classics, RR3 and Asphalt and all of them had around 25k polys , but those games have another 6-10 AI cars on the racetrack…
50k would be like something Turn 10 used in Forza games, those cars had, 50-60k polys for LOD 0 and LOD 1 is around 30k I think, so close to the mobile models. What do you think?

1 Like

Budgets are always related to the hardware you are targeting. You need to measure various setups on different hardware to understand how to optimize your content for a particular device and how far your can push that.

Unite Europe 2017 - Performance optimization for beginners

Unite 2016 - Let’s Talk (Content) Optimization

3 Likes

It’s based on the hardware you are targeting, and what is important to your game. Also poly counts aren’t everything. Lowering the polycount won’t help if your issues are related to overdraw, draw calls or fillrate.

3 Likes

As others mentioned there are many factors that will affect the final frame rate of your game. You stated this was a mobile project and I can give some insights from my own professional experience in regards to mobile development. Shader complexity can have a big impact, so find a good mobile optimized shader that gives some faked reflectivity, a bit of fresnel effect and keeps it basic. Transparency objects overlapping is going to be a huge frame rate killer, so keep an eye on that. Lots of tree billboards overlapping and covering a large area of screen will kill the fps. A pro-tip…using projectors for shadows will cause a framerate drop. I would recommend using a quad with a shadow texture map underneath the car. I’ve gained 10-15 FPS in racing games just by removing the shadow projector. Test it out on an Android or iOS device and you’ll see what I’m describing. Also keep an eye on your UI in regards to the canvas. Don’t put all of the UI under one canvas, use multiple canvases that would hold UI elements that are constantly changing, i.e. MPH or race position. As for polygon counts, well that will be dependent on some other factors. Are you using exterior only models or are you including interiors. If it’s exterior only camera view I might recommend the range of 15k - 25k for your highest detail LODs and then halve the polygon counts for each lower LOD, up to (3 or 4) LODs. You will only need to LOD the AI vehicles as the player vehicle will never move too far from your player’s camera. Your player’s car is the hero asset they will spend the most time looking at. Make sure to spend polygons in the sides and rear of the car, and less detail in the front area. Your hero vehicle should be around 20K polygons give or take some variance.

Again it depends on how many other AI vehicles there are on screen at any given time. It also depends on your environment artwork and how well it’s laid out for culling. Culling smartly will be a huge boost to performance. By “smartly” I mean creating environments (tracks) with culling always in mind. Ask yourself how you can hide certain parts of the track using turns, using tree walls, using buildings or structures, etc. Use texture atlases for everything in the world. More textures means more materials and more draw calls. Combine sections of the track in groups so that they batch these draw calls. Make sure when you are combining these groups that you are also still thinking about culling. You will need to cull those groups when not in view and enable them when they come into view. Use LOD Groups for high detailed objects in the environment like buildings, etc. You can have these things swap out to be little more than textured cubes at a far distance. The same goes for the AI vehicles. In the Need for Speed games I’ve worked on, the AI were literally cubes when seen on the horizon. No one could tell the difference when the AI vehicle was displaying on screen at 2 pixels tall. To go back and reiterate, remember that transparency and fill rate are going to be the two things that will really bog down that frame rate…more than polygon counts.

Some excellent tips in checklist form:
https://docs.unity3d.com/Manual/OptimizingGraphicsPerformance.html

12 Likes

For a frame of reference, later ps360 generation of game had 50 000 poly per characters. Previous generation was 8000-10000

1 Like

that is still heavily depends on the game, is it third person, first person. do you see characters close up in gameplay or cinematics, is there something else more important to spend the budget on. Is there going to be a lot of characters on screen at once, or just a few?

JamesArndt is 100% right.

At the end the number of possible vertices actually depends on the average load per pixel on the screen. If the math per pixel is too high a simple plane which fills 25% of the screen can hit your fps harder than an object made of a million polygons.

3 Likes

You should consider thinking not about poly count but vertices count.
Vertex count is the important one - polygons are “just” filling the gaps :slight_smile:

Also, how many materials are in your scene? → can you take advantage of “a lot” dynamic batching?
The vertex count is multiplied with vertex attributes used; google that so you get a better understand of what happens “under the hood” (vertice attributes= position, normal, tangent, color etc…)
The shader(s) used are playing an important (!) role…

I am about to finish my mobile racing game which I developed over the last 1.5 years and here is my advice:
Create one generic Test Car, make it low poly, make it use one or just a few materials and build your car physics around it, develop and add AI and of course your scenery. Just make sure that in the beginning graphics are NOT your game’s bottleneck. Adding more and more polygons/vertices for testing purposes is easy - just import a high poly sphere or something simple like that.

When you work on the game you’ll notice that the cars poly /vertex counts are by far not the only important but you have to balance everything (code, physics, graphics…) and make it run smoothly on the lowest-end device you are targeting.

Also, keep in mind that the developers of games such as CSR or RR are optimizing their games to the Max!
And CSR and RR look phenomenal - especially on tiny mobile screens :slight_smile: - In your other thread you mentioned that you can model and set up a car in minimal time. Advice: Add less polygons, add more quality → better looking art

1 Like

Yep brought this outstanding talk to mind. They discuss all of their tricks for outstanding quality while balancing performance. These are the CSR Racing developers by the way.

https://www.youtube.com/watch?v=oatF8e_PPh0

3 Likes

Asking a question about polygon count limits is like asking how many times do we want to be drawing over a pixel on our mobile device screens. I tend to think in terms of fragments, but a lot of developers might not know what that even means.

What does that mean?

1 Like

A fragment can be thought of as the data needed to shade a pixel, plus the data needed to test whether the fragment survives to become a pixel (depth, alpha, stencil, scissor, window ID, etc.)

2 Likes

OP, you wanted a starting point:

Yes.

when modeling your cars, I would suggest to target for a number of 15k to 25k polygons (triangles!!).
You wouldn’t notice a difference between a 25k model and a 50k model anyway, if it’s a) well made and b) displayed on a (tiny) mobile device.

To push you further into the right direction: Have a look at your target devices. Are you targeting iOS only? As an example, for iOS you could only target iOS 10+, which leaves the iPhone5 as the slowest possible device on your list you have to optimize for.
Get an iPhone5, setup a test scene and make it run smoothly. Keep in mind that graphics aren’t the only thing that needs to be computed

Thanks, I don’t really know much about optimization yet, because I only got into developing games around a 3 or 4 months ago. I thought that a higher car polycount would be OK since there would be no AI cars, only the player. I knew it’s more to it then just the polycount, but I thought that it makes a bigger performance impact on mobile then on PC or consoles where you have more “power”

I see your point. When I asked this question I was thinking about tablets. As I said the cars look good, but in some parts they could use some more polygons. Oh, almost forgot they are ~ 20-30 triangles not quads :smile: I’m not that noob to mix them up XD

No, not iOS. I don’t own any of those expensive bricks and I don’t intend to. :slight_smile:
I have 2 512Mb RAM Android phones plus my current Y5ii so I don’t think optimization will be a problem. If I can run the game on one of those 2 it should run on anything. XD

1 Like

I made EXTREMLY low ploly but still realisitc rally cars (5’000 vertecies), search wrc in the asset store :slight_smile:

1 Like

Please don’t necro old posts to try to promote any Asset Store offerings you might have.

3 Likes