   Language change
  Hello.At first I want to say, if this thread becomes a flame war....close the thread.In april 2004 I wrote my first Hello world app, in c++. And learned the basics for a couple of months, on my own, and with the help of Steven Prata's c++ Programming. Then, after a text based game I wanted to do some graphical work, found SDL, and learned the basics of that fast. Now I have done a couple of small clones of arcade games...pong, breakout, pac man, tetris, space invaders. And been fiddling a little with SDL&OpenGL. So when my final project in school came I directly thought, "I'm gonna make a 2d platform game in c++ and SDL!" and started working on it...well now I'm halfway through, but I can't get any motivation to complete it...I don't know were to start...And at work I've been developing small j2me(java) games for mobile phones, and found this more rewarding than making my 2dplattformer. I don't know if this is because of java or the more function based approach you have to use when working on limited devices.Well after reading this thread I've begun thinking, "Screw cross platform and c++, I'm gonna start learning c# and directx d3d in ortho mode to make 2d games!".Do you think I would benefit by a change of language and API? My theory of why c++ got out of hand for me is that I'm a bit of a perfectionist, I want to make everything "the right way" and keeping control of all instances and pointers to all my classes in the plattformer became too much.But I read something that made me worry a little bit, no templates in c#. I use some templates, is there some kind of replacement at hand? Or don't you need them in c#? Well, the real question is: Should I change language and API? And of cource remember and practice my c++ skills too, when this is the leading language...   
