Jump to content
  • Advertisement
Sign in to follow this  
JosephParrilla

Game Engine or not?

This topic is 2713 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts


Just spent the last hour learning SFML and I really like it. Its already cleaner than SDL, and the fact that its object oriented makes it much better in my opinion. I think Im gonna do some simple projects with it and see what happens.

And about avoiding C++, I really disagree. I spend a lot of time learning C++ and I really love using it. I switch back and forth with Java, but I really dont find that C++ causes me problems. HAving memory issues and all that is something you learn to deal with, and the C++ classes I have taken really taught us how to use the language properly. If you know your pointers well, its not an issue. I do agree that if your an artist, designer, etc just wanting to make a game, C++ is probably a bad choice. But if you are a programmer who already has a lot of non-game related programming experience, I dont see C++ being a problem


As someone who has been programming professionally for 15 years, and who learned on Assembly and C ( big mistake BTW ), I have to say I cannot disagree with you more. It doesn't just come down to memory usage and pointers, but the framework in general. You can learn to not get yourself in danger with C++, just as you can learn to safely handle a hand grenade, but you will never ever ever convince me that a hand grenade is less dangerous than say... an apple. Having made the transition from C++ -> C#, I personally experienced an order of magnitude increase in productivity and frankly stability, and I knew C++ pretty damned well. There are hundreds of thousands of programmers that will echo this sentiment. There is a very good reason for that.

Now, was my code less optimized? Theres a very good chance it was, I don't question that. But the development speed and stability increases are very apparent.


Share this post


Link to post
Share on other sites
Advertisement

[quote name='Serapth' timestamp='1305398656' post='4810801']
If I was working on a 2D game these days I would rather swallow razorblades than use C++.


It isn't just games that goes for - C++ is painful in most walks of programming.

Unless you are severely limited by platform (i.e. mobile/embedded platforms that only support C/C++), then you should at least be considering a different language.
[/quote]

C++ does get quite pleasant if you use good tools though, Boost in particular makes things alot less painful but i also love QT as its just so easy to get a good GUI going that i've even stopped using Java for my small GUI tools.

My main issue right now is the awful buildtimes with templated code as my current game is getting fairly large its becoming increasingly painful despite me using lua for large chunks of the game logic (so i don't have to compile that often)

Share this post


Link to post
Share on other sites

[quote name='joeparrilla' timestamp='1305409483' post='4810852']
Just spent the last hour learning SFML and I really like it. Its already cleaner than SDL, and the fact that its object oriented makes it much better in my opinion. I think Im gonna do some simple projects with it and see what happens.

And about avoiding C++, I really disagree. I spend a lot of time learning C++ and I really love using it. I switch back and forth with Java, but I really dont find that C++ causes me problems. HAving memory issues and all that is something you learn to deal with, and the C++ classes I have taken really taught us how to use the language properly. If you know your pointers well, its not an issue. I do agree that if your an artist, designer, etc just wanting to make a game, C++ is probably a bad choice. But if you are a programmer who already has a lot of non-game related programming experience, I dont see C++ being a problem


As someone who has been programming professionally for 15 years, and who learned on Assembly and C ( big mistake BTW ), I have to say I cannot disagree with you more. It doesn't just come down to memory usage and pointers, but the framework in general. You can learn to not get yourself in danger with C++, just as you can learn to safely handle a hand grenade, but you will never ever ever convince me that a hand grenade is less dangerous than say... an apple. Having made the transition from C++ -> C#, I personally experienced an order of magnitude increase in productivity and frankly stability, and I knew C++ pretty damned well. There are hundreds of thousands of programmers that will echo this sentiment. There is a very good reason for that.

Now, was my code less optimized? Theres a very good chance it was, I don't question that. But the development speed and stability increases are very apparent.
[/quote]


I have to echo this sentiment. In fact I would almost go as far as to say that if you DON'T think C++ is a horrible mess and a dangerous thing to be using then you've not been programming it long enough nor do you respect it enough.

It's probably an experiance thing where everyone who learns it goes in 3 phases;
- "omg, how am I going to learn this?!?"
- "C++ isn't that bad, what do you mean?"
- "C++ is insane, thank god I can use <safer language X> for a lot of my stuff"

The fact that the OP thinks that 'pointers' are a major thing probably puts him squarely at stage 2; don't worry OP, you'll soon learn better :)

Don't get me wrong, I enjoy coding in C++ but it's very much in a 'I like a challenge' sense (apart from at work where it's in a "we need it to work on consoles" sense) because I'm a crazy person :) But, if I ever want to get something done quickly then I reach very quickly for C# because the language and toolset on windows is simply better.

Share this post


Link to post
Share on other sites

[quote name='Serapth' timestamp='1305410566' post='4810857']
[quote name='joeparrilla' timestamp='1305409483' post='4810852']
Just spent the last hour learning SFML and I really like it. Its already cleaner than SDL, and the fact that its object oriented makes it much better in my opinion. I think Im gonna do some simple projects with it and see what happens.

And about avoiding C++, I really disagree. I spend a lot of time learning C++ and I really love using it. I switch back and forth with Java, but I really dont find that C++ causes me problems. HAving memory issues and all that is something you learn to deal with, and the C++ classes I have taken really taught us how to use the language properly. If you know your pointers well, its not an issue. I do agree that if your an artist, designer, etc just wanting to make a game, C++ is probably a bad choice. But if you are a programmer who already has a lot of non-game related programming experience, I dont see C++ being a problem


As someone who has been programming professionally for 15 years, and who learned on Assembly and C ( big mistake BTW ), I have to say I cannot disagree with you more. It doesn't just come down to memory usage and pointers, but the framework in general. You can learn to not get yourself in danger with C++, just as you can learn to safely handle a hand grenade, but you will never ever ever convince me that a hand grenade is less dangerous than say... an apple. Having made the transition from C++ -> C#, I personally experienced an order of magnitude increase in productivity and frankly stability, and I knew C++ pretty damned well. There are hundreds of thousands of programmers that will echo this sentiment. There is a very good reason for that.

Now, was my code less optimized? Theres a very good chance it was, I don't question that. But the development speed and stability increases are very apparent.
[/quote]


I have to echo this sentiment. In fact I would almost go as far as to say that if you DON'T think C++ is a horrible mess and a dangerous thing to be using then you've not been programming it long enough nor do you respect it enough.

It's probably an experiance thing where everyone who learns it goes in 3 phases;
- "omg, how am I going to learn this?!?"
- "C++ isn't that bad, what do you mean?"
- "C++ is insane, thank god I can use <safer language X> for a lot of my stuff"

The fact that the OP thinks that 'pointers' are a major thing probably puts him squarely at stage 2; don't worry OP, you'll soon learn better :)

Don't get me wrong, I enjoy coding in C++ but it's very much in a 'I like a challenge' sense (apart from at work where it's in a "we need it to work on consoles" sense) because I'm a crazy person :) But, if I ever want to get something done quickly then I reach very quickly for C# because the language and toolset on windows is simply better.
[/quote]

Well youre right, I about at stage 2 :) Ive used it for roughly 3 - 4 years, but not a hardcore user, I do a lot of my "work" in Java. Basically my two langauges Im comfy with are JAva and C++. I started doing Java game programming, but I thought that it would eventually lead to issues, most importantly the fact that users need Java to run my games. I figured since I know C++, I would just use that to make games. I mean I could learn C#, but I lean more towards the mindset of getting really good with a few languages rather than knowing so many. Id rather not learn a totally new language at this time, I really just want to learn all of the aspects of game programming

Share this post


Link to post
Share on other sites

Well youre right, I about at stage 2 :) Ive used it for roughly 3 - 4 years, but not a hardcore user, I do a lot of my "work" in Java. Basically my two langauges Im comfy with are JAva and C++. I started doing Java game programming, but I thought that it would eventually lead to issues, most importantly the fact that users need Java to run my games. I figured since I know C++, I would just use that to make games. I mean I could learn C#, but I lean more towards the mindset of getting really good with a few languages rather than knowing so many. Id rather not learn a totally new language at this time, I really just want to learn all of the aspects of game programming


Do you by chance golf? If so, I can probably give you the most apt analogy possible. Last year I purchased a new set of clubs. Myself, im easily a bogey golfer or worse, but when I went to buy clubs I bought myself a set of PING blades. If you golf you know most pro's use blades but its a seriously stupid club for an amateur to buy. But me, I aspired to have the best tools, what the "pro's use!", so I went ahead and purchased these clubs. You know what happened? My game went to shit.

Moral of the story, pick the right tool for you, not because of some perception of what the pros use.


Where this analogy falls on its face, the majority of "pro" coding these days is actually scripting.

Share this post


Link to post
Share on other sites
Hi everyone,

I'm new here and I just thought of chipping in (hopefully it's relevant to this thread).

I started game programming 2 years back, using C# + XNA and a sample game as a template. I was able to complete a presentable game within 6 months (just in time for my final year project's demo), and I surprised myself for being able to code a working game for the first time using a new language (I have been using vb.net and php until I decided to make a game for my FYP). The thing was, using the sample game as a base/skeleton, I was able to complete a working engine (although 80% of the engine was already in the sample) and get to game programming after 2 months.

