Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411423 Posts in 69363 Topics- by 58416 Members - Latest Member: JamesAGreen

April 19, 2024, 12:40:07 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsDeveloperTechnical (Moderator: ThemsAllTook)Moving towards C++ development
Pages: 1 2 3 [4] 5
Print
Author Topic: Moving towards C++ development  (Read 9969 times)
Zack Bell
Level 10
*****



View Profile WWW
« Reply #60 on: January 26, 2012, 09:31:38 PM »

Tempted to lock this one.  Who, Me?
Logged

Evan Balster
Level 10
*****


I live in this head.


View Profile WWW
« 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
Level 10
*****



View Profile WWW
« 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
Level 10
*****



View Profile WWW
« 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:

Quote from: Average Software
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-01

There 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
Level 10
*****


The Magical Owl


View Profile
« 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. Wink
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
Level 10
*****



View Profile
« 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
Level 10
*****



View Profile WWW
« 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.  Coffee
Logged

BrianSlipBit
Level 1
*



View Profile WWW
« 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
Level 10
*****



View Profile WWW
« 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.  Smiley
Logged

rivon
Level 10
*****



View Profile
« 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
Level 10
*****



View Profile WWW
« 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
Level 0
**


View Profile
« 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  Smiley

- 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
Level 10
*****


The Magical Owl


View Profile
« 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
Level 10
*****



View Profile
« 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
Level 0
**


View Profile
« 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
Level 10
*****



View Profile WWW
« 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
Level 3
***



View Profile
« 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
Level 10
*****



View Profile WWW
« 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
Level 10
*****



View Profile WWW
« 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
Level 1
*


View Profile WWW
« 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

Pages: 1 2 3 [4] 5
Print
Jump to:  

Theme orange-lt created by panic