Sign in to follow this  
Hordeon

[Help] Getting into game programing

Recommended Posts

Hordeon    122

Hello everyone, I recently joined gamedev.net, my name is Rokas, I'm 16years old. I am willing to study C++ or any other programming science thats required to do game programming.

To start off my adventure I wanted to ask a few questions:

1) I watch Bucky (youtube it: thenewboston) on youtube and his c++ tutorials, they are simple, how good you would rate his tutorials? Are they worth watching? I think yes, but maybe you can offer better learning materials to start off?

2) Where to find tutorials on how to build my own game engine? (Since obviously if i want to become a good programmer - I would much better prefer to do it myself!) Where I can find more information about functions that are required to make games (most popular ones, etc) Ofc, I know If statement is the most important in making games, but i mean what else i need? Is there any simple websites, that could provide me superb useful info?

3) How long the process of learning should take, before I can build my very first 2D indie rpg-type game? I mean, sure I'm not a genious, but post how long you took, to become "good" and "confident" to create games from scratch (engine, etc.)

Thanks and sorry for Imperfect English. My main language isn't English :)

Share this post


Link to post
Share on other sites
yewbie    677

All of your questions are realtive to the ammount of time and effort you want to put into learning.

My advice, start small and work your way towards a goal (and make sure to completely finish that goal before you start another project).

 

Using C++ and whatever library you choose to develop with its going to take you several months of hard work learning and programming to make a 2d rpg type game (Unless you kept it really really simple).

 

Start out with some text based stuff, maybe a simple combat testing application where you use math to determine damage taken, or a mock fight simulation.

 

Once you get that all figured out start looking how you need to strucure your programs in C++, I think fundamentally if I had spent more time learning about proper structure and flow starting out I would have been much better off now.

 

Books, read lots of books, probably one of the most helpful things for me.

 

Some things you need to determine:

- What kind of graphics library are you going to use

- If not a home brew engine what game engine will I use

Share this post


Link to post
Share on other sites
Hordeon    122

[quote name='yewbie' timestamp='1357663151' post='5019073']
- What kind of graphics library are you going to use
- If not a home brew engine what game engine will I use
[/quote]

I'm a firm believer in 2d graphics. or 2,5d.
I would like to learn to create my own engine.

Also I will put my whole life to programming! That's what I'm planning to do. Computer is my addiction. Not just games - whole Computer, all processes, etc. But I wanna become a gamedev, because people need games to refresh their soul. It's art, it's refreshing, that feeling of accomplishment, when you start from scratch and build a successful game! I'm planning to buy C++ books, my mom already ordered them from amazon.com. And yes, I do testing in C++, i'm trying to build text RPG atm :) Since I know it's not that hard, mainly just integers, reals, strings etc.

Share this post


Link to post
Share on other sites
lride    674

Lots of people will advise you not to learn C++ as your first language, but I learned the whole C++ in one month during last summer and jumped into OpenGL and SFML(Graphics library) right away and made my first game, Snake in one week.

Then I made my second game Pong. Now I'm working a bomberman clone. It's going very well so far.

Btw, I was 15 by then..

3) How long the process of learning should take, before I can build my very first 2D indie rpg-type game? I mean, sure I'm not a genious, but post how long you took, to become "good" and "confident" to create games from scratch (engine, etc.)

Share this post


Link to post
Share on other sites
steffy81    220

You asked about the tutorials on thenewboston by Bucky.  I found them very valuable.  Use them as a suppliment to your learning if you want.  Also use other tutorials that you find.  I find tutorials great because each 'instructor' may teach you something another didn't or something you just did not figure out from the books.

Share this post


Link to post
Share on other sites
snug    187
... to become "good" and "confident" to create games from scratch (engine, etc.)

 

Game development and engine development are completely separate disciplines, at least in this day and age.
 

If you're interested in making games then I would suggest you try out some of the different off-the-shelf frameworks and engines out there (Unity/2D toolkit, XNA, Torque2D, etc.). These take care of a lot of "boiler-plate" stuff for you, and allow you to focus on actual "game programming" (i.e. focusing on "what" happens, instead of "how" it happens)

It can be a good learning exercise to try to do everything by yourself, and this will definitely give you a solid foundation, but ultimately if you're doing anything bigger than pong/snake/etc. then there are huge benefits to using an OTS engine or framework.


I would suggest XNA + C# would be a good combination, as you'd still be working with a C-like language.

Edited by snugsound

Share this post


Link to post
Share on other sites
Hordeon    122




... to become "good" and "confident" to create games from scratch (engine, etc.)

Game development and engine devleopment are completely separate disciplines, at least in this day and age.

If you're interested in making games then I would suggest you try out some of the different off-the-shelf frameworks and engines out there (Unity/2D toolkit, XNA, Torque2D, etc.). These take care of a lot of "boiler-plate" stuff for you, and allow you to focus on actual "game programming" (i.e. focusing on "what" happens, instead of "how" it happens)