Then this year I decided to torture myself into picking up C++ and SDL because I somehow I developed the impression that "C++ is raw and fastest compared to other languages". I experienced a month-long nightmare of code troubleshooting and researching coding techniques and realized that all the codes I wrote in C# were rather unsafe and messy. I had taken advantage of the convenience of some features that C# had that made programming easier. When I jumped into C++, I was scratching my head figuring out what the hell function pointers were and why there were so many invalid syntax in my codes.

I guess I'm slowly moving into the "C++ isn't that bad, what do you mean?" phase because I'm starting to pick up on things I otherwise wouldn't have learned from using C#. However, I started to think to myself, was it really worth all that trouble? Would it have been better to stay oblivious of what goes on in the lower level as long as the newer languages "does all those stuff in the background for you" while giving you the chance to develop a game rapidly? Or would pushing forward into C++ programming make me learn on aspects that I wouldn't have normally learned while doing C#, but could somehow come in handy when I finally switch back to it? I'm placing my bet on sticking with C++ for now.

In response to the OP's first post, I've always thought of game engines as a set of libraries (wheels/levers/buttons/wings) which you can piece together with your own code (wood/metal/glass/stone) to make something new. While engines provide an easy way for programmers to piece together larger things, I'm the type who doesn't like to use things I'm not too familiar with, and thus I tend to attempt to reinvent the wheel just to see if my version of the wheel works the same as the conventional ones. I'm torn between rapid application developing and writing codes from scratch at my own pace. Sort of like "Naw I don't like these Lego blocks. I'm gonna make my own blocks and build stuff with them. They'll probably look and feel like Lego blocks, but at least I know I made them the way I wanted it". So to answer your topic question, imho, I'd rather write my own engine but I know in the end, I'll eventually have to rely on engines written by people who know better than me.

Considering this subforum is "For Beginners", perhaps I should post this in a new topic but I thought this could also fit in here. I apologize in advance if I've posted this in the wrong place.

Share this post


Link to post
Share on other sites

[quote name='joeparrilla' timestamp='1305409483' post='4810852']
Well youre right, I about at stage 2 :) Ive used it for roughly 3 - 4 years, but not a hardcore user, I do a lot of my "work" in Java. Basically my two langauges Im comfy with are JAva and C++. I started doing Java game programming, but I thought that it would eventually lead to issues, most importantly the fact that users need Java to run my games. I figured since I know C++, I would just use that to make games. I mean I could learn C#, but I lean more towards the mindset of getting really good with a few languages rather than knowing so many. Id rather not learn a totally new language at this time, I really just want to learn all of the aspects of game programming


Do you by chance golf? If so, I can probably give you the most apt analogy possible. Last year I purchased a new set of clubs. Myself, im easily a bogey golfer or worse, but when I went to buy clubs I bought myself a set of PING blades. If you golf you know most pro's use blades but its a seriously stupid club for an amateur to buy. But me, I aspired to have the best tools, what the "pro's use!", so I went ahead and purchased these clubs. You know what happened? My game went to shit.

Moral of the story, pick the right tool for you, not because of some perception of what the pros use.


Where this analogy falls on its face, the majority of "pro" coding these days is actually scripting.
[/quote]

That makes sense, but I never decided to use C++ because of the "pros". I dont plan on working in a game studio, I want to do this for fun on my own. I chose C++ because I learned it in school. Java and C++ were my first languages, so I have the most experience with them. I figured I should learn to make games with the language I can already make non game programs with. Learning a new language would just add another level of work on top of learning to make games

Share this post


Link to post
Share on other sites

I have to echo this sentiment. In fact I would almost go as far as to say that if you DON'T think C++ is a horrible mess and a dangerous thing to be using then you've not been programming it long enough nor do you respect it enough.

It's probably an experiance thing where everyone who learns it goes in 3 phases;
- "omg, how am I going to learn this?!?"
- "C++ isn't that bad, what do you mean?"
- "C++ is insane, thank god I can use <safer language X> for a lot of my stuff"

The fact that the OP thinks that 'pointers' are a major thing probably puts him squarely at stage 2; don't worry OP, you'll soon learn better :)

Don't get me wrong, I enjoy coding in C++ but it's very much in a 'I like a challenge' sense (apart from at work where it's in a "we need it to work on consoles" sense) because I'm a crazy person :) But, if I ever want to get something done quickly then I reach very quickly for C# because the language and toolset on windows is simply better.


