Why my friend had to retake his C++ course with a different professor
-
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++.
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.
-
(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.
-
-
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.
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.
-
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?)
-
(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.
-
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!"
-
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.
-
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.
Hahaha! Get a load of this guy!
"My programs never crash! It's the OS Drivers!"
Wow. You're so detached from reality. It's kind of amazing.
Whoosh!
-
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.
Also he makes programming games. Guy knows what he's doing.
This isn't really an indication of anything.
-
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.
-
yup
-
@Zecc said:
Come on, you're better than thatAlright, 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.
-
@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.
-
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.
-
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.
-
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#?
-
Don't bother - ain't worth it.
-
I know. I'm just having fun with driving him crazy and harvesting likes.
-
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.
-
GOOS=linux GOARCH=arm GOARM=7 go build -o this
GOOS=linux GOARCH=386 go build -o later
FTFY
-
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.
-
I also have no interest in your ivory tower applications of mathematics with absolutely zero bearings on the real world.
-
@Rhywden said:
I also have no interest in your ivory tower applications of mathematics with absolutely zero bearings on the real world.
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."
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
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]
-
-
@ben_lubar said:
Go open that game with cotton candy.
Uh. You lost me in the first sentence.
Did Ben mean:
He lost me in the first word.
-
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.
-
-
@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.