Any Game programmers out there?

infumed

Honorable
May 17, 2012
105
0
10,680
I'm kind of lost right now, I don't know where to go. The majority of my family are on the intelligence level of Forrest Gump. Not saying that I am a genius, but I know a lot more than they do. I am only 20, work Over-Night at Wal-Mart.

Anyway straight to it;

I want to program video games. I know all the work that it takes to get into programming games, I know a lot of times it's a dead end, it's just a drive that I got and my passion to make a game that not only I enjoy, but others as well is very large. I spend at least 6 hours a day on the computer, some days even more. I am very literate for my age, I don't have any experience programming except only READING about the general 'Hello World' program that almost every language tutorial starts you with.

I'm focusing on going to college at CCBC, which is a community college in Maryland. Nothing big, but I'm going for Computer Science. Eventually I want to transfer to a University in hopes of getting a better quality education when it comes to the end of the degree. I'm pretty sure that this is the program that I need to be taking, so just in case nothing really happens when it comes to video games, I can still make websites and what not.

This is honestly the only thing I envision myself doing in the future, I originally wanted to start making my own computers, then sell them to people. Unfortunately that came to an abrupt ending once I learned how all these companies were affording to buy Windows OS for such a cheap price, and I DO NOT have the money to compete with them.

I'm very creative, I love to write books, come up with stories, etc. I grew up playing MUDs, which stand for 'Multi-User Dungeons.' It's a all text based application that enables you to connect to ports and play the games that people have programmed out for you to enjoy.

I really feel like this is something I can do, I just need guidance, or tips.

I'm purchasing,



when it comes out. I'm looking forward to that a lot.

I plan to first start off with making a 'Pong' like game. Something simple. Very simple. Then I'll move onto something like 2D RPG, 2D MMORPG, so on and so forth.

TL;DR I'm 20 years old, nervous about my future and need guidance on what to do.
 
Solution


Hi,

If you grew up playing MUDs, that's great, because that's exactly where I'd tell you to start. There are many, many elements to game design and trying to tackle them all at once is incredibly difficult. You'll get frustrated and give up, trust me. Text based MUDs remove most of these and leave you with something that's simple enough to tackle on your own as a newbie and you'll actually be able to realise some results. It won't be the prettiest thing that anyone has ever made, but it'll be yours and you'll be proud of it.

The fundamentals of computer programming have not changed in over 50 years. I recommend that you start simple and build up from there. Microsoft Visual Basic is a good place to start. It's easy enough to learn and you can add some visual elements to your game without writing too much boilerplate.

If you really want to get down into the muck (which I highly recommend), forgo visuals completely and write a purely text based MUD in standard C. C only seems daunting, it's very easy to learn.
 
Solution

infumed

Honorable
May 17, 2012
105
0
10,680


Something that's a mystery to me as of right now, how does programming a MUD, which I will do now that I think about it, get applied to making 2D or 3D games, how does the programming of that work in general. Can one, such as I, program a specific 3D or 2D model to move a certain way? I don't know if you understood that question, sorry if you didn't.
 


3D modelling is asset design, not programming. Models are typically compiled into a format which can be understood by 3D graphics APIs such as DirectX and OpenGL and the the API then has the GPU hardware transform the model into a vertex buffer describing the model's geometry at a particular point in time. The geometry of all the objects and volumes comprising a scene is then gathered and rendered to a camera view using a series of vector and matrix multiplications. Whomever designs the 3D graphics API does so in a fashion that allows it to be used with any 3D generic model of the appropriate format, and generates a result that is generic enough to be used later on in the rendering process. 3D rendering is horribly complicated, far more so than can be expressed through a forum post which is why I very strongly recommend that you give it no further thought until you've first accomplished something less difficult. Rome wasn't built in a day, and neither was Battlefield 4.

Creating your own MUD will introduce you to programming fundamentals, which is the understanding of algorithms and manipulation of data structures through logic and flow control without bogging you down with stuff that requires a 4 year degree to even begin to understand. Programming fundamentals are universally applicable, the same principles that you will use to write a MUD are used to write every piece of software that has ever existed. I can count the number of truly "new" things in computing on one hand after taking a chainsaw to it and not counting my thumb. All the fundamental mathematical concepts are decades old. Modern microprocessors have just made some of them them speedy enough to be viable. I kid you not when I say that there is source code in many modern games that has been in place for decades simply because there's been no reason to change it.

In any case, pick one language (I recommend C, but Basic is just as good) and stick with it until you're very, very comfortable with it. Don't make the mistake of giving up and/or language hopping in an attempt to find something that makes your life easier. You can do that once you've got more confidence in your abilities.
 
Agree with the above. Programming itself really hasn't changed much over the past 50 years. Things have been done to make our lives simpler (Object Oriented Programming, etc), but the concepts haven't changed much.

I'd recommend learning to code in C/C++ first (you don't see as much pure C these days except when writing device drivers or in the embedded world). And I mean coding as in solving problems, not learning the syntax. The concepts you learn should be applicable in any language. Learn how to solve problems.

Once you get the language down, then move on to basic game design; there's plenty of books out there which do a good enough job to get you started. The idea is to at least get a basic understanding of what is involved (and yes, there's a LOT).

At that point, you need to decide where to focus. Depending on what you want to do, you may or may not be exposed to the graphics API's (DirectX and OpenGL). Are you more interested in working with the graphics, or the underlying principles behind the game? At some point, you'll need to focus your learning a bit.
 

infumed

Honorable
May 17, 2012
105
0
10,680


Thank you for all of your information. But to clarify, you want me to learn C? I thought learning C was harder than learning C++? Maybe I need to do more research.

@Gamerk316 - I appreciate you for the reply as well! I'm glad people are willing to help me. I'm definitely more concerned about the programming than the graphics. The funnest games I ever played (MUDs, Mario, Zelda) didn't require that much good graphics at ALL. I'm more concerned about making my games enable the players to do as much as they possibly can.

 


C++ is a superset of C. Most C code, if properly written, can be used by any C or C++ compiler with only a few exceptions. The opposite is not true, code that contains C++ syntax cannot be used in a pure C environment.

C++ provides some nice tools for expediting development and simplifying source code but these tools are easy to misuse. I recommend learning C first; after that, learning C++ will be very simple.

To be more academic, C is a procedural programming language, and is thus a member of the imperative programming paradigm.
Imperative programming is characterized through defined changes in program state. Every statement (lines terminated with a semicolon, which you will get to know very well) represents a defined change in program state. You, as the programmer, tell the program exactly what to do. The language syntax and compile time checking prevents you from issuing a statement which is ambiguous (there are only a handful of ambiguous operations in C, which is why it's a great learning tool) but it does not prevent you from issuing a statement that results in a change in state other than that which you desired; that is a feature of declarative programming languages.

I stress learning C as a first language because microprocessors are inherently imperative devices and pure C is as close as one can get to the microprocessor though all high level languages.

At the end of the day all machine executable programs are imperative by design. They differ only in the methods used to get there

C++ is a multi-paradigm programming language that adds an optional object-oriented paradigm to C's native procedural paradigm. Object orienting makes complex projects easier to manage, but it also makes it much easier to make stupid mistakes. It may be quicker and/or easier to accomplish a particular task in C++ (especially a large task), but from the perspective of understanding and appreciation C will yield larger dividends. Put another way, if you really want to appreciate C++ you must first put yourself through the gauntlet of C. At this point you will begin to realize why the additional features of C++ exist.

EDIT: You can learn both C and C++ at the same time and use the same tools for both. Many compiler vendors roll both into the same product and use the file extension to figure out which compiler to use.
 
You can also start modding. Making a MUD or something similar will prepare you somewhat for programming, but not meshes, textures, etc. If you play certain games, basically any Fallout or Elder Scrolls game, also maybe Dragon Age Origins or Neverwinter Nights, other games as well, modding them could introduce you to how to make textures, sound effects, meshes, how to make sure stuff is balanced, and whatnot, in an environment that allows your work to easily be tested and posted online for feedback. And of course it'd introduce you to the sort of logic programming languages use, but a MUD would be better for that.

It will also test your patience, because making a good mod that uses new assets is a lot of work, and if you can't handle it that doesn't bode well for entire games.