Skip to main content
GameDev.net gamedev.net
🔒 Locked

Why game programming went wrong

Started by sSimontis May 9, 2003 at 6:45 AM 59 replies 5.2k views
Original Post
sSimontis
sSimontis
Okay. To me, game programming has gone wrong. In short, simple languages made people forget about the hard way of doing things. I will start out with Atari. Everyone is scared of Atari programming because you have to use old ASM and use an electron tube. But because it was hard, the people who developed for it were good with it. For a while, peoplke stuck with the do it the hard way approach. But BASIC and BASIC messed up everything. It started with BASIC. Everyone loved its sweet little commands instead of a ton of code. This made C go wrong. People tried to use the easiest way out. If they had tried to use it with more advanced code, they would have remembered the hard days. By this time, everyone loved C. It seemed like the dream language. But people forgot about ASM unless they were a console developer. And with C++, things didn''t get better. Some people do get advanced with C or C++, but for the most part, people try to use the easy way out of things. If we would have stuuck with ASM and hard problems to solve, the next generations of programmers wouldn''t be easy, scripting influenced code writers. What do you think? Do you think that because ASM died out, the game industry went wrong? Most people don''t even learn it anymore, unless they get training for it! This is purple. This is green. This is black.
Scott SimontisMy political blog
Drakonite
Drakonite
w00t! I agree but not with where things have gone downhill. Going from ASM to C/C++ isn''t where it happened. It was with VB that things have started going downhill.

My problem isn''t with the language itself; it has it''s purposed and is great for them (in fact now that I''m using linux and don''t have VB I''m starting to miss it for some things).
My problem is with so many people thinking it is the perfect language to start with. It isn''t. I''ve seen far far FAR too many people who were told VB was the perfect language to learn programming with learn far too many bad habits (which seem to be reinforced by VB) and NOT learn a lot of the fundementals. As an end result when they try to move on to C/C++ or even just doing more advanced programming with VB they can''t write decent code to save their life and usually have so much trouble figuring out what should be the simplist of things had they learned the fundementals and not picked up so many bad habits.

yeah yeah... I guess this is all just IMO... But I stand by my opinion.

/rant
Shoot Pixels Not People
coelurus
coelurus
The choice of programming language depends totally on your needs. Personally, I despise all very-high-level languages like VB and scripting, but they _can_ be of great importance today. Not all applications need ultra-super-duper speed and can be thrown together with anything. This applies to games as well, because not all of the greatest games are marvels in technology. What I think is not of importance, but rather what one can do with the tools that are available.
I do not think things went the wrong way and it doesn''t directly affect you anyway.
SabreMan
SabreMan
quote:
Original post by Village Specialton
What do you think?

I think that''s a poor attempt at a troll.
Machaira
Machaira
quote:
Original post by Village Specialton Do you think that because ASM died out, the game industry went wrong? Most people don''t even learn it anymore, unless they get training for it!
No, I don''t. With the compilers today, there''s not much need for the optimizations that writing pure assembler gives you. It''s still used somewhat but the fact is that it''s not as needed these days. There''s nothing wrong with taking the easy way out as long as it doesn''t mean sacrificing quality. Could you imagine what the development cycle would be for a game if people still had to write it in assembler? You think DNF is taking a long time?!?!?

Drakonite: Exactly what kind of bad habits are you talking about? I think it''s far easier to learn bad programming style (as opposed to bad habits, which is a subjective term) in C/C++ since you have a lot more freedom and power available to you.

Here''s my take on where game programming is going wrong (it hasn''t gone wrong yet for the most part IMO) - people and technology.
< rant >
Technology has advanced so quickly that people have come to expect to be spoon-fed everything. How many posts do you see everyday that go something like - "I need the code for....". People are spoiled by the Internet. It''s fine to use a tool for problem solving, but the Internet has turned most people into spoiled little brats incapable of doing their own problem solving. Most people don''t even bother to ask politely. It''s like they feel whatever they want must be given to them. What happened to the days of puzzling out a nasty bug for an hour? I think some people aren''t even capable of debugging code. As soon as a problem comes up they post to a message board, expecting someone to do their debugging for them. The same goes for actually reading about how to do something. I see almost as many "I got this code from .... and it doesn''t work. Why?" posts as I do "I need code..." posts. These people don''t even bother to read documentation on how the code works or the underlying technology. They think they''re programmers because they own a compiler (most probably not even legally) and can copy and paste code.

