• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
Tyl3r684

Best language to be "versatile" in game making.

68 posts in this topic

[quote name='phantom' timestamp='1347139809' post='4978107']
[quote]
Typical forum behavior. You see someone who's honest about their possible ignorance and try to inflate it to a size reasonable enough for you to discredit his opinions. Instead of arguing against what I say reasonably, you try to take away my voice by reminding me and everyone else that "You haven't been doing it enough yet to ruin everything." But as I've already shown, if I've been doing it a year and I still haven't encountered the horrors, that means beginners won't encounter the horrors until they're not beginners anymore. And even if I do find out something and want to switch languages, is that the death of my programming career? Is Java an entirely different world? Or Python? Or [i]any other object-oriented language[/i]? Was my time spent with C++ wasted? Will I start from scratch? This is ridiculous.
[/quote]

Yes, it is typical behavior of [b]people who have more experiance than you in a subject.[/b]
You wouldn't take 1 year of a maths class and then declare that the maths behind QM is easy - nor to should someone who is, regardless of if your ego likes it or not, a beginner in the subject be saying 'oh, I've had no problems, it must be easy'.
[/quote]

Did you honestly compare C++ to the mathematics behind Quantum Mechanics? I think that's a fitting end to this conversation.
-3

Share this post


Link to post
Share on other sites
I'd like to have a go at addressing one of the points Shaquil has raised:

[quote name='Shaquil' timestamp='1347115335' post='4977987']
C++ is widely considered the "main" gaming language. It's what industry professionals use, it's what indie devs use, and it's what you'll probably have to learn eventually.
[/quote]

Yes, C++ is generally the go-to language for professional developers working on AAA projects, but it increasingly isn't what indie developers use, and there's absolutely no reason the OP will necessarily [i]have[/i] to learn it eventually. Even in the industry, it's increasingly common the use C or C++ for lower-level performance critical code and a higher-level language (Lua, Python, UnrealScript, UnityScript, et al.) for the rest of the code.

The reasons professional developers often choose C++ are, for the most part, sensible and pragmatic, but many of them simply do not apply to someone who isn't coding in that environment with that level of experience:[list]
[*]AAA studios often employ large teams of developers, many of whom already have extensive experience with C++. The average beginner will be working alone or in very small teams for at least a couple of years, and by definition does not have any background experience.
[*]Consoles often have limited compiler and library support, forcing professional to work with what is provided or spend a lot of time and resources working on their own new tool chains. Beginners are rarely (if ever) placed in this environment, and therefore need not be limited in this way.
[*]AAA studios have large existing code-bases written in C or C++ and can often save time and effort by building upon that code. The average beginner does not have an existing code-base, and will either be starting from scratch or working with third-party code; as long as there are some good libraries available in their language of choice they should be fine.
[*]Professional developers have the knowledge and experience to take advantages of the lower-level access that C++ can provide to write more optimal code, and often need to do this to meet their performance targets. Beginners do not have those difficult-to-achieve performance targets, and lack the experience to make the necessary optimizations anyway.
[/list]
Indie developers are increasingly using languages other than C++, although it does remain a popular choice. C#, Lua, Flash-targeting languages (ActionScript, Flex, HaXe), JavaScript, and others are being used for their advantages in productivity, and are perfectly capable of providing a performant and professional-quality game play experience.


That being said, you're right that there are a lot of libraries and documentation available to C++ developers of any skill level, and that there is plenty of support available. These are real points in favour of the language -- but not necessarily an advantage given the same is true of many other options as well. I think C++ is a valuable language to learn, and I think it will continue to be a useful language for years to come; but I remain unconvinced that it's a good choice for the average beginner. Edited by jbadams
2

Share this post


Link to post
Share on other sites
Shaquil is not making his point very well, but he is not wrong.

[quote name='phantom' timestamp='1347139809' post='4978107']
No, it is not a matter of 'being too stupid to learn from your mistakes'
[/quote]
That is not what he said. He said he is too stupid to make them. Which is basically how it works.

You will have more opportunities to make mistakes once you get into advanced class usage, multiple inheritance, and exceptions, but beginners are limited in the mistakes that are available to them. For someone who is just barely more advanced than getting a Windows® window on the screen, using a few classes with no or few virtual functions, and a bit of dynamic memory, the only real mistakes [i]available[/i] are related to leaking memory/handles (obviously [i]design[/i] issues are not considered here) and bad memory access.

C++ provides you chances at shooting yourself in the foot around every corner, but you are all making it seem as if it is possible to turn 2 corners at once.
We grow up in any language by taking one corner at a time. We turn the next corner when we are ready.



[quote name='phantom' timestamp='1347139809' post='4978107']
Wrong.
Just because you haven't seen the outcome of your mistakes does NOT mean you have not made them.
[/quote]
That is quite likely true. But the counter-argument is that having a language hold your hand is not very beneficial for your overall growth either. If you aren’t allowed to make mistakes, you aren’t able to learn from them.
I am sure his code is full of errors, and if it is then he will someday have a chance to learn from them, if not now.



