Archived

This topic is now archived and is closed to further replies.

VXG

EVERYONE READ THIS

Recommended Posts

OK...I''m writing this post to hopefully answer some vital questions and "tune" the way of thinking and approach to programming of all newbies and many experienced programmers and game developers out there. This post will most likely have two outcomes: either a major flame war, or a major revolution in approach to development. Hopefully, it will be the second one. Everyone feel free to comment on the subjects I discuss and ask questions. Here goes... Everyone wants to be like John Carmack (the creator of Doom and Quake) these days, yet do almost nothing about it - that''s the problem. It seems that all newcomers to the programming industry think that they can just learn C++, then make Quake 4 and tell Carmack that he can go home now. Well it''s not like that. Compilers and High-Level Languages were initially designed with the intention of providing assembly programmers with a quicker and easier way of development. However this new invention was quickly abused and the phenomenon of "I know how to program but I don''t know how it works" programmers was created. I''m not bashing anyone here, just trying to explain something that has been misunderstood by many people. Just think about it...If all the real programmers would instantly disappear then what would happen to the industry? The answer is long yet simple - no new graphics cards coming out every month, no new operating systems, no new consoles, no new 3D engines, no Doom 3, no DirectX 9, no OpenGL 2.0...no technological progress in other words as far as computer industry is concerned. And considering the fact that technology rotates around the computer industry, things would be messed up badly. As far as assembly language goes, I think it''s about time someone noticed that nVidia, ATI, AMD, Intel etc. release a new product each month. And no, their hardware does not understand high-level languages, just like it doesn''t understand plain english. Of course, this is rather obvious, but then why is it that game developers want to make their game engines as good as possible relying on the raw processing power of modern graphics cards, but ignoring their new technological advancements? C++ is definitely a powerful language, but its core power is limited to the technology that was available at the time of it''s creation. So why is everyone speaking against assembly language, yet complaining that consoles are years ahead of PC''s when gaming is concerned? Have you noticed that the progress made in the software industry has started to decline? New operating systems, games, you name it, have started to be cloned and mass-produced, resulting in countless repetitions of the same concepts. How many "different" operating systems are there? 10''s? 100''s? Yet many of them are the same thing with a different flavour. How many cloned games are there? Countless! The game developers in this community, as well as the commercial gaming industry, spend so much time on making "new" engines and games. OK, so you''ve just made the one hundredth clone of quake. So what? Those who have just made the one thousandth clone of Tetris, no matter how crap and simple it is, have potentially achieved more than you have because starting with small games like Tetris is the best way to learn programming. Then these makers of the tetris clone can apply their new skills to make something which is really NEW, instead of going on by spending months to clone the latest hit by ripping apart its source and modifying it to make a game which adds nothing new to the genre or to the technology. I''m not saying that cloning is the totally wrong thing to do. It would be the totally correct thing to do if you add something new to each clone you make. Even a small improvement, a single bit of code which employs a new hardware capability or a new algorithm, counts. It takes some knowledge and experience to understand this, but even after having done so most programmers just happily go on making clones of already existing technology as if nothing ever happened. My question is why? It doesn''t take alot of brain power to understand what the word "clone" means and that you''re developing something which already exists. Reinventing the wheel. So why does everyone carry on going in the wrong direction? To understand this even better let''s think about some examples of what I''ve just babbled about. Every new gaming console creates chaos in the gaming industry. Counter-Strike is still the most popular multiplayer game, although it originated from an ancient game, considering the fact that Half-Life was made from a highly modified Quake 1 engine. Every new engine from Carmack brings a revolution to the gaming industry. Updates on the development of Neverwinter Nights has RPG fans drooling all over their monitors. It seems that new series of Final Fantasy can go on being released forever and manage to gain more and more popularity each time. What do all these examples have in common that makes them so popular? - the element of technological progress. However, why are we no longer excited when hearing the news of the release of another Command & Conquer clone? Well simply because it''s nothing to be excited about, since it''s the same concept with supposedly new features. But we know that there''s nothing new to see in it, so we don''t bother looking (except for those who can''t think of anything better to do than play games all day). So what''s the conclusion of this story? WAKE UP! It''s time to realise that we''re sinking. Start using your time productively, rather than spending it on "reinventing the wheel" over and over again. The infamous newbie question "How do I make Quake?" can be answered much more simply than you think - don''t make quake, make something with your own design in it and make sure that it''s worth the effort. Also understand that either you implement a new concept or technology in your project or it just won''t be worthy. Another question answered - "How do I become like Carmack?" - you spend your time on learning useful and powerful things and making sure that you learn from the start. ie: don''t learn any useless/dead programming languages and don''t jump into C++ thinking that because it is the industry standard you''ll become a guru if you learn it. Start off from the beginning - learn assembly language and how hardware deals with your code. Afterwards you can jump into C++ knowing that you''re on your route to success. ie: You can''t learn Nuclear Physics without learning basic maths. Many people speak against assembly. But what if you actually used your brain to think about whether it''s really that bad? You''ll actually figure out that due to new processor technologies like MMX, SSE, 3DNow... and graphics PROCESSING units on which modern graphics cards are based, assembly language is the only way to making better software. Even if C++ had support for these technological advancements, it still wouldn''t be possible to become an expert without learning how programming works at hardware level. When hearing expert programmers saying "I don''t use assembly that much anymore" people tend to get the impression that assembly is a waste of time. Well it is the opposite. It is not used that much anymore because compilers and high-level languages were created for providing programmers with a quicker way of development, PROVIDED THAT THESE PROGRAMMERS KNOW HOW PROGRAMMING IS IMPLEMENTED AT LOW LEVEL. In other words, if you want to become real experts LEARN ASSEMBLY. It is true that assembly is hard to get a hold of, but once you know the basics it is MUCH EASIER to master than High-Level languages because there are no complicated functions, loops, algortihms etc. to learn. One important advice, however, is to start off by learning the basics of a High-Level language (preferrably C++, Java or Visual Basic) in order to understand what programming is all about and once you''re confident that programming is your thing you can move on to learn assembly language. Believe it or not, all those new CPU''s and GPU''s produced by Intel, AMD, nVIdia and ATI are not made to make the list of features of graphics cards and processors look cool. They were made to give developers more power and control, which can only be achieved if you know how to use the new technology. This is the reason for which console games look much better than PC games - power and control provided by modern hardware is employed in the games'' engines, while the PC, which has alot more power than consoles, suffers from an "I''ll buy a new PC and my 3D engine will be faster" attitude. I certainly hope this post has answered the newbie programmers'' questions as well as giving inspiration to the experienced programmers. Now I''ll either have my ass flamed for "disturbing the peace" or get some intelligent and understanding replies

