Hey folks,
BACKGROUND INFO:
I've been working for a while with some mates to create an MMO, AAA quality focus. One of our references was Black Myth:Wukong in quality, but as an MMO. It's thought to be HUGE. We're focusing on a small demo for now but I want to set up the basis for all the tech stuff.- Already gone through modular system basis and naming conventions, folder arrangementes, etc. And we're beggining to texturize props.
WHAT:
At first I thought that for a huge MMO, in order to keep it "small" for the future download files, I thought 5,12px/cm (TD). But ever since we started, we had in mind to have best quality, so then a 10,24 started to pop on my mind.
I cannot plan on having different TD for close and long range items, because in MMOs, the thought of having background elements in less TD doesn't work as good as on a non-open world game.
If you have some ideas on this, I'd like to hear about them. 5,12? 10,24?
Replies
Do first a game that isnt out of scope.
Many thanks for the advise! Will meet with our techs to find a solution then.
Anyhow, if you're looking to keep file size down you could could try using various channel tricks to keep the number of textures to a minimum. One good example of that is this sci-fi scene that Snefer (Tor Frick) did back in 2011:
https://polycount.com/discussion/89682/an-exercise-in-modular-textures-scifi-lab-udk/p1
working it out what you need is simple enough - its a function of screen resolution, camera FOV and view distance.
Thanks
However there's no need to flag replies as Abuse. These aren't meant as tirades, rather they're direct critiques which are here to help you understand the way things work in game development. Or else they're simply joking in a good-natured way.
Feel free to ask for clarification from people on what they mean by their replies. I hope this helps.
I'll stay with the good responses here ^^
And if such basic issues are a problem for your team i dont see a way you manage to get a game with that scope done.
I would be more that happy if you get your game ready.
I see you got the answer. All is fine.
We're working on demo for publishers. Might have a working public demo a year after getting investment, since we'll have to increase people and production. So far we're working for free. The only public thing we've got to show to the rest are the dino production basically We want to finish many things before showing off in public the rest
For instance, lets say I make all of my environment pieces, and I just want them to look good so I make all the texture resolutions 2k. Later when I am trying to optimize the game, I can easily change the texture resolution of all of those models to whatever I want. So I just find that sweet spot where it looks acceptable but isn't more than it needs to be.
If I still need to reduce memory footprint I prioritize targets and make those things which are least priority look ugly first.
Am I missing something? Like, what does the actual texel density number really matter? This is all based on how something looks visually, so who cares if prop A has slightly different density than B?
Honestly, every time I see this question I wonder if it isn't a case of people misallocating attention? But there is a lot of discussion so maybe something I don't know?
Caveat is that I only work alone, so I can see how havign a standard that a large team works from could reduce rogue artist from getting too crazy. For me though it's always just been find the minimum resolution needed and if i need to tweak a thing here or there that's not a big deal.
I see your point. Thing is that if you do 2k for every prop in a room, for a similar size, they do not have to have the same density. What we aim is for all artists to work on a same density. And if a particular object needs special attention, more detail, we can always push texture there individually.
Yeah. I thought it would be clearer this way. I always said 512 without comma
Author textures at as high a resolution as possible without creating undue burden (file size too big, too much lag while texturing, etc.). Set the resolution of textures in engine. It's super easy in Unity and it offers different compression options; I can't remember offhand how Unreal handles texture res but I'm sure it has similar options.
Have someone do in-engine performance testing. This is usually a Tech Artist type role. Check framerate, if shaders need to be optimized, what's taking the most draw calls / drive space / VRAM. It's their job to balance visual quality with technical performance. This is where the ideal texture resolution will be determined.
Yes, I know you asked about texel density and not texture resolution. You can give large and small assets different resolutions initially and then halve each of them in engine if necessary. Alternatively just author textures as large as possible (again as long as it doesn't cause lag etc.) and have tech artist set the resolution in engine and they're basically the one who determines the final texel density - which assets need 512, which needs 1024, which need 2048, etc.
One caveat here is if artists are authoring textures at a larger resolution than they're likely to be displayed in game, they may add too much detail that looks noisy or invisible in game. So it's important to have strong art direction so artists know how much detail to add, if they need to focus more on large shapes, etc. Having artists check their work at a lower res, or verify that it reads from a distance, etc. can help.
Also with large environments and terrain you can tile overlay textures for greater variety, and you may want to tile the overlays different amounts on different assets, so there isn't really one definite final texel density anyway.
I know this isn't the end-all-be-all answer you're looking for, but my point is it can vary a lot from game to game, and I think it's important to measure the pros and cons as game development progresses, and have an easy way of adjusting texel density if/when necessary. Rather than following a specific rule since there's no one right answer.
Caveat: I haven't actually worked on an MMO. My info is based on general 3D art and gamedev experience.
In fact this is one hell of an answer, many thanks for your insight on this
That sort of approach doesn't work in a game where the player is free to explore or when you don't know how assets are going to be used.
It is absolutely the right way to look at things for a racing game or anything where the player is restricted to a semi linear environment.
For more open environments you need to focus on reuse, ease of authoring and consistency above peak efficiency on a given asset. It requires a more holistic approach.
The best approach is to pick a texel density for the most common view distance and stick to it for almost everything you make.
This allows any asset to sit next to another without obvious discrepancies in texel size and means you use the minimum texture size required to reach the level of fidelity you need(assuming they're unwrapped properly)
For tileable/trim textures it is sensible to think of texture sizes in world space - eg 4 metres square.
This ensures that features are consistently scaled and means it is very simple to swap materials on objects.
The hard part is managing memory and material counts. I've no idea what unity does with streaming so memory management is a mystery to me. i know it has support for texture arrays and leveraging those will help greatly with material count
Also.
You don't want to be completely dogmatic - cutscene assets, text on a page etc are likely to want higher density but these are special cases
And...
You will run out of memory immediately if you throw 4k textures around all over the place so if you decide you need 1024pixels per metre texel density you need to start looking at shader tech that allows you to reach that fidelity without using native texture resolution (detail mapping, downsampling certain maps. etc )
Thank you for your insight, really appreciated
Lots of info, many thanks. I think I now have quite a clear idea on what to do, thanks again!
Yeah, I thought it would be clearer. I always said 512 without comma