As for the actual question, everybody’s growth will be different.
I started with languages that had no manual allocation system, so when I moved to C++ it took me a lot longer to figure out how to properly handle my memory.
If I had started with C++ I would have learned this sooner, but would have had other difficulties in other places.
Some people recommend Python whereas I am glad I have never had to write a line of Python in my life.
Everyone’s learning experience will be different. Why don’t you just pick a language and see how it works out?
Start with C++ and, if it overwhelms you, downgrade yourself to a different language.
I started learning C++ and Glide graphics programming at the same time and I realized it was too much. I took Glide off my plate and focused just on C++ and re-tackled Glide a year later when I had better footing.


The problem with asking people on a forum is that it assumes we know you and your abilities.
Again, everyone is different, so know your own abilities, try the language of your choice, and see how it goes for yourself. Programming in any language is hard and no matter what language you choose you have many years of hard lessons to learn and changes in your mentality and style ahead of you. So just get on with it.


L. Spiro
1

Share this post


Link to post
Share on other sites
Personally my idea that those so called 'easy languages' are a joke, they are not easy and allow you to screw up very badly as well. My programming history stated with BASIC on a commodore 64, although I never made any serious and larger projects back then. On the PC I started with visual basic, as that was suppose to be easy. Truth is, it's not. My first application made with VB crashed more often then the first project I made with C++, it didn't do what it was suppose to do in lots of cases and eventually got abandoned because the code base was simply unmaintainable. Clearly, choosing an 'easy language' here didn't help to guarantee the success of the project.

In my experience, the language is a minor factor in the learning curve, and your learning method and attitude are of major influence on how easy or hard it will be. Trying to take steps that are to large will undoubtedly result in failure, no matter the language. If you start with learning how to program by making a MMORPG, you will probably not succeed. However if you take small steps, using a good book or tutorial, you should be able to learn any language you want. With some languages you might be able to jump to get more results quicker, like jumping into 3D much faster, however as said this does not give guarantees for the success of the project, as going to fast in any language is bad.