Share this post


Link to post
Share on other sites
You make a few interesting points, but overall I''d have to disagree with my interpretation of what you have said.

Before I give my opinion, I''ll summarize what I consider your opinion (just to avoid any confusion).

You want us all to stop writing the same old clones and spend our efforts on becoming kick ass assembler programmers so that instead of us wanting to be the next Carmack, Carmack wants to be the next us. You believe that game inovation is derived mainly on the advancement of technology instead of creativity (since you made no mention of the creative aspects of games I''ll assume this is true).

Ok, here''s where I throw my opinion in.

If that''s what you want to do, great. All the power to you. For many of us, we are trying to write games based on our own ideas of what we want the game to be like. Sure, some (or many) aspects might be the same as other similar titles, but it''s still our game, our way.

I personally believe that technology is only one small part of making a sucessful game. Along with it, the programmer must write all sorts of cool code for AI, user interfacing, networking, and so on. There is also the artists and musicians who bring vibrant life to the code we programmers create. Finally, you can''t forget the foundation of every good game. A solid playable game design. Without it, you can have all the features in the world and you will end up with crap that nobody wants to play.

After talking with a few other members on this and other sites, it''s clear that many of us are getting tired of the "Technology Push" that has dominated the game industry. Yes, Technology is good, but focus on the game. Believe it or not, you can still write the next best game with 2-5 year old technology. You just need an imagination.

borngamer

Share this post


Link to post
Share on other sites
Whereas I agree that it is ridiculus that far too many "I know how to do it, but not how it works" programmers flood the market today, I do not agree that we should move backward.
C++ and (gag) Visual Basic are the blue collars in programming. If someone wanted to make Doom 4 in ASM, it would take three and four times as long. Here is the catcher: we DO need to add hardware enhancements to our compilers. It is possible for the developers of compilers, like (my favorite) Borland, and (vomit) Microsoft, to add these enhancements to their compilers, or leave it open for OTHER programmers.
And, yes, your column was too long winded
-- Crash Matrix "Still the Man"

