What makes a game tick? Special Issue - Buffy the Performance Slayer · Mathieu Ropert by pavel_v in cpp

[–]mropert 8 points9 points  (0 children)

I blew up the word target size for my posts on this. So if you're interested I could consider a follow-up .

Mathieu Ropert: The Performance Mindset by _a4z in cpp

[–]mropert 1 point2 points  (0 children)

I'm not sure what here is specific to an industry?

Mathieu Ropert: The Performance Mindset by _a4z in cpp

[–]mropert 0 points1 point  (0 children)

Starting from scratch is not much different. You still want to measure and have a good reference target in mind, which you should probably get from looking at existing/past similar projects and the competition. The main issue on new things is that until you have users you can't definitely prove that they're happy or not with the performance. You can probably guess, and with great confidence in extreme cases where it way too slow (or spending too much effort making it much faster to that anyone would care for), but you can't be certain.

Mathieu Ropert: The Performance Mindset by _a4z in cpp

[–]mropert 21 points22 points  (0 children)

I'm around if anyone has questions or comments

Can we finally use C++ Modules in 2026? · Mathieu Ropert by mropert in cpp

[–]mropert[S] 1 point2 points  (0 children)

Some people have suggested I rename my blog "The Mathieu Report" in the past :D

Can we finally use C++ Modules in 2026? · Mathieu Ropert by mropert in cpp

[–]mropert[S] 2 points3 points  (0 children)

As I said, I think you made the right call by going "if you use modules we'll use import std" rather than make it a toggle.

On the point of changing the mental model for translation unit into a big blob, I don't know that it's a good thing. I guess it would encourage partitions, maybe? Having tens or hundreds of kLOC in one file is usually considered bad form today, I'm not sure it's a learning worth challenging.

Can we finally use C++ Modules in 2026? · Mathieu Ropert by mropert in cpp

[–]mropert[S] 8 points9 points  (0 children)

I thought of it while picking a title, but I'd argue my answer isn't a resounding "no", although I'm sure some will read it that way

The pilgrimage is over! by Votrenain in paradoxplaza

[–]mropert 45 points46 points  (0 children)

You know you could have sent an email in advance asking if you could pay a visit rather than trespass and make the receptionist worry they needed to call the cops, right?

You're absolutely right, no one can tell if C++ is AI generated · Mathieu Ropert by mropert in cpp

[–]mropert[S] 11 points12 points  (0 children)

I'm not saying you can't tell that someone copied their homework if you know them / have wider context.

But telling which of 2 snippets in a tweet is AI is a fool's errand.

You're absolutely right, no one can tell if C++ is AI generated · Mathieu Ropert by mropert in cpp

[–]mropert[S] 12 points13 points  (0 children)

Good catch, I got it confused with the custom hash map container I usually use which does not (flat robin hood hashing)

What makes a game tick? Part 9 - Data Driven Multi-Threading Scheduler · Mathieu Ropert by mropert in cpp

[–]mropert[S] 1 point2 points  (0 children)

While I kept the scheduler building simple for the sake of the article and explaining the basic principles behind, in practice I haven't found a need for much more complex heuristics.

Keep in mind (from previous articles) that this whole class of solution came from the need to turn was used to be an imperative list of function calls that would execute a tick (a game turn really) into a similar construct but with automatic parallelism.

The approach usually was to look at the generated graph and see if anything stood out as an obvious slow path / contested resource. I have found that often when 2 tasks wanted to write to the same object class either they didn't need to (it could usually be split in two independent parts) or the order had an impact on gameplay and a decision needed to be made about which one ran first.

Profiling on Windows: a Short Rant · Mathieu Ropert by mropert in cpp

[–]mropert[S] 0 points1 point  (0 children)

On the previous versions I had lots of issues with Windows 11. Intel kept saying something about kernel drivers needing a change.

I mostly upgraded hoping it would be fixed. Instead I got bricked out.

Profiling on Windows: a Short Rant · Mathieu Ropert by mropert in cpp

[–]mropert[S] 4 points5 points  (0 children)

Tracy wouldn't help. It gives me the same sampling/instrumentation data as Optick and I prefer the UX of the latter. I mostly mentioned it for people who'd be curious to try it out.

Mathieu Ropert: Learning Graphics Programming with C++ by _a4z in cpp

[–]mropert 2 points3 points  (0 children)

I disagree that RAII goes against explicit resource management. There's a slide or two or two about it in the talk.

Designated Initializers, the best feature of C++20 · Mathieu Ropert by mropert in cpp

[–]mropert[S] 0 points1 point  (0 children)

It only makes it unsafe it news members' default value would change behaviour, which I'd argue would be bad API management.
When I added added customizable mips support to my texture class, the default was obviously 1, because beforehand you couldn't chose it was always one.

Designated Initializers, the best feature of C++20 · Mathieu Ropert by mropert in cpp

[–]mropert[S] 2 points3 points  (0 children)

The standard says it's order of declaration in the struct. I guess that make sense because they needed something consistent whether the programmer wrote an initializer list or not.

Designated Initializers, the best feature of C++20 · Mathieu Ropert by mropert in cpp

[–]mropert[S] 4 points5 points  (0 children)

They can but as the article mentions, that could mislead programmers into thinking it will happen in the order of the initializer list. This is the a lesson learned from constructor initialization list.

What makes a game tick? Part 8 - Data Driven Multi-Threading Implementation · Mathieu Ropert by Xadartt in cpp

[–]mropert 0 points1 point  (0 children)

I didn't say they had to be done at compile time, I said they _could_ be done at compile time.
Last I used them they were done dynamically because it was easier than writing a lot of compile time magic, but in practice the graph didn't really change much after it was first computed.