In fact, it's very dangerous to use a so called 'easy language' in order to get results faster, as you may be rushing over the basic fundamentals and jump into GUI or 3D to fast, and eventually the project becomes unmanageable because you rushed over the fundamentals. I'm not saying you shouldn't use these languages, but not for the reason of being able to jump into 3D programming faster. While C++ might have it's raw memory management that needs to get used to (although you don't have to touch that for your first c++ program at all), but a garbage collector isn't something you don't have to understand either, it has several pitfalls and nasty side-effects (object resurrection anyone?) so also for managed languages you really have to understand memory management after all or your project will fail.

In the end, I would say if somebody wants to learn C++ straight away, let him. It may take longer to get a 3D scene up and running, but what is the use in quickly getting simple 3D scene up and running if you then have to throw away your code because you skipped the basics and the code is unmanageable and you have to start all over again rather then extend it into your game? You should set your goals straight, don't try to make a game if you want to learn how to program, learn to program instead. If your goal is to make a game rather then to learn how to program, then you shouldn't use C++, but neither should you use any other programming language, pick an engine with a ready-to-use level editor with a simple (preferably visual) scripting language that allows you to write small pieces of script logic, rather then whole programs. By writing small independent pieces of script code you don't have the risk of getting unmanageable code, as there is no direct relationship between the individual scripts, as with a whole program.
0

Share this post


Link to post
Share on other sites
[quote name='L. Spiro' timestamp='1347172339' post='4978193']
[quote name='phantom' timestamp='1347139809' post='4978107']
Wrong.
Just because you haven't seen the outcome of your mistakes does NOT mean you have not made them.
[/quote]
That is quite likely true. But the counter-argument is that having a language hold your hand is not very beneficial for your overall growth either. If you aren’t allowed to make mistakes, you aren’t able to learn from them.
[/quote]

The problem is that until you see those mistakes you can't learn from them.

You can write C++ code which during an array traversal wanders out of bounds and gets away with it because you've been lucky. You never encounter the error, you never learn from it.
Something like C# is going to very quickly yell at you about doing so giving you a chance to catch the mistake and the algorithmic error which comes from it allowing you to learn.

It's about setting up solid foundations, the ability to reason about a problem and write the code without being tripped up by the little things along the way.

Once someone decides to learn to work with C++ this will give them a sound basis to work from when it comes to programming knowledge and make the transistion to the unprotected world of C++ easier.
0

Share this post


Link to post
Share on other sites
[quote name='MichaBen' timestamp='1347180730' post='4978215']
In the end, I would say if somebody wants to learn C++ straight away, let him.
[/quote]

And no here is stopping anyone so...?

It's not about 'letting' people do anything, it's about laying out that C++ is NOT easy as was claimed.
If someone still wants to go off and work with it then it's not like we could stop them and when they rock up there with the questions people will still help them.

It's about making an informed choice about how you are going to spend your time; if you don't need the complexity of C++ because you are just starting out or your project simply doesn't need it (and most projects don't; our build system at work was written in python, the new version is C#, most of our tools are either python or .Net based, only the main game is C++ because it is aimed at consoles where we have no choice and we need C++) then picking C++, without being informed, it's the wrong choice.

It is simply an extension of The Right Tool For The Job and it is also a good starting place because it gets people, very early on, use to the idea that if you are serious about this then you won't stop at once language you'll keep picking up new ones so the fact you didn't start with C++ doesn't matter.

(C++ was in fact the 5th language I learnt, and then a couple of languages later I learnt it again properly - and yes, I started with an 'easy' language too in BASIC as that was all I had access to.)
0

Share this post


Link to post
Share on other sites
I'd vote for the Monkey programming language [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img] very close to Java, although still in it's infancy, Monkey is a pleasure to work with, but that's
my opinion. Edited by t-boy
0

Share this post


Link to post
Share on other sites
While I will try not to jump on the "C++ vs the_world" bandwagon again today, (Seem to have been doing it all week :/) the OP did ask for opinions on "best language to be \"versatile\" in game making" and I am not entirely sure that the chosen python language fits this.

For example, now he has had to go with pygame as the underlying library. Versatile should surely mean that they are free to choose any library / engine they want and without an extremely good knowledge of python (more so than would be needed to learn C++) I would not advise wrapping native libraries up in python just to use them as a beginner.

As it stands, there are more native "game making" libraries for pure C and C++ than there are bindings for any other language so these languages must surely be the most versatile.

Afterall, if you are going to use the library specifically for the language, then Ada and Ada's SDL bindings surely sounds just as versatile as python. Not to mention distribution via a gnat binary will also be easier than getting all your users to install a python interpreter (which on Windows is still a pain). Edited by Karsten_
-1

Share this post


Link to post
Share on other sites
[quote name='Karsten_' timestamp='1347185766' post='4978239']
For example, now he has had to go with pygame as the underlying library.
[/quote]
In addition to PyGame, Python users have [url="http://www.pyglet.org/"]Pyglet[/url], [url="http://pysfml2-cython.readthedocs.org/en/latest/index.html"]PySFML[/url], [url="http://www.panda3d.org/"]Panda3d[/url], [url="http://www.ogre3d.org/tikiwiki/PyOgre"]PyOgre[/url], and presumably others I'm not aware of. Python users are hardly short of options when it comes to libraries.

I'd agree there are [i]more[/i] options available to C++ users, but there are plenty of good libraries available to Python users, and once more advanced they will also have the option of binding to libraries that aren't currently supported.


Additionally, in this particular case the original poster's definition of versatile as given at the start of the topic doesn't actually call for multiple libraries. Had the decision instead been to use C++ we would be advising the choice of a single library; quite possibly SDL, which PyGame is a binding for. The availability of additional libraries isn't really a serious concern in this case, and isn't really what the original poster was asking for.


Windows distribution is admittedly still an area where Python is a little weaker than alternatives -- but it's also something a beginner won't have to deal with immediately, and for which there are some existing solutions.
1

Share this post


Link to post
Share on other sites
[quote name='MichaBen' timestamp='1347180730' post='4978215']
In the end, I would say if somebody wants to learn C++ straight away, let him.
[/quote]
I really loved your point of view and you can't be anymore right !!

Thanks for posting your opinion.
1

Share this post


Link to post
Share on other sites
[quote]Shaquil is not making his point very well, but he is not wrong.[/quote]

What do you mean? My point was made pretty well in my original post. In fact, I expected it to get downvoted to hell because people would venemously disagree that C++ should ever be looked at or spoken of, but it's got 7 upvotes.

Phantom's supposed [i]real problem[/i] is that he thinks I said C++ is easy. Here's what I said:

[quote]1. C++ is not nearly as hard as you think.[/quote]

In response to that, he tried to discredit my ability to speak on this topic which you and several others have clearly shown is [i]utterly subjective[/i]. The best way to make it so you don't have to build counterpoints to someone's points is to make sure the person can't raise anymore points. But I'm not going to let him do that. That's been my argument.

The whole C++ is easy nonsense is none of my concern. I didn't say that or even imply it. It's some fake sticking point he made up, and I'm not interested in recognizing it as a true point of debate.

[quote]As it stands, there are more native "game making" libraries for pure C and C++ than there are bindings for any other language so these languages must surely be the most versatile.[/quote]

[quote]I'd agree there are more options available to C++ users, but there are plenty of good libraries available to Python users, and once more advanced they will also have the option of binding to libraries that aren't currently supported.[/quote]

This exchange is a perfect example of what actually [i]should[/i] have happened.

And one more thing: To those of you who might, for some unfathomable reason, think that the comparison of C++ to any form of advanced mathematics is a realistic one, you need a wakeup call: Let's say we compare C++ to Calculus. Can someone who knows nothing but basic arithematic learn C++? [i]Absolutely[/i]. Can someone who knows nothing but basic arithematic (PEMDAS) learn Calculus? [i]Absolutely not[/i].

Any beginner C++ tutorial will teach you from the absolute ground up: Operators, variables, control structures, functions. It's all there for you. On the other hand, I [i]challenge[/i] you to go find a book devoted only to Calculus that teaches you polynomial multiplication/division, let alone how to factor, [i]let alone what a variable even is[/i]. Calculus has a prerequisite of [i]many, many[/i] years of mathematical education. C++ has a prerequisite of knowing how to read, type and do basic arithematic. If you can start learning Python, you can start learning C++. But if you can start learning C++ does that mean you can start learning Calculus? Or Quantum Mechanics? To compare the two is just another wild delve into hyperbole, no better than comparing the errors you can make in C++ to handling a "nuke with rusted wiring" as someone else said previously. It's pure insanity.

You've got to be absolutely kidding me. Edited by Shaquil
0

Share this post


Link to post
Share on other sites
[quote name='Shaquil' timestamp='1347199098' post='4978295']
And one more thing: To those of you who might, for some unfathomable reason, think that the comparison of C++ to any form of advanced mathematics is a realistic one, you need a wakeup call: [/quote]

It is called a 'smilie' where the progress of learning in one situation was compared to the progress of learning in another situation.

I did not comapre C++ to QM as you seemed to think, I compared a situation where a beginner in one field questions the experise of someone in the same field when they don't have the expertise to do so.

At no point did I say 'OMG! C++ IS LIKE QM! LULZ!' or whatever insanity you seemed to read - I liked two situations to give you an idea of the 'insanity' (a word you seem very fond of) of your position where you seemed to think that your whole year of C++ gives you some real insight into the subject.
1

Share this post


Link to post
Share on other sites
And yet you still have failed to actually prove [i]anything[/i] I said wrong. You continue to fall back on the tried and true "Who does this guy think he is?" tactic. You think you're going to talk down to me enough that at some point you'll get the last word and I'll be quiet like a good boy, but it's not going to happen. Your refrains are these:

"C++ is not easy." Cool, I'm glad we agree.

"You're still a beginner, so don't give advice to a beginner." Now wait a minute. If this is in fact one of the things you're trying to tell me, that's nonsense. You've been doing this for ten years you say? What was C++ like ten years ago? What was it like to be a beginner ten years ago? I dunno. Do you? Do you even remember [i]most[/i] of the problems you had, let alone [i]all[/i]? I know a lot more about being a beginner than you do. I remember all the things that got in my way, all of the self-started projects I completed or never even got halfway done on. In this department, your ten years work against you.

You think about all the problems you've had with C++, and most of them might truly be far too advanced for a beginner, but as has been said: That means a beginner probably won't run into them. And if he makes those mistakes, so what? Is it mission critical code? He'll learn the best way to do the things he's been doing later. Just like when you start off writing code like int box1, int box2, etc, and then later you learn "Oh, that's what arrays are for. Bad habit erased."

And here's your quote:
[quote]
Yes, it is typical behavior of people who have more experiance than you in a subject.
You wouldn't take 1 year of a maths class and then declare that the maths behind QM is easy - nor to should someone who is, regardless of if your ego likes it or not, a beginner in the subject be saying 'oh, I've had no problems, it must be easy'.
[/quote]

And my point still stands. It's a terrible example. The different fields of math build upon one another. But that's not necessarily true for the different programming languages. You don't need to learn JavaScript before you learn C. And you don't need to learn C before you learn C++. On the other hand, you need to learn Algebra and Geometry before you learn Trigonometry. And so on. Edited by Shaquil
0

Share this post


Link to post
Share on other sites
[quote name='Shaquil' timestamp='1347201702' post='4978304']
"You're still a beginner, so don't give advice to a beginner." Now wait a minute. If this is in fact one of the things you're trying to tell me, that's nonsense.
[/quote]

Show me.
Go on.
Pull a quote where I said [b]precisely[/b] that.

I'll wait...

You can't complain about being talked down to and attacked when you go around blowing things out or proportion and misrepsenting what others have said.

[quote]
You've been doing this for ten years you say? What was C++ like ten years ago? What was it like to be a beginner ten years ago? I dunno. Do you? Do you even remember [i]most[/i] of the problems you had, let alone [i]all[/i]? I know a lot more about being a beginner than you do. I remember all the things that got in my way, all of the self-started projects I completed or never even got halfway done on. In this department, your ten years work against you.
[/quote]

My own personal experiance in general beginner problems isn't relivent, nor in the area of [b]being a beginnner[/b] did I claim that [b]my experiance[/b] was. By the time I got to C++ I'd been programming for 10 years, including one assembly language variant and a brief stint in early Java.

However my experiance with C++ gives my view of C++ more weight and my observations over the 10 years of my being on this site give me a pretty good idea of the problems that beginners suffer from in C++ and the problems that come up when they try to deal with it.

[quote]
You think about all the problems you've had with C++, and most of them might truly be far too advanced for a beginner, but as has been said: That means a beginner probably won't run into them. And if he makes those mistakes, so what? Is it mission critical code?
[/quote]

If the code is mission critical or not is utterly unimportant.
But ok, lets take something which is simple C++; a Standard Container.
Those things can blow up with some of the most god aweful error message you'll ever see.
Yet they are key and central part of the language; somethinig a beginner should be starting with from practically Day 1 (if you are doing strings via char * or dynamic arrays of memory via <type> * then you are Doing It Wrong). Yet these areas can produce some of the most hard to understand and track back error messages out there.

And even if you fall back to doing char * strings or <type>* memory allocation you now run into the world of no bounds checking where you can do as you like and nothing will tell you otherwise until something blows up in your face.

I've seen beginners confused by things relating to 'access violation at address 0x000000c' which I can look at and say 'oh, it's this...' right away but they have no idea about. And yet allocating instances of types and calling functions on them is central to C++ but [b]not for learning to program [/b]and can be taughted better in language which tell you via better error messages what has gone wrong. Try missing of a ';' somewhere in a header and watch the explosion of error messages which happen due to one tiny syntax error which has no impact on the ability of someone to learn the basics of programming.

Hell, there was an example recently of someone being confused because they could apprently call a function via a null pointer to a class without things going wrong.

The C++ standard itself is known for using the word 'undefined' or 'implementation defined' through out its language.

None of the things I've mentioned above are 'advanced' and yet I've seen over the years people repeatedly trip up over them and then the resulting cryptic error messages/reactions from the runtime which can come about from it.

Edit: you can also add to that list compile times, header files, pathing issues and libraries.
Again none of those are advanced but being forced to deal with them just to learn is, to use your phrase, 'insane'.

[quote]
He'll learn the best way to do the things he's been doing later. Just like when you start off writing code like int box1, int box2, etc, and then later you learn "Oh, that's what arrays are for. Bad habit erased."
[/quote]

But it's not just Bad habits like that - C++ carries with it a massive legacy and with it comes 'advice' which might have been important 10 or even 5 years ago but these days is worthless.

New C++ programmers, the ones who seem to defend the language with such tenacity (or ones who only know C++ like it is the only thing worth knowing), are also the biggest source of 'not made here syndrome' - many shunning the standard library as if it is some slow and horrible thing, instead favouring that own bug ridden versions, because they once read somewhere that it was slow. This persists going forwards and instead of taking advantage of tools which exist they go on to try and reinvent everything because they feel somehow they will 'learn more' (also the classic excuse of someone who wants to make a game but believes making an engine first is a good idea).

This is a mind set which is VERY hard to break and one which continues to be recycled from programmer to programmer as someone new starts all the other newbies around them just tell them what they have done themselves.

(I figure it must be some kind of self reinforcement cycle - "if someone else does it then I can't be wrong" but that's far far off topic).

All of the above is why, when compared to other languages, C++ is lacking.

Yes, C++ has it's strengths, one of which is being on all platforms and other of which being if you know what you are doing you can get more out of it than maybe you can in another language HOWEVER those two arguements are utterly moot because they are advanced topics (often requiring knowledge of the target platform and how the code generation can work) and you have already stated that advanced things don't matter to beginners.

When you are starting out getting told what you are doing wrong is more important than speed or frankly other considerations beyond learning the art of programming.
C++ makes this harder than it needs to be. Edited by phantom
0

Share this post


Link to post
Share on other sites
[quote name='Tyl3r684' timestamp='1347074132' post='4977883']
My friend and I are small coders, know some here, know some there, but...We are looking for a language to be open to make any kind of game, I do not mean FPS or something like that witch requires Unity, UnReal, etc. We are looking for a CODING language that can be made into 2d, Not any 3d! And by games I mean 2d-sh game, aka at a angle, and it be able to be used on any type of game like that and be made to look nice and PROFESSIONAL, I was thinking C/C++ or Java, what do you guys think? Maybe even top down, or complete side view, please reply! [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]
[/quote]

I am sure any language can be used to achieve any of those results.

I have previously hated on C++ so unfairly so I cant criticise the negative comments people have made about the language here, I have in the past few months started using the language heavily and honestly I can understand some of the compliments the language gets but I also only need to do work in C++ when necessary and I cant really say that is often, but this is of course me and I cant speak for others.

However it must be said that picking a language should not be based on what others have said, but should be based on what you are doing, what experience you have with current languages / libraries and what libraries you will likely want to use. For example if you wanted to use WPF, you wouldnt pick Java, same as if you wanted to make a PHP website you wouldnt pick C++, I think the point people are forgetting here is the language you pick depends on what you are going to be doing.

As for your requirements many languages & libraries can provide for your needs, ultimately depending on what libraries you pick or what you require will determine what language is 'better'.

The only other thing I will mention is, you dont have to stick with one language only, my current projects heavily depend on C++ and C#, both work very nicely together, I use both for different things and would have greatly struggled with my work if I religiously picked one only. Would I recommend C++ to a beginner though, well that depends on what the beginner wants to do now and in the future and most of the time C++ just seems to be unproductive for what beginners require but is still a great language to learn.
1

Share this post


Link to post
Share on other sites
I have been following this topic very closely, and this is my personal conclusion as a self learner and with a BS in CS.

All the programming are a trip to learn. Think about them as is a way to help you achieve the system/game you have in mind. Please don't waste your time on analizing what could be more easy/dificult to handle/learn. In my experience, the harder things to learn are the most rewarding.

What I do is follow the trend; I do what PRO game developers do because, if you do, [i]at the end[/i] you will achieve the same goals and results. It's just a matter of logic deduction.

Another thing, if virtually all the modern tools/games/engines are made in C++, it's because it has to be very versatil and rewarding (Valve or Epic can't be wrong), thus, needs some time to understand and learn; but when you do it, the results are limitless.

And finally, start TODAY. There's a bunch of tutorials/activities/classes/etc on the internet. The first that comes in my mind is gameinstitute.com, powered by PROs of the industry.

If you really want to make games, the only thing is that's stoping you is your attitude.

Hope this helps. I wish you the best success in this awesome trip.

[b]Edit.[/b]
And you need to have "talent" to do it? nah, I don't think so. I think you have to stick with it until you accomplish your job. I remember a quote of John Romero that says (about when he was learning C) "crap, I remember readying all the book and not understaing anything that was saying". And that didn't stop him.

Check this article i read today:
[url="http://www.theverge.com/gaming/2012/8/22/3259892/edmund-mcmillen-on-talent-and-why-his-basement-collection-took-so-long"]http://www.theverge....on-took-so-long[/url]

[b]Edit 2.[/b]
I wrote this as a way of reflexion. I frecuently try to stick to Aristotle's quote: [i]Says the ignorant, the wise doubt and reflect.[/i]

Thanks guys. Edited by JETerán
0

Share this post


Link to post
Share on other sites
[quote name='JETerán' timestamp='1347206869' post='4978333']
What I do is follow the trend; I do what PRO game developers do because, if you do, at the end you will achieve the same goals and results. It's just a matter of logic deduction.
[/quote]

Unfortunately your logic is wrong.
Beginners are not pros - pros are often people with years of experiance in the field thus what a pro does or does not use is of no importance to someone just starting out.

For example where I work we play many tricks with how memory is allocated, pointers are fixed up and how things are passed around the system; we are professionals and yet I would never advise someone to follow our line of thought without experiance.

The end result of the journey might well be using the tools that pros use however this will be relevent once the person in question gets to their level.

[quote]
Another thing, if virtually all the modern tools/games/engines are made in C++, it's because it has to be very versatil and rewarding (Valve or Epic can't be wrong), thus, needs some time to understand and learn; but when you do it, the results are limitless.
[/quote]

And they are designed this way due to legacy and existing requirements - those are not the same requirements that a beginner is going to have.

Also there has been a shift to the vast majority of in-hosue tools being written in a .Net language.

Most games in existance are probably Flash or otherwise based as such C++ has no relivance there either.

AAA game production, staffed by experianced people with specific requirements, is not a guide for where someone should start regardless of their ultimate goal - it might guide their process as they progress however first of all you have to learn to program and as such what pros do is not important.
1

Share this post


Link to post
Share on other sites
[quote name='phantom' timestamp='1347204100' post='4978316']
And even if you fall back to doing char * strings or <type>* memory allocation you now run into the world of no bounds checking where you can do as you like and nothing will tell you otherwise until something blows up in your face.

I've seen beginners confused by things relating to 'access violation at address 0x000000c' which I can look at and say 'oh, it's this...' right away but they have no idea about. And yet allocating instances of types and calling functions on them is central to C++ but [b]not for learning to program [/b]and can be taughted better in language which tell you via better error messages what has gone wrong. Try missing of a ';' somewhere in a header and watch the explosion of error messages which happen due to one tiny syntax error which has no impact on the ability of someone to learn the basics of programming.

Hell, there was an example recently of someone being confused because they could apprently call a function via a null pointer to a class without things going wrong.