Quote:Original post by walleHello.At first I want to say, if this thread becomes a flame war....close the thread.In april 2004 I wrote my first Hello world app, in c++. And learned the basics for a couple of months, on my own, and with the help of Steven Prata's c++ Programming. Then, after a text based game I wanted to do some graphical work, found SDL, and learned the basics of that fast. Now I have done a couple of small clones of arcade games...pong, breakout, pac man, tetris, space invaders. And been fiddling a little with SDL&OpenGL. So when my final project in school came I directly thought, "I'm gonna make a 2d platform game in c++ and SDL!" and started working on it...well now I'm halfway through, but I can't get any motivation to complete it...I don't know were to start...And at work I've been developing small j2me(java) games for mobile phones, and found this more rewarding than making my 2dplattformer. I don't know if this is because of java or the more function based approach you have to use when working on limited devices.Well after reading this thread I've begun thinking, "Screw cross platform and c++, I'm gonna start learning c# and directx d3d in ortho mode to make 2d games!".Do you think I would benefit by a change of language and API? My theory of why c++ got out of hand for me is that I'm a bit of a perfectionist, I want to make everything "the right way" and keeping control of all instances and pointers to all my classes in the plattformer became too much.But I read something that made me worry a little bit, no templates in c#. I use some templates, is there some kind of replacement at hand? Or don't you need them in c#? Well, the real question is: Should I change language and API? And of cource remember and practice my c++ skills too, when this is the leading language...If you still want to stay cross-platform, you might want to install Mono and Tao for a C# and OpenGL solution which should work on most platforms.  As for templates, C# 2.0 supports generics, which are C#'s version of templates.  It's up to you.   ;Quote:Well, the real question is: Should I change language and API?Yes yes yes yes yes. Because a programmer who knows only one language is a mediocre programmer, no matter how good he is at that language. Learning other languages is important for two reasons: one, those other languages will be more useful than C++ in many situations; and two, you need to learn to adapt. After you've learned about a dozen or so programming languages, picking up a new one generally only takes a few hours. That is what it is to be a true programmer: to transcend the language and think in terms of the concepts of design underlying the code.   ;Quote:Original post by walleSo when my final project in school came I directly thought, "I'm gonna make a 2d platform game in c++ and SDL!" and started working on it...well now I'm halfway through, but I can't get any motivation to complete it...I don't know were to start...And at work I've been developing small j2me(java) games for mobile phones, and found this more rewarding than making my 2dplattformer. I don't know if this is because of java or the more function based approach you have to use when working on limited devices.Well after reading this thread I've begun thinking, "Screw cross platform and c++, I'm gonna start learning c# and directx d3d in ortho mode to make 2d games!".Do you think I would benefit by a change of language and API? My theory of why c++ got out of hand for me is that I'm a bit of a perfectionist, I want to make everything "the right way" and keeping control of all instances and pointers to all my classes in the plattformer became too much.Warning: you're sounding like a lot of people I've seen on here and know in real life, who have a large degree of talent but their desire for perfectionism destroys any practicality. There's a tendency to look to excuses such as trying a better language, or trying a new method or idea, instead of actually finishing the projects. Remember that people have been successfully creating games in languages far more complex to manage than C++ (eg. assembly, and arguably C), so it is perfectly possible.Don't fall into the trap of always chasing something that will make your life a little easier. All you do is set yourself back a bit each time, as you struggle to learn a new set of rules.I think this is especially true of going from C++ to C# or Java as I don't consider them to be sufficiently different to make it worth the effort of learning new APIs and libraries, not to mention the lack of stuff like templates which you have to work around.Besides which, you need to learn how to manage instances and pointers. Other languages may dress it up for you and make these things look more palatable, but not only are there still other resources you're going to have to manage effectively (eg. video memory), but a naive approach to resource handling will lead to diminished performance and possibly bugs that are hard to track down.Quote:Well, the real question is: Should I change language and API? And of cource remember and practice my c++ skills too, when this is the leading language...I think you should finish your C++ platform game. THEN, try a different language.   ;  not to underestemate C# here but can you mention one commercial game made in C# cause i really dont know any. its necessary to learn other languages but its important also to pick the best and by all means C++ is the hotest language in the industry its simply the best and cross platform is a reason to use C++ but its not the only one.   ;Quote:Original post by SneftelYes yes yes yes yes. Because a programmer who knows only one language is a mediocre programmer, no matter how good he is at that language. Learning other languages is important for two reasons: one, those other languages will be more useful than C++ in many situations; and two, you need to learn to adapt. After you've learned about a dozen or so programming languages, picking up a new one generally only takes a few hours. That is what it is to be a true programmer: to transcend the language and think in terms of the concepts of design underlying the code.Yes, I know this. And I'm fiddling with alot of languages to get that deaper understanding...but the question is more if I should change my "home language" so to speak...my prefered language...Quote:Original post by KylotanWarning: you're sounding like a lot of people I've seen on here and know in real life, who have a large degree of talent but their desire for perfectionism destroys any practicality. There's a tendency to look to excuses such as trying a better language, or trying a new method or idea, instead of actually finishing the projects. Remember that people have been successfully creating games in languages far more complex to manage than C++ (eg. assembly, and arguably C), so it is perfectly possible.Yes...this is almost exactly how I work right now...How do I break this trend? Any ideas. Quote:]Original post by KylotanI think you should finish your C++ platform game. THEN, try a different language.Yes...this is my thoughts too...and I'm going to finnish it! =);Quote:Original post by Black Acenot to underestemate C# here but can you mention one commercial game made in C# cause i really dont know any. its necessary to learn other languages but its important also to pick the best and by all means C++ is the hotest language in the industry its simply the best and cross platform is a reason to use C++ but its not the only one.C++ faced the same problem in the beginning ("Why use C++? C works.")  And C too ("Why use C ?  Assembly works.")  The games' industry is notably backward when it comes to adoption of new technology which isn't hardware.  Hell, is there a company that even TRIES to use unit testing in the industry ?   ;  as always, I like a good compromise as the solution: finish the game in C++ but make game related tools in C#i followed this approach and made the following tools (tools and game uncomplete yet but getting there).level editor - basics just place the tiles, but can have more complex stuff such as clipboard, undo/redo, inserting script snippets, and more...)sprite editor - for each sprite, define the animations (WALK_LEFT for example), for each animation define the frames and the delay between them, and the bounding boxes (for collision) for each frame and such...yes, learning C# takes time, but making these tools in SDL will take ages and have ugly GUI.  developing gui oriented applications is much faster in C# and you will save the time you spent learning.edit: this also makes sense in the platform issue - the game will be cross platform so linux-guys and apple-guys can enjoy it but the tools are for yourself only so only your platform is relevant.good luck!Iftah.   ;  I've thought about doing the leveleditor in c# because tried get wxwindows to work the way I wanted it...got depressed triyng =)I agre...that is a good compromise. But is lerning c# really that hard after 1½ years experience with c++ and some java experience?   ;Quote:Original post by walleYes, I know this. And I'm fiddling with alot of languages to get that deaper understanding...but the question is more if I should change my "home language" so to speak...my prefered language...Wellll. You need to prioritize, and it isn't something that any of us can help you with. Ask yourself which is more important to you right now: Becoming a better programmer, or becoming a more experienced game programmer? Doing either one makes doing the other easier, so there's no wrong answer. If I were in your situation, I'd try to complete a moderate-size project in C++ before moving on to another language, simply because having completed a moderate-size project will help you in orienting yourself. But only you can make that judgment call. (Don't let that paralyze you, though. Either way will work.)   