It can be a good learning excercise to try to do everything by yourself, and this will definitely give you a solid foundation, but ultimately if you're doing anything bigger than pong/snake/etc. then there are huge benefits to using an OTS engine or framework.

I would suggest XNA + C# would be a good combination, as you'd still be working with a C-like language.

I already did something like that, but I want to jump into actual programming instead of using pre-created programs. I used to create mods for Warcraft III but I stopped, also learning how to build games from 0 not from 10% is more valuable, since you will know all the structure and it is more valuable in general!

Also age doesnt matter at all! I'm compelety mature and serious. Edited by Hordeon

Share this post


Link to post
Share on other sites
snug    187
I already did something like that, but I want to jump into actual programming instead of using pre-created programs. I used to create mods for Warcraft III but I stopped, also learning how to build games from 0 not from 10% is more valuable, since you will know all the structure and it is more valuable in general!


I suppose it depends what you consider "value". If you want to get a job in the industry some day then you will likely be working with an existing engine, unless you get a job on a tools or engine team, in which case you wouldn't be working directly on "games" per se. (I'm generalizing, mind you)

If you want to do things at lower level then I would suggest learning Direct3D and/or OpenGL, as well as an audio library like DirectSound or FMod. Maybe a Physics library like Bullet, too, depending on what you're trying to do.

For simple 2D games it's not too hard to wire something together using a combination of low-level libraries, though it can get pretty complicated once you get into 3D stuff (read: I hope you like math biggrin.png)

Edited by snugsound

Share this post


Link to post
Share on other sites
Hordeon    122


I already did something like that, but I want to jump into actual programming instead of using pre-created programs. I used to create mods for Warcraft III but I stopped, also learning how to build games from 0 not from 10% is more valuable, since you will know all the structure and it is more valuable in general!

I suppose it depends what you consider "value". If you want to get a job in the industry some day then you will likely be working with an existing engine, unless you get a job on a tools or engine team, in which case you wouldn't be working directly on "games" per se. (I'm generalizing, mind you)

If you want to do things at lower level then I would suggest learning Direct3D and/or OpenGL, as well as an audio library like DirectSound or FMod. Maybe a Physics library like Bullet, too, depending on what you're trying to do.

For simple 2D games it's not too hard to wire something together using a combination of low-level libraries, though it can get pretty complicated once you get into 3D stuff (read: I hope you like math biggrin.png)
To some extent I like math. Also who gets paid better? The man who knows everything or the one who rules only one section?
I wanna be Lead Designer! I wanna become Inventor and Creator. Similar to god, except in Virtual place.

Also I might want to try anyways. Which programs/libraries/engines would you recommend for a 2D game? Edited by Hordeon

Share this post


Link to post
Share on other sites
snug    187

[quote name='Hordeon' timestamp='1357673891' post='5019162']
To some extent I like math. Also who gets paid better? The man who knows everything or the one who rules only one section?
I wanna be Lead Designer! I wanna become Inventor and Creator. Similar to god, except in Virtual place.
[/quote]

The expression is "jack of all trades, master of none". Pretty sure he doesn't get paid at all, because he can't find a job.

"Designer" roles are generally more creative than they are technical, and involve storyboarding, writing, scripting, etc. Pretty much the polar opposite of engine development.

There is no "God" in game development, unless you're working by yourself. A good team, on the other hand, is made up of people with very specific disciplines; people who really know their respective area inside and out.

You should definitely explore the different facets of game development at this early stage, but at some point you will want to decide which area appeals to you the most and really focus on that.

Good luck :)

Share this post


Link to post
Share on other sites
SimonForsman    7642
<blockquote class="ipsBlockquote" data-author="Hordeon" data-cid="5019064"><p>Hello everyone, I recently joined gamedev.net, my name is Rokas, I'm 16years old. I am willing to study C++ or any other programming science thats required to do game programming.<br /><br />To start off my adventure I wanted to ask a few questions:<br /><br />1) I watch Bucky (youtube it: thenewboston) on youtube and his c++ tutorials, they are simple, how good you would rate his tutorials? Are they worth watching? I think yes, but maybe you can offer better learning materials to start off?<br /><br />2) Where to find tutorials on how to build my own game engine? (Since obviously if i want to become a good programmer - I would much better prefer to do it myself!) Where I can find more information about functions that are required to make games (most popular ones, etc) Ofc, I know If statement is the most important in making games, but i mean what else i need? Is there any simple websites, that could provide me superb useful info?<br /><br />3) How long the process of learning should take, before I can build my very first 2D indie rpg-type game? I mean, sure I'm not a genious, but post how long you took, to become "good" and "confident" to create games from scratch (engine, etc.)<br /><br />Thanks and sorry for Imperfect English. My main language isn't English <img data-cke-saved-src="http://public.gamedev.net//public/style_emoticons/default/smile.png" src="http://public.gamedev.net//public/style_emoticons/default/smile.png" class="bbc_emoticon" title=":)" /></p></blockquote><br />

1) roughly -2/10 , they'll do more harm than good. (For C++ you really want to use books, most online tutorials teach extremely bad practices or leave out essential information)
2) Don't worry about the whole engine abstraction yet and don't look for tutorials, most are crap, if you want to learn how to program at a lower level get solid grasp of the language and check the documentation for your OS API (or use something slightly higher level like SFML)
3) Just start simple, games like pong, snake, etc are fairly straightforward and can be done once you're able to draw basic shapes. Edited by SimonForsman

Share this post


Link to post
Share on other sites
Vincent_M    969

I was just at gamasutra checking out jobs ads, and I found this article:

http://www.gamasutra.com/blogs/TommyRefenes/20130107/184432/How_do_I_get_started_programming_games.php

Tommy Refenes was the programmer behind Team Meat's Super Meat Boy that got critical acclaim on the XBox LIVE Arcade. He's also featured in Indie Game - The Movie, which I highly recommend you watch that as well for extra motivation.

EDIT: I just read Simon Forsman's reply above, and his answer for your second question is spot-on. I wouldn't even consider building an engine at the beginning. You're just starting out, and you'll want to start small. An engine implies you have ambitious projects, and you don't want that in the beginning --you goal is just to complete simple projects, and learn your trade. You trade in this case, sounds like programming instead of art, audio, writing, etc. Plus, engine code is meant to be both functional to a degree, flexible for many projects, and easily extensible so you an sub-class which is where you'll want some experience writing complete games before trying. That way, you'll know how to code effectively.

As Simon pointed out, you'll want to write your own code from scratch so you get familiar with the lower-level libraries you'll come into contact with like DirectX, OpenGL/AL, SDL, etc. As you develop code, and complete your projects, you'll start to notice that you're coding the same things over and over again. When you're at that point where you're redundantly doing coding certain routines, you should start learning more about object-oriented programming concepts. Once you've made a few games, you'll notice that you've developed a coding style for your games, and at this point, you're probably copying and pasting entire source files from other projects to serve as a starting point to save you time from re-writing the same stuff from scratch. When you start using really similar code across multiple projects, I'd say that's when it's time to make abstract classes to cut down on coding time, and increase initial functionality of your subclasses. These classes used across projects will be considered the beginning of your game enginewink.png

For example, when I first put my menu system together for a specific title, I found that I was re-writing code to do the same things for each type of widget my game-specific menu system did. I created a generic Menu, Screen, and Widget class which literally trimmed of over a thousand lines of code, and made it easier to create different types of widgets (controls like Buttons, Labels, Textboxes, etc) and add it into my game.

This Menu system was used across multiple projects, and so I created an abstract version that had all of the features I'd always need for each project. Then, I'd create a game-specific subclass for each game. Eventually, I created a more abstract interface from the Widget class called CollectionItem. This was my OOP linked-list system, and nearly everything in my engine inherits from it. This engine, btw, is the result of many projects I've worked on in the past (although I've only publicly released one projects so far).

I'm talking in terms of object-oriented programming. If you're not familiar with these concepts yet, learning any object-oriented programming language would get you up and running. I highly recommend C++, and a good book to learn this language would C++ From the Ground Up by Herbert Schmidt. I think helped write part of the C++ standard we use today, and the book seems to cover the concepts well enough, and get to the point.

EDIT2: I would also recommend playing around with a drag and drop editor first like Game Maker: http://www.yoyogames.com/gamemaker/studio. This is where I got my start back in middle school, and it taught me a lot about Game Development just playing around with it. I think it helped me pick up programming because I learned a bit of the logic behind it just playing around with this editor. Honestly, if you're an artist with a technical side, you'd be well-rounded enough to make games on your own with this tool.

Edited by Vincent_M

Share this post


Link to post
Share on other sites
Nicholas Kong    1535

Honestly, I would say borrow books from the library and start from there. You can never go wrong with books. Program everyday-embrace, live and breathe it. You will not improve unless you write code. There are engines out there that you can use so you do not need to write it yourself. 

 

Good luck! 

Share this post


Link to post
Share on other sites
Hordeon    122
Okay, I got you all, I will search for 2d engines and learn to use (attempt) OpenGL, etc.

Another question is how to import them and use? Edited by Hordeon

Share this post


Link to post
Share on other sites
FalconDragoon    485

If you're looking to stick with C++ (Which isn't a bad choice, though perhaps not the easiest) you should probably have a look at some of the frameworks built to help with such projects.

 

 

