I’m currently working on a little game and of course i am looking for the holy grail of computer graphics: the best possible graphics with the lowest possible hardware requirements while keeping the loading time low for bad internet connections. My first idea was to replace complex things like real-time shadows with pre-rendered ligth maps. But to make the scene more dynamic, it would be much nicer to use an image sequence instead of a single lightmap. I also thought about making the lightmaps available as black and white images and only using them as a mask for other gimmicks (using the lightmaps only as an provider of gradients). I also found, that my image sequence can be at a lower FPS rate to save memory while getting same quality when i use some kind of blending between two frames (dont know how this technique is called). All of this is quite easy to implement thanks to the NM editor, However, in the meantime a quite considerable chain of mathematical calculations has come together, so that I am slowly wondering how far I can continue this kind of funny stuff before I completely lose the gain in performance through textures. In general, I ask myself how I can best assess or measure the hardware requirements of my game? How can I estimate which things I would rather provide as pre-rendered HQ assets and which I would rather calculate in real time to save bandwidth? Do you have any tips for me regarding these considerations? Thanks very much!
Looking back to my college days this was something we had to do a lot (I made games in college). Can’t remember the minimum spec we had to run on but it wasn’t that a super impressive number.
Agreeing with seb. I think the best way is testing on a lot of different devices, which is what we ended up doing back in school. Plus an additional suggestion I have is mobile. Not that your game has to work ux wise for mobile but that’s a good test to keep in mind graphics
From a design standpoint you can always do that word controversial word I like to use “settings” in where a user can decide on optimizations they want to make based on personal preference.
I guess this is something I’m sure the performance profiler will come in handy for once we get it wrapped up.
This is less on the “hardware” side and more on a general “artistic” side I guess, but specifically for games, I feel that if you have a good art direction to impress the player with, having super high quality graphics becomes less of a concern. I’ve been playing Sky: Children of Light on my Switch recently and I keep being super blown away by how stunning the graphics look even though it’s pretty low poly-ish.
And having settings for customization is always a great choice!
@carolhmj did you mean we should have more focus on doing great art instead of squeeze the hell out of our hardware? Of course but i think it is helpful to understand what our machines are able to do, what walls can be broken and which have to be avoided.
@msDestiny14 Oh yeah when will the performance profiler be ready?
@sebavan I dont like tradeoffs. Always sounds like more work with less result
Do you guys have something like a top 10 of things which have the most impact if optimized? Unfortunately i don’t have many devices always accessible because it is just a fun project in my spare time and not at a company or something. Do you have hints on what points i should focus while testing on devices?
I am right that if i change a image texture in a node material, the underlying shader have to be recompiled? Is there a way to compile all shaders at server side? Is it ok to use the JS Code exported frome the NME in production or is it just for development purposes?
Sorry for so many questions, but this whole topic is new to me and there is so much to learn.
@eltitano, this doc contains all the tricks and if not feel free to PR some changes to update it or let us know.
About NME, nope swapping a texture will not change the shader and no you can not compile shaders server side. You can definitely use your nme code in prod but I would advise to use the save and load functionality and not rely on the snippet server.