Zack Bell
|
|
« Reply #60 on: January 26, 2012, 09:31:38 PM » |
|
Tempted to lock this one.
|
|
|
Logged
|
|
|
|
Evan Balster
|
|
« Reply #61 on: January 26, 2012, 10:07:01 PM » |
|
Then I won't read the rest of this thread.
Upsides to C++:
- Can be ported to virtually any device with sufficient work - More compatible with digital distribution platforms - When rolling your own tech, few problems are unsolvable and the sky's the limit - Code is faster, BUT this absolutely shouldn't be your main reason
Downsides to C++:
- Working with build systems (setting up a project, porting, etc) tends to suck - Creating one's own technology is extremely time-consuming - Almost ALWAYS many times slower than using a tool - Becoming disorganized or messy is the death of a project - C++'s archaic declare-before-define parsing slows frontend programming massively --- (Scripting languages round this out, though)
and the big one: - If you overfocus on your technology you will fail as a game developer (curb impulses towards technical excellence for its own sake if making games is your goal)
If you're taking C++ classes now, all you need to do to get started is pick some libraries, set up a build system and begin experimenting. You could work with something as basic as ncurses (a flexible console I/O library) or as highlevel as OGRE.
|
|
|
Logged
|
Creativity births expression. Curiosity births exploration. Our work is as soil to these seeds; our art is what grows from them...Wreath, SoundSelf, Infinite Blank, Cave Story+, <plaid/audio>
|
|
|
Zack Bell
|
|
« Reply #62 on: January 26, 2012, 10:16:03 PM » |
|
Thank you. Seems like solid advice. I'm currently just rereading and relearning a few things that I've forgotten while I've been focussing on school and Java.
|
|
|
Logged
|
|
|
|
Klaim
|
|
« Reply #63 on: January 27, 2012, 02:22:21 AM » |
|
Also, C++ allow to express some concepts that are not possible in other languages, and that's also true for some other languages obviously. Look people, C++ is good complexity because it reflect computing complexity without hiding anything. Not everybody needs to know everything. THAT IS OK. That don't mean C++ is the "best" for everything, it's the best in some contexts (that are really common in some domains). Rage against any language is just ridiculous. If C++ programmers does feel that they understand better other languages, so what? Is it a problem that they feel that? You can get to the same point by working a lot with Python, Ruby, JavaScript, C and Haskell, used together. It's just that C++ is already several languages bound together (and they are adding more...). Also, there is another thread about this discussion, and also about what to do to learn C++. If you don't find it, check stackoverflow.com or programmers.stackexchange.com , there is a good book list. Don't learn C++ online, get books. Now a C++ "expert" side-note: I just hope that whatever new system the C++ committee introduces still allows something like header files. Header-less languages like Java make me want to shoot myself. Average Software> You might take a look at the recent publication of proposals : http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/#mailing2012-01There is an updated proposal for modules and basically it's an addition that doesn't prevent you from using headers, but only for maintaining current code. You write your cpp with a private and a public part. The public part is meant to be exposed (after transformation...) in a file generated by the compiler and used by other modules for compilation (I wish it was readable). So, the private part is a bit like your current cpp, the public part is a bit like a header but not in a separate file. I think that's fine since you can still separate exposed and hidden code as before, just in one file (or several actually, if you wish) but with boosted compilation time. Also, there is a work in progress implementation of this in Clang. I hope they also get lambdas soon, that would make my current code work on Clang.
|
|
|
Logged
|
|
|
|
Mikademus
|
|
« Reply #64 on: January 27, 2012, 03:32:33 AM » |
|
Programming languages are formally specified constructs with well understood and analyzable properties. It is absolutely reasonable to claim that there is a 'best' programming language (proving which one it is may be prohibitively difficult, however). Programming language theory is widely studied branch of computer science that deals with exactly that.
I wouldn't go so far to claim that C++ is it, as the resident Ada fanboy I have to point out that Ada is roughly of the same size and complexity of C++, and is in my opinion a better language for game programming.
Ada is up there with C++ in freedom and expressiveness. The comparative disadvantage, though, is the amount of (native) 3rd party libraries and middleware. I do think the OP (Zack) will be better served for his purposes with learning C++ over Ada, at least atm.
|
|
|
Logged
|
\\\"There\\\'s a tendency among the press to attribute the creation of a game to a single person,\\\" says Warren Spector, creator of Thief and Deus Ex. --IGN<br />My compilation of game engines for indies
|
|
|
bateleur
|
|
« Reply #65 on: January 27, 2012, 04:29:04 AM » |
|
Anyway, my point is: What should I be doing to move towards making games in C++ from scratch? I'd like to be a competent game programmer before I graduate (if that's a reasonable goal). It's an excellent goal - good luck! Further to the many sensible comments in this thread, a quick point about language choice: the right answer is different for different people as well as different purposes. The stereotype is that C++ programmers see higher level languages as toys suitable only for kids (or maybe prototyping) whilst programmers of higher level languages see C++ as a dated, bug-prone mess suitable only for aging hippies who never release anything and corporations with seven figure budgets. In reality, of course, both stereotypes are dead wrong but until you understand both programming cultures you're not really ready to make a decision. I suppose what I'm saying is: learn both. For now you're just picking what to try first.
|
|
|
Logged
|
|
|
|
Klaim
|
|
« Reply #66 on: January 27, 2012, 05:12:13 AM » |
|
Anyway, my point is: What should I be doing to move towards making games in C++ from scratch? I'd like to be a competent game programmer before I graduate (if that's a reasonable goal). It's an excellent goal - good luck! Further to the many sensible comments in this thread, a quick point about language choice: the right answer is different for different people as well as different purposes. The stereotype is that C++ programmers see higher level languages as toys suitable only for kids (or maybe prototyping) whilst programmers of higher level languages see C++ as a dated, bug-prone mess suitable only for aging hippies who never release anything and corporations with seven figure budgets. In reality, of course, both stereotypes are dead wrong but until you understand both programming cultures you're not really ready to make a decision. I suppose what I'm saying is: learn both. For now you're just picking what to try first. Agreed.
|
|
|
Logged
|
|
|
|
BrianSlipBit
|
|
« Reply #67 on: January 27, 2012, 05:21:04 AM » |
|
Wow, this thread really flew off the rails. There's really no point in debating some of what's being debated at this point. The OP inquired about C++ and also mentioned the desire to work in the mainstream and hopefully AAA side of the industry. I can say with certainty, that should he show up to the interview and be unable to answer even some of the more moderately difficult questions surrounding C++ and "good practices", his interview will likely be over quickly. And that's before even getting to the 3D math and all the other "great" expectations that come with a job on that side of the industry.
|
|
|
Logged
|
|
|
|
Zack Bell
|
|
« Reply #68 on: January 27, 2012, 10:14:29 AM » |
|
Anyway, my point is: What should I be doing to move towards making games in C++ from scratch? I'd like to be a competent game programmer before I graduate (if that's a reasonable goal). It's an excellent goal - good luck! Further to the many sensible comments in this thread, a quick point about language choice: the right answer is different for different people as well as different purposes. The stereotype is that C++ programmers see higher level languages as toys suitable only for kids (or maybe prototyping) whilst programmers of higher level languages see C++ as a dated, bug-prone mess suitable only for aging hippies who never release anything and corporations with seven figure budgets. In reality, of course, both stereotypes are dead wrong but until you understand both programming cultures you're not really ready to make a decision. I suppose what I'm saying is: learn both. For now you're just picking what to try first. I like this post.
|
|
|
Logged
|
|
|
|
rivon
|
|
« Reply #69 on: January 27, 2012, 11:32:36 AM » |
|
Also, C++ allow to express some concepts that are not possible in other languages... Which ones exactly? (sorry, I don't want to derail this thread or anything)
|
|
|
Logged
|
|
|
|
Klaim
|
|
« Reply #70 on: January 27, 2012, 12:41:24 PM » |
|
AFAIK C++ and D have both compile-time language (meta language) allowing generating construct through (functional) logic (that is why some C++ algorithms are insanely optimized compared to their C equivalents).
To be clear, Ruby & Python (and parent languages) allow monkey patching, Erlang & Haskell (and parent languages) allow dynamic functional expressions, D allow immutability. None of these is really possible in C++ (functional features are possible but in compile-time only).
|
|
|
Logged
|
|
|
|
giewuer
|
|
« Reply #71 on: January 27, 2012, 02:59:40 PM » |
|
- Working with build systems (setting up a project, porting, etc) tends to suck - Creating one's own technology is extremely time-consuming - Almost ALWAYS many times slower than using a tool - Becoming disorganized or messy is the death of a project - C++'s archaic declare-before-define parsing slows frontend programming massively --- (Scripting languages round this out, though)
- Working with build systems [...] If you use a good IDE like Visual Studio and know how to setup it right it's just one time trouble and then you can just focus on coding. DevC++ is not a good IDE. - Creating one's own technology [...] Using Allegro, SDL or other libraries makes stuff very simple for 2D games. I did some programming in Allegro earlier learning the API and now it took me less than a month to make all the foundations for a game. For 3D games you can also use libraries or engines to not to have to write a game from scratch and if the libraries support other platforms then you won't have a problem with porting your game. There are hundreds of free libraries in C/C++ that help you with networking and other stuff so you don't have to worry about low-level programming and focus on developing your game mechanics. - Almost always slower [...] That is right but you have many more options and possibilites programming stuff by yourself. The downside is of course more complexity and having to learn new stuff that may seem hard and take time to understand. For example: first time you do collision detection you do it brute-force testing every object with another. This fails with too many objects so you learn to use stuff like Quad-tree which may seem confusing at the beginning but after you understand it and implement it right it works like a charm and the results make you happy - Becoming disorganized or messy is the death of a project There many books, articles and sources on C++ that can help you write good code. If you understand the principles of object oriented programming than most of the time you will know intuitively what's right and what's wrong. - C++'s archaic declare-before-define parsing slows frontend programming massively Well in my opinion that keeps you better organised and makes the code less messy.
|
|
|
Logged
|
|
|
|
Mikademus
|
|
« Reply #72 on: January 27, 2012, 03:45:21 PM » |
|
- Becoming disorganized or messy is the death of a project There many books, articles and sources on C++ that can help you write good code. If you understand the principles of object oriented programming than most of the time you will know intuitively what's right and what's wrong.
Also, it should be noted that death from code mess isn't in any way unique to C++. In fact, it is one of the things common to all languages and projects, and the avoidance of which is what characterises a good programmer, independent of language.
|
|
|
Logged
|
\\\"There\\\'s a tendency among the press to attribute the creation of a game to a single person,\\\" says Warren Spector, creator of Thief and Deus Ex. --IGN<br />My compilation of game engines for indies
|
|
|
rivon
|
|
« Reply #73 on: January 28, 2012, 08:47:54 AM » |
|
- Creating one's own technology [...] Using Allegro, SDL or other libraries makes stuff very simple for 2D games. I did some programming in Allegro earlier learning the API and now it took me less than a month to make all the foundations for a game. For 3D games you can also use libraries or engines to not to have to write a game from scratch and if the libraries support other platforms then you won't have a problem with porting your game. There are hundreds of free libraries in C/C++ that help you with networking and other stuff so you don't have to worry about low-level programming and focus on developing your game mechanics. There are libraries available in other languages too. Writing in C++ is just slower.
|
|
|
Logged
|
|
|
|
MadSage
|
|
« Reply #74 on: January 28, 2012, 01:16:21 PM » |
|
Wow, this thread really flew off the rails. There's really no point in debating some of what's being debated at this point. The OP inquired about C++ and also mentioned the desire to work in the mainstream and hopefully AAA side of the industry. I can say with certainty, that should he show up to the interview and be unable to answer even some of the more moderately difficult questions surrounding C++ and "good practices", his interview will likely be over quickly. And that's before even getting to the 3D math and all the other "great" expectations that come with a job on that side of the industry.
I completely agree, though it's unlikely he would even get an interview in the AAA side if C++ isn't on his CV. It's a requirement.
|
|
|
Logged
|
|
|
|
Zack Bell
|
|
« Reply #75 on: January 28, 2012, 01:21:44 PM » |
|
Wow, this thread really flew off the rails. There's really no point in debating some of what's being debated at this point. The OP inquired about C++ and also mentioned the desire to work in the mainstream and hopefully AAA side of the industry. I can say with certainty, that should he show up to the interview and be unable to answer even some of the more moderately difficult questions surrounding C++ and "good practices", his interview will likely be over quickly. And that's before even getting to the 3D math and all the other "great" expectations that come with a job on that side of the industry.
I completely agree, though it's unlikely he would even get an interview in the AAA side if C++ isn't on his CV. It's a requirement. Yeah, this was basically the point of the thread. C++ is the number one requirement in most cases.
|
|
|
Logged
|
|
|
|
ham and brie
|
|
« Reply #76 on: January 28, 2012, 01:26:20 PM » |
|
There are some programming jobs on AAA game development that don't require C++. Like, someone experienced in C# could get a tools programmer position.
|
|
|
Logged
|
|
|
|
Zack Bell
|
|
« Reply #77 on: January 28, 2012, 01:42:40 PM » |
|
Yeah, I agree with that as well. And I'm pretty sure that Java-> C# is an easier transition than Java -> C++?
|
|
|
Logged
|
|
|
|
Klaim
|
|
« Reply #78 on: January 28, 2012, 02:45:02 PM » |
|
Even for tools programming, you have at some point to write some code that will read the data generated from the C# code. Maybe you will not do it, but you'll have to work with people doing it and speaking the same languages will help.
|
|
|
Logged
|
|
|
|
randomnine
|
|
« Reply #79 on: January 28, 2012, 03:25:07 PM » |
|
I've known gameplay programmers to end up spending all their time writing Lua, but they still needed C++ knowledge to get the job. Big studios are mostly C++ shops. If you can't hack C++ you can't do "general programming work" there when necessary and that means you're much less useful.
|
|
|
Logged
|
|
|
|
|