Gfx libraries - a cheap way out?
Hey all,
I''ve been pondering this one for quite a while now... first, let me explain a few things... Since October 99, i''d been using Borland Builder C++ 3.0 to try and get a concept of programming. Granted, since I deserted it, i''ve had to unlearn many of the things it led me to believe... I didn''t realise at the time how much it flattered my skills (in the sense it made everything nice and easy - all wrapped up in a class and I never even knew ). So, in February this year I decided to ditch it in favour of ''real'' c++, so I got myself a copy of DJGPP and the Allegro library. Since then, things have come on in leaps and bounds, all without any books whatsoever. I''ve done things like tile renderers, platformers, driving games, shooting gallerys... lots of useless (and usually, unfinished ) stuff... I even recently made a crude (and slooowwww) raycasting engine. My latest project is a return to 2d shooting affairs... it''s kinda a mix between ganja farmer, missile command and Counter-Strike, all in one . Ok, the Counter-Strike part comes in because I''ve nicked the CS sounds, and weapon accuracy ''degrades'' if you hold down the mouse button . Anyway, it''s going well, with nice particle effects (blood, explosions, etc) and ejecting spent cartridges. Anyway, let me get to the point (it''s taken me a while, I know ). Basically, i''m still using djgpp and allegro, mainly because without books I thought learning Win32 and DirectX would be a bit of a mountain to climb. And, frankly, I like it. I do have msvc++ 6.0, and have made a few crappy win32 apps, but I just feel at home in dos. The thing that persistently nags me is this: I can''t ever shake the feeling that what i''m doing is actually incredibely simple, and that it''s only thanks to allegro that i''ve come this far... I mean, basically all the code behind my games is just simple logic - the only complex part would be the graphics and sound implementation - the parts people complement you for (along with gameplay, I know ), and the parts allegro takes care of for me. I am incredibley conscious of the fact that in reality without allegro I wouldn''t even be able to plot a pixel on the screen. Part of the problem is say for example, I make a new game, I sometimes think ''hey this is cool'' and feel extremely proud of my progression or just the fact the game is good... then I remember that Allegro''s done most of it for me (well, the bits that stick it all together ). How do you guys view this? If I made a small and relatively enjoyable game (or one that wasn''t all that enjoyable, but not bad - like my shooting gallery, ''The Mouse Murder'' ) and you enjoyed it, then I told you I used allegro, would this, in your eyes, negate much of the ''skill'' (i''m loathe to call it that, I hate sounding big headed ) behind the game engine itself? I just hate it when say a freind sees my game and says ''hey thats pretty cool, wow you''re a programmer eh?''... it makes me feel quite uneasy and embarressed because in the ''real world'' of programming (which I eventually want to reach) I couldn''t do a thing. Maybe i''m too hasty in deflecting the credit? As a fellow programmer, do you see using allegro as flattering one''s alibities? Despite the fact I feel I have a good grasp on a wide range of programming subjects, I always get the feeling that using the allegro library compromises other''s views of me. It''s like a chain on my leg . If we were having a programming discussion, you''d all go deaf when ''allegro boy'' spoke up, because it takes away some of my credibility . I never feel as if I level up to others, if you get me, simply because I do not have this fundamental knowledge. I know i''m starting to sound like a paranoid freak here (), so I better draw to a close soon (i''m not one, by the way, i''m perfectly secure ). Basically (you should have skipped to this bit first if you wanted a short question ) is it acceptable to carry on producing stuff in dos using allegro and actually consider myself a worthy programmer, in the terms of I can make games, both 2d and (very simple, and not proper) 3d?
Damn... i''m not being very articulate tonight, and a bit verbose (a bit, he says ), and I *still* haven''t really got my point across... but do you think using the allegro library sheds a bad light on someone, even if they''ve in reality got quite a firm grasp on what they''re talking about? Oh sod it, i''m going round in circles... I hope you manage to extract some semblence of coherence from this ramble, and any views on the subject would be much appreciated (if there even is a subject anymore, I think i''ve lost it ).
Cheers all, and thankyou for taking the time to read this (if you did). I know it was far too long, but I just couldn''t phrase anything right... oh well .
Nick - Head Designer, Llamasoft.net
--
Visit our website...
Llamasoft.net
Games, goodies and ingenuity
Nick - Head Designer, Llamasoft.net--Visit our website...Llamasoft.netGames, goodies and ingenuity
Using the Allegro library could be very useful for learning how to imlement all of the other parts of a game and make a very enjoyable game without having to worry about graphics, and if the game''s good, it shouldn''t matter. I''d suggest building your own graphics engine and learning how to implement the graphics end of games, and move up to Windows. If the game''s great, then take the credit for it. No one makes their own compiler, or builds the computer from scratch. Just learn all that you can and build up your skill as a programmer.
Don''t take notice of the "intellectual snobbery" that crops up on this board from time to time. Reading some posts would make you think that you''re not a "real programmer" unless you''re writing everything in pure assembly language and know the insides of your computer better than you do your own mother.
Just learn and use whatever tools and languages you need to do what you want to do. It sounds like Allegro suits your needs very well, so why bother learning all the low-level graphics stuff? Carry on using Allegro until you find yourself limited by it or until you want to understand how the pixels are being plotted and the sounds are being played. Then maybe it will be time to start developing your own game engine.
Don''t worry about not being a "real programmer". There''s no such thing. You''ve written a number of games/routines which you are impressed by and make you think "hey, that''s cool" Congratulations! You''re a programmer!
Not only that, but using pre-built libraries is what programming is all about. If something has been written that does the job you want to do to your satisfaction, it would be pointless writing your own version to do exactly the same thing. Don''t worry about using DOS and Allegro either. You''re learning programming skills and techniques which will be transferable to any platform. If you''re happy with the results you get from Allegro then stick with it and concentrate on improving gameplay.
Moot
Just learn and use whatever tools and languages you need to do what you want to do. It sounds like Allegro suits your needs very well, so why bother learning all the low-level graphics stuff? Carry on using Allegro until you find yourself limited by it or until you want to understand how the pixels are being plotted and the sounds are being played. Then maybe it will be time to start developing your own game engine.
Don''t worry about not being a "real programmer". There''s no such thing. You''ve written a number of games/routines which you are impressed by and make you think "hey, that''s cool" Congratulations! You''re a programmer!
Not only that, but using pre-built libraries is what programming is all about. If something has been written that does the job you want to do to your satisfaction, it would be pointless writing your own version to do exactly the same thing. Don''t worry about using DOS and Allegro either. You''re learning programming skills and techniques which will be transferable to any platform. If you''re happy with the results you get from Allegro then stick with it and concentrate on improving gameplay.
Moot
Using Allegro is fine, you still need programming skills to make a game, particularly one which is actually playable.
I do think it is very useful however to understand the basic principles behind everything, by that I mean be able to plot a pixel, use this to draw lines and shapes and so on. Not because you will need to do this, but the techniques that are used can often be applied to other things.
It''s always a good idea to understand why somethings working and not just accept it. Using libraries to do a job is a perfectly acceptable way, but you will do yourself a favour to have some understanding of how stuff is being drawn and so on.
I do think it is very useful however to understand the basic principles behind everything, by that I mean be able to plot a pixel, use this to draw lines and shapes and so on. Not because you will need to do this, but the techniques that are used can often be applied to other things.
It''s always a good idea to understand why somethings working and not just accept it. Using libraries to do a job is a perfectly acceptable way, but you will do yourself a favour to have some understanding of how stuff is being drawn and so on.
Moot and Twoflower both speak words of wisdom. Unfortunately, I have the same, yet opposite problem. I find myself often writing code that is already available for free for use in software, be it freeware or commercial, just because I feel that I am somehow cheating if I don''t get as close and low to the stuff I''m programming as possible. I have no problems using stuff like DirectX, because that''s just something you have to use and it provides a learning challenge and level of respect from peers in itself, but you would sooner find me dead than using wrapper classes and stuff that weren''t coded by me. On the one hand, that means that I''m getting a great understanding of what I do, but on the other, am I wasting my time re-inventing the wheel?
There''s different degrees of how much you wanna do I guess. Even in VB (which im being forced to use in programming class), i feel a pang of guilt everytime I lay down a control other than the basic ones. I don''t know, it just makes me feel dumb, like im using a cane to walk (i mean no offense by this anology, nothing wrong with using a cane if u need it) instead of using my own two feet. As long as I have this cane, I''m alright, but then if it ever gets swiped out from under me, I fall to the ground. Thus I often find myself wanting to make sure i can walk on both legs, sometimes even on one.
Now you might say, okay, good for you, that''s great because you end up knowing a lot. Yea, but there''s is sooooo much to learn nowadays in the world of programming. Look through the entire MSDN library, the thing is huge. And that''s just scratching the surface of all the practical programming knowledge out there. So I''m stuck trying to figure out how low level my knowledge should go. Back when doing DOS programming, I was doing a lot of the stuff in Tricks of the Game Programming Gurus (the original one, not the Windows one), which involved assembly and communicating very closely with hardware. Now going so far is impractical. Suddenly it''s okay to use an API (like DirectX) full of classes and abstraction, with a million things happening before the hardware receives any direction. Times change. Nowadays, a person can code a huge database business application in VB, but not be able to even explain how the mouse cursor works or how the image on ur screen gets there or how a textbox works. Where do you draw the line between practical knowledge and stuff that isn''t worth learning about anymore?
There''s different degrees of how much you wanna do I guess. Even in VB (which im being forced to use in programming class), i feel a pang of guilt everytime I lay down a control other than the basic ones. I don''t know, it just makes me feel dumb, like im using a cane to walk (i mean no offense by this anology, nothing wrong with using a cane if u need it) instead of using my own two feet. As long as I have this cane, I''m alright, but then if it ever gets swiped out from under me, I fall to the ground. Thus I often find myself wanting to make sure i can walk on both legs, sometimes even on one.
Now you might say, okay, good for you, that''s great because you end up knowing a lot. Yea, but there''s is sooooo much to learn nowadays in the world of programming. Look through the entire MSDN library, the thing is huge. And that''s just scratching the surface of all the practical programming knowledge out there. So I''m stuck trying to figure out how low level my knowledge should go. Back when doing DOS programming, I was doing a lot of the stuff in Tricks of the Game Programming Gurus (the original one, not the Windows one), which involved assembly and communicating very closely with hardware. Now going so far is impractical. Suddenly it''s okay to use an API (like DirectX) full of classes and abstraction, with a million things happening before the hardware receives any direction. Times change. Nowadays, a person can code a huge database business application in VB, but not be able to even explain how the mouse cursor works or how the image on ur screen gets there or how a textbox works. Where do you draw the line between practical knowledge and stuff that isn''t worth learning about anymore?
BetaShare - Run Your Beta Right!
There''s nothing wrong with "reinventing the wheel", especially if you''re learning something (and when do you ever stop?) Things like MFC and DirectX are useful tools, which can save you from actually needing to learn how the underlying processes work, but if you do understand what they''re doing you''ll be able to use them more effectively.
Equally, by using existing libraries and toolkits, you''re not cheating at all. You may find at some later date that the library you''re using won''t do what you want it to (at least not as simply as if you''d written it yourself - MFC springs immediately to mind), but if the results look good, hell, its impressive. Almost no professional games programmers can say that they''ve written an entire game these days; everyone''s part of a team. By using external libraries, development time can be drastically reduced.
Just my four penn''orth
Dave
Equally, by using existing libraries and toolkits, you''re not cheating at all. You may find at some later date that the library you''re using won''t do what you want it to (at least not as simply as if you''d written it yourself - MFC springs immediately to mind), but if the results look good, hell, its impressive. Almost no professional games programmers can say that they''ve written an entire game these days; everyone''s part of a team. By using external libraries, development time can be drastically reduced.
Just my four penn''orth
Dave
If you stick with allegro then you are stuck with allegro limitations. If you stick with dos then you are stuck with well...dos. Is up to you. But you are in a good position to learn all of the things you are ashamed you do not know. You are in an enviroment where you are getting direct results (in the right programming language ), and have instant acess to implimentation code. Look at the allegro code. Writing a DJGPP graphics library is probably 10X simpler than you think. As for Windows and DirectX: Find a wrapper library that comes with code. CDX, prometheus true color, etc... The list goes on and on. You can learn so much by looking at the code when you''ve seen offhand exactly what it does. Eventually you can start rewriting functions here and there until finally you no longer need a wrapper. Your saying you think its too hard right now programming in Win32 with DirectX, bla bla. 2 months from now you may know Windows api, mfc, and DirectX like the back of your hand (whatever that means). Dont underestimate your ability to learn something so many other people have already learned. Allegro has a good reputation, and DJGPP has a good reputation so nobody is going to throw rocks at you because you use allegro. But if you told me that you were going to use allegro for graphics and nothing else ever for the rest of your life, I would call you a fool.
cmaker
- its not the principle. its the money.
cmaker
- its not the principle. its the money.
cmaker- I do not make clones.
There is no need to reinvent the lightbulb. If someone''s done the brute force work for you, then that''s a good thing. However, if you feel guilty about it, then credit allegro in your games. That should make you feel better.
quote: Original post by LordElectro
Where do you draw the line between practical knowledge and stuff that isn''t worth learning about anymore?
I single out stuff that deals directly with hardware, and stuff that deals with complicated file formats as the only things I consider using a library for. Otherwise, dealing with libraries take too much time and energy in the long run.
cmaker- I do not make clones.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement