Digital Foundry Article Technical Discussion Archive [2016 - 2017]

Status
Not open for further replies.
Unity seems to be designed around the much, much faster CPUs in PCs. If you read the twitter of the programmer of Zeboyd Games, you'll find he had to practically torture the damn thing to make his latest game work properly on the Vita, and it's a fucking turn based RPG with a PS1 2D aesthetic.

https://twitter.com/werezompire Might take a while to find the info, he tweets a lot.
 
Oddworld: New 'N Tasty is a Unity game as well. It looks fantastic and runs great on the PS4 (and the Xbox One too iirc). It's not perfect either, but it's mostly 60fps. Heck, it even works fine on the Vita. Sure, unlike Broforce it's not a physics-heavy destruct-a-thon, but Broforce barely reaches 30fps, even when no shots have been fired. Blaming it all on Unity seems a little too easy.
 
Oddworld: New 'N Tasty is a Unity game as well. It looks fantastic and runs great on the PS4 (and the Xbox One too iirc). It's not perfect either, but it's mostly 60fps. Heck, it even works fine on the Vita. Sure, unlike Broforce it's not a physics-heavy destruct-a-thon, but Broforce barely reaches 30fps, even when no shots have been fired. Blaming it all on Unity seems a little too easy.
It may not be Unity: but what often comes with high degrees of accessibility, also comes with low entry barrier for game development and a lack of understanding the hard competencies of computer science. Console development is not easy at all, fixed hardware is not easy to tackle.

Roderic's signature states it best. I don't say this as someone whose put out a highly optimized game on console, but quite the opposite :)

I was that guy who couldn't hit 30fps on PS3 for a Sprite based game , I still could be. It's that hard at times. PSN@Home was unforgiving though, it was really difficult to debug. :) my excuses
 
Allocating (well, creating things and letting Unity handle memory) and allowing the garbage collector to run during gameplay seem to be things to avoid. But I'm only just getting my feet wet with Unity.

I'll know more in a decade, if I ever get my arse into gear and make Best Game Ever.
 
It may not be Unity: but what often comes with high degrees of accessibility, also comes with low entry barrier for game development and a lack of understanding the hard competencies of computer science.

For sure. I mean look at all the "awful" early to mid PS3 era UE3 games. Heck, the first showing of UE4 on PS4 was abysmal as well (some Slender-esque jump scare nonsense, the title of which I cannot quite recall), and while Street Fighter V is a very pretty game, it's by no means a technical marvel either.
 
Allocating (well, creating things and letting Unity handle memory) and allowing the garbage collector to run during gameplay seem to be things to avoid.
One of the strangest omissions from Unity is standard object pooling. They introduce development by creating and destroying things like bullets, but as every experienced dev states, you can't really run a game that way and need to have a pool of ready made objects to enable/disable. Seeing as everyone is being told to do this (and Unity themselves advocate it in some of their tutes and blogs and stuff), why isn't it in the engine?? Create a pooler class, assign a GameObject, and have other objects request and release items. It's a no brainer, would do wonders for performance, would save devs effort of each rolling their own...but it doesn't happen.

That said, the new UI is a dog too. I think Unity is now soooo vast across so many devices, it'll take an age to adapt. It's evolved from a nimble sports boat that could turn on a dime to an epic ocean liner that has a turning circle measured in time zones, and it has to keep getting bigger to support more devices.
 
One of the strangest omissions from Unity is standard object pooling. They introduce development by creating and destroying things like bullets, but as every experienced dev states, you can't really run a game that way and need to have a pool of ready made objects to enable/disable. Seeing as everyone is being told to do this (and Unity themselves advocate it in some of their tutes and blogs and stuff), why isn't it in the engine?? Create a pooler class, assign a GameObject, and have other objects request and release items. It's a no brainer, would do wonders for performance, would save devs effort of each rolling their own...but it doesn't happen.

If you have to do that, what is the point of even having garbage collection?
 
Ideally you choose to garbage collect on your terms and not during gameplay. Memory accesses like creating and destroying memory causes all sorts of hiccups during play.
 
If you have to do that, what is the point of even having garbage collection?
To do the occasional big clean when it doesnt matter if it impacts performance (just in case the programmer has actually missed something), eg at the end of a level. Instead of like its usually implemented now, constantly during the gameplay which is does even if you have gig's of memory free. Use the empty memory for fucks sake, its not like you get brownie points if half your PC memory is sitting around empty. This isnt so much of an issue if you're a decent programmer and know to set aside memory, C# is my favorite programming language (havent used it for a couple of years now though) except for garbage collection.
 
If you have to do that, what is the point of even having garbage collection?
When it's needed. I like garbage collection once a week to remove a large bin of trash. I wouldn't like it every half hour to remove whatever crisp bag or biscuit wrapper I've just finished with. In Unity's case, there are plenty of situations where a little overhead is well worth the convenience. The problem is the meat-and-potatoes of the game, the stuff that's constant and always happening, needs far less overhead. That's why object pools are recommended. So why not provide that at the engine level? Update the Instantiation with a pool option and have the engine manage the fixed resources. Have a panel with a few setting for maximum reserved RAM/objects, etc. It could be very easy to use and should be available to everyone IMO.
 
Oooof. Take a look at the 980ti versus 980ti section. 60 FPS side by side with 30 FPS. And you can see just how horrible 30 FPS looks anytime there's quick movement or panning of any sort.

Regards,
SB
Yesterday I forgot to turn on game mode and the division looks so smooth in 60 fps

But the lag is crazy.

I can play destiny and drive club with motion smoothing, but the division is unbearable.
 
Ouch that Black Crush. Such a shame. But seeing that has made me want to play Alan Wake again. What a great game and great looking game.

Regards,
SB
 

Maybe the highest quality footage available from the final build of QB as well!

DF seem to be thinking it's running at 720p on X1
1920x-1
 
Last edited:
Oddworld: New 'N Tasty is a Unity game as well. It looks fantastic and runs great on the PS4 (and the Xbox One too iirc). It's not perfect either, but it's mostly 60fps. Heck, it even works fine on the Vita. Sure, unlike Broforce it's not a physics-heavy destruct-a-thon, but Broforce barely reaches 30fps, even when no shots have been fired. Blaming it all on Unity seems a little too easy.
Oddworld on PS4 is certainly not 60fps, and even less so on the One. It was readily apparent when I played it on the PS4.

t9KEqYc.png
 
Status
Not open for further replies.
Back
Top