Advertisement

Any Mentors Out There?

Started by May 16, 2016 01:34 AM
16 comments, last by BBeck 8 years, 7 months ago

If you are a bit anxious to tell in public you don't know something, afraid to ask "stupid questions", don't.

We're all here because we don't know some things, and want to expand our knowledge and understanding. Everybody does that at his/her own level of knowledge. Especially in the "Beginners" section, all questions are treated as "honestly don't know", unless you ask about home work or want ready-made solutions ("give me the codes to my problem").

If you tell us your aim, where you are, and at what point you need a little discussion to make up your mind about next steps, we'll tell you what we consider useful directions. Often you'll get several different advices or counter questions to clarify the details. In the other direction, you can ask us counter questions when we answer in terms that looks like magic to you :)

Read some other threads here to see how that works.

[As a side note, this is how a forum works better, I saw that others already touched the "multi-mentors is better than one", but left what I wrote above unspoken, so I wrote a post as well to inform you]

I have 0 formal training in programming, so I won't be asking homework questions, lol. However, I am a successfully published novelist, and I've found that coding surprisingly uses the same kind of organizational skills and logic involved in novel writing. Of course, my biggest problem is that--- since I'm not a computer sci major--- in some areas I'm way ahead and in others there are these huge gaps in my understanding. For instance, my current project involves hundreds of thousands of lines of code, hundreds of variables, I'm managing 5 other developers on the development team, I'm dealing with graphical assets and localisations, I've worked with numerous repositories... but I still don't QUITE understand terms like "class libraries" or where to find them or how to use them. I know, its embarrassing. I never sat down in a programming 101 class, so a lot of the basic knowledge and basic assumptions just aren't there, and given the nature of my schedule and my time, that's not really plausible. Online courses are problematic too for a variety of reasons. So I guess what I'm trying to do is build a game using C++ since it resembles the language I'm used to. Building a game excites me, and its something I can *think* about while I'm taking care of the kids or off at work.

I've found that coding surprisingly uses the same kind of organizational skills and logic involved in novel writing.

That makes sense.

Of course, my biggest problem is that--- since I'm not a computer sci major--- in some areas I'm way ahead and in others there are these huge gaps in my understanding.

Many people here haven't studied CS, yet they manage to make nice games. On the other hand, I did do CS, and haven't finished a single game yet :D

Big part of the reason is that I don't push towards it. I prefer to just hack open source games instead. I am attracted to games as they are fun. They look very intelligent, but when you look under the hood it often is an extremely simple way to pull off that effect. You can do a lot with some smoke and mirrors ;)

Programming as a concept isn't hard, children can learn it eg with scratch. It becomes hard when you're doing high-end techniques or complicated algorithms. None of that is required in games. There is usually a simple way out that doesn't sacrifice the game experience too much.

<about not knowing programming> I know, its embarrassing.

I don't think it is. I have been programming the last 30 years, and came here about a year ago, and learned that there exist things called "game engine", and "textures" and "shaders". I have only a vague idea of what they mean. Luckily there are enough others that can answers questions about them. I find AI much more interesting, but it's the same story. Lots of terms where I just started to be able to place things at the hopefully correct spot. The world is a big place, it's impossible to know everything, instead just work on expanding your knowledge, while having fun :)

So I guess what I'm trying to do is build a game using C++ since it resembles the language I'm used to.

C++ is not a language normally recommended for beginners, as it assumes you know what you're doing. New users however tend to barely understand themselves, so they experience a hard time, as the language doesn't prevent you from shooting yourself in your foot. Instead it simply crashes in one of many interesting ways.

On the other hand, making a game is complicated enough, you don't really need the burden of learning a new language at the same time. A language you're comfortable with is normally more important than having a language that helps avoiding mistakes. (You'll just make different mistakes instead :P )

In your case, I would say, use C++, and stay away from template magic, and operator overloading (for now). Variables with their types, assignments, loops and (if)tests, and functions are first, then structures, and perhaps unions. Start with a couple of console games, like guess higher/lower, or hangman, or perhaps even a text adventure (lot of work!). Console games work without additional libraries such as SDL, so you can concentrate on the language first to get comfortable with it.

From there, one direction is to extend C++ knowledge into classes, inheritance, and object-oriented programming. Operator overloading will become useful too at some point there. The only big things left are then STL and template programming.

Another direction is to add libraries such as SDL, so you can make games with graphics.

You probably want to do both directions in some mixed way :)

Building a game excites me, and its something I can *think* about while I'm taking care of the kids or off at work.

Excitement is good, since it will take a long time, enjoying the journey is really helpful.

Welcome aboard, have an enjoyable flight!

Advertisement

The only difficulty that could be faced by a "whole forum of mentors" is each mentor might have a slightly different perspective on things, and everyone of them could be a good way to do things, but they are different.That could often be confusing for a begineer.

Whereas, with a single mentor, he will lead him down one specific path. Hopefully it is a good path, but it will be a single path that he believes in, and without the confusion of the specific direction to take.

My Gamedev Journal: 2D Game Making, the Easy Way

