Switch or Not?

Started by
74 comments, last by jpetrie 10 years, 2 months ago

Some advice by example of personal experience.
When I switched from DirectX 7 to SFML, I was looking for a way to make use of hardware acceleration so that painting sprites to the screen wouldn't be so slow. I investigated SFML, SDL, and DirectX 9 each as candidates for what I thought I would need. That investigation consisted of installing each API and writing small test programs to see what I'd be potentially getting myself into. In the end, I decided SFML best met my needs between performance and ease of use.
Another project I worked on I decided to go with using C# for a few reasons. One was simply to get some experience using C#. Another was that the component that I wanted to use (a web control) seemed like it'd be easier to work with using C#. Specifically, I knew that I'd need to do work using delegates and I've had a sliver of experience with those in C# as opposed to none with C++. I didn't "switch" to C#, I choose to use it because it suited the project and my needs.
In my current project, I am looking at reworking the code that handles the logic involved with 2D animations. My understanding is that GameMaker would have all that logic established for me such that I'd only have to worry about providing the graphical assets. Likewise, it's possible that there's an engine out there where all it would take is setting up one classes and calling a few methods to do what I need. Maybe it would be easier. Maybe there would be a lot more stuff that I'd have to learn to use first. I don't know because I've never looked into using an engine before.
It does enter my mind from time to time to look into using one of the engines that are out there. But the question isn't "Should I switch?" The questions ares, "What does this engine have to offer me?" and "Do I have the prerequisite understanding of things to be able to make use of the engine?" I can look for answers from other people about what an engine has to offer and how it can make programming easier. But only I can answer the second question.

I will still stick to directx.
You obviously like 2d more than i do because before this thread i didn't doing 2d (i don't have a problem with it, i just prefer 3d games)

UNREAL ENGINE 4:
Total LOC: ~3M Lines
Total Languages: ~32

--
GREAT QUOTES:
I can do ALL things through Christ - Jesus Christ
--
Logic will get you from A-Z, imagination gets you everywhere - Albert Einstein
--
The problems of the world cannot be solved by skeptics or cynics whose horizons are limited by the obvious realities. - John F. Kennedy

Advertisement

I thought this thread was a very lengthy discussion about the 'switch' statement.

I am disappointed.

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator

Stick with c++, make a simple 2D game with a library like SDL. I'm making a space shooter game with that setup, it's pretty interesting.


I will still stick to directx.
You obviously like 2d more than i do because before this thread i didn't doing 2d (i don't have a problem with it, i just prefer 3d games)

For the sake of learning, you should really make several simple 2d games before jumping into 3d. 3d complicates things, not just graphically but with physics and game logic as well. And I would advise against using DirectX for the time being. Yes, it's a powerful API in its own right, but it's less user friendly to the novice user who's just getting into game development. APIs such as SFML and SDL abstract away a lot of the complex code you'll have to deal with in DirectX, making the learning experience a lot less frustrating. You can switch back to DirectX when you gain more experience.

Well, i've been learning c++ for 4 months (at March 1st) and it's been good-ish.
So far, i've learnt: variables, loops, functions, arrays, vectors, enums, switch & if/else, pointers & references, dynamic mem. allocation, conditional operators and recently, classes.
I haven't learnt much on classes because i realised the '~' key exists periodically on the computer i'm using.
The plan was to learn c++ for 6 months (console part) then learn c++ for another 6 months with Qt (gui part) and the directx, maths, physics before making games. I didn't have a problem with this other than the fact that i don't like the console. I don't mind using it to learn c++ but if i had a choice, i would leave it for qt immediately.
Another idea today about a game but it was different because it's always about 3d games but this one was about a 2d game. An open world, third person game based on the best 2d cartoon/animation ever created that's available for Microsoft (xbox, pc, phone), Apple (i<whatever>, pc) and Google (android).
I've got everything worked out except the fact that 1) it's based on a cartoon (license needed) 2) Unity seems like the best option 3) Unity uses C# (i know about the boo and javascript).
It's the first game idea that didn't make me not like Apple, the idea of making a 2d game, being available on mobile and multiplayer support.
I was just wondering if i should start learning C# and pause the learning of C++ and then continue learning C++ later on (in order to accomplish my other dreams) or continue learning C++?
Sorry for how long it is.

As far as C++ is concerned, you have only barely scratched the surface. And if you haven't learned much on classes, then you probably know next to nothing about inheritance and polymorphism.

6 months for "console part", another 6 months for "gui part"... How did you come up with this "study plan" for learning C++? Why the 6-month timeframe? What about the other concepts that you'll NEED later on? Let's name a few: the standard library, concurrency, language idioms (e.g. RAII and PIMPL), exception handling, and templates. Now I'll throw some *VERY* basic interview questions. Can you discuss the pros and cons of using smart pointers? Suppose I create a class which has a nonempty destructor - is there a reason for me to write a copy constructor and an assignment operator as well, or are those not necessary? What is an unnamed namespace good for?

But enough of C++. What's the rationale behind studying math and physics AFTER learning to program? Do you already know all there is to know about trigonometry, vectors, and basic kinematics? Do you not know that working on math and physics exercises improves your problem-solving skills, which you'll need VERY MUCH in just about every single project you ever attempt?

Have you coded *BY YOURSELF* any of the games mentioned here and here? Just skimming over someone else's code DOESN'T COUNT. You have to write your own code, make your own mistakes, come up with your own solutions, and finish with a sense of accomplishment.

With a lot of dedication and hard work, you'll eventually make progress. But judging from the posts you wrote in the past, it looks like you are really, really confused.