OpenGL and DirectX are both pretty great but getting them to do 2D stuff can be complicated, and with raw OGL, you'll also have trouble with window management, input, sound and some other things. There's quite a few great libraries that abstract the things that should be trivial and make life a lot easier for the budding 2D game developer.

 

 

Simple Directmedia Layer (SDL) is probably the lowest level of the lot, but it helps significantly with things like creating windows, capturing input, loading files and the like. It's also nice as it doesn't really get in the way of using raw OpenGL for the rendering, i.e. use it for what you need and OpenGL for the rest.

 

SFML is a similar framework. It's newer and its claim to fame, as I understand it, is for being written in C++ and following OO principals (SDL is in C I believe).

 

A couple other libraries I know of are Allegro which from my limited experience seems to be pretty easy to use and is well liked among its community and Cocos2d-x which is a fairly new multi platform (PC, iOS, Android) port of iOS's Cocos2d framework.

 

All of these libraries/APIs have pretty good documentation on how to get started with using them (how to build, what to include, project setup etc...) that should get you well on your way to getting your first game or prototype made.

 

The best advice I can give you is to keep at it and don't let failure slow you down. Best way to learn is by doing it wrong and figuring out how to fix it.

 

Cheers, and good luck! biggrin.png

Share this post


Link to post
Share on other sites
Vincent_M    969

XNA is a nice framework to work with. It acts somewhat like a lower-level library like OpenGL, but at the same time, it provides higher-level routines like models. However, like DirectX, it provides higher-level interfaces like content processing for sounds, images, textures, fonts, etc. It also provides some nice functionality for utilizing those.

 

If you were to work with OpenGL directly, you'd be writing all your content loaders yourself, or be spending the time trying to link external libraries to your project to do it for you.

Share this post


Link to post
Share on other sites
snug    187

@Hordeon: I was the one who suggested XNA, and I stand by that recommendation. If others have recommended it to you as well then that should really vouch for it being a good option.

 

I find that using XNA (with C#) gives a good balance of ease-of-use and power/flexibility (more so than, say, Unity). You still need to write a lot of your own code, but as Vincent_M points out you don't need to spend half your time messing around with content loading, external libs, etc. It really lets you get to the point and start creating something.

Edited by snugsound

Share this post


Link to post
Share on other sites
Hordeon    122
@Hordeon: I was the one who suggested XNA, and I stand by that recommendation. If others have recommended it to you as well then that should really vouch for it being a good option.

 

I find that using XNA (with C#) gives a good balance of ease-of-use and power/flexibility (more so than, say, Unity). You still need to write a lot of your own code, but as Vincent_M points out you don't need to spend half your time messing around with content loading, external libs, etc. It really lets you get to the point and start creating something.


Well, I dislike unity v. much. 5% coding, 95% else. Unity is more for designers rather than real programmers. Also other engines are more flexible than unity. Maybe u know something similar to XNA, but for C++? Yep, you recommended it, but also another friend from skype.

Share this post


Link to post
Share on other sites
Josip Mati?    1304
Also I will put my whole life to programming! That's what I'm planning to do. Computer is my addiction. Not just games - whole Computer, all processes, etc. But I wanna become a gamedev, because people need games to refresh their soul. It's art, it's refreshing, that feeling of accomplishment, when you start from scratch and build a successful game!

 

You description of yourself almost matches with mine word for word :D

 

I began with game developing about the same age as you are now, and my first "utility" of choice was Visual Basic.Net + XNA Framework 2.0. I know, poor choice, but VB was the only language I was confident with.

 

My first "projects" were nothing better than simple tasks, things that I consider trivial now like shooting ducks flying on screen, moving objects on screen using the keyboard etc. just to learn though process and and logic behind game. On lots of those test projects I lost my interest fairly fast (and since XNA didn't have VB support at that time, I had to c/p code from one tutorial to get the same thing I get by using XNA game creation wizard for C#), never finishing them, but regardless of that I got valuable knowledge that I could use and improve in later projects (one of them is unfinished Breakout).

 

Few years after my last VB project I switched to C# and continued working with XNA; one of projects of that time was moving a box with orange stick of it around the screen - something that is currently becoming my own clone of Battle City! Mind you, compared to many people here, I'm still very inexperienced in game developing.

 

So, what did I want to say with all this wall of text (which is something more experienced people are always emphasizing, so I'll end up repeating them):

  • Start from the very basics; how to make something appear on screen, how to control object on screen, how to prevent it to go off the screen etc.
  • Define small, simple projects you can finish with current skill level while learning something new. There are game order you can follow (like Pong => Snake  => Asteroid) but it's better if you do what you want.
  • Use tutorials and examples for reference but not as a source. In other words, don't copy-paste existing code but try to reproduce it yourself. You'll understand the logic behind code much better that way.
  • Be ambitious, but take one step at a time. With time, you'll be able to make your "dream game" without problems.

Good luck!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this