News for hackers. Stuff that matters.
Re:Raytracing won't simplify AAA real-time rendering by senko on Monday December 28, 2020 @08:31AM (#25559037)
> From what I've seen game industry has terrible software engineering practices.

You'd be surprised. Here's a talk from Croteam on how they test their games and engine: https://m.youtube.com/watch?v=YGIvWT-NBHk

I'd wager all major engines are exhaustively tested.

Trouble is, there's combinatorial explosion of game state, user input, assets, scripted behaviour and engine, so there's a huge area to cover.

Re:Raytracing won't simplify AAA real-time rendering by reader_mode on Monday December 28, 2020 @09:08AM (#25559231)
I mean he's basically saying what I am - they are the exception, very few teams are doing it, no public information on how to do it or best practices, everyone reinvents everything on their own from scratch.

I'd wager the popular engines are well tested because of the number of titles shipped on them not because they have good testing automation - but TBH I haven't worked in this industry for almost 10 years so maybe things changed.

Re:Raytracing won't simplify AAA real-time rendering by megameter on Monday December 28, 2020 @02:48PM (#25562517)
10 years ago was right when "TDD" became hugely hyped. Before that, test automation was patchy throughout the software world, not just in games.

I believe the same is true of "best practice" today: game studios aren't actually behind the curve, you just don't hear much about how things are progressing on this end because most of the conference talks aren't about broad concerns like testing, they're about the myriad specialities of the field.

And there absolutely is a legacy-code thing that hinders AAA in many cases. When the engine is old, that's good, because it's shipped something, but it's bad, because it's using older practices and Things Have Moved On.

Re:Raytracing won't simplify AAA real-time rendering by reader_mode on Tuesday December 29, 2020 @12:57AM (#25567166)
That's a fair take too - maybe TDD wasn't as widespread in general so I just got onboard when everyone else did. Although I should note I'm not a fan of TDD and it's not something I would recommend for games or anything similar - it's a very narrow tool - I think you agree because you put "TDD" in quotes I just don't want to make it sound like I'm recommending it - I'm a fan of automated testing.
Re:Raytracing won't simplify AAA real-time rendering by ensiferum on Monday December 28, 2020 @09:13AM (#25559276)
At least UE4 is not well tested at all. Most of the code doesn't have any decent tests. It's all "developer writes the code and runs once on his machine and then pushes to prod" type of code.
Re:Raytracing won't simplify AAA real-time rendering by TinkersW on Monday December 28, 2020 @02:28PM (#25562343)
That isn't really true, Unreal uses assertions heavily, see https://docs.unrealengine.com/en-US/ProgrammingAndScripting/...

Unit tests etc aren't that useful in games so no you won't find much of that stuff.

Re:Raytracing won't simplify AAA real-time rendering by ensiferum on Monday December 28, 2020 @02:48PM (#25562511)
Why would you say something like this?

With everything else being equal Unit tests are as useful for games and game engines as they are for any other type of software. If you care about your software being correct (or let's say less incorrect) you need to test it. And preferably you write automated tests. Games (and especially game engines) aren't really by default an exception to this.

(Of course you can just say that this game is not worth the effort of getting better quality so we don't care if it's a bug fest and that's fine).

Re:Raytracing won't simplify AAA real-time rendering by TinkersW on Monday December 28, 2020 @03:44PM (#25563014)
I have never found Unit tests particularly useful outside of constrained situations where you have predictable input and output and a initial state that easily reached.

Getting a game(or engine) into a particular initial state so you can make the unit test even work would be a massive pain the ass.

Heavy assertions are more useful as they test actual running code, and they are executed every time the program is run. You can still write "unit test" like code using assertions, but having some code that only executes in the development build on startup to check your math library or whatnot.

Not defending Unreal, I don't particularly like that engine, but that has more to do with the codes age and bloat.

Re:Raytracing won't simplify AAA real-time rendering by ensiferum on Monday December 28, 2020 @03:57PM (#25563120)
That doesn't sound right. Unit testing happens very close to the unit you want to test, i.e. class or function most of the time. Most of these should be designed with testing in mind so they're actually something you can write unit tests for. And there ought to be a whole bunch of classes/functions/components that can be tested this way, such as scripting code, networking code audio code etc.

It's not hard and definitely not impossible. Just requires a mind set towards quality and testing.

Re:Raytracing won't simplify AAA real-time rendering by bmurphy1976 on Monday December 28, 2020 @12:04PM (#25560835)
Is that UE4 or games written in UE4? I can totally believe it for games written in UE4, but the engine itself? Doesn't pass the sniff test.
Re:Raytracing won't simplify AAA real-time rendering by dafelst on Monday December 28, 2020 @01:08PM (#25561450)
I've been working professionally on a UE4 game with a license to the full UE4 engine codebase, I can confirm that the engine has some unit and functional tests, but the overall coverage is abysmally low.
Re:Raytracing won't simplify AAA real-time rendering by homarp on Monday December 28, 2020 @12:53PM (#25561325)
https://docs.unrealengine.com/en-US/TestingAndOptimization/A... is the overview of the automation system used for unit testing, feature testing, and content stress testing.
Re:Raytracing won't simplify AAA real-time rendering by ensiferum on Monday December 28, 2020 @01:56PM (#25562014)
There's some built-in testing functionality for the games but there aren't much tests for the engine itself in the source package.

Oh and I spent about 3 years working with UE4. The engine is a bug fest.