Share this post


Link to post
Share on other sites
As a member of the class "learned some asm" and "continuing to learn asm" I'm afraid this topic makes little sense. I agree that knowing what computer hardware is and how it actually works is important (and may improve results), but it isn't required to program.

I doubt that all people who know asm, know about transistors. Yet modern CPU’s are built upon that foundation. So, my question is, do I learn how to make transistors?

Next transistors are made by (well many substances) molecule(s) X,Y,Z. Do I need to know how molecules X,Y,Z interact to effectively program? Obviously not.

A certain level of abstraction is required for progress. Do you know how to calculate pi off the top of your head? No, but you (hopefully) know what pi is, and how to use it.

Point?

You can use something without knowing how it works. That's part of the reason most people can do math. They don't really know how the equations work, or how the variables have certain relationships. They just know that by doing certain things, they can produce certain results.

PS Creativity has almost nothing to do with language choice. You can tell the same story in English and French, and have it mean the same thing. You can write a game in C, then in asm, and it could play the same way.



If all that matters is what you get in the end, why go through life?
~Michael Sikora


Edited by - guardian_light on February 5, 2002 4:06:13 PM

Share this post


Link to post
Share on other sites
What are you babling about? are you bashing C/C++ over ASM? or are you bashing FPS clones?

It doesnt really matter what language you use to program as long as you get the spected results, and in case you dont know, inline assembly is part of C/C++ and Pascal, you can code critical parts of a game in ASM with those.

I dont like FPS''s (which seems to be your favorite gendre) as much as RPG''s, RTS''s or TPS''s, but in any case I think that what makes a good game is not graphics, engine or gendre, but a good storyline, which is why I dont care about Carmack, I dont want to be the next Carmack, no doubt he is a great programmer, but I would rather be the next Hideo Kojima, anyone can learn to program, but only a few can give you the thrills of Metal Gear.

Share this post


Link to post
Share on other sites
Maybe you should join our DevTeam VXG, you sound like you know what you are talking about..
And no, our game in production is not a clone

"Everyone wants to be like John Carmack (the creator of Doom and Quake) these days, yet do almost nothing about it - that''s the problem"
What are you doing about it ?(not an attack)

Share this post


Link to post
Share on other sites
Alough you have valid points your : if your not pushing tech in your project stop it. Well this would mean that almost all poeple would stop devloping. Im not at that level yet, I cant push tech and anyway I don`t even have a system with the latest video card and everything. But who cares ( you ? ) certainly not me. You seem to be taking this at hearth, thinking you will start a revolution which will save the game industry !!!
- If your not pushing tech, stop,
- But im having fun !
- Fun ? Since when did gaming become about fun, if you like programming and your not pushing the envlope at the same time you must be in the wrong field.
- But I can program even tough im not at this level. I'll push tech later. Who`s gonna stop me ?
- I WILL !!! BUY THE LATEST TECH and if you dont have the money whore yourself for my cause ! <thunderous voice> I WILL START A REVOLUTION!!! </thunderous voice>

WHO DO THEY
THINK THEY'RE
FOOLING : YOU ?





Edited by - bleakcabal on February 5, 2002 4:27:06 PM

Share this post


Link to post
Share on other sites
You didn''t understand my point completely...

