Why my friend had to retake his C++ course with a different professor



  • @jmp said:

    Performance matters in a number of domains - like, for example, games.

    Five years ago, maybe. Now? No.

    Go open Skyrim. Hell. Go open Fallout 4. I'll wait. Ok? Now open your CPU meter. Now go into Fallout and do some intensive combat. How high did your CPU meter go? 40%? Maybe 50%? That's Gamebryo/Creation Engine. It's one of the LEAST efficient game engines that exist.

    No. The challenge of game development is cramming all the shit you need into the GPU buffers in time for each frame. Everything else compared to that is small beans, even fucking complex AI. And C# is just as good at cramming shit into GPU buffers as C++.

    @jmp said:

    I've played games written in Unity. Terrible framerates and stuttering seem like they're pretty standard.

    Right; and that obviously is a C# problem and has nothing to do with the fact that Unity is usually used by beginners or indies.



  • @jmp said:

    (I'm aware that part of this is that Mono is not great, and the particular version of Mono Unity is based off of is ancient. But what other non-windows C# runtimes are there?)

    .NET Core is available for Windows, OS X and Linux; but I think it's still in beta (though there is a release candidate of ASP.NET 5 that runs on it). The documentation certainly isn't complete yet.



  • @TwelveBaud said:

    So Unity doesn't exist?

    Please let this be true!



  • @blakeyrat said:

    Five years ago, maybe. Now? No.

    Go open Skyrim. Hell. Go open Fallout 4. I'll wait. Ok? Now open your CPU meter. Now go into Fallout and do some intensive combat. How high did your CPU meter go? 40%? Maybe 50%? That's Gamebryo/Creation Engine. It's one of the LEAST efficient game engines that exist.

    No. The challenge of game development is cramming all the shit you need into the GPU buffers in time for each frame. Everything else compared to that is small beans, even fucking complex AI. And C# is just as good at cramming shit into GPU buffers as C++.

    You can trade off CPU time for amount-of-data-to-copy-to-GPU. For example, the more hidden-surface removal you do on the CPU, the less stuff you have to transfer.

    Never mind that copying data from A to B is one of those situations where it helps to be closer to the metal.

    @blakeyrat said:

    Right; and that obviously is a C# problem and has nothing to do with the fact that Unity is usually used by beginners or indies.

    Some of it is that beginners and/or indies don't know how to avoid GC triggering in the main game loop, it's true. Some of it is that there are close to no other examples of games written in C# out there, for some reason. Some of it is that there are so few options in the C# ecosystem, so you're going to be using shitty Mono or ancient shitty Mono if you want to be even remotely portable.



  • @jmp said:

    Some of it is that there are close to no other examples of games written in C# out there, for some reason.

    There are hundreds or thousands of games written in C#.



  • To save you hunting for examples, here's a well-written and reasonably performant game written in C# (using Unity no less): Infinifactory.

    Large solutions get really janky, and medium-sized solutions at speed can get really janky. At scales players run into, easily - the whale level in particular has noticeable performance problems. Because even though it's well-written, if you ain't compiled to machine code, you ain't shit.



  • Did you mean 'hundreds of thousands'? Because if there are, like, 9999 games written in C#, that's not very impressive.

    If you meant hundreds of thousands, well, maybe you should list them all so we can judge you (Oh hey I recognize this tactic! I wonder where I've seen it before?)



  • @jmp said:

    (Oh hey I recognize this tactic! I wonder where I've seen it before?)

    Your own fevered nightmares?

    Look, whatever. You can have a good game coded in C# in 2 years with a 0.01% chance of crashing. Or you can have a very slightly better perhaps game coded in C++ in 4 years with a 10% chance of crashing. If you want the latter, more power to you I guess.



  • Games written in C++ only ever crash when running on buggy hardware and/or when shitty graphics drivers crash under them.



  • @jmp said:

    Games written in C++ only ever crash when running on buggy hardware and/or when shitty graphics drivers crash under them.

    Hahaha! Get a load of this guy!

    "My programs never crash! It's the OS Drivers!"



  • @jmp said:

    Games written in C++ only ever crash when running on buggy hardware and/or when shitty graphics drivers crash under them.

    Wow. You're so detached from reality. It's kind of amazing.



  • @jmp said:

    here's a well-written and reasonably performant game written in C# (using Unity no less): Infinifactory.

    How do you know it's well written?



  • It doesn't stutter. Indicates Zachtronics knew enough about what they were doing to avoid/minimise allocation while the game is running. Also because I've played other games written by the guy, and they're consistently almost bug-free. Also he makes programming games. Guy knows what he's doing.

    @lesniakbj said:

    Hahaha! Get a load of this guy!

    "My programs never crash! It's the OS Drivers!"

    @blakeyrat said:

    Wow. You're so detached from reality. It's kind of amazing.

    Whoosh!



  • @jmp said:

    It doesn't stutter. Indicates Zachtronics knew enough about what they were doing to avoid/minimise allocation while the game is running. Also because I've played other games written by the guy, and they're consistently almost bug-free.

    That's an indication of being well-tested, not well-written.

    @jmp said:

    Also he makes programming games. Guy knows what he's doing.

    This isn't really an indication of anything.


  • area_pol

    @jmp said:

    Games written in C++ only ever crash when running on buggy hardware and/or when shitty graphics drivers crash under them.

    Not true at all, although when written in modern C++ (ie. no manual memory management, except on the lowest level), the chances for a crash are very slim.



  • Turns out I'm bad at jokes.


  • area_pol

    yup


  • 🚽 Regular

    @JazzyJosh said:

    @Zecc said:
    Alright, alright. C# will run on anything for which there is a working C# compiler.

    Better now?

    Nope. You need correct version of the .NET runtime installed. 🚎

    Come on, you're better than that


  • 🚽 Regular

    @Groaner said:

    @TwelveBaud said:
    So Unity doesn't exist?

    Please let this be true!


    @TwelveBaud was talking about the game engine, not the desktop environment.



  • I'm not surprised you failed a class on statistical mechanics, given your inability to see the application of taking averages over Riemann manifolds.

    Which school did you go to? I want to ensure my children stay away.



  • @Captain said:

    I'm not surprised you failed a class on statistical mechanics, given your inability to see the application of taking averages over Riemann manifolds.

    Which school did you go to? I want to ensure my children stay away.

    That guy would have failed Einstein, so, please go away with your idiocy. I also have no interest in your ivory tower applications of mathematics with absolutely zero bearings on the real world.

    And just for the record: I didn't actually fail that class. I just retook it (like an estimated 80% of the class) because what he taught was worthless.


  • Banned

    @blakeyrat said:

    Only one of those things matters.

    Moore's Law takes care of the other.


    If you take this thinking into logical extreme, you get Minecraft - a game with PSX era graphics, but crashes if there's less than 2GB memory available.



  • Minecraft was written in Java.


  • Banned

    So now you're claiming that Moore's Law doesn't work with Java? Or did you always claim that but omitted it in your post because you assumed I would know it? Is it Java specifically, or a subset of technologies that Java is element of? What other technologies are in this subset and why? I assume that, somehow, whatever problems Minecraft has, it wouldn't happen if it was made in C#?


  • area_pol

    Don't bother - ain't worth it.


  • Banned

    I know. I'm just having fun with driving him crazy and harvesting likes.



  • @NeighborhoodButcher said:

    build this for ARMv7 and then later for x86

    GOOS=linux GOARCH=arm GOARM=7 go build
    GOOS=linux GOARCH=386 go build -o later
    

    Not sure why you want that executable name, but here you go.


  • area_pol

    @ben_lubar said:

    GOOS=linux GOARCH=arm GOARM=7 go build -o this
    GOOS=linux GOARCH=386 go build -o later

    FTFY



  • @blakeyrat said:

    Go open Skyrim. Hell. Go open Fallout 4. I'll wait. Ok? Now open your CPU meter. Now go into Fallout and do some intensive combat. How high did your CPU meter go? 40%? Maybe 50%? That's Gamebryo/Creation Engine. It's one of the LEAST efficient game engines that exist.

    Go open that game with cotton candy. Hell. Go open Dwarf Fortress. I'll wait. Ok? Now open your CPU meter. Load up a fort that's existed in gameplay for like ten hours of play time. How high did your CPU meter go? 12% Maybe 13%? That's Dwarf Fortress/Slaves to Armok God of Blood Chapter II. It's one of the LEAST multithreaded game engines that exist.


  • ♿ (Parody)

    @Rhywden said:

    I also have no interest in your ivory tower applications of mathematics with absolutely zero bearings on the real world.

    :facepalm:



  • @boomzilla said:

    @Rhywden said:
    I also have no interest in your ivory tower applications of mathematics with absolutely zero bearings on the real world.

    :facepalm:

    Listen, I actually get the use of Riemann manifolds. However, they are a tool and like any tool, they have limitations to their usefulness.

    That was my argument all along: Just because you can do something doesn't mean that it's something you should do.

    "But it's just numbers! And you can add numbers up!" - "Yes. And what does the result of said addition in this particular case actually tell you?" - *crickets* - "Yeah, thought as much."


  • ♿ (Parody)

    @Rhywden said:

    Listen, I actually get the use of Riemann manifolds. However, they are a tool and like any tool, they have limitations to their usefulness.

    I just find it amusing that you had the roles of people backwards, using what you believed to be your ivory tower applications of mathematics to prevent doing something useful in the real world.



  • Is that supposed to be a meaningful sentence or just incoherent ramblings?

    And sure, arithmetic means over non-linear metrics: Soooo useful.



  • @jmp said:

    Performance matters in a number of domains - like, for example, games.

    I agree that performance matters, but not in games. Where performance has tangible benefits is in mobile, where longer battery life is appreciated, and server farms, where each % point of performance gained can mean $ saved.


  • area_pol

    @Kian said:

    I agree that performance matters, but not in games

    Yes - it does in games, to the extreme even. Yes - I've been involved in engine development.



  • @ben_lubar said:

    Go open that game with cotton candy. Hell. Go open Dwarf Fortress. I'll wait. Ok? Now open your CPU meter. Load up a fort that's existed in gameplay for like ten hours of play time. How high did your CPU meter go? 12% Maybe 13%? That's Dwarf Fortress/Slaves to Armok God of Blood Chapter II. It's one of the LEAST multithreaded game engines that exist.

    So it's pegging one of your 8 CPU cores at 100%.



  • If it matters, it's in the minority of games. Most games don't benefit from it. Probably high profile games do care. Engine development is a reasonable place to spend effort on, especially on consoles where the hardware is fixed for several years at a time (so no Moore's law for you).

    Of course, I'd choose C++ because it's a safe, expressive, extensible language. That it also gives you better performance is just a bonus.


  • area_pol

    Well, I wouldn't make such a bold statement about the minority of games. From what I've seen it's the exact opposite, unless it's some garbage project. Good engines go to such extremes as replacing the default memory allocators, since they are too slow. Even Epic decided to ditch shit like scripting languages and go C++ for content creators, and it worked beautifully for them (and before someone mentions - blueprints are pretty much a facade for C++).



  • Well, we'd have to define how you are measure game counts. Basically no 2D games are CPU or graphics bound. You could use python and get all the performance you need for any 2D game. Then you have 3d stuff like "the walking dead" episodes that don't try to be photo-realistic, and so they don't have performance bottlenecks.

    The only people pushing performance are those working on photo-realistic games or those working on simulations or many actors at once. And those are on the minority, unless you only count games with a $10 million or higher budget.


  • area_pol

    You would have been right maybe 2y ago. Now AAA engines are free for indie developers and it's pretty much pointless to make your own. It's easier to write a 2d game in UE4 than to write your own from scratch.



  • @ben_lubar said:

    Go open that game with cotton candy.

    Uh. You lost me in the first sentence.



  • @blakeyrat said:

    @ben_lubar said:
    Go open that game with cotton candy.

    Uh. You lost me in the first sentence.

    Did Ben mean:
    [poll]

    • Go (somewhere) and open some unspecified game that involves cotton candy?
    • Go (somewhere) and open some unspecified game, using cotton candy to open it?
    • Command to tell Go to open a game that involves cotton candy?
    • I don't care; any game that Ben posts about is something I don't want to open.
      [/poll]

  • Banned

    @Kian said:

    C++ because it's a safe, expressive, extensible language.



  • @blakeyrat said:

    @ben_lubar said:
    Go open that game with cotton candy.

    Uh. You lost me in the first sentence.

    @HardwareGeek said:

    Did Ben mean:

    He lost me in the first word.


  • Banned

    He lost me on his username.



  • He lost me on his avatar.



  • At the end of Dwarf Fortress, you go to the circus to get some candy from the clowns. Before you get there, you might have a visit from Facebook.



  • That'll never happen, then. I'm terrified of Facebook.



  • I'm terrified of them, too. Some of them look like this:



  • @Zecc said:

    @TwelveBaud was talking about the game engine, not the desktop environment.

    So was I. I've gone on record at least once as to my thoughts on that particular engine.


Log in to reply