How many times have you posted a link as a solution to a question and gotten a "I don''t understand that, can you fix this for me?" reply? Even when the explanation on the page you link to is crystal clear? This is almost a sub-category of the "copy and paste" programmers. They haven''t learned anything on their own so they''re incapable of understanding the solution to their problem.

The really bad thing is that these things aren''t just limited to game programming or programming in general, it''s in almost every area of society.
< /rant >
Former Microsoft XNA and Xbox MVP | Check out my blog for random ramblings on game development
PurpleAmethyst
PurpleAmethyst
I think ASM is good as long as you have a small instruction set on the CPU. It''s pointless writing PC programs in ASM because the instruction set is full of legacy instructions. If you were usings something like a PIC (okay not for games), MIPS or ARM, however, I reckon you could benefit from progging in ASM. Thats one reason GBA games are programmed in ASM. Its a small machine and needs fast eicient code. Anyway, aren''t modern C compilers better at assembling loops that even the most talented ASM programmer.

doctorsixstring
doctorsixstring
quote:
Original post by Village Specialton
Okay. To me, game programming has gone wrong...



Is this a joke? I hate to break it to you, but a modern PC is a bit more complex than an Atari. As much as I would love to code a full computer game in ASM (which I wouldn''t), I only have one lifetime.

quote:
Original post by Drakonite
It was with VB that things have started going downhill.



quote:
Original post by coelurus
Personally, I despise all very-high-level languages like VB and scripting



What exactlty do you despise about languages like VB or scripting? The ease-of-use? The ability to get a weeks worth of coding done in a few hours? Being able to rapidly develop applications that don''t require blazing-fast performance? What exactly is it that makes you "despise" them?

-Mike
MichaelT
MichaelT
pkelly83: ...Anyway, aren''t modern C compilers better at assembling loops that even the most talented ASM programmer.

What makes you think that? Optimizers might be better than most asm programmers but definately not better than the most advanced ones. I have yet to see a program that can''t be optimized here and there. But generally it is a waste of development time. I love asm but I am also a realist, I can''t give a single reason why I would even want to dabble with asm nowadays because I am simply hard pressed on time as it is.

____________________________________________________________
Try RealityRift at www.planetrift.com
Feel free to comment, object, laugh at or agree to this. I won''t engage in flaming because of what I have said.
I could be wrong or right but the ideas are mine.

No no no no! :)
Grover
Grover
What went wrong. Forgive me but what did go wrong, exactly? You said everyone is scared of Atari programming, but I doubt that is the case. Its more likely that Atari programming just is a little pointless these days. What denotes Atari ASM as being hard? It had a very small command set, and essetially it was more to understanding register usage than the ASM itself? If this is the case, then its not really anything to do with the language is it?
And the assumption that the people who wrote on the Atari were good is a little simplistic. Again with such a small command set, ASM really wasnt difficult to grasp at all.

How you get to BASIC from ASM, Im not sure. On the Atari, I doubt there were any games written in BASIC. Maybe some in C, very unlikely though. C was around _ALOT_ longer before BASIC. Its roots are from the 60''s. And if anything C affected most BASIC interpreters with its ''for'' looping mechanism, and even ''goto'' since it is a C call which BASIC derived. So, as you see, ''C'' didnt really go wrong, in fact, C has been a ''language-in-development'' for almost 30 years.

The other assumption you make is that ASM somehow was forgotten. It has been used continually, even today. Importantly its only used where its necessary, usually in small heavily looping sections. I think your idea that game programming has gone wrong is language related is odd, and not very logical.

Languages provide a software developer to create an application. It really doesnt matter what language you choose, and in fact, expect to see a major shift in languages in the near future. We are now starting to get into game projects of million line (c/c++) projects. This is just not manageable both economically and physically. So higher level languages and systems will prevail - its all a matter of being able to manipulate extraordinary complex equipment (your PC) with the minimum of serious problems.

