Jump to content

  • Log In with Google      Sign In   
  • Create Account


[Help] Getting into game programing


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
21 replies to this topic

#1 Hordeon   Members   -  Reputation: 122

Like
1Likes
Like

Posted 08 January 2013 - 10:04 AM

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 :)



Sponsor:

#2 yewbie   GDNet+   -  Reputation: 665

Like
1Likes
Like

Posted 08 January 2013 - 10:39 AM

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



#3 Hordeon   Members   -  Reputation: 122

Like
1Likes
Like

Posted 08 January 2013 - 10:53 AM

- What kind of graphics library are you going to use
- If not a home brew engine what game engine will I use



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.



#4 lride   Members   -  Reputation: 633

Like
0Likes
Like

Posted 08 January 2013 - 10:59 AM

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.)

An invisible text.

#5 steffy81   Members   -  Reputation: 220

Like
1Likes
Like

Posted 08 January 2013 - 11:39 AM

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.



#6 snugsound   Members   -  Reputation: 181

Like
0Likes
Like

Posted 08 January 2013 - 01:00 PM

... 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, 08 January 2013 - 02:08 PM.


#7 Hordeon   Members   -  Reputation: 122

Like
0Likes
Like

Posted 08 January 2013 - 01:10 PM




... 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, 08 January 2013 - 01:14 PM.


#8 snugsound   Members   -  Reputation: 181

Like
0Likes
Like

Posted 08 January 2013 - 01:33 PM

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, 08 January 2013 - 01:34 PM.


#9 Hordeon   Members   -  Reputation: 122

Like
0Likes
Like

Posted 08 January 2013 - 01:38 PM


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, 08 January 2013 - 01:48 PM.


#10 snugsound   Members   -  Reputation: 181

Like
1Likes
Like

Posted 08 January 2013 - 02:07 PM

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.

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 :)



#11 SimonForsman   Crossbones+   -  Reputation: 5772

Like
1Likes
Like

Posted 08 January 2013 - 02:16 PM

<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, 08 January 2013 - 02:37 PM.

I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!

#12 Vincent_M   Members   -  Reputation: 560

Like
3Likes
Like

Posted 08 January 2013 - 07:27 PM

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, 08 January 2013 - 08:04 PM.


#13 warnexus   Prime Members   -  Reputation: 1383

Like
0Likes
Like

Posted 09 January 2013 - 12:18 AM

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! 



#14 Hordeon   Members   -  Reputation: 122

Like
0Likes
Like

Posted 09 January 2013 - 09:18 AM

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, 09 January 2013 - 09:19 AM.


#15 Jutaris   Members   -  Reputation: 473

Like
0Likes
Like

Posted 09 January 2013 - 05:00 PM

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


My Site -- My Music  -- My Ramblings -- My Game

 Basic Flying Rules:Try to stay in the middle of the air. Do not go near the edges of it. The edges of the air can be recognized by the appearance of ground, buildings, sea, trees and interstellar space. It is much more difficult to fly there.

Come join us for some friendly game dev discussions over in XNA Chat!


#16 Hordeon   Members   -  Reputation: 122

Like
0Likes
Like

Posted 10 January 2013 - 10:51 AM

someone recommended me XNA engine to start with. Is it good advice?
(Microsoft XNA Game Studio 4.0)

Edited by Hordeon, 10 January 2013 - 10:56 AM.


#17 Vincent_M   Members   -  Reputation: 560

Like
0Likes
Like

Posted 10 January 2013 - 12:01 PM

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.



#18 snugsound   Members   -  Reputation: 181

Like
0Likes
Like

Posted 10 January 2013 - 12:15 PM

@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, 10 January 2013 - 12:18 PM.


#19 Hordeon   Members   -  Reputation: 122

Like
0Likes
Like

Posted 10 January 2013 - 12:21 PM

@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.



#20 snugsound   Members   -  Reputation: 181

Like
0Likes
Like

Posted 10 January 2013 - 12:29 PM

Maybe u know something similar to XNA, but for C++?

Yeah check out SFML: http://www.sfml-dev.org/features.php






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS