hi guys, first post here. nice to meet you all. first of all, i'll be honest - i'm interested in learning to make games, and i register on this forum for that purpose alone. i'm sorry if it's a disrespect of any sort to the programming and C++ community, since its caliber is way beyond that.
my situation is simple, and brutal -- i have been a gamer for over a decade, and have recently been thinking about commiting to this hobby in a more positive way. i know absolutely nothing about programming, but i'm willing to learn. quick research points to C++ as a good starting point, and that's why i'm here.
now, the questions --
1. is C++ THE starting point for making games? i'm a working adult, so i can't afford to start off on the wrong foot. Please summarise the language's pros and cons in game-related terms. you are welcome to recommend something else.
2. let's say i'm using C++. what kind of creation can i realistically expect out of the language? can i make, say, a text based adventure game with full narrative and dialogue choices using C++? or a PoP type side scroller with simple graphic?
3. the learning curve. yup, the toughest question. like i said, i'm working and can only afford 2 to 3 hours on weekdays. and i'm not very good at math, if that's indicative of anything. i'm all ears to your honest opinions.
4. just how hard is it, trying to make a relatively complex game? is it a fool's errand? a genius' hobby? or something practice would make perfection of?
that's about it for now. thanks for your time, guys.
1.
In my opinion C++ is the best language for games as it is fast during execution and it is flexible (could be both Object Oriented or Procedural) but making something looking nice isn't really easy and it requires external libraries
2.
Text based games with some simple ascii art are not much difficult to create but even for basic graphic stuff (changing the color, moving on the screen, clearing the screen) require external libraries
3.
Learning the language itself is not so hard, there are many easy tutorials
( http://www.cplusplus.com/doc/tutorial/ ) but some experience with programming before getting to C++ is a really good thing
4.
One single person could create a relatively complex game but it would take a long time for that. Of course practice makes everything perfect...
On number 4: Creating a relatively complex game by yourself requires a lot more than just programming skill. There are a lot of additional assets that need to be created for any game that are not programming related. Textures, models, sound, music, levels/areas
There are some free resources out there for these various assets, but the truth is they provide a rather limited selection of assets and are at best suited for learning, demonstration, and test purposes.
If you DO reach a level of proficiency in programming to write the code for a 'relatively complex game' though, then it would not be terribly difficult to find others to help provide assets to flesh it out. Don't go looking to put together a team as a novice though. You'll just be wasting time. Focus on developing your own skills to a useful level first. Create a simple text adventure. Then create a more complex text adventure. Then create a simple side scroller with some free assets. Then create a more complex side scroller with some free assets. None of these project will be of much interest to anybody other than you, but they will serve as stages of learning that will help you learn to program, learn to design, but more importantly show you the level of complexity involved in a project that would even start approaching the level of games you're used to playing from professional game developers.
1.
C++ is the industry standard for games so with the proper tools (a graphics API and artwork) you could create as good of a game as any you have ever seen but you probably will not be creating Halo 4 by yourself anytime soon if you do not dedicate the rest of your life to it (by the amount of time you are setting aside). But if you are not looking into making extremely complex 3D games you may want to look into a language that is easier to understand but still powerful; I have heard many very good things said about Python with Pygame http://www.pygame.org/news.html but to the extent of my knowledge (limited) you cannot create 2D games in Pygame but there are other engines that provide that functionality to python, read on.
note: I personally enjoy C++ but I will learn Python in the near future because I have heard it is wonderful.
2.
I touched on this in #1 and you can do all of that and more in C++ (note: to cut down on the complexity of having to make your own game engine from scratch you will want a graphics API or a game engine. A very good rendering engine (Not a game engine) is Ogre http://www.ogre3d.org/ this also has a python wrapper. Also look into SDL http://www.libsdl.org/ which also has a python version. Would you want to creat
3.
If you devote 2 hours a day to serious study of a language you will become proficient in any language fairly fast but Python has the upper hand here, it has a smaller learning curve I have been informed.
4.
Creating a game in C++ will inevitably take more time to make than a similar game in Python but both will be very time consuming for a complex game.
1. Object orientation was thought with one primary purpose in mind: simulation. Games (particularly 3D games, but also any game where there's a lot of movement on screen) are just that: simulations. C++ offers object orientation and great performance, both vital for game development. C also offers great performance, and that's why it shares the throne with C++. C is also easier to learn, but it has the drawback of not having object orientation or a very big standard library, so might end up reinventing the wheel a fair bit.
3. 2-3 hours per day every day is quite alright.
Except for some kinds of programming, there isn't an awful lot of math. The most important concepts (aside from elementary math) are logarithms, exponentiation, sequences (e.g. Fibonacci), number systems (particularly hexadecimal and binary), and last but certainly not least, boolean algebra and arithmetic. There is an awful lot of logic involved, however.
3D programming also has lots of geometry and trigonometry.
4. How complex? Unless you're learning as you go, it's not so much hard as it is lengthy. Depending on how much time you invest and how complex the program, it could take up to several months to produce something worth bragging about.
About Python: I myself have not tried it, but I do think that neither it nor other interpreted languages will ever be used in any complex game. Compiled languages will always outperform interpreted languages, and for real time applications such as games, performance can make or break a game. Game developers know this, so they prefer to invest a little more time coding to see the frame rate go up.
Creating a 'modern' game from scratch, and trying to learn the language at the same time is, IMHO, a fools errand(as you put it). If you are an 'expert' in another language, you would be able to pick it up much more quickly.
I'm a freshman honors CMPSCI student at Penn State, and I've spent a couple of hours a day since August learning C++(with help from the guys on this site), and I'm just now to the point where I am learning how to design container objects and overload operators. I wouldn't have a clue where to start in creating a modern game. Having said that, a text adventure or a puzzle type game should be within reach.
Creating today's games is more like a movie production. As a programmer, you would be like the script writer(meaning you build the game engine). A decent movie still needs storyboard artists, cgi experts, sound editors, directors, actors, etc etc etc.
I'm not trying to rain on your parade, but game programming these days is a team effort. I would recommend learning c++ the traditional way, and at the same time, work with an open source game project(like nexuiz), and learn how to do level design. Or just build some quake levels. That will give you a good idea about how games are put together.
You are absolutely correct that Python will never be able to match C++ in performance but those forums are so persuasive... But on another topic would C# be more advisable for his needs? That coupled with XNA could make some very good games and I believe that you can actually make money off of them if you do not try to put it on an actual Xbox ( I realize that you can sell C++ games just as easily ). C# is growing and I believe simpler to learn than C++ but I have heard that it has slightly less performance. What are your thoughts?
hi guys. thanks for the replies so far. keep em coming~ :)
meanwhile, allow me to clarify myself. i'm not expecting to build a modern game with all the bells and whistles from scratch. having played games for more than a decade, i'm aware of how elaborate they are. ( as a sidenote, you might be interested to know that Luke Moloney, the founder of Relic and a self taught programmer, handled the programming of Homeworld almost single handedly, or so i'm told. )
what i do have in mind, tho, is to commit to my hobby in a more positive way, and, god willing, to create a new career opportunity or sort. i have some ideas and plots that i think are interesting enough to lay it down, that's what i'm here for -- to get a bearing and get things moving. but i'm also quite practical, so don't worry, your honest opinions are very valuable to me. :)
heya elyx, nice to meet sum1 who shares the same name as the one from half life 2 hehe.
im also a beginner in c++ as im learning a course here in aus. there are a heap of books devoted to programming in c++. i have to say, if youre really keen, you might wanna start off reading a bit of c++ to get started. theres a book called dummies guide to C++ if you wanna check it out.
as i said before im a beginner as well and only being learning for about a few weeks and i will say this: its a whole lot involving. not to put you off mate but theres a lot more to programming than anything. if you havnt ever coded ever prior to taking up c++ you will be faced with a whole lot of terminology, not to mention trying to get the logics of evrything combined etc. this isnt to put you off programming this is me being upfront and honest. if you want a challenge and want to do it, this is it. its not for everybody tho, but if you like it enough to make a game of any type for your enjoyment then you will work real hard to not only learn all the aspects of the language but alsp work hard to maintain your sanity cos it will drive you up the wall hehe.
good luck elyx. btw. ive joined here just now to reply to your post as im too a beginner. so i will be coming here a lil more now to seek out sum tutorials, ask questions, etc. hope you'll do the same elyx, you'll need all the help too.
if you want to make a career of programming than by all means, learn C++. As I said before it is an industry standard. Also I personally would recommend C++ how to program, it will take you from being completely new to programing and make you rather proficient by the end; although it does move a little slowly it is a great book. And after all, I am 15 years old and I understand it! http://www.google.com/products/catalog?hl=en&q=c%2B%2B+how+to+program&oe=UTF-8&cid=17396901020975315178&sa=title#ps-sellers
If you don't want to fork out $80+ for that get "Practical C++ Programming" or "C++ for Dummies" . It (Practical C++) moves at a slightly faster pace and requires some programming knowledge to understand it.
It is rather expensive but if you could make a career path out of it then it should pay for itself in due time. Also the book introduces other concepts such as the UML and the Boost librarys.
I didn't want to be the only one to rain on this parade, but given the information in the first post; I think you are dreaming. Sure, it is possible to overcome the obstacles that may lie in your path, but well, that's like betting that you'll hit the lottery. I wish you the best in your efforts, regardless; I hope that you someday prove me wrong.
But on another topic would C# be more advisable for his needs? That coupled with XNA could make some very good games and I believe that you can actually make money off of them if you do not try to put it on an actual Xbox ( I realize that you can sell C++ games just as easily ). C# is growing and I believe simpler to learn than C++ but I have heard that it has slightly less performance. What are your thoughts?
.NET? Nah. Avoid proprietary languages like the plague. Aside from that, yes, it's still slower than C/++, since it's a semi-interpreted language. Although it's faster than purely interpreted languages, since the compiler has done a little optimization, I believe. I think it has the same problem as Java, that for small programs, it takes longer to load the execution environment than to run the program itself. The only conceivable advantage I can imagine is that you won't have to worry about memory management, but that's not impossible to get in C/++. There are garbage collectors for them.
After reconsidering it, perhaps OP should consider starting with a different language, and then move on to C++. Since Python has a game development community, it may not be such a bad idea, but he should think of Python as a sort of training wheels. Once he's got enough practice, he should abandon them.
I think that if Elyx actually sets aside 2 hours a day to study programming then he will be proficient with whatever language he chooses relatively quickly. That being said seymore does have a very legitimate point and it should be considered fully; the only thing I disagree with is seymore likening overcoming adversity to chance if Elyx is truly
willing to learn
(Post 1) then the only question should be when to start ( exaggerated to make a point ).
Edit:
@Helios
I suggested C# before I knew that Elyx was doing this for more than kicks and was serious about a possible career. Also, I agree against proprietary languages, before I discovered C++ I played around with blitz basic and the demo only came with a compiler on top of other issues (ie no header files, everything had to be done in the main). Although it did make the transition to C++ easier...