The C++ standard itself is known for using the word 'undefined' or 'implementation defined' through out its language.

None of the things I've mentioned above are 'advanced' and yet I've seen over the years people repeatedly trip up over them and then the resulting cryptic error messages/reactions from the runtime which can come about from it.

Edit: you can also add to that list compile times, header files, pathing issues and libraries.
Again none of those are advanced but being forced to deal with them just to learn is, to use your phrase, 'insane'.

[quote]
He'll learn the best way to do the things he's been doing later. Just like when you start off writing code like int box1, int box2, etc, and then later you learn "Oh, that's what arrays are for. Bad habit erased."
[/quote]

But it's not just Bad habits like that - C++ carries with it a massive legacy and with it comes 'advice' which might have been important 10 or even 5 years ago but these days is worthless.

New C++ programmers, the ones who seem to defend the language with such tenacity (or ones who only know C++ like it is the only thing worth knowing), are also the biggest source of 'not made here syndrome' - many shunning the standard library as if it is some slow and horrible thing, instead favouring that own bug ridden versions, because they once read somewhere that it was slow. This persists going forwards and instead of taking advantage of tools which exist they go on to try and reinvent everything because they feel somehow they will 'learn more' (also the classic excuse of someone who wants to make a game but believes making an engine first is a good idea).