I don''t mean that everyone should just drop out on whatever they''re doing and rush to become single-minded, kick-ass assembly programmers. I''m actually saying that many people look up to Carmack (and since he is looked up to I don''t think he wants to "degrade" and become like us ) and want to be able to do what he can. After all, his engines are undoubtedly the best ones out there. I''m saying that everyone who is serious about all this stuff has to learn assembly in order to achieve the maximum performance from today''s hardware. I might be wrong, but somewhere I''ve picked up the rumour that he''s currently doing some hardcore reprogramming of a Matrox driver. Considering the fact that the next game engine revolution (Doom 3) is on the horizon, it can be assumed that he has turned to assembly language and new hardware capabilities to make a new kick-ass engine. So what I''m saying is that in order to make revolutionary and jaw-dropping game engines, which is what most people here want to achieve, assembly language should be used.
In other words, the "impossible" has happened - hardware has sort of gone ahead of software, and the only way to be able to use this to your advantage is by learning to access this hardware at a low level - ie: assembly language has been resurrected. Of course, most of the game will still be done in C++(not even Carmack is crazy enough to make Quake 4 in pure assembly). Also, assembly is crucial knowledge if you want to become a kick-ass programmer. However, I''m not encouraging anyone to start writing engines in pure assembly. ONLY bits of code to improve your engines graphical capabilities and performance should be written in assembly (as well as improving your mind''s thinking capabilities ). Just imagine what you can achieve if you employ the power of AMD''s 3DNow/Intel''s SSE2 and nVidia''s new GPU - the NV25 (GeForce 4, or whatever it will be called, is coming out tomorrow (6th of February), by the way - check out www.nvidia.com). Anyway, I reckon there will be plenty of replies to my post, but I won''t ba able to reply until tomorrow, coz it''s getting late in my timezone and it''s bed time. Keep on posting, I''ll be happy to discuss this topic.

Share this post


Link to post
Share on other sites
To the best of my knowledge, the Doom3 engine preview runinng on a geforce 3 used Nvidia''s opengl extensions (pixel/vertex shaders). There may be some asm in the code, but it''s probably not to interface the hardware.

Hardware drivers are for interfacing the hardware, not home made "game" specific drivers. Besides, the gpu on the geforce3 probably uses a very unique instruction set that no one except Nvidia''s engineers know indepth.

If you could write a better interface to nvidia''s geforce4 than the engineers that work there, you''ll not only be offered a high paid job, you''d _be_ the next carmack (most likely).




If all that matters is what you get in the end, why go through life?
~Michael Sikora

Share this post


Link to post
Share on other sites
To sum up...all of you who want to be kick-ass programmers - learn C++ (C++ kicks ass, I''m not bashing it), ASM and hardware architecture(at least the basics). All of you who feel they don''t need to go this deep - no problem. I''m not bashing, humiliating or trying to make anyone feel bad. I''m just giving advice and providing an answer to a topic which puzzles many people.

Bleakcabal: My hardware is outdated too, but that''s the point - we are spoiled by this hardware rush and rather than trying to improve our development skills we rely on new hardware to do it for us.

Guardian_Light: "Do you know how to calculate pi off the top of your head?" - 22/7 is a good approximation

Kwizatz: "What are you babling about? are you bashing C/C++ over ASM? or are you bashing FPS clones?" - C/C++ is the best high-level language and FPS games feature some of the greatest capabilities. However, I don''t see any point in OVERUSED FPS clones (like Quake) - why not at least try to make something of your own design?

stevenmarky: "Maybe you should join our DevTeam VXG, you sound like you know what you are talking about.." - I am not worthy of joining the Elite ranks yet

"And no, our game in production is not a clone" - That''s the spirit

"Everyone wants to be like John Carmack (the creator of Doom and Quake) these days, yet do almost nothing about it - that''s the problem"
What are you doing about it ?(not an attack)" - I''m learning x86 ASM, C++, OpenGL, Physics and Maths

Anyway, I gotta go now, there''s loads more to say but I''m overwhelmed with all the comments and replies, so I''ll say it all tomorrow.

Share this post


Link to post
Share on other sites
If technology is the only thing driving your game it will be, withholding any amelioration, a piece of shit. Do exactly what you said and look at Counterstrike. Its as old as the earth in terms of technology, but its amazingly popular. Why do you think that is? I really feel like its going to fall to indie developers to keep the PC gaming industry alive because they aren''t governed by its laws. You see, companies make so many clones because they see that they make money, and there''s the key... money. Its all about money in this industry, so yes, I groan when I''m told that my next project is a "AOE style" RTS, but its not up to me. Its up to the suits who are ruining the industry. Businessmen can run a business. Coming from a business school I know this. They can''t run a game company. Anyway...

With all due respect to John Carmack he doesn''t really do anything amazing. He just finds ways of effectively implementing techniques that have been around for decades. BSP trees, shadow volumes, lightmaps, and almost all of the other techniques he uses have been around since the early 80''s. He''s always just been one step ahead of everyone else in practice.

I''m not sure where you intend to go with your assembly argument either. Ask Carmack what he thinks about hacking a whole 3D engine in asm. I bet you''d be REALLY pissed if you found out how many people whine because C++ is too hard...enter visual basic. You won''t find any disagreement from me about wussy programmers, they suck. Incidentally, were you aware that C++ compiles down into asm and usually produces better assembly than you can? Wait till you see what Visual C++ 7.0 can do to optimize. It''ll blow your mind.

The reason that developers don''t immediately implement spanking new technology like vertex and pixel shaders isn''t because they don''t know how to program in assembly (which has nothing to do with whether you can use new features or not), but because they have deadlines to meet. You''d be surprised how many cool features get dropped from dev. plans because of time. Its not possible to completely change your engine or all of a sudden give your artists a new feature to use every time a hardware spec changes. That''s why all the cutting edge features get used in consoles; because the spec never changes. You can plan ahead to use every single technical capability of the console to its fullest.

One last thing. I think its rather uninformed of you to generalize all programmers in the industry to the net equivalent of a whiny VB database coder. There are many extraordinary programmers out there who can code things that would make your jaw drop. You should probably be a little more informed next time you write a novel like that. It would save you some time.

Share this post


Link to post
Share on other sites
What I''m hearing you say is that the only major improvements in 3D engines come from optimizing with Assembly. I agree to some extent. Once you''ve made an engine, I suppose it''s good to go back and optimize some of the more-used functions.

However, I have to disagree with your saying that the ONLY improvements will come from using Assembly. Yeah, Quake was fast. Yeah Quake probably used alot of Assembly. But, Quake also used stuff like BSPs, and file packers, and stuff like that. There are still algorithms that we haven''t discovered (for C++) that will speed up our programs. That''s why AP computer science classes teach things like linked lists and stacks and stuff. People used regular arrays for a long time. Then they said "This arrays is hard to dynamically resize and doesn''t work well when I''ve got more than 256 items in it." Thus the linked list is born. Someone said "I want a logical way to represent processes that can be stacked up and unstacked." Thus we have the stack.

It seems to me like the only reason to use Assembly is to SPEED up applications. However, there''s also consuming as little memory as possible, making the program easy to modify, etc... and for that reason, we''ll always have room for new technology outside of Assembly.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
If you use intel/amd/etc. instructions all over the place, you will have to have several versions of your game engine or whatever. Developing three editions simultaneously will take a lot of time and effort.

If you are using, for example, Direct3D, doesn''t it already take advantage of whatever instructions your processor/video card supports? Why bother writing stuff in assembly when D3D programmers at Microsoft already have done so?

I also think that C/C++ compilers generate pretty fast code, and assembly is required only in very rare cases. In any event, assembly is hard to use (instructions are simple, but putting them together can be a challenge) and it''s even harder to modify and understand. Finally, I wouldn''t use it until the final stages of development, because of the mentioned difficulties.

I learned some 8086 ASM after learning C and C++, and I can say that while it helps to know how C is translated to assembler, it''s not required. Programs are generally best explained in pseudo-code; I doubt that you will teach someone a sorting algorithm in assembler before you explain the pseudo-code and possibly write a templated implementation in C++. In the same way, you don''t have to know asm to understand how your program works.

Remember that structured and OO programming was invented to allow larger projects to be developed, because the complexity of programs can be reduced. Why not take advantage of this? Using asm on the large scale is like reinventing the wheel.

Just because someone at NVIDIA is releasing a new chip every couple of months does not mean you should change the way your vertices are sent to the card at this rate. Constantly modifying assembly code required to interface with video driver will take time away from programming the game itself.

You forget that many people don''t own the latest hardware and therefore can''t possibly use assembly to do things. I can''t use Radeon functionality because I own a GeForce, but if I use DirectX and C++ I can ask a friend who does own a Radeon to test my game. In my case, the software I have (DX 8.1 SDK) is ahead of the hardware I own.

It''s nice to come up with a new game, but when you are learning programming you generally do something others have done before. Just like the way to learn how to program a tetris-like game is to write a tetris clone, the way to learn how to write a first-person shooter game is to create a Quake (or whatever) clone.

I''m using DirectX and C++, and don''t plan on moving to a different platform in the observable future. It''s sad that new languages such as C# and Java lack the powerful features that C++ has, most notably templates.

Share this post


Link to post
Share on other sites
I wouldn''t call this a flame, but it is critical.


