I didn't have any problems with reading the site at the time of this posting, but I can see where his headaches with C++ might have come from. The MSVC versions of STL hasn't been around in a standard form for very long, although the MFC library has been. This is most likely the grounds for the complaint. And the MFC does not make for easy portability to native Linux/Unix environments.
Agreed. Even if portability is not a concern, using STLPort is almost a must. And MFC is a fairly ugly piece of goop. But your GUI should be abstracted away in a different component. (As you mention later in your post.)
Another problem with C++ which has been bothering me, and I would presume, the developers of Peekabooty, is the tendency towards static compilation and inclusion of everything. I looked at the source files here, and the sheer number of include-files compared to source files indicate that this probably does not compile quickly.
This is a pretty much solved problem. I reccomend Large Scale C++ Software Design by John Lakos. Google for redundant #include guards, pimpl idiom, and handle/body pattern.
There is a way around this, if the application can be divided into several major and fairly independent components which then are compiled and linked as a number of dynamical libraries (.DLLs on Windows,.so on Linux and Unix). Now, with proper design, recompiling the whole lot is not necessary for smaller changes within one of the parts where no changes in this part has taken place. The trick here is encapsulation: do not let code in any one part know about any of the internal structure of code in any other part.
You've gotta watch out for longer link times if you're statically linking and longer load times if you're dynamically linking.
Please read the slashdot terms of use. You are only allowed to make those kind of jokes about Microsoft. Please keep this in mind in the future before you make a negative comment about anybody else.
The EULA was recently amended to include SCO. Sheesh don't you ever read the EULA?
That is true. However, if you install the newest DirectX (which will install no matter how shitty your pc is), and you try to play a game written for say a GeForce4 and you have a TNT2, then your pc can figure out what the card should do and what the cpu should do.
If you're saying that the performance of a GF4 can be equivalent to the performance of a TNT2 + fast CPU, then you my friend are on crack.
So, there is no reason for game designers to code to the least common denominator, they just have to code for the newest DirectX/OpenGL and the user's pc turns on available options for their card, and disables the others.
When you say "user's pc" I hope you mean "configuration item in application program". The app can make an intelligent guess at what features to turn on, but the user still may have to decide what to do to get acceptable performance.
There is some stuff that can be done in software on the CPU fast enough. But that's a pretty short list. If you don't believe me, turn on NVIDIA's emulation driver and try out a couple of the demos at Humus' site. If you don't have an NV30, you're SOL.
The dev still has to work his ass off to make sure that the app will run at 30fps on a GF2.
When new apis emerge that let you use the video card to do more stuff it is very difficult to learn that much more crap.
Agreed.
Nobody, sans Carmack, knows this stuff well enough that they can use the graphics card 100% of the time it is possible and better to do so.
The card that is supposed to be able to run Doom3 at full-blast is a GF3. A card that is about 2 years old. And careful with the JC word, you wouldn't want others to mistakenly persume you were an easily blinded fanboy. There are tons of knowledgable developers out there that don't have the same noteriaty. (I'm not saying that I'm one of them.)
However, I do urge game developers to try to use the GPU more than the CPU. It results in many advantages for the gamer.
You say that as if developers don't understand this concept or aren't even trying.
Well duh. It's called the lowest common denominator. The game has to run well on the minimum requirements machine. And the game has to be solid on the recommended requirements machine. It's called scale. You have to support the greatest number of users by putting in a reasonable amount of effort.
Newer features are exposed in newer drivers. So they may be buggy and perform sub-optimally. There's a learning curve. And enough newer hardware is difficult to get for the developer, how many users will have it?
Build a modular engine. And try to squeeze in that feature in the next iteration.
I graduated at the end of summer of last year. It's taken me 8 months to find a job. I start next week. (Yeah for me!!! I rule!!!)
I have $10,923.47 (yes, I've got it down to the penny) in student loans that I have to pay off. I applied for an interest relief extension. My first payment is due in October.
My job will pay about $50k annually. So my loans about 1/5th of my annual salary. That is manageable.
However, I've incurred about $5k in credit card debt in the last 8 months that I didn't have a job. That is still easily manageable since I've spent the last 4 years budgeting $1000 per month in expenses.
If everything goes right, I should have my debts paid off in less than a year.
I saved some money beforehand. I was in the coop program and earned money that way. Bummed some money off of my parents. Applied for bursaries. Worked part-time during one of my semesters.
Btw, that's all in Canadian funds at a Canadian university. I feel bad for you poor American bastards. My parents and working-class family immigrated to Canada in the 70s. I can't see myself being able to make it through a good school if I was an American. Family members that immigrated to the States are having a pretty tough time comparatively.
(That last paragraph was meant to be a troll or flamebait. Just venting a little frustration at the current state of the world.)
That's not the case. I can't explain it other than saying that there is a design quality and esthetic that is different in the Apple products. You won't believe it until you own one, but once you do, you understand the price difference, and realize it is negligible... that in fact all MP3 players are not the same. All computers are not the same.
It's called polish. Apple polishes the poop out of their products. And that's what you are paying a little bit extra for.
If you play a lot of games, you can see the polish in games as well. The difference between GTA3 and other games on the market is polish. Same thing with Shigeru Miyamoto's games. You can "feel" the polish in the games.
And that whole French Revolution thing. You know, the whole creation of democratic systems thing. Like giving rights to people and stuff. And that whole parliament thing. Not to mention constitutions.
To clarrify, I do compile my own Mozilla optimized specifically for my Athlon with extra libraries and debug info stripped. No composer, no mail, no nothing. It takes about 3 seconds to launch Mozilla. Just to clarify on the java program. I failed to mention it was a Swing Hello World program pulled out of Learning Java. Here it is:
public class HelloJava2 extends JComponent implements MouseMotionListener {
int messageX = 125;
int messageY = 95;
String theMessage;
public HelloJava2( String message )
{
theMessage = message;
addMouseMotionListener( this );
}
public void paintComponent( Graphics g )
{
g.drawString( theMessage, messageX, messageY );
}
public void mouseDragged( MouseEvent e )
{
messageX = e.getX();
messageY = e.getY();
repaint();
}
public void mouseMoved( MouseEvent e )
{}
public static void main( String[] args )
{
JFrame f = new JFrame( "Hello World" );
f.addWindowListener( new WindowAdapter()
{
public void windowClosing( WindowEvent we )
{ System.exit( 0 ); }
} );
f.setSize( 300, 300 );
f.getContentPane().add( new HelloJava2( "Hello Foo" ) );
f.setVisible( true );
} }
This program takes about 3 seconds to load on my machine as well. Swing is a pleasure to code with but it runs like a slug. I'm not in the habit of complaining about the moderation around here, but whomever moderated my original post as 'overrated', that is cheap.
Why would you hope that "...Java will be gone for good"? Java is a great language/platform and the only seriously competition to.Net. Are you dying to see everything gobbled up by the Evil Empire??????????
If Microsoft is the Evil Empire, then Sun is Lando Calrisian.
Secondly, Java isn't a great language. Java is a pretty good OO language. It is also pretty condescending. It assumes that the programmer is stupid and takes features away.
And it isn't a very good platform. It is very slow. It takes longer to launch "Hello World" on my machine then it takes to launch Mozilla.
To get back on topic. Hopefully Sun is bought out. Maybe that'll change the arrogance that Java was created in. Maybe it'll be open up more. Maybe it'll get ANSI/ISO standardization. Maybe the crappy JVMs out there will get reimplemented. Maybe purchasing Sun hardware won't be so frickin expensive. Maybe someone other than Sun will be able to repair their hardware.
It's better with binary data. And works well for my code since I'm prone to changing directory paths. There's an explicit svn mkdir command.
Installation was kind of a pain. That's when you can tell that it is still an alpha project. Other than that, I haven't had problems.
If you're really concerned, stick with CVS until Subversion hits 1.0. After that, CVS should be buried, cremated, bronzed, or whatever you choose to do after its death. Although annotate is not planned until after 1.0.
Keep watching Issuzilla over at tigris.org to see how close Subversion is getting.
A ditto to that. I'm using Subversion right now. I'm digging it for my personal stuff at home. I like having version tracked directories.
I just got a job. Yeah for me!!!! And we're using Perforce. I can't make an intelligent judgement about it yet. I also want to try BitKeeper. I'll probably switch over to it at home once I'm knowledgeable about Perforce. Then I'll be able to make a pretty good comparison.
The framerates were very similar - the.NET code lost some benchmarks, but it won a few and on the vast majority, they were within a few percent.
Is this the.NET beta that you speak of? If it is, I hope you realize that your are breaking the NDA that you signed. I believe benchmarking.NET is still under NDA. But of course, I am not a llama.
I get phone, long distance, and ADSL service from Telus. They have the shitiest, most cryptic bills in the world. You have to wait forever to talk to someone about repairs or your bill. They fucked up my ADSL service twice. The guy that came in to install it short circuited the lines and I did not have phone service for a week. My parents had ADSL installed. The repair guy came in Friday. Decided not to finish up and left the phone unuseable until Monday.
They subscribed me to extra services without my consent. And you don't get the discounted rate for ADSL unless you purchase long distance and an extra bundle from them.
I plan to switch to Sprint eventually. Whenever I can get a good long distance deal. And I'll switch to Shaw eventually as well for broadband.
Unfortunately, Telus is the only way to go if you are going to get a cell phone. They have the best network, phones, and prices here in Vancouver. But I bet their service is horrible too.
Of course, the downside is that you'll chew up serious amounts of offscreen video memory (aka texture memory). You might need to implement some code that "swaps" unmapped windows into system memory.
FPS suck on consoles because of this. But it can be done. Halo, Goldeneye, and Metroid Prime are good examples. Although you can successfully argue that MP is not an FPS.
There isn't supposed to be a huge multiplayer element to Doom3. So computer gamers blowing away Live! users won't be a concern.
3) Slow GFX Chip
4) Slow CPU
I'm not sure what's sitting in your boxen, but I have an Athlon 1333 and an NV22 (GeForce3 Ti 500). But a game on the XBox should be able to outperform my machine. Mostly because it is easier to optimize for a fixed platform. My machine should be able to play Doom3 at "full impact". Here are a few statements by Carmack himself to that effect.
Personally, I'll probably get a GeForceFX when Doom3 comes out. Unless ATI drastically improves their Linux drivers.
5) No Hires GFX
I'm assuming you mean High Resolution. Console gamers are weird like that. They call Halo beautiful. I find it butt-ugly because of the crap-assed resolution.
Uninformed artists unite! Political messages other than universal messages ("be nice to everyone", "love is good" etc.) are a classic sign of poor storytelling...blah, blah, blah
Uninformed posters unite! I had the pleasure of attending a "Violence in video games" roundtable at the Vancouver chapter of the IGDA. Brooke Burgess, a producer/director/writer of Broken Saints, was part of the roundtable. He is a very intelligent, informed, eloquent speaker.
Maybe you should look in the mirror before calling someone uninformed. Or maybe you could do some reasearch. You know...maybe to "inform" yourself.
Fountain soda tastes far better than canned or bottled soda.
Are you on crack?...(or coke)
Canned coke is the way to go. Always perfectly chilled, doesn't lose carbonation (sp?), and doesn't taste all syrupy. The fountain is horrible if you are cheap and don't mix your syrup with filtered water. There's crud that builds up in the lines and ends up in your glass.
The ACM needs to step up to the plate on this issue. It needs to setup a University accreditation (sp?) system. If you graduate from accredited universities, you should be known as an ACM Computer Scientist.
I don't buy CDs, games, consoles, etc from Walmart. If Walmart chooses to force artists (that includes game developers) to censor their work, I choose not to purchase media from Walmart.
You're talking about Stellar Deep. It's mentioned in the article. (Hint Hint. Read it)
It's a (I'm coining a new term) KMMOG. Kinda Massively Multiplayer Online Game. It's geared at about 5000 subscribers rather than 400,000 like other online games.
CBC chose not to "embed" reporters in the warzone and instead decided to focus on other angles. A pretty good choice since what they would be able to report would have been strictly limited by the military and CNN, FOX, NBC, would be reporting the same thing anyway.
My other choices are the BBC and Google News since it surveys US newscasters.
Although I disagree on this issue, I fully respect your opinions.
Just to add a little bit. The outcome after Serbia was that Milosivec was put in front of a war-crimes tribunal. Since the US did not take the UN path, good luck trying to get Hussein in front of a tribunal.
They pretty much have to kill him wild-west, cowboy style. Sure it gets the job done, but it is not a very good solution in the long term. Exhile is not a very good option. Hussein in exhile would make him attack using strategies similiar to terrorists, while at the moment he is using strategies used by conventional nations.
It sets a bad precident and may lead to chaos. There are similiar situations going on elsewhere in the world with leaders using this as war-bait. Such as Israel/Palestine, Russia/Chechneya, China/various neighbours, and dozens of other nations in Africa.
Agreed. Even if portability is not a concern, using STLPort is almost a must. And MFC is a fairly ugly piece of goop. But your GUI should be abstracted away in a different component. (As you mention later in your post.)
Another problem with C++ which has been bothering me, and I would presume, the developers of Peekabooty, is the tendency towards static compilation and inclusion of everything. I looked at the source files here, and the sheer number of include-files compared to source files indicate that this probably does not compile quickly.
This is a pretty much solved problem. I reccomend Large Scale C++ Software Design by John Lakos. Google for redundant #include guards, pimpl idiom, and handle/body pattern.
There is a way around this, if the application can be divided into several major and fairly independent components which then are compiled and linked as a number of dynamical libraries (.DLLs on Windows, .so on Linux and Unix). Now, with proper design, recompiling the whole lot is not necessary for smaller changes within one of the parts where no changes in this part has taken place. The trick here is encapsulation: do not let code in any one part know about any of the internal structure of code in any other part.
You've gotta watch out for longer link times if you're statically linking and longer load times if you're dynamically linking.
The EULA was recently amended to include SCO. Sheesh don't you ever read the EULA?
If you're saying that the performance of a GF4 can be equivalent to the performance of a TNT2 + fast CPU, then you my friend are on crack.
So, there is no reason for game designers to code to the least common denominator, they just have to code for the newest DirectX/OpenGL and the user's pc turns on available options for their card, and disables the others.
When you say "user's pc" I hope you mean "configuration item in application program". The app can make an intelligent guess at what features to turn on, but the user still may have to decide what to do to get acceptable performance.
There is some stuff that can be done in software on the CPU fast enough. But that's a pretty short list. If you don't believe me, turn on NVIDIA's emulation driver and try out a couple of the demos at Humus' site. If you don't have an NV30, you're SOL.
The dev still has to work his ass off to make sure that the app will run at 30fps on a GF2.
When new apis emerge that let you use the video card to do more stuff it is very difficult to learn that much more crap.
Agreed.
Nobody, sans Carmack, knows this stuff well enough that they can use the graphics card 100% of the time it is possible and better to do so.
The card that is supposed to be able to run Doom3 at full-blast is a GF3. A card that is about 2 years old. And careful with the JC word, you wouldn't want others to mistakenly persume you were an easily blinded fanboy. There are tons of knowledgable developers out there that don't have the same noteriaty. (I'm not saying that I'm one of them.)
However, I do urge game developers to try to use the GPU more than the CPU. It results in many advantages for the gamer.
You say that as if developers don't understand this concept or aren't even trying.
Newer features are exposed in newer drivers. So they may be buggy and perform sub-optimally. There's a learning curve. And enough newer hardware is difficult to get for the developer, how many users will have it?
Build a modular engine. And try to squeeze in that feature in the next iteration.
I have $10,923.47 (yes, I've got it down to the penny) in student loans that I have to pay off. I applied for an interest relief extension. My first payment is due in October.
My job will pay about $50k annually. So my loans about 1/5th of my annual salary. That is manageable.
However, I've incurred about $5k in credit card debt in the last 8 months that I didn't have a job. That is still easily manageable since I've spent the last 4 years budgeting $1000 per month in expenses.
If everything goes right, I should have my debts paid off in less than a year.
I saved some money beforehand. I was in the coop program and earned money that way. Bummed some money off of my parents. Applied for bursaries. Worked part-time during one of my semesters.
Btw, that's all in Canadian funds at a Canadian university. I feel bad for you poor American bastards. My parents and working-class family immigrated to Canada in the 70s. I can't see myself being able to make it through a good school if I was an American. Family members that immigrated to the States are having a pretty tough time comparatively.
(That last paragraph was meant to be a troll or flamebait. Just venting a little frustration at the current state of the world.)
It's called polish. Apple polishes the poop out of their products. And that's what you are paying a little bit extra for.
If you play a lot of games, you can see the polish in games as well. The difference between GTA3 and other games on the market is polish. Same thing with Shigeru Miyamoto's games. You can "feel" the polish in the games.
Same thing with Apple products.
I wish the Linux world would pick up on that.
Nobody is legalizing pot. The possesion of 30 grams or less of marijuana is being decriminalized.
There's a huge difference. Instead of being thrown in jail, you'll receive a hefty ticket.
It won't bog down the legal system. It won't be on your record.
Turn off your computer and read a book buddy.
in an object-oriented language. (We won't mention stuff like operator overloading).
You're comparing apples and oranges when you compare Java and Perl. And comparing C++ and Java is also apples and oranges.
With the addition of generics, it can be said that Java has C++ envy. Java is a pretty young language. Let's see how long it stays clean and elegant.
Just to clarify on the java program. I failed to mention it was a Swing Hello World program pulled out of Learning Java. Here it is:
This program takes about 3 seconds to load on my machine as well. Swing is a pleasure to code with but it runs like a slug.
I'm not in the habit of complaining about the moderation around here, but whomever moderated my original post as 'overrated', that is cheap.
If Microsoft is the Evil Empire, then Sun is Lando Calrisian.
Secondly, Java isn't a great language. Java is a pretty good OO language. It is also pretty condescending. It assumes that the programmer is stupid and takes features away.
And it isn't a very good platform. It is very slow. It takes longer to launch "Hello World" on my machine then it takes to launch Mozilla.
To get back on topic. Hopefully Sun is bought out. Maybe that'll change the arrogance that Java was created in. Maybe it'll be open up more. Maybe it'll get ANSI/ISO standardization. Maybe the crappy JVMs out there will get reimplemented. Maybe purchasing Sun hardware won't be so frickin expensive. Maybe someone other than Sun will be able to repair their hardware.
It's better with binary data. And works well for my code since I'm prone to changing directory paths. There's an explicit svn mkdir command.
Installation was kind of a pain. That's when you can tell that it is still an alpha project. Other than that, I haven't had problems.
If you're really concerned, stick with CVS until Subversion hits 1.0. After that, CVS should be buried, cremated, bronzed, or whatever you choose to do after its death. Although annotate is not planned until after 1.0.
Keep watching Issuzilla over at tigris.org to see how close Subversion is getting.
I just got a job. Yeah for me!!!! And we're using Perforce. I can't make an intelligent judgement about it yet. I also want to try BitKeeper. I'll probably switch over to it at home once I'm knowledgeable about Perforce. Then I'll be able to make a pretty good comparison.
Is this the .NET beta that you speak of? If it is, I hope you realize that your are breaking the NDA that you signed. I believe benchmarking .NET is still under NDA. But of course, I am not a llama.
They subscribed me to extra services without my consent. And you don't get the discounted rate for ADSL unless you purchase long distance and an extra bundle from them.
I plan to switch to Sprint eventually. Whenever I can get a good long distance deal. And I'll switch to Shaw eventually as well for broadband.
Unfortunately, Telus is the only way to go if you are going to get a cell phone. They have the best network, phones, and prices here in Vancouver. But I bet their service is horrible too.
Filters out the dust pretty well. And your computer room won't stank either. (Yes I meant "stank")
OpenGL already does this for you automagically.
Check this and this.
2) No Keyboard
FPS suck on consoles because of this. But it can be done. Halo, Goldeneye, and Metroid Prime are good examples. Although you can successfully argue that MP is not an FPS.
There isn't supposed to be a huge multiplayer element to Doom3. So computer gamers blowing away Live! users won't be a concern.
3) Slow GFX Chip
4) Slow CPU
I'm not sure what's sitting in your boxen, but I have an Athlon 1333 and an NV22 (GeForce3 Ti 500). But a game on the XBox should be able to outperform my machine. Mostly because it is easier to optimize for a fixed platform. My machine should be able to play Doom3 at "full impact". Here are a few statements by Carmack himself to that effect.
http://slashdot.org/comments.pl?sid=33453&cid=3619 372
http://slashdot.org/comments.pl?sid=38207&cid=4091 191
Personally, I'll probably get a GeForceFX when Doom3 comes out. Unless ATI drastically improves their Linux drivers.
5) No Hires GFX
I'm assuming you mean High Resolution. Console gamers are weird like that. They call Halo beautiful. I find it butt-ugly because of the crap-assed resolution.
Uninformed posters unite! I had the pleasure of attending a "Violence in video games" roundtable at the Vancouver chapter of the IGDA. Brooke Burgess, a producer/director/writer of Broken Saints, was part of the roundtable. He is a very intelligent, informed, eloquent speaker.
Maybe you should look in the mirror before calling someone uninformed. Or maybe you could do some reasearch. You know...maybe to "inform" yourself.
Are you on crack?...(or coke)
Canned coke is the way to go. Always perfectly chilled, doesn't lose carbonation (sp?), and doesn't taste all syrupy. The fountain is horrible if you are cheap and don't mix your syrup with filtered water. There's crud that builds up in the lines and ends up in your glass.
The ACM needs to step up to the plate on this issue. It needs to setup a University accreditation (sp?) system. If you graduate from accredited universities, you should be known as an ACM Computer Scientist.
It's a (I'm coining a new term) KMMOG. Kinda Massively Multiplayer Online Game. It's geared at about 5000 subscribers rather than 400,000 like other online games.
Sounds pretty cool.
CBC chose not to "embed" reporters in the warzone and instead decided to focus on other angles. A pretty good choice since what they would be able to report would have been strictly limited by the military and CNN, FOX, NBC, would be reporting the same thing anyway.
My other choices are the BBC and Google News since it surveys US newscasters.
Don't forget CBC Radio. http://www.rcinet.ca/
Just to add a little bit. The outcome after Serbia was that Milosivec was put in front of a war-crimes tribunal. Since the US did not take the UN path, good luck trying to get Hussein in front of a tribunal.
They pretty much have to kill him wild-west, cowboy style. Sure it gets the job done, but it is not a very good solution in the long term. Exhile is not a very good option. Hussein in exhile would make him attack using strategies similiar to terrorists, while at the moment he is using strategies used by conventional nations.
It sets a bad precident and may lead to chaos. There are similiar situations going on elsewhere in the world with leaders using this as war-bait. Such as Israel/Palestine, Russia/Chechneya, China/various neighbours, and dozens of other nations in Africa.