The thing about consoles is that their hardware specs are frozen. As a result, much can be done to squeeze additional performance by programming directly to the hardware, rather than going through an abstraction layer like DirectX. Staying at the high level and calling into standard API routines saves a lot of work, and keeps huge potential gains untapped. Typically, the first games in a console's life cycle follow the standard approach. It takes time to discover and develop more streamlined approaches. As a result, the games late in a gen look and perform so much better than the early games that you'd think they're running on superior hardware.
Here is an article on the surprising advantages of specialized consoles over general-purpose PCs you may find interesting. The one-size-fits-all, ignore-the-hardware approach may work OK on PCs, but it's not the way to achieve technical greatness in console games.
Interesting article. Also, I am so going to steal the phrase "delusional forum chimps."
It also brings back memories of writing assembly language for a PDP-11, and the time my boss made one slight error that resulted in his program starting at block 0 on the system disc and writing raw data to it until the machine crashed, but that's another CSB entirely.
However, we're not talking about Crysis or Skyrim here. We're talking about Minecraft, which is never going to wow anyone with the outstanding quality of its graphics. That's not what we play it for. Direct hardware interaction is important if you're rendering photorealistic worlds in realtime ... not so much when you're just displaying virtual Legos. Most of the gains in efficiency from bypassing an API layer are from graphics -- and that's just not an issue for Minecraft, no matter what platform it's on. Things like world size, for instance, are a much bigger deal for the console port, and that's a result of the memory management limitations; that's also something the platform exports for each console would deal with, while the primary team keeps working on porting the code. Optimizing the Minecraft graphics wouldn't gain much in performance because the graphics are so simplistic, in terms of processor power, that there's no real loss there to make up.
You can take a simple C++ program -- say, one that prints "hello, world" to the console -- and compile and run it on any computer with a C++ compiler. The machine code will be necessarily different if you're building it for a x86 machine running Windows, or a PS3, or a 68000 Mac, or a PDP-10. In none of these cases does printf actually tell the video hardware how to display "hello, world". The compiler, which is specific to that type of machine, takes that and converts it into the appropriate system calls -- in effect, "hey, display routine, I've got something here I need you to put on the screen. More text! Handle it!" That whole part gets taken care of out of sight to the person writing the actual code; that's kind of the whole point of a high-level language.
Only thing I have to say on that is that printf is C-code, not C++. C++ uses cout (cout basically means c - out
#include
using namespace std;
int main()
{
cout << "Hello, World!\n";
return 0;
}
EDIT: I officially hate writing source-code in this editor!
Machine code doesn't matter. That's what you have compilers for. Humans never see the machine code, only the source code.
I actually forgot about that part, yes, but you still need to make adjustments according to the API the console is using.
Hence the source-code of any game will be barely different, across the platforms it's released on.
It would be somewhat like Writing a GTK+ program and expect it to work with qt. (two different API's, see the connection to the consoles?) To create a virtual need for that in the first place I'll just say that Qt just became Windows only just like GTK+ became Linux only (Note that that is to create a theoretical need to do it, not that it's true)
EDIT: Well. I guess you could theoretically put the source-code for all platforms in one project and then make the compiler auto-recognize what to leave out, but wouldn't that kinda be what functions and multiple source-files is for?
Interesting article. Also, I am so going to steal the phrase "delusional forum chimps."
It also brings back memories of writing assembly language for a PDP-11, and the time my boss made one slight error that resulted in his program starting at block 0 on the system disc and writing raw data to it until the machine crashed, but that's another CSB entirely.
Ahaha! Yes, low-level access is quite dangerous in the wrong hands. Your boss probably took a while to live that one down. My assembler experience started with the 6502 in Atari micros. My first real job involved the Apple II and the brand-spanking new IBM PC. I got the job on the strength of my 6502 skills, but I hardly used them. From there, I went on to learn C and 8088. I could make those early PCs sing and dance at a time when static business software was the bulk of what you'd find for them. Happy days!
You're right when you say the machine code doesn't matter so much anymore. The systems have so much power, and the compilers/optimizers are so freaking good that one seldom needs to go get his hands dirty anymore. But there will always be advantages to talking to the chips directly, particularly in less powerful devices, or outdated devices you want to keep as competitive as possible with the newer-tech computers.
However, we're not talking about Crysis or Skyrim here. We're talking about Minecraft, which is never going to wow anyone with the outstanding quality of its graphics. That's not what we play it for. Direct hardware interaction is important if you're rendering photorealistic worlds in realtime ... not so much when you're just displaying virtual Legos. Most of the gains in efficiency from bypassing an API layer are from graphics -- and that's just not an issue for Minecraft, no matter what platform it's on. Things like world size, for instance, are a much bigger deal for the console port, and that's a result of the memory management limitations; that's also something the platform exports for each console would deal with, while the primary team keeps working on porting the code. Optimizing the Minecraft graphics wouldn't gain much in performance because the graphics are so simplistic, in terms of processor power, that there's no real loss there to make up.
MC may look blocky and pixely, but it is a beast of a resource user. The game world is all voxels, and completely changeable by the user. Go try to build a new town in Skyrim, complete with underground dungeons. Ain't happening! You're obviously in tune with the reality of computer tech. I'm a bit surprised you're dismissing the need for good software tech in MC so cavalierly.
Ahaha! Yes, low-level access is quite dangerous in the wrong hands. Your boss probably took a while to live that one down.
I haven't talked to him in like 20 years, but the last time I did, I reminded him about that incident.
You know that shirt that says "I test in production"? That's all we had, back then. Just the one machine. The live one. And everything we did had to be tested there. Hence my boss's disaster, and the resulting scramble to restore something, anything, from our backups. The error was a small one -- he was setting a register to point to the start of the intended buffer (switching between two) and was thinking offsets, not absolutes, so he zeroed it instead. Just a minor thinko. But since this thing was bypassing the OS entirely and doing direct disc writes, nothing caught it before he set it loose on the computer, and the company. (compared to that, the fact that I managed to crash the computer during hourly data collection with a "hello, world" program is nothing, though the lynch mob that formed outside my office probably didn't agree)
This whole thing is making me feel old. The reason the disaster-creating program was written in assembler in the first place was that it was listening to the high-speed data line and had all it could do, when optimized like hell, to write everything it received to a disc buffer, to be processed later by other programs. (the data in question was concentrated at certain times, so the processing programs could take a lot longer to deal with it, once it was safely on disc) What's scary is how fast the "high-speed" line wasn't: 1200 baud....
MC may look blocky and pixely, but it is a beast of a resource user. The game world is all voxels, and completely changeable by the user. Go try to build a new town in Skyrim, complete with underground dungeons. Ain't happening! You're obviously in tune with the reality of computer tech. I'm a bit surprised you're dismissing the need for good software tech in MC so cavalierly.
It's not the graphics that are such a resource hog, though. It's the data mangling, er, management, that keeps track of the status of every single block. That's not something that direct access to graphics hardware would change.
By the way, it's great to be able to have an interesting discussion about programming here. Thanks to both of you! Rep given....
Honestly im glad that they are starting to branch out. Theres no way microsoft is going to trick me into buying their crap again. Now with them making a ps4 edition i can rest easy. Knowing i dont have to wait until i get my new computer to play minecraft. As for playing xbox for 10 + years has come to make me hate microsoft and their policies.
I'm curious about the Vita version since I have one. I hope it's near or exactly like the 360 version. If it is that would be amazing.
I'm still curious about the next-gen versions of Minecraft as well. I kind of wish we could have gotten some gameplay. Even though we basically know what it will be I would like to rest easy seeing some footage of the PS4/XB1 version.
Latrakx, Cobra951, and Akynth:
Watching the three of you interact was like watching a Disney movie... You started things off peacefully, some contention grew, you overcame it and now you're all friends again. And, I learned something along the way.
Latrakx, Cobra951, and Akynth:
Watching the three of you interact was like watching a Disney movie... You started things off peacefully, some contention grew, you overcame it and now you're all friends again. And, I learned something along the way.
Latrakx, Cobra951, and Akynth:
Watching the three of you interact was like watching a Disney movie... You started things off peacefully, some contention grew, you overcame it and now you're all friends again. And, I learned something along the way.
* Bows *
Not much contention, really. My frustration was with some clueless and persistent commentary about moving the code from one system to another, and expecting it to work. That did not come from Akynth, Latrakx or Janx. My conversation with Akynth is more along the lines of how deeply into the console's hardware we want to go in order to produce a better-running, better-looking game. Not a fundamental disagreement by any means.
Latrakx, Cobra951, and Akynth:
Watching the three of you interact was like watching a Disney movie... You started things off peacefully, some contention grew, you overcame it and now you're all friends again. And, I learned something along the way.
And now we shall buy everything you like!
We already own Star Wars so I guess we should buy, Game of Throne, Star Trek and Minecraft just to be sure we can keep our monopoly in everything!
Rollback Post to RevisionRollBack
I <3 Mechanical Keyboard (Tesoro Durandal G1NL) Just have to love it when someone changes the specs when comparing with and without optifine..
And now we shall buy everything you like!
We already own Star Wars so I guess we should buy, Game of Throne, Star Trek and Minecraft just to be sure we can keep our monopoly in everything!
I think Mojangs richer then Disney now O.oI think Mojangs richer then Disney now O.o. I also would've wished they had gameplay or some sort of confirmation on what's in the next gen version of Minecraft.
I think Mojangs richer then Disney now O.o. I also would've wished they had gameplay or some sort of confirmation on what's in the next gen version of Minecraft.
Wut.
Disney is a multi-trillion dollar company. Mojang can't even touch Disney.
I also wish there was some next-gen Minecraft gameplay just to see what it will be like. Hopefully soon before launch.
I think Mojangs richer then Disney now O.o. I also would've wished they had gameplay or some sort of confirmation on what's in the next gen version of Minecraft.
Regarding how new Mojang is, in relation to their sice (I can't really think now sorry, read as "how big they are") I think you could possibly say that Mojang have been doing better than Disney lately, but if you literally compare the amount of money they have.. nope.
Rollback Post to RevisionRollBack
I <3 Mechanical Keyboard (Tesoro Durandal G1NL) Just have to love it when someone changes the specs when comparing with and without optifine..
To post a comment, please login or register a new account.
Here is an article on the surprising advantages of specialized consoles over general-purpose PCs you may find interesting. The one-size-fits-all, ignore-the-hardware approach may work OK on PCs, but it's not the way to achieve technical greatness in console games.
-
View User Profile
-
View Posts
-
Send Message
Retired StaffIt also brings back memories of writing assembly language for a PDP-11, and the time my boss made one slight error that resulted in his program starting at block 0 on the system disc and writing raw data to it until the machine crashed, but that's another CSB entirely.
However, we're not talking about Crysis or Skyrim here. We're talking about Minecraft, which is never going to wow anyone with the outstanding quality of its graphics. That's not what we play it for. Direct hardware interaction is important if you're rendering photorealistic worlds in realtime ... not so much when you're just displaying virtual Legos. Most of the gains in efficiency from bypassing an API layer are from graphics -- and that's just not an issue for Minecraft, no matter what platform it's on. Things like world size, for instance, are a much bigger deal for the console port, and that's a result of the memory management limitations; that's also something the platform exports for each console would deal with, while the primary team keeps working on porting the code. Optimizing the Minecraft graphics wouldn't gain much in performance because the graphics are so simplistic, in terms of processor power, that there's no real loss there to make up.
The golden age: it's not the game, it's you ⋆ Why Minecraft should not be harder ⋆ Spelling hints
Only thing I have to say on that is that printf is C-code, not C++. C++ uses cout (cout basically means c - out
#include using namespace std; int main() { cout << "Hello, World!\n"; return 0; }I actually forgot about that part, yes, but you still need to make adjustments according to the API the console is using.
Hence the source-code of any game will be barely different, across the platforms it's released on.
It would be somewhat like Writing a GTK+ program and expect it to work with qt. (two different API's, see the connection to the consoles?) To create a virtual need for that in the first place I'll just say that Qt just became Windows only just like GTK+ became Linux only (Note that that is to create a theoretical need to do it, not that it's true)
EDIT: Well. I guess you could theoretically put the source-code for all platforms in one project and then make the compiler auto-recognize what to leave out, but wouldn't that kinda be what functions and multiple source-files is for?
Just have to love it when someone changes the specs when comparing with and without optifine..
Ahaha! Yes, low-level access is quite dangerous in the wrong hands. Your boss probably took a while to live that one down. My assembler experience started with the 6502 in Atari micros. My first real job involved the Apple II and the brand-spanking new IBM PC. I got the job on the strength of my 6502 skills, but I hardly used them. From there, I went on to learn C and 8088. I could make those early PCs sing and dance at a time when static business software was the bulk of what you'd find for them. Happy days!
You're right when you say the machine code doesn't matter so much anymore. The systems have so much power, and the compilers/optimizers are so freaking good that one seldom needs to go get his hands dirty anymore. But there will always be advantages to talking to the chips directly, particularly in less powerful devices, or outdated devices you want to keep as competitive as possible with the newer-tech computers.
MC may look blocky and pixely, but it is a beast of a resource user. The game world is all voxels, and completely changeable by the user. Go try to build a new town in Skyrim, complete with underground dungeons. Ain't happening! You're obviously in tune with the reality of computer tech. I'm a bit surprised you're dismissing the need for good software tech in MC so cavalierly.
-
View User Profile
-
View Posts
-
Send Message
Retired StaffI haven't talked to him in like 20 years, but the last time I did, I reminded him about that incident.
You know that shirt that says "I test in production"? That's all we had, back then. Just the one machine. The live one. And everything we did had to be tested there. Hence my boss's disaster, and the resulting scramble to restore something, anything, from our backups. The error was a small one -- he was setting a register to point to the start of the intended buffer (switching between two) and was thinking offsets, not absolutes, so he zeroed it instead. Just a minor thinko. But since this thing was bypassing the OS entirely and doing direct disc writes, nothing caught it before he set it loose on the computer, and the company. (compared to that, the fact that I managed to crash the computer during hourly data collection with a "hello, world" program is nothing, though the lynch mob that formed outside my office probably didn't agree)
This whole thing is making me feel old. The reason the disaster-creating program was written in assembler in the first place was that it was listening to the high-speed data line and had all it could do, when optimized like hell, to write everything it received to a disc buffer, to be processed later by other programs. (the data in question was concentrated at certain times, so the processing programs could take a lot longer to deal with it, once it was safely on disc) What's scary is how fast the "high-speed" line wasn't: 1200 baud....
It's not the graphics that are such a resource hog, though. It's the data mangling, er, management, that keeps track of the status of every single block. That's not something that direct access to graphics hardware would change.
By the way, it's great to be able to have an interesting discussion about programming here. Thanks to both of you! Rep given....
The golden age: it's not the game, it's you ⋆ Why Minecraft should not be harder ⋆ Spelling hints
I'm still curious about the next-gen versions of Minecraft as well. I kind of wish we could have gotten some gameplay. Even though we basically know what it will be I would like to rest easy seeing some footage of the PS4/XB1 version.
Watching the three of you interact was like watching a Disney movie... You started things off peacefully, some contention grew, you overcame it and now you're all friends again. And, I learned something along the way.
* Bows *
Not much contention, really. My frustration was with some clueless and persistent commentary about moving the code from one system to another, and expecting it to work. That did not come from Akynth, Latrakx or Janx. My conversation with Akynth is more along the lines of how deeply into the console's hardware we want to go in order to produce a better-running, better-looking game. Not a fundamental disagreement by any means.
And now we shall buy everything you like!
We already own Star Wars so I guess we should buy, Game of Throne, Star Trek and Minecraft just to be sure we can keep our monopoly in everything!
Just have to love it when someone changes the specs when comparing with and without optifine..
Wut.
Disney is a multi-trillion dollar company. Mojang can't even touch Disney.
I also wish there was some next-gen Minecraft gameplay just to see what it will be like. Hopefully soon before launch.
Regarding how new Mojang is, in relation to their
sice(I can't really think now sorry, read as "how big they are") I think you could possibly say that Mojang have been doing better than Disney lately, but if you literally compare the amount of money they have.. nope.Just have to love it when someone changes the specs when comparing with and without optifine..