---(Old Blog, still has good info): 2dGameMaking
-----
"No one ever posts on that message board; it's too crowded." - Yoga Berra (sorta)

I've found that coding surprisingly uses the same kind of organizational skills and logic involved in novel writing.

That makes sense.

Of course, my biggest problem is that--- since I'm not a computer sci major--- in some areas I'm way ahead and in others there are these huge gaps in my understanding.

Many people here haven't studied CS, yet they manage to make nice games. On the other hand, I did do CS, and haven't finished a single game yet :D

Big part of the reason is that I don't push towards it. I prefer to just hack open source games instead. I am attracted to games as they are fun. They look very intelligent, but when you look under the hood it often is an extremely simple way to pull off that effect. You can do a lot with some smoke and mirrors ;)

Programming as a concept isn't hard, children can learn it eg with scratch. It becomes hard when you're doing high-end techniques or complicated algorithms. None of that is required in games. There is usually a simple way out that doesn't sacrifice the game experience too much.

<about not knowing programming> I know, its embarrassing.

I don't think it is. I have been programming the last 30 years, and came here about a year ago, and learned that there exist things called "game engine", and "textures" and "shaders". I have only a vague idea of what they mean. Luckily there are enough others that can answers questions about them. I find AI much more interesting, but it's the same story. Lots of terms where I just started to be able to place things at the hopefully correct spot. The world is a big place, it's impossible to know everything, instead just work on expanding your knowledge, while having fun :)

So I guess what I'm trying to do is build a game using C++ since it resembles the language I'm used to.

C++ is not a language normally recommended for beginners, as it assumes you know what you're doing. New users however tend to barely understand themselves, so they experience a hard time, as the language doesn't prevent you from shooting yourself in your foot. Instead it simply crashes in one of many interesting ways.

On the other hand, making a game is complicated enough, you don't really need the burden of learning a new language at the same time. A language you're comfortable with is normally more important than having a language that helps avoiding mistakes. (You'll just make different mistakes instead :P )

In your case, I would say, use C++, and stay away from template magic, and operator overloading (for now). Variables with their types, assignments, loops and (if)tests, and functions are first, then structures, and perhaps unions. Start with a couple of console games, like guess higher/lower, or hangman, or perhaps even a text adventure (lot of work!). Console games work without additional libraries such as SDL, so you can concentrate on the language first to get comfortable with it.

From there, one direction is to extend C++ knowledge into classes, inheritance, and object-oriented programming. Operator overloading will become useful too at some point there. The only big things left are then STL and template programming.

Another direction is to add libraries such as SDL, so you can make games with graphics.

You probably want to do both directions in some mixed way :)

Building a game excites me, and its something I can *think* about while I'm taking care of the kids or off at work.

Excitement is good, since it will take a long time, enjoying the journey is really helpful.

Welcome aboard, have an enjoyable flight!

This is very encouraging. I think what I'll be doing then is posting questions in the beginners forums whenever I happen to have a pressing question. It's clear to me that I'll get plenty of help! Thanks!

This is very encouraging. I think what I'll be doing then is posting questions in the beginners forums whenever I happen to have a pressing question. It's clear to me that I'll get plenty of help! Thanks!

Ha, more persons want to join, hop aboard, and welcome too!

Anything we can help you with, a computer language perhaps, or a graphics library?

If not, that's fine, we'll be open 24/7 if you need help

Advertisement

The only difficulty that could be faced by a "whole forum of mentors" is each mentor might have a slightly different perspective on things, and everyone of them could be a good way to do things, but they are different.That could often be confusing for a begineer.

Whereas, with a single mentor, he will lead him down one specific path. Hopefully it is a good path, but it will be a single path that he believes in, and without the confusion of the specific direction to take.

There's a lot of truth in that, but I think that's more of a problem trying to figure out which tools to use than it is once you really get started. "Should I use Unity or SDL?" is going to get 1,000 different opinions and suggestions. "What is an orthographic projection matrix in DirectX11?" is going to get a lot fewer replies and any difference in opinions is probably more helpful than confusing, I would think.

And libraries are code written, usually by others, that you can link into your own code and make use of their functionality. You can make your own libraries for code that is shared between many different programs, but it commonly refers to other people's code that you can probably download from some place.

Microsoft uses .DLL's (Dynamic Link Libraries) which are loaded into memory and shared between many different programs. That's different than .lib type libraries that are statically linked into a program. You can do static libraries in the Microsoft world too, but they become permanent parts of your program. A dynamic library (.DLL) is something you could share with Microsoft Word for example, a program entirely unrelated to yours and the code is never actually in your program. That means you have to make sure anyone using your program gets the .DLL because it is a completely separate file from your program. The big advantage of DLLs is that only one copy of the code exists in your computer's memory. With a static library, every program that uses it has its own copy of the code in memory. There are some other reasons .DLLs are used too.

A class library would be a library of object oriented classes that you can use. The concept of libraries has been around since long before object oriented programming with classes became popular. So, if it's an object oriented library, it would be a class library.

In C++ (and many other languages) the libraries are the #include's that you see at the top of the source code.

This topic is closed to new replies.

Advertisement