As for people getting advanced with C or C++, boy thats a whole can of worms. Ive seen people try to be smart with C and C++, then when I profile their code, it turns out theyve stopped the compiler from being efficient and mucked up the Data and Instruction caching. One of the important things about c and c++ is NOT to assume you know better than the compiler. Because 10/10 times the guy that wrote the compiler knows how the code is going to be assembled _alot_ better than yourself. Remember that next time you use inlines and other compiler directives in your code. :-)

Finally, in the long run, its the result that counts. Isnt it? Does it matter that quake was written in C and ASM, Does it matter that the majority of games are now being done in C or C++ with ASM ? And in twenty years from now when you have your virtual headset on playing DOOM 2020.. and it was written in BASIC.. will you really care? Read John Carmacks comments on building engines from scratch, you''ll see what Im on about. Language means nothing.. the result means everything :-)


doctorsixstring
doctorsixstring
quote:
Original post by Grover
...Language means nothing.. the result means everything :-)



Bravo! Well said.

-Mike
PurpleAmethyst
PurpleAmethyst
quote:

Original post by MichaelT
What makes you think that? Optimizers might be better than most asm programmers but definately not better than the most advanced ones.


I asked someone about serious ASM programming on the PC about 3 years ago and they gave me that waffle. I learnt C properly afterward.

I used ASM and BASIC in tandem before, which contradicts what your man said about BASIC in the first place.

Why not write your interface in a simple high-level language and do the high speed stuff work in pure C or ASM. Thats what you do with BASIC and ASM.
MichaelT
MichaelT
quote:
Original post by Grover
...Read John Carmacks comments on building engines from scratch, you''ll see what Im on about. Language means nothing.. the result means everything :-)



I agree but please provide a link to anything quoted to Carmack.



____________________________________________________________
Try RealityRift at www.planetrift.com
Feel free to comment, object, laugh at or agree to this. I won''t engage in flaming because of what I have said.
I could be wrong or right but the ideas are mine.

No no no no! :)
MichaelT
MichaelT
quote:
Original post by pkelly83
I used ASM and BASIC in tandem before, which contradicts what your man said about BASIC in the first place.

Why not write your interface in a simple high-level language and do the high speed stuff work in pure C or ASM. Thats what you do with BASIC and ASM.



Ehh, whom are you talking to here? I haven''t talked about this.

____________________________________________________________
Try RealityRift at www.planetrift.com
Feel free to comment, object, laugh at or agree to this. I won''t engage in flaming because of what I have said.
I could be wrong or right but the ideas are mine.

No no no no! :)
PacketLoss
PacketLoss
I started with C programming, but i wanted to know the bases of programming so i learned ASM, and ive even made a game! My Naval Command Game made in ASM gave me lots of base information on programming. I loved it and i must say that people who know ASM DO KNOW have great programming bases and know the inner-taste of a "chocolate muffin" covered in sugar. So if you eat the whole muffin you know bases and you are sure to know how the computer handles programming languages and stuff(hardcore programmer), if you eat just the chocolate middle, then learn some more(OldSchool programmer heheh), if you know the bases its easy to learn the "new" ways. If eat the sugar top, lear the chocolate middle, bases are always good to know(hobbyist?).
In a short version. In my own opinion, if you want to be a hardcore programmer you need to learn ASM. But if you just want to program has a hobby, you "dont need it", but its good to learn it.




[edited by - PacketLoss on May 9, 2003 9:55:50 AM]
Miserable
Miserable
Game programming probably ''went wrong'' when people ceased to use the best tools for the task (e.g. a HLL such as BASIC with assembly routines for speed, where necessary) and started to use outdated, primitive tools (such as pure assembly where a HLL would be sufficiently fast) for reasons of pure machismo.
dede
dede
I''d hate to troll too much, but I need too...

You went from Beginner needs Help! posted at April 14,2003 to
Why game programming went wrong posted at May 9th, 2003.

You''re aging rather quickly, I see Stop looking at the good old days, they were only good through the rose coloured glasses you see them in. They sucked. There was a bunch of tricks you needed to learn, like doing Do-while loops, because they are two instructions less than a while or for loop.

Its much more interesting to be a coder, designer, artist now. Before, in the Atari days, one person did everything, or maybe a team of two or three. They had to plan everything out in advance, tweaking the program was very difficult.

