View Full Version : Still young to game design, switching to coding
Blinkstale 03-17-2005, 01:44 AM Well, about a year ago I bought a program called Dark Basic to start working on transfering over to coded game design, since I had previously used click and drag mixed with some coding elements. I've finally started to get the hang of it, and I've made a simple game or two in it, but I'm still very new to it all, and have trouble with repeating objects being created(like bullets), but that's not the point.
I wanted to ask you guys for help with adjusting to coding games in general(I'm probably really young compared to you guys, I'm going into Algebra 2 next year if that means anything to you), and since C++ is too advanced for me, I've decided to take my first step into coding with BASIC, which is far easier, and should help me get the hang of coding. I know C++ and BASIC are very different, but still, if you have any major pointers on methods that are really helpful in coding, or know of a site with the basics of coding games in any language, I would be very thankful.
I'm into 3d modelling as well, so I might become somewhat active in these forums, but don't use this like a "welcome" post, I'm more interested in finding out as much as I can about getting into coding.
Oh, also, here's the first game I ever really got done. It's anything but good, but it's a good example of what I can already do(loading screens, start menus, random positioning, level repeating, etc...).
Birthday Panda, the video game (http://www.get--a--life.com/OTHER/bdaypanda.zip)
Get that cake! Arrow keys to turn left and right, your engine is set to full throttle! Enter button to continue(in menu screens).
|
|
cg_davinci
03-17-2005, 05:53 AM
Yes, you do seem far along considering the math you have taken.
What I would recommend is once you are very comfortable with BASIC and ready to try a more complex language, try with Java first before going on to C++. C++, albeit very powerful, is also a very complex language and it is actually avoided even by projects with very sophisticated programmers on staff. You may also be interested in looking into Java 3d.
Hope this helps.
cg_davinci
03-17-2005, 05:54 AM
Game coding in a variety of langs is covered by NeHe. Don't have the address handy so google it.
rakmaya
03-17-2005, 02:01 PM
It is never too young or too old to learn and try anything in this world. If you think you are young, you are just like the 99% of programmers who can barely do things on their own.
Even if it sounds harsh, what I am telling comes from my experience. IF you dig into the world of games and if you have intensive feeling for programming, you will be surprised to see the speed of learning.
Human mind does not function at 100% capacity if it doesn't have a proper aim. If you WANT to program games or design games, that is your focus. Nothing (age, current knowledge, status or anything else) will get in the way. If you have that focus, you will learn what is necessary.
Algebra is very basic and is sonething that won't get you anywhere. But if you want to do it, you will learn all that is necessary to program games. If you wait until you learn the mathematics, then you will not learn game programming even if you acquire that knowledge.
That is my piece of advice. Internet is vast enough to provide you with all the information you need. Getting some basic Mathematics of 3D (such as Matrix Multiplication, Trasformation) will be a good place to start. Books such as "Specia Effects Game Programming" (AND most DirectX books) explain basic mathematics needed to start 3D.
After you get the slight hang of things, you go little deep into Linear Algebra and Calculus. Believe me, when study yourself, you will learn manythings that a guy you learns it from a book can never hope to learn.
Also, I wouldn't suggest Java. Java and C++ have a lot in common and doesn't make much difference in learning (except C++ is a lot more powerfull and precise). I suggest you learn "C" (Structures, Pointers, etc... etc..). If you think that is a little hard, Learn VB or C#. Get a basic book for programming (Any language such as C++, VB or C#) and then dive into basic DirectX or OpenGL programming.
Good Luck
Kid-Mesh
03-17-2005, 11:41 PM
If your interested in programming professionally for game programming then I suggest that you learn C/C++, that is if your interest is for PC based titles and or consoles. Now if your interest lie in Wi-Fi enabled devices, phones, PDA's etc C++ is still a viable option using something like BREW but that arena is being consumed by J2ME which is a branch of J2EE which roots are JAVA. So you need to consider what sector of the gaming industry your interested in and that will help guide your programming language choice.
In regards to learning Java first and then C++....:shrug: I'd personally advise against that. JAVA is not C++ and believe me they have nothing in common. The closest thing to JAVA is C# (C-Sharp) but C++ is far from JAVA.
JAVA and C++ differ in so many way's it isnt even funny. First off everything in JAVA is an object, everthing in JAVA has to be in a class, in C++ you can OOP or not OOP. Strings are not handled the same, data types are vastly different, OOP in C++ is bastardized Simula 67 and a slew of other hannibled features from other old languages etc, etc, etc. C++ is an acquired taste and a totally different way of thinking compared to todays software architecture design and development techniques.
Now dont get me wrong C++ is my first love and will always be my favorite language. But if you learned JAVA first you will learn defintely learn "true OOP" techniques and methodoligies, if you learn C++ you can learn OOP as well but C++ OPP. So basically if C++ is your second choice after JAVA I guarantee you that you will drive your self insane because you will see how unorthodoxed C++ really is and wonder why anyone would want to code in it.
They say that the majority of all languages are some derivitive of C....yep....except JAVA. So Im not bashing either language because I use both, JAVA in the corporate world for business related application development and C++ for my game programming hobby exploits.
Now.... Dark Basic = Bull$hit....get off that....seriously. I know people say its a good start and will give you the foundation for coding and all that....Hog wash. Get yourself a good C++ book and start learning the basics in the language that your going to be coding your games in soon. Because at the end of the day C++ or JAVA isnt even going to be the half of your problems, learning that Graphics pipeline in either DX or OGL is going to be what keeps you up at night....trust me.
Hope this helps.
Blinkstale
03-18-2005, 12:20 AM
First off, many thanks to all the replies. Second off, I think I'm going to stick with Dark Basic until I can learn some good looping tricks, mainly since that will make learning C++ a lot easier from what I've heard(since that too involves a lot of loops and stuff...right?).
I will look into VB and C maybe, but from the looks of things Java goes in a different direction, and I'm focusing on console and PC games. My mind is really set on working on consoles, but its better to be prepared for both, which I think use very similar languages(variations of C++ or something from what I've heard). And no rakmaya, I'm not going to be waiting until I finish learning math skills to start programming, I've just heard that Trigonometry is helpful in game design, a lot.
Also, along the lines of C++, I did get a C++ for Dummies book about a year ago, never looked too deep into it mainly since I hadn't gotten the basics of coding down yet(how they generally work) but I'm sure I'll look a lot more into that now more than ever, with all this encouragement to almost skip Basic.
Also, whats OOP?(something to do with numbering all objects? just a guess)
cg_davinci
03-18-2005, 01:00 AM
IfFirst off everything in JAVA is an object, everthing in JAVA has to be in a class, in C++ you can OOP or not OOP.
If it's not OO, then it's really just C with a (perhaps) more robust i/o.
rakmaya
03-18-2005, 01:10 AM
Both C++ and Java has OOP concepts that are very similar. However Java stricts you from going further into the core. So in most "pure OOP" programs written in C++ you will see things done other than just plain OOP to save overhead and in Java it will always be "pure OOP" because you cannot go any deeper.
Both Java and C++ have basic concepts the same (Data Structures etc..), but the programming model is a little different (not too much). But by the time you come out of Java, you have fallen too much into the "tea-spoon feeding" philosophy that you will never see what "making something better" is all about. I suggest you go with C/C++.
Learning OOP technique first is the WORST anyone can do in game programming. OOP programmers have natural tendancy to make things look clearner than faster. Which is a big NO in game/any real time applications.
Kid-Mesh
03-18-2005, 01:43 AM
.....
Learning OOP technique first is the WORST anyone can do in game programming. OOP programmers have natural tendancy to make things look clearner than faster. Which is a big NO in game/any real time applications.
<GRINS> Are you serious? Can you elaborate on how you can develop a complex game engine, A.I., Networking, etc effectively without using OOP. Who in the heck would want to follow that spagehtti code let alone maintain or extend it, you have seriously got to be joking.
Maybe it's just me but all of the major source code releases that I have been able to view are heavily based on OOP principals and for good reason. The last of the top down sturctured coded projects died with the doom source using doom C.
BTW...I disagree with JAVA not being able to go deep into OOP,.... it is OOP (kinda lost me on that one).
rakmaya
03-18-2005, 02:21 AM
<GRINS> Are you serious? Can you elaborate on how you can develop a complex game engine, A.I., Networking, etc effectively without using OOP. Who in the heck would want to follow that spagehtti code let alone maintain or extend it, you have seriously got to be joking.
Who said anything about making things in NOT OOP. I was talking about learning the programming as a starter. My words were "Learning OOP technique first..." Next time, read the post more carefully.
BTW...I disagree with JAVA not being able to go deep into OOP,.... it is OOP (kinda lost me on that one).
I see... No, that is not what I meant. With Java it is all OOP. There are things that OOP cannot do when you look for fastest method. If you have written Game Engines, Physics, Fluid Dynamic etc... you will see where a full fledged Java like OOP cannot punch through.
We have seen plenty of game programming go through our figers with OOP (nearly 100% of all projects). OOP is just a programming model. Logic runs deeper than a model. Understanding the usefulness of other models will help you figure out when certain approach is better than others. Starting with OOP tends to lead new programmers into a wall where they fail to see optimization techniques faster than others.
Kid-Mesh
03-18-2005, 03:05 AM
Regardless, I still disagree with not learning OOP first. First of all the first step into real software design and development is to model whatever it is your creating first such as using UML or something similar. That in itself will lead to a better design overall and a more effective code base in the end. Not to mention making you a better "Developer / Designer".
And who said anything about writing optimized code with JAVA...but since its out here. I can do bit shift operations and write efficient data structures that can give me the speed increases (optimizations) I need in JAVA using OOP if need be.
But then again its all based on experience, a new programmer isnt going to learn how or why to use optimization techniques and apply them effectively until you have just about mastered the language and understand why X-optimization will benefit you for X project.
You said "Logic runs deeper than a model".....I say Models and Logic is Apples to Apples, but its all for not if you dont understand the enviornment your developing for.
IMO not learning OOP first is going to lead a new programmer down a path of bad coding habits and inefficient design and modeling practices. Having a solid OOP base will serve you better than just being able to optimize and write procedual code. :rolleyes:
Anyway, addressing that snide comment about reading your post more carefully...I'll pass.
rakmaya
03-18-2005, 04:14 AM
Whatever you say!!!
Man... Bit shifting is not optimization. I am not trying to categorize instruction here. Any instruction C++ has, Java has. I have programmed both in Java and C++. So you don't have to tell me how fast a bit shifting is going to be. That is the worst example of optimization I have heard anyone talked about.
Ask someone to make a Game Engine or a Physics library (port Havok much easier there) to Java and ask them to make it run the same speed as the original one written in C++. Let me see how "optimized" they did it in Java???
Like you said, there are different uses for different languages. I agree. That is why Java is not used for Game programming when speed is the most important part. It is NOT because of OOP. The same thing is written in C++ WITH OOP. Ofcourse one main reason is because of Java being interpreted and many things are done at run time which takes CPU, but that is part of Java that makes it Java. So don't tell me you could do some bit shifting to make a program faster.
We are going out of focus here. I am NOT telling C++ is better than Java. Java is wonderful in programming Web apps and other applications. The ease of programming is not the least of the reason. I am only suggesting the need to learn basics before some one dive into OOP. Writting a better OOP doesn't means writting a faster program. Also, just because a program is NOT OOP, doesn't mean it will will run faster than an OOP.
A Person who has not programmed in C/C++/Java should first learn the programming and underlying architecture (software related) first. One reason people start with Algorithms, Memory handling, Arrays, Structures, Pointers instead of object oriented programming is because it will give you more insight of what is hapenning. This is the case with BOTH Java and C++.
One example would be if I were to ask a new-comer to create a list where he could store a Mesh Parameter block (each containing one or more parameters for a mesh); A person who only knows OOP, would instantly create a Vector or ArrayList or Array of Structure (regardless of the programming language). A person who know more would first ask the question, what is the ONLY dynamic parameter in the Mesh Parameter block. So he could better understand what kind of existing data structures can be applied to reduce memory fragmentation, speed, cost/effeciency ratio. In most cases, you create one all together from scratch. These kind of thoughts happen in almost every line of the code we write here for game consoles where every inch of processign prower and memory counts.
This comes from my experience and ofcourse noone is bound to that. Ofcourse one could spend their entire life doing "cout << XXX << endl;" or "System.out.prinln(XXX);" without knowing what a stream means for an OS.
Kid-Mesh
03-18-2005, 01:31 PM
Im done arguing with you :shrug: because yeah, bitshifting isnt optimization...hmm maybe I should have said "...learn some ASM too and use that on occasion in your code"... whatever.
Blinkstale - So you can take something away positive from these last few post, if your really serious about writing for consoles then start off learning "C". Get your self a C book like C for Dummies just to get a gentle introduction to the language and then step up and get a better text on the C language. Later on you can add C++ to the mix, since you want to code for hardware OOP could help but wont really be neccessary at this stage, although it wont kill you to learn it either (later) though I digress for the sake of argument.
At the same time try Xgamestation (http://www.xgamestation.com/)
This is a great way to see if you would even be interested in coding for consoles, learning ASM and C will be a lot of fun as you learn how to code for hardware and make small games.
Good luck man....but drop that Dark Basic :twisted:
LetterRip
03-25-2005, 06:11 AM
I'd personally learn Python as a first language - it is a 'real language' but is very easy to learn and use, and will likely teach you much better habits to begin with (ie forcing you to properly format your code and using data structures that actually make sense for what you are coding). Also, it is embeded all over the place, is also very good for both rapid prototyping and for production usage.
Asside from a language you need to learn algorithms and data structures. Most of the speed gains is in more efficient algorithms and smartly identifying special cases where you can cut corners.
After Python you'll want to learn either C or C++.
LetterRip
CGmonkey
03-25-2005, 06:26 AM
<GRINS> Are you serious? Can you elaborate on how you can develop a complex game engine, A.I., Networking, etc effectively without using OOP. Who in the heck would want to follow that spagehtti code let alone maintain or extend it, you have seriously got to be joking.
Maybe it's just me but all of the major source code releases that I have been able to view are heavily based on OOP principals and for good reason. The last of the top down sturctured coded projects died with the doom source using doom C.
BTW...I disagree with JAVA not being able to go deep into OOP,.... it is OOP (kinda lost me on that one).
Isn't Doom 3 written without OOP?
PetterSundnes
03-26-2005, 12:32 AM
Does it really matter what language is used to make a game? If a game is good, its not because its written in a particular language, its all down to the game mechanics/story. The principles of programming is trans-lingual, heck you can even use Actionscript or Lingo and learn object oriented programming and transfer that to C++ at a later stage (if you need to). Elitism doesnt help beginners.
I say continue using Dark Basic / Blitz 3D / 3D Game Studio / Torque / ShockWave 3D until it does not meet your requirements. Then jump the wagon and go for Ogre 3D:
http://ogre3d.org/
CGTalk Moderation
03-26-2005, 12:32 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.
vBulletin v3.0.5, Copyright ©2000-2012, Jelsoft Enterprises Ltd.