Hello,
I am not 100% certain about where to put this question but I will start here in the Rendering section since it does pertain to rendering.
I am currently working with Unreal Engine 5 and I plan on shipping my game to consoles at some point not long after launch. Launch is still quite a few years away, but because the frame budget is so tight (8.3ms), this does not seem like something that will be easy to optimize for at the end of the project, so I probably need to start now and not later.
I would like my game to ship with a native 120 FPS mode (by that, I mean a full 120 FPS and not 40 FPS in a 120hz container like I have seen on some games). I want the game to automatically switch between 60/120 FPS depending on whether the player’s display connection supports 60hz or 120hz output (which means I would need complete visual parity between both modes). My game is more about clear and crisp visuals with a high refresh rate, and I don’t care as much about slamming visual detail to ludicrous degrees (just enough that it doesn’t look horrid). Plus, having to design environments with a quality and performance toggle in mind just makes for a lot more work than I probably have the time for.
This is important to me because my game, while not a Souls-like, does have (almost) the level of controller-smashing difficulty you would expect from one. As such, it’s also important that this frame rate is stable. As in: If Digital Foundry were to do a review, then potential buyers should see the frame rate pinned at 120 FPS, all the time, zero stutters, even during intense fights, and assume that any negatives the hosts have to say about the frame rate is an automatic and instant failure (yes, I am this rigid about a stable frame rate, it is really that important to me and I think my players would very much appreciate it). I would like my players to be limited only by raw skill, not a shaky frame rate and input response.
I have one major reason for doing this with Unreal Engine 5: as a solo developer who’s more of a programmer and designer than a 3D artist, I rely very heavily on Megascans, Unreal Marketplace assets, and most importantly MetaHumans. I use assets from MHC for UE5.4 which obviously aren’t backwards-compatible with UE4 to my knowledge, and new marketplace assets can only ship to 5.1-5.4, so as much as I’d like to use UE4, it seems that option is off the table.
This puts me in an extremely strange no-mans-land of indie development I suppose, where I’m making an extremely oddly specific type of game (horror-themed fighting game hybrid with a high skill ceiling and extremely tight input response rivaling Sekrio) with an extremely oddly specific set of limitations (complete lack of an art team which would help give this game an identity and reduce the poly count while retaining visual flair) that will probably stop me from achieving this goal, but I’m continuing regardless. (I’m basically working with the resources of the average Steam store asset flip but with much higher aspirations to offer something actually interesting.)
Some things I’m going to experiment with myself:
- Obviously visual fidelity has to take a tumble, that’s a given
- I expect engine modifications to be in order, but to be honest I have no clue how bad it’ll get (probably very, given most 120hz games are on in-house engines)
- In a previous post someone pointed me to Mass Entity as a data-oriented framework, unfortunately it doesn’t seem like it can fully replace Actors and Components (which are dependent on a copious amount of virtual dispatch and cache line inefficiencies that I expect won’t help the situation) but it seems nice for dense enemy crowds
- I’ve been writing a custom engine on the side (entirely in plain C, no ++, with only OS and graphics APIs), since it seems most 120hz games are on custom engines, but given that I’m currently way over-dependent on Unreal content I don’t see it going very far right now (and I’d be lost once I get to the renderer because I’m no graphics programmer either)
- Bite the bullet and study art (at least a little bit); I’m an engineering student, and drawing and modeling is hilariously foreign to me (I open Blender and even after hours of tutorials and research am completely and totally lost), but everything’s a skill and skills can be learned, right? (Right? Probably wrong but it’s worth a shot…)
Is there any other advice anyone might have for targeting 120 FPS on 9th-gen consoles, beyond the expected “turn down the settings” and “Lumen and Nanite are off the table” that would be good to know? Or is it simply not realistically possible and I need to investigate other options?