The reality of your observation isn''t a loss of "grass-roots" programming or formal skills, but instead a proliferation of easy access and commercialization.

There are probably more knowledgeable computer scientists today than there were 10 years ago. There are also a lot more people who are hobbyist programmers or whoe niche program. The reality of the new programming paradigm is re-use, not as you imply waste.

You can''t compare computer game enthusiast programmers with industry game programming. Why? Most aren''t looking to break the records with games. They know a game they like and want to recreate it. As to why you see so many "clones" is simply marketing. Game budgets are also much more expensive now than back in the early, pioneering days. Art is expensive, the games are far more rich in content (not necessarily game play), and the tools are increasing in cost (motion capture?).

So, as a result, game publishers are less likely to publish games that cost millions, but haven''t been placed in the market yet. They know Quake clones sell, so they are more willing to weigh them as lower risk than say some completely new game system that no one has ever seen before. I think this tends to create your perception of "clone games".

People are code-reusing more than ever, which also generates your perception of "clones". Using most game engines over often gives the game a similar feel or constrain the developers into a certain path which makes variety difficult at times. As engines improve in flexibility, you''ll see less cloning while code-reusing.

Also, bear in mind that most people on these boards believe that getting a job in the industry is more or less contingent on their education and producing demos that demonstrate their skills. So for a programmer, creating a Quake Clone actually fits their goals and the path to them.

As for Assembly. It''s still taught, but the reality of it is that it''s no longer needed to develop software. Sure, knowing Assembly makes you a better programmer, but sometimes someone working with 90% skill still can product the same product as someone with 98% skill and they''re usualy cheaper to companies that hire them. Assembly will never just "go away" but it definitely doesn''t have the same focus of necessity it once had years ago. Assembly isn''t very "code reuseable" as a language, so C++ and others are now the norm. Plus, the compilers are much more accurate than before.

By your argument we should all be programming in byte code because it''s as pure to the machine as possible. Assembly is an abstraction for the human user. C++ is a much more effective abstraction. And since C++ and Assembly code is usually very close in performance for almost every task, why would you devote more effort and time using Assembly when C++ makes that task easier to complete?

I feel your pain. But you have to balance purity of purpose with economic reality. Yes, it would be great if everyone programmed all their games to use the best hardware in the best way. But when you got a limited budget, time lines, and market pressures from consumers, you have to sacrifice that small percentage of performance in exchange for a large percentage of completion in less time and with less financial investment.

Welcome to the capitalist system =)

R.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
I have to agree with Rube here -

Most of the gripes you have are not because of the lack of ingenuity out there but the fact that ingenuity is not rewarded appropriately. This can even be seen in some of the rare success stories of late. QuakeIII is not original at all - it''s an evolutionary step in technology of the same idea.

"Giants" and "Black and White" are exceptionally unique as was Sacrifice - but were they economically rewarded? What drives the business is sales, which means the people who play the games and thus we players are to blame as well. Everyone will buy Doom3 because they recognize it and affiliate it with previous satisfaction. Publishers know this because it is statistically true. So the answer to this part of the discussion, IMHO, is we players out there need to support games that embrace ingenuity if we want to see a change in how publishers finance new projects.

Gripe II
Learning assembly is not an answer to ''learning programming''. It is possible, very possible, to write bad assembly. Assembly, and machine are languages my friend - nothing more then a list of instructions to tell a machine what to do. If you don''t have organized, well thought out ideas on what you want the machine to do it doesn''t matter *what* format you use to tell it. Learning concepts and understanding procedural thought is what helps resolve these issues.

However, there is some validity and I understand what you are getting at. When I went into the Navy as a Nuclear Engineer they were careful to teach all of the *whys*. This makes sense as not all cases of *accidents* can be preconceived - and they rely on the operators to actively engage their brain to prevent a disaster.

So I agree here - but disagree with the solution. Validation may be with “New World Order” which from my understanding is written mostly in Assembly. I would bet though that these guys probably understand programming concepts quite well...

Gripe III
I don''t understand the fascination with "becoming Carmack" other than the fact that he writes entertainment software and has made a bundle of money doing it...

Does that answer the question? I don''t think the obsession is with *writing* Quake5 or Doom4 as much as it is the obvious vehicle to get where John is. I would love to be in his shoes - as would 50,000 other people out there. Emulation is simply the most disingenuous route to obtaining that goal.

