my Question is basically, what would be most beneficial to focus on now? what i want is to first create a 3D engine to work with. i want to learn how to make my own tools and building blocks. i know that the advanced graphics, memory management and physics simulation is down the road for me but i want to direct my learning so that my skills will be useful later on, and i can do simple things now that will be applicable when i do learn to apply the advanced stuff. i'm learning C++ and understanding it fine so far despite the warnings for beginners. is this the language to learn if i want to do something make a 3D engine similar to platinum arts studio sandbox or unreal studio some day? emphasis on "some day" also what else could i learn about while i learn C++. when i get sick of working on C++ for the day, what else would be a good thing to familiarize myself with at the same time? maybe learn to use blender? any and all tips are welcome. BTW, i love Ruby, is this make a good higher level language to learn and use for scripting later on? if not what would? thanks
what to learn and focus on first
Don't go for the 3d engine too quick. Take your time to really understand the basics of programming. Read books or online articles about efficiency and correctness. Do some serious work on 3d maths. Study other engines' structures. Blender may be interesting because it can show you how artists think about 3d data (and how that may differ from a programmer's perspective).
So, yes it is possible to write a polished 3d engine in C++, even on your own, but it is nothing you can do in a few months or (depending on your learning curve, spare time and motivation) even years. Keep that in mind. Also, if your goal is to write a game, write a game, not an engine.
Ruby is a fine language and I see no reason why it shouldn't be usable as a high level scripting language.
EDIT: Oops. Typo messed up the meaning.
Thanks rnlf, i know this is not something that i could in a short amount of time. and i imagine the possibility of meeting people in school who know things that i don't and teaming up on it. and an engine is more my goal rather than a specific game. the term i use is a "world builder" where players make there map and place there own NPCs. but that is a long way away for me now. for a learning project i'm programming out the periodic table which covers a lot of what i'm learning as a beginner. my next step will be to make something 2D and simple to get the process down. like maybe remake a level of one of the classics like Zelda, and that will be a significant learning process i imagine. By 3D maths do you mean trig and cal? what i was worried about was studying studying one thing then finding out that i'm learning the wrong type of programming or language or something like that. my dad is a graphic artist so i have a basic understanding of working with X,Y and Z axis is this what 3D maths are? anyway thanks for pointing me the right way, it's hard to find advice on this subject and it's highly appreciated. i find that my biggest question is usually "am i think about this the right way?" mostly what i get is advice on using an existing engine like Unreal or something. thanks. so, keep up the C++ for now and learn to use a 3D modeling software while i learn the basics of programming?
Ruby is a fine language and I see no reason why it should be usable as a high level scripting language.
Speed mostly. Ruby doesn't really lend itself all that well to being embedded due to the nature and complexity of the language itself. As a result, Lua as an example, tends to be many times faster than Ruby when embedded. There are projects like MrRuby specifically to create a subset for embedding.
That said, that's a decision for way down the road. On the bright side, by their very nature, scripting languages are generally quite easy to learn once you know how to program.
To the OP, I wouldn't put the horse too far before the cart. Start with learning programming first, that is a task of several months before you can even think of build an engine, even an extremely lousy one. Yes you will need to know math quite well, at least on the level of advanced high school or first year university physics and algebra to program a 3D engine. Quite a bit more so to program a physics engine. The KhanAcademy can assist you a great deal in this regards.
If you are happy with C++ then stick with it. No reason to try another language until you are solid in your first language - besides, C++ is the primary language for games development so its worth sticking with!
Whilst its not Crysis, I would strongly recommend looking at Wolfenstein3D as a first 3D project. Its not too demanding for a beginner but one can achieve decent results and can expand it to throw in more challenging features such as shadows, physics, AI etc - theres lots of possibilities with ray-casting.
So long as you can get input from the cursor/arrow keys, write a bitmap loader and draw a dot on the screen then its just a matter of your maths and programming skill. So, if you're using C++ then I believe there is a newer version of what used to be DirectInput, and last I remember there was GDI for basic rendering features. Of course things have changed since I switched to Java in recent years, but I'm sure they are now easier to implement and with todays processing power you needn't have to worry about speed where a simple demo is concerned. If you have a quad-core then you can sit rather smug on a high horse...^_^
Anyway. Whatever you do just start simple and build on it gradually. And make sure you cover the basic stuff first before leaping into the "good stuff"!
Whilst its not Crysis, I would strongly recommend looking at Wolfenstein3D as a first 3D project.
As a first 3D project maybe, although much of what it teaches are no longer relevant.
As a first project NOOOOOOOOO, way way way beyond his current pay grade.
Whilst its not Crysis, I would strongly recommend looking at Wolfenstein3D as a first 3D project.
As a first 3D project maybe, although much of what it teaches are no longer relevant.
As a first project NOOOOOOOOO, way way way beyond his current pay grade.
I would have to disagree and say - at least mathematically - it is relevant. If our friend jumps straight into full 3D without at least that much maths knowledge then odds are they will end up disappointed. Whilst it may not be the case with the opening poster, I am only too well aware that many beginners come in through the 3D art door and quite a few of those are straight up "I don't do maths! Hate it!"...which is like a beginner in fitness not wanting to do the exercise part. LOL, I suppose programming would be eating our greens, but thats for another topic altogether...
As a first programming project...I didn't say it should be anything 3D, but I do agree with you none the less. I had success with writing a simple text game as my first project(back in 2000 and in C), but I made a mistake afterwards by leaping straight into C++ and DirectX6 before keeping it simple with WindowsAPI and GDI...too much in a hurry to write to write the next Quake killer, I suppose! Learning both C++ and DX at the same time is something I DO NOT recommend to anyone! o_O