As far as C++ is concerned, you have only barely scratched the surface. And if you haven't learned much on classes, then you probably know next to nothing about inheritance and polymorphism.
6 months for "console part", another 6 months for "gui part"... How did you come up with this "study plan" for learning C++? Why the 6-month timeframe?
Now I'll throw some *VERY* basic interview questions. Can you discuss the pros and cons of using smart pointers? Suppose I create a class which has a nonempty destructor - is there a reason for me to write a copy constructor and an assignment operator as well, or are those not necessary? What is an unnamed namespace good for?
But enough of C++. What's the rationale behind studying math and physics AFTER learning to program? Do you already know all there is to know about trigonometry, vectors, and basic kinematics? Do you not know that working on math and physics exercises improves your problem-solving skills, which you'll need VERY MUCH in just about every single project you ever attempt?
Have you coded *BY YOURSELF* any of the games mentioned here and here?

You quoted me on what i've learnt on c++ but yet you ask me questions on what i haven't learnt.
I haven't made any of those "here" and "here" and i've said that before.
The 6 months part is for first learning and when i'm done with that i'll start physics and maths before i do the "here" and "here". How won't i know that physics and maths increases your problem solving skills?

UNREAL ENGINE 4:
Total LOC: ~3M Lines
Total Languages: ~32

--
GREAT QUOTES:
I can do ALL things through Christ - Jesus Christ
--
Logic will get you from A-Z, imagination gets you everywhere - Albert Einstein
--
The problems of the world cannot be solved by skeptics or cynics whose horizons are limited by the obvious realities. - John F. Kennedy


I haven't made any of those "here" and "here" and i've said that before.
The 6 months part is for first learning and when i'm done with that i'll start physics and maths before i do the "here" and "here". How won't i know that physics and maths increases your problem solving skills?

Are you sure this compartmentalized way of learning is effective? What benefit is it to focus on one area for six months then switch to a completely different area for the next six months? You should be learning a bit of everything in that time frame. Many of the simple games mentioned here do not require complex math or physics - you can start making them right now. Furthermore, what good is it to learn physics and math in isolation? You'll want to apply what you've learned to an actual project - that's how learned concepts will really stick.

It seems like you think it's necessary to know absolutely everything there is about C++, graphics programming, physics, and math in order to make even the simplest of games. Making games is part of the learning experience, it's not simply the product of having learned everything else first.

As far as C++ is concerned, you have only barely scratched the surface. And if you haven't learned much on classes, then you probably know next to nothing about inheritance and polymorphism.
6 months for "console part", another 6 months for "gui part"... How did you come up with this "study plan" for learning C++? Why the 6-month timeframe?
Now I'll throw some *VERY* basic interview questions. Can you discuss the pros and cons of using smart pointers? Suppose I create a class which has a nonempty destructor - is there a reason for me to write a copy constructor and an assignment operator as well, or are those not necessary? What is an unnamed namespace good for?
But enough of C++. What's the rationale behind studying math and physics AFTER learning to program? Do you already know all there is to know about trigonometry, vectors, and basic kinematics? Do you not know that working on math and physics exercises improves your problem-solving skills, which you'll need VERY MUCH in just about every single project you ever attempt?
Have you coded *BY YOURSELF* any of the games mentioned here and here?

You quoted me on what i've learnt on c++ but yet you ask me questions on what i haven't learnt.
I haven't made any of those "here" and "here" and i've said that before.
The 6 months part is for first learning and when i'm done with that i'll start physics and maths before i do the "here" and "here". How won't i know that physics and maths increases your problem solving skills?

There is not much more that I am thinking that hasn't already been said, so I am going to make this short and simple. Nathan, in regards to georger.araujo's reply,

you state "You quoted me on what i've learnt on c++ but yet you ask me questions on what i havent' learnt." Plain and simple -- if you cannot understand any of these basic questions (especially the one about the destructor, which you should be able to guesstimate an answer to), you need to go back and review "basic" concepts again. I don't mean to discourage you but the cold reality is that this field takes a lot of time and dedication (which you have not/are not putting in) and problem solving skills (which based on your other posts about Google, you show a lack of).

"The code you write when you learn a new language is shit.
You either already know that and you are wise, or you don’t realize it for many years and you are an idiot. Either way, your learning code is objectively shit." - L. Spiro

"This is called programming. The art of typing shit into an editor/IDE is not programming, it's basically data entry. The part that makes a programmer a programmer is their problem solving skills." - Serapth

"The 'friend' relationship in c++ is the tightest coupling you can give two objects. Friends can reach out and touch your privates." - frob

There is not much more that I am thinking that hasn't already been said, so I am going to make this short and simple. Nathan, in regards to georger.araujo's reply,

you state "You quoted me on what i've learnt on c++ but yet you ask me questions on what i havent' learnt." Plain and simple -- if you cannot understand any of these basic questions (especially the one about the destructor, which you should be able to guesstimate an answer to), you need to go back and review "basic" concepts again. I don't mean to discourage you but the cold reality is that this field takes a lot of time and dedication (which you have not/are not putting in) and problem solving skills (which based on your other posts about Google, you show a lack of).

yet to say that later it will be harder, really when you learn language and are ready to do some more graphics and other

teh api details etc, more code - it is harder not easier

(though some things are easier, for example most of the compiler or linker errors stops to be scary ;/ this is an advantage, but other things came harder)

I totally think you should switch. The ability to stick things out when they get tough is just so overrated, man. Fuck that.

This topic is closed to new replies.

Advertisement