This is one of the best ways I've ever seen it described. I was in stage 2 for 6-8 years, then I switched to Python w/ PyGame, then Processing, then XNA, then Unity3D. Now I'm learning freakin' Inform7 just for fun, and if you've never seen it it's for writing interactive fiction in natural language ("Spongebob is a man in Bikini Bottom that wears square pants." is actually a working line of code). It's funny, back when I was in stage 2 I'd have looked at what I'm doing now and said "oh, I'm too good of a coder to use those pre-made sissy packages". Boy, I'm glad I grew out of that :)

Share this post


Link to post
Share on other sites

Id rather not learn a totally new language at this time, I really just want to learn all of the aspects of game programming


Do you want to make a game or do you want to learn all of the aspects of game programming? I don't want to come off as a broken record, but you can't effectively do both.


I mean I could learn C#, but I lean more towards the mindset of getting really good with a few languages rather than knowing so many.
[/quote]

Knowing many languages is very useful. Getting exposure to different approaches and features helps you abstract away concepts from syntax. Thinking/designing around concepts is generally more sound, and will make you a better programmer in all languages.


And about avoiding C++, I really disagree. I spend a lot of time learning C++ and I really love using it. I switch back and forth with Java, but I really dont find that C++ causes me problems. HAving memory issues and all that is something you learn to deal with, and the C++ classes I have taken really taught us how to use the language properly. If you know your pointers well, its not an issue.
[/quote]

The brain power you're spending on keeping your pointers straight (and seriously, if you're using bald pointers, you're not using the language properly) is brain power you're not spending making your game. Don't you notice the titanic lack of standard library going from Java to C++?

Anyways, I agree that learning another language is a bit of overhead, and from how you've described your experience, it might be better to stick with something you know for now. No need for the overhead if you're going to do research into APIs/libraries. But in a few months, take a look and see how much you've accomplished. See how much time you spend debugging undefined behavior, or re-implementing something because C++'s ancient standard library doesn't support it... Try to remember that you do have alternatives. Too many beginners (myself included) wasted years fighting C++ instead of learning to make better programs in a language we didn't have to fight.

Share this post


Link to post
Share on other sites

[quote name='joeparrilla' timestamp='1305420242' post='4810904']
Id rather not learn a totally new language at this time, I really just want to learn all of the aspects of game programming


Do you want to make a game or do you want to learn all of the aspects of game programming? I don't want to come off as a broken record, but you can't effectively do both.


I mean I could learn C#, but I lean more towards the mindset of getting really good with a few languages rather than knowing so many.
[/quote]

Knowing many languages is very useful. Getting exposure to different approaches and features helps you abstract away concepts from syntax. Thinking/designing around concepts is generally more sound, and will make you a better programmer in all languages.


And about avoiding C++, I really disagree. I spend a lot of time learning C++ and I really love using it. I switch back and forth with Java, but I really dont find that C++ causes me problems. HAving memory issues and all that is something you learn to deal with, and the C++ classes I have taken really taught us how to use the language properly. If you know your pointers well, its not an issue.
[/quote]

The brain power you're spending on keeping your pointers straight (and seriously, if you're using bald pointers, you're not using the language properly) is brain power you're not spending making your game. Don't you notice the titanic lack of standard library going from Java to C++?

Anyways, I agree that learning another language is a bit of overhead, and from how you've described your experience, it might be better to stick with something you know for now. No need for the overhead if you're going to do research into APIs/libraries. But in a few months, take a look and see how much you've accomplished. See how much time you spend debugging undefined behavior, or re-implementing something because C++'s ancient standard library doesn't support it... Try to remember that you do have alternatives. Too many beginners (myself included) wasted years fighting C++ instead of learning to make better programs in a language we didn't have to fight.
[/quote]


Well I want to make games, but along the way I want to learn how to implement some specifics things, specifically AI and level editors (I have specific interest in these areas). I really am open to suggestions, what would you recommend for me then? Im going to be honest, the most ive done is make simple one screen scrolling games (no level system, no scrolling backgrounds), a few pongs, etc. I dont need to make an amazing 3D shooter at this point to be happy, I would enjoy continuing more simple 2D games until I really built my skills. I really have a laid back attitude when it comes to this,, I dont care about getting rich or famous, If I dont make the next Minecraft I honestly dont care. I just want to create the ideas I have in my head, and hopefully someone will find it to be enjoyable. I personally love RTS and Action RPG's, so I would love to make some cool versions of those eventually. I guess my goals consist of 50% "I WANNA MAKE A FINISHED GAME" and 50% "I WANNA LEARN HOW GAMES REALLY WORK AND ARE IMPLEMENTED". If thats makes any sense :)

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!