Regardless - I think this was an excellent topic of discussion and I hope that it inspired some thought in everyone. And now back to writing Diablo III....

Share this post


Link to post
Share on other sites
I think the valid point to take from this, is that designing a portion of code to execute at pinnacle performance requires knowledge of how the processor, bus controller, and other hardware actually work - I''d say that means knowing more than just the instruction set (as mentioned, slow assembly is just as easy to write as slow C).

The data-flow controls the speed of the program.

Share this post


Link to post
Share on other sites
Newbies don''t write tetris clones because they aren''t creative or are not keen to push the limits of today. They do it because they can''t do anything else. They''ve been told that tetris is the easiest to create and they want the satisfaction of finishing a game.

You can''t possibly expect newbies to start learning and then write B&W. Also, newbies would not have sustained much interest if they started off in assembly. They want to make games here you see. The only reason for using asm purely is for creating viruses, hacks and the like. Obviously nobody does pure asm games.

When C/C++ is so much easier, why would any newbie want to learn asm first? The easiest path would be to learn C/C++ first and then asm.

You are wrong to say that asm is the basics. Surely, they communicate directly to hardware, but is it easier? C/C++ teaches you concepts, like rules. You can''t play basketball if the rules didn''t tell you that you needed to bounce the ball or shoot hoops.

Apart from that, I think asm is a worthwhile investment for any programmer. Just don''t learn it as your first language. Especially in these times.

Btw, Quake clones are small acheivements but finishing one provides deep satisfaction.

Share this post


Link to post
Share on other sites
VXG, I couldn't agree more. I agree so much, I think I could write a book about the subject myself (and I might, too).

With your permission, I'm going to keep you post for future reference.

Also, for your benefit as well, I invite you to write me an email, then I'll send you 2600-2.txt, which is a letter 2600 recently sent a to a beginner, and which I think you'll find interesting.

my email address:

pixelrat@hotmail.com

Luck.
XCHG

Edited by - XCHG on February 5, 2002 12:19:58 AM

Share this post


Link to post
Share on other sites
Someone wrote:
quote:

You can't possibly expect newbies to start learning and then write B&W. Also, newbies would
not have sustained much interest if they started off in assembly. They want to make games here
you see. The only reason for using asm purely is for creating viruses, hacks and the like.
Obviously nobody does pure asm games.

When C/C++ is so much easier, why would any newbie want to learn asm first? The easiest path
would be to learn C/C++ first and then asm.

You are wrong to say that asm is the basics. Surely, they communicate directly to hardware, but
is it easier? C/C++ teaches you concepts, like rules. You can't play basketball if the rules didn't
tell you that you needed to bounce the ball or shoot hoops.

Apart from that, I think asm is a worthwhile investment for any programmer. Just don't learn it as
your first language. Especially in these times.


Now, THAT is SAD.
No further comment.




Edited by - XCHG on February 5, 2002 12:23:10 AM

Share this post


Link to post
Share on other sites
quote:
Original post by XCHG

Now, THAT is SAD.
No further comment.


I''m getting those elitist vibes again.



Once there was a time when all people believed in God and the church ruled. This time is called the Dark Ages.

Share this post


Link to post
Share on other sites
quote:
Original post by VXG
Guardian_Light: "Do you know how to calculate pi off the top of your head?" - 22/7 is a good approximation



No its not
PI starts off with 3.14159, 22/7 starts off with 3.14285
Already theres quite a difference emerging at a very early stage of the numbers



-----------------------
chain=chain->chain;

Share this post


Link to post
Share on other sites
Good post. Here is another 3 yen (worth about 2 cents)..

> Everyone wants to be like John Carmack.

People admire him for his achievements, which he has done with a very small team. I admire him mostly for how commited he is.

> It seems that all newcomers to the programming
> industry think that they can just learn C++, then make Quake 4

Haha. This is too true.

> If all the real programmers would instantly disappear then
> what would happen to the industry?

The market would start paying COBOL programmers a lot of money again. Then the next gen. of good programmers would slowly replace them.

> Yet many of them are the same thing with a different flavour. > How many cloned games are there? Countless!

This is not just in the software industry. Books, movies and everything else also.

> So why does everyone carry on going in the wrong direction?