This is a mind set which is VERY hard to break and one which continues to be recycled from programmer to programmer as someone new starts all the other newbies around them just tell them what they have done themselves.

(I figure it must be some kind of self reinforcement cycle - "if someone else does it then I can't be wrong" but that's far far off topic).

All of the above is why, when compared to other languages, C++ is lacking.

Yes, C++ has it's strengths, one of which is being on all platforms and other of which being if you know what you are doing you can get more out of it than maybe you can in another language HOWEVER those two arguements are utterly moot because they are advanced topics (often requiring knowledge of the target platform and how the code generation can work) and you have already stated that advanced things don't matter to beginners.

When you are starting out getting told what you are doing wrong is more important than speed or frankly other considerations beyond learning the art of programming.
C++ makes this harder than it needs to be.
[/quote]

This was by far your best post. You used specific, concrete examples and attacked the [i]ideas[/i] I presented instead of attacking [i]me[/i], I love this post. Now here's my response:

I've come up against a couple of the things you mentioned, and usually after already getting a couple of days into coding something. It was frustrating, I was confused, there were few answers, and it would have been easy to quit. But it was also exciting. It's fun making horrible mistakes and then learning why they're mistakes and what makes them so wrong in the first place. There's no better way to learn about something than to try [i]really[/i] hard at it, fail, and then ask people who know better than you "Why did I fail?" It will always be better than having people warn you beforehand: You should absorb what you can from what you read/are taught, try it out, and then go back to learning with the new perspective you've gained from putting it in action: You can relate to what you're reading.

This is my personal philosophy, and you may agree or disagree.

And what you bring up also points to a very valid concept I neglected, but should have mentioned: There are some languages that might be better for those who want to learn to [i]program games[/i], and then there are some better for people who want to [i]make games[/i]. I think it is misguided to try to write your own huge libraries/tools/engines when you can just build on previously done work, but then again the people who justify it by saying "I'll learn from it" are being sincere. Most likely, they aren't [i]just[/i] interested in making games, but also understanding the basic inner workings of games. They want to know [i]why[/i] the cool stuff works just as much as they want to [i]make[/i] the cool stuff.

To that end, it's a bit harder to find a distinction between [b]learning to program[/b] and [b]learning to program with the technologies at your disposal[/b]. If a person agrees with you, they'll think that C++ is overkill, or too burdensome, and they probably think it's a language that requires too much [b]technology learning[/b] at the cost of [b]programming learning[/b]. If a person agree with me, they probably feel like they're interested in both learning the foundations of programming, [i]and[/i] some powerful technologies to program with.

Again, it's just a matter of personal discretion rather than some god-given guideline. Completely subjective.
2

Share this post


Link to post
Share on other sites
[quote name='phantom' timestamp='1347207463' post='4978335']
Unfortunately your logic is wrong.
Beginners are not pros - pros are often people with years of experiance in the field thus what a pro does or does not use is of no importance to someone just starting out.
[/quote]
In this case, phantom is far from wrong.
Beginners should not emulate pros—the same results have no meaning if the reasons behind them are not understood.


But phantom says (without quoting) that people don’t learn from mistakes they can’t see.
That’s really a non-issue. Programmers will see those mistakes when the time comes that they reveal themselves.
The logic that a beginner will only see certain mistakes at a certain time can be applied to us all.
Whatever your level in C++ is, a mistake at your level +1 could be lurking in the shadows.

We will all get to them when we are ready.
As far as I am concerned, facing them early on is just building a level of critical thinking that will at a later age put you above your peers.
Unless you want to deny the biological truth that younger people learn more easily than older people.

You do no one a favor by presuming what they will be thinking at age 30.
I can tell you I wish I had learned C++ sooner so that I would be better at it today. For me to have followed the advice given on this forum today—
It’s like a 3-year-old child I met on the plane to Thailand the first time I left America. His mother was Korean, his father Japanese, and he was raised in America.
Guess what. While everyone else is second-guessing how much children can learn, his Korean and Japanese were entirely fluent, while I at the time knew only English (he also knew English, making him trilingual at age 3, with no accent in any language).


I stand by my previous statement.
Each person learns at his or her own level and rate.
Let each person explore this subject on his-or-her own and decide for him- or her- self what language is suitable for him or her.




[quote name='Shaquil' timestamp='1347199098' post='4978295']
[quote]Shaquil is not making his point very well, but he is not wrong.[/quote]
What do you mean?
[/quote]
I mean what I said. I am sitting here taking your side, but I can’t vote up your posts. Something irks me within them…
That being said, it is possible that you are not being taken seriously enough because of your rating.
I do feel that some people are making C++ seem more horrible for a beginner than it should be, and I agree with points you have made in your posts.
They have been taken out of context and used to promote the other side.


C++ was my 3rd language, preceded by BASIC (TI-81 Calculators) and mIRC Script. That is what I had available to me. I could not initially grasp concepts such as dynamic memory allocation, and I was an idiot in this regard, but no previous programming experience helped me with it, and I would have ultimately been better off just learning it from the start.
As I mentioned, this was a basic thing I learned later than I should have just because of my upbringing.

Again, the final answer is to let this person try some languages himself and decide by himself what is overwhelming. Everyone learns differently. We can’t answer this question for this person.


L. Spiro Edited by L. Spiro
1

Share this post


Link to post
Share on other sites
[quote name='Shaquil' timestamp='1347212191' post='4978346']
I've come up against a couple of the things you mentioned, and usually after already getting a couple of days into coding something. It was frustrating, I was confused, there were few answers, and it would have been easy to quit. But it was also exciting. It's fun making horrible mistakes and then learning why they're mistakes and what makes them so wrong in the first place. There's no better way to learn about something than to try really hard at it, fail, and then ask people who know better than you "Why did I fail?" It will always be better than having people warn you beforehand: You should absorb what you can from what you read/are taught, try it out, and then go back to learning with the new perspective you've gained from putting it in action: You can relate to what you're reading.
[/quote]
Now you have started to support your side better.

This is the type of person I would hire. Is it not the type you would hire?

I can also say for sure that I would never hire a person who asks, “What are the minimum requirements for blah blah blah.” I don’t care about people who seek the minimum requirements to complete a job.

C++ is harder to learn but I would rather have someone on my team whose resolve has been tested than someone whose resolve has not.
That being said, going with another language as your start is not so bad as I make it seem either. Again you really need to gauge this for yourself. Few people will blame you if you discover that C++ is too much to learn as a beginner. But you should at least try it out before you dismiss it.


L. Spiro
0

Share this post


Link to post
Share on other sites
[quote name='L. Spiro' timestamp='1347212201' post='4978347']
I do feel that some people are making C++ seem more horrible for a beginner than it should be, and I agree with points you have made in your posts.[/quote]
On the other hand, most of the people making C++ out to be a nightmare (myself included), have experienced C++ [b]in a production environment[/b]. My impression (possibly incorrect) is that most of the posters avidly defending C++ do not share this same experience.

My daily work involves tracking down and squashing the kind of bugs that even highly experienced developers introduce to a large C++ code base. The type of bugs caused by triggering undefined behaviour in the language, misinterpretations of the language standard, compiler-specific edge cases, and obscure threading and allocation issues (which are often platform-specific).

Now, I'm not saying that other languages don't suffer from many of the same problems - but a language like Java does a hell of a lot more to insulate you from this sort of thing. And that's why I'll always recommend that one not start with C++ as a first language.

[quote]C++ is harder to learn but I would rather have someone on my team whose resolve has been tested than someone whose resolve has not.[/quote]
So you like to hire stubborn programmers? Nothing wrong with that.

But sadly, 'learning' does not strongly correlate with 'knowing', when it comes to C++. There is a world of difference between someone who programs in C++, and someone who actually understands the language well enough to defensively anticipate pitfalls he hasn't run into yet - and trust me, there are still pitfalls that both you and I are yet to encounter. Edited by swiftcoder
-1

Share this post


Link to post
Share on other sites
[quote name='L. Spiro' timestamp='1347215050' post='4978357']
C++ is harder to learn but I would rather have someone on my team whose resolve has been tested than someone whose resolve has not.
That being said, going with another language as your start is not so bad as I make it seem either. Again you really need to gauge this for yourself. Few people will blame you if you discover that C++ is too much to learn as a beginner. But you should at least try it out before you dismiss it.
[/quote]

For me it would depend; if they ONLY knew C++ then I'd frown on it a little. Knowing a few programming languages make someone considerably more useful than someone who only knows the one at the expense of others, even in a junior position.

Part of my usefulness on our rendering team is that I can work just as well on the C++ engine as I can with the C# and python based tools - in fact during our swift rewrite of our build system I'm pretty sure in one day I did significant code in all 3 languages. Granted I wouldn't expect a new person to be able to do that, but still if I was presented with two candidates who were otherwise the same and one had some C# experiance and the other a little more C++ I'd take the former over the later.
0

Share this post


Link to post
Share on other sites
[quote name='Tyl3r684' timestamp='1347080812' post='4977905']
[quote name='jbadams' timestamp='1347080627' post='4977903']
I received the following question from the original poster via private message, but I'm answering here so others can also benefit from the responses.


[quote name='Tyl3r684']
As you know I want to begin python, where may I find updated tutorials there all from 2 - 3 years ago... :|
[/quote]
You'll want to learn Python 2.7 rather than Python 3; the differences (from your perspective) will be fairly minor and easily adjusted to once you decide to update, but for now a lot of the libraries (such as PyGame) you will want to use have not been updated to Python 3.

I recommend [url="http://www.mindview.net/Books/TIPython"]Thinking In Python[/url], [url="http://www.ibiblio.org/g2swap/byteofpython/read/"]A Byte of Python[/url], and [url="http://www.python.org/doc/"]the official documentation[/url] for learning Python. Once you get to learning Pygame you'll want to start with the official documentation and tutorials listed on the website.
[/quote]

Would there be a difference between 3, and 2? We both have 3 and are willing to downgrade.
[/quote]Different in syntax, the only difference I remember, is using ("this is a string") instead of "this is a string" for printing out strings. Or printing out anything.
But yes, I had to downgrade to Python 2, to get it to work with Pygame. That was in June though, so maybe they've updated their library. Edited by azonicrider
1

Share this post


Link to post
Share on other sites
[quote name='swiftcoder' timestamp='1347216051' post='4978362']
I do feel that some people are making C++ seem more horrible for a beginner than it should be, and I agree with points you have made in your posts.
On the other hand, most of the people making C++ out to be a nightmare (myself included), have experienced C++ [b]in a production environment[/b]. My impression (possibly incorrect) is that most of the posters avidly defending C++ do not share this same experience.

My daily work involves tracking down and squashing the kind of bugs that even highly experienced developers introduce to a large C++ code base. The type of bugs caused by triggering undefined behaviour in the language, misinterpretations of the language standard, compiler-specific edge cases, and obscure threading and allocation issues (which are often platform-specific).
[/quote]

But this is where I think the conversation diverges from "Is C++ a good language to start with?" and becomes "Is C++ a good language?" As I've mentioned earlier (many posts ago; I don't expect anyone to go back and read) "learning" code and "mission critical" code are two entirely different things. Someone whose [b]first[/b] language is C++ may never actually use any C++ at their workplace. On the other hand, someone who started with python may end up writing tons of C++ code in positions you've held yourself. We're talking about a starting point. The very beginning. The basics. And in that context, C++ is just plainly no worse than many of the other languages mentioned. There's a lot that it doesn't do for you, and there are plenty of things you're left confused about; but this isn't a problem exclusive to C++.
0

Share this post


Link to post
Share on other sites
[quote name='Shaquil' timestamp='1347322108' post='4978738']
We're talking about a starting point. The very beginning. The basics. And in that context, C++ is just plainly no worse than many of the other languages mentioned.[/quote]
Spot the error that won't be caught by compiler or runtime, then try to reproduce the same (silent) error in Python:
[source]int main(int argc, char **argv) {
if (argc > 1);
printf("too many arguments.\n");
}[/source]
And another:
[source]int main() {
char *array = new char[10];

array[20] = 5;
}[/source]
Shall I go on?
0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0