Now, with scripting languages and OOP, we can make major changes to games. We can take Half-life, and make Counter-strike, or Team Fortress. We couldn''t take Pac-man and make Ms. Pac-man, even though the games were more simular and less complex.

To be a designer today, is a good thing(tm).
AndyTX
AndyTX
Problem: Programs have gotten too large and complicated for us to write in machine code any more.

Solution: Make up a design and write some pseudo-code (which we will call "high-level" code here), and then once we're sure that it is what we want, convert it down to assembler, which the machine can understand.

Helpful tool: Compiler! The whole point is that most people have better things to do than to manually convert high-level code and concepts to assembler, especially when we can automate the process with such a high degree of correctness and efficiency now. I mean come on, it's at the point where compilers can often make better decisions than you when writing the ASM! Take Intel's C++ Compiler, with it's parallel processing, SIMD, pipelining, and cache prefetching optimization for example.

Another thing to note is that you are blind if you think that even in the games arena, everything is about speed. In fact, many games can get away with much less than absolute performance. Time is better spent then developing new games than optimizing old ones that run just fine on current hardware. How much would we all complain if, for example, Valve decided that instead of working on Half-Life 2, they were going to can that and concentrate on rewriting Half-Life in ASM to optimize and allow it to run on lower hardware?

Don't be so narrow as to choose one or two things, like ASM and C, and dictate that that's all there is useful out there. Quite honestly, you only expose your own in-experience with those types of comments, and thus it might be better to think these things over more in the future.

[edited by - AndyTX on May 9, 2003 10:20:50 AM]
Bajiroshi
Bajiroshi
Yes, Assembly == hardcore right off the bat. But you know what''s more hardcore? Machine code! That''s where game programming went wrong! People started using easy sissy things like Assembly with their silly little Assemblers instead of writing cold, hard machine code on the ultimate badass of storage methods: the punch card. That''s what gaming needs, a return to the days of the punch card! Screw timely development, code reuse, portability, flexibility, and readability.. :rantrantrantrant:

:D
-Bajiroshi
Stuff
Rob Loach
Rob Loach
quote:
Original post by Bajiroshi
Yes, Assembly == hardcore right off the bat. But you know what's more hardcore? Machine code! That's where game programming went wrong! People started using easy sissy things like Assembly with their silly little Assemblers instead of writing cold, hard machine code on the ultimate badass of storage methods: the punch card. That's what gaming needs, a return to the days of the punch card! Screw timely development, code reuse, portability, flexibility, and readability..


What are you guys talking about?!

I think making things easier for everyone is a good thing! That's pretty much what technology is all about!

[EDIT] Yes it was hard back then, but that's why we advance in technology, to make it easier. If you want to stay back and use your punch cards, then go right ahead, I'm not stoping you.


- Rob Loach
Current Project: Go Through Object-Oriented Programming in C++ by Robert Lafore

"Do or do not. There is no try."
- Yoda


[edited by - Rob Loach on May 9, 2003 10:26:55 AM]
Rob Loach [Website] [Projects] [
cbenoi1
cbenoi1
> In short, simple languages made people
> forget about the hard way of doing things.

Is that a bad thing? I wouldn''t know how to hunt down an antilope and make myself clothes from its skin; I buy my T-shirts and jeans at WalMart like everybody else.

Very accute platform knowledge (and language such as Atari ASM) was a barrier to entry in the gaming industry; only a handful could thrive. Better tools and widespread information made it easy for less knowledgable game developpers to enter the market. The focus started around the programmer-genius, and then the focus shifted to the process of making a game and mastering art (more experienced studios, large artist inflow), and is now turning towards marketing (better access to international markets, publishers and distributors). It''s a natural evolution process for an industry that is maturing.

> Do you think that because ASM died
> out, the game industry went wrong?
> Most people don''t even learn it anymore,
> unless they get training for it!

Technical people lost power to managers over the years and it has nothing to do with which programming language they use. Wanna regain that power? Take a good look at the [apparently] multiprocessor PlayStation/3 design! Check out the new 2D/3D graphics hardware for portable devices! Get into shader programming! But please stop whinning about ASM!

-cb

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.