It seems to me you are only concentrating on terrible clones, and not seeing the big picture. There are TONS of great new games coming out, just as there are great things coming out of the other industries I just mentioned.

When people learn how to drive, they generally stick to the streets that are most familier. That way they can concentrate on their skills. Then, later, they go off-roading.

> However, why are we no longer excited when hearing the news of > the release of another Command & Conquer clone?

The same reason I was not excited everytime they made a sequal to "Looks Who''s Talking" or Tomb Raider, they are just milking it for all its worth. Believe it or not, many people enjoy that series (C&C that is).

> Start using your time productively, rather than spending it
> on "reinventing the wheel" over and over again.

Geeze. I guess their goes the Hello World program.
Also, there goes all the books that are "Clones" of Lord of the Rings.

>Another question answered - "How do I become like Carmack?"

You research old Siggraph books and implement features in real time that were once only capable in a ray tracer.

>units on which modern graphics cards are based, assembly
>language is the only way to making better software. Even if C++

Wait, you just complemented Counter Strike because it is old, but original. Now you are saying software is only worth while if you implement new features?

Also, that is why there are device driver writers. It is thier job to write reliable drivers for me to use, so I don''t have to write low level assembly anymore. If they write good drivers, I will support there products. Supply and Demand.

> wouldn''t be possible to become an expert without learning how
> programming works at hardware level.

I agree it is important to understand how the hardware works. Assembly is a good language that goes along side a good computer architecture course or book. Don''t forget to mention that many people copy assembly now a-days when designing scripting engines.

>When hearing expert programmers saying "I don''t use assembly
>that much anymore" people tend to get the impression that
>assembly is a waste of time.

I think any decent programmer will know what tool to use at what time. Generally, at this time, there are libraries that are fast, and rich enough, to compensate for using assembly. But of course, if the programmer only knows one language, their toolset is pretty slim.

> In other words, if you want to become real experts LEARN
>ASSEMBLY.

Wow, that is a bold statement. As it was sort of discussed in another thread, the debate is out whether knowing assembly in the back of your mind really helps out or not. I have not used it professionally for a long time. I have not had any reason too, mainly since I focus on software architecture more these days. Fancey techniques are exposed more and more through APIs, and their implementation is taken care of by those driver writers in that cave over there.

Conclusion is you have successfully told people that the more they know, the better they will be. The inspiration you have is pretty incredible.

I agree what you have said for the most part. But you went too far in many subjects.

Next...

Share this post


Link to post
Share on other sites
quote:
Original post by Darkor
The only reason for using asm purely is for creating viruses, hacks and the like.

I can't think of anything witty to say that isn't really rude too. What are you on about? There's any number of reasons to use assembly... and viruses today tend to be written in friggin' VBScript!



Edited by - Magmai Kai Holmlor on February 6, 2002 3:18:11 AM

Share this post


Link to post
Share on other sites
Good Point for programmers (or "get paid for it") everywhere. Let me tell you, I am getting back into game programming after working in the corporate application programming relm of life and I am ready to quit the software industry all together, we have so many overlapping, ridiculas, crappy, half-ass technologies in the over-glorified Java Enterprise area it makes me sick every morning to go to work and listen to a bounch of idiot''s try to figure out something as basic as using make. I think the problem lies in peoples level of committment to developing software. I am only 26 and have been programming for about 10 years (6 professionally, as a career) so I can''t be too accurate here, but, I my view on this is many people are in software, not because they love to code, but because it pay''s well, or they couldn''t get their accounting degree for some reason. I run into people all day that don''t have the aptitude to read, re-read, and understand a specification as simple as JSP''s. It makes me sick, and pissed off that I have a book collection of at least 200 books covering everything from assembly on 8086 to design patterns and refactoring while others skate by, by having me to answer and re-write their broken code.

You make a good point about clone games, I am sick of doom style games (just not my thing, millions love them) I would love for some games to come out that I enjoy, that''s why I am up at 1am here with a my trig. book and my 3d graphics programming book learning what makes a good 3d engine.

About using ASM vs. C++. I think you should have a good idea of the code that will be generated by a compiler, but it''s proven (by myself) that ASM code can run as fast as well thought-out, designed, re-factored C++ code. But yes, your hit the nail, you should have the aptitude to understand a computer from the hardware up and not just at the highest level.

Happy coding


Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.