Anyone else run into the "idk what programs to make" issue?

Started by
33 comments, last by Anri 11 years, 3 months ago

Learn what you need, as you need it, as you go along.

forget about object oriented C++ clasess. unnecessary overhead. unnecessary typing. and virtual methods are slower than non-virtual or regular code. use straight c code in a c++ compiler for the stronger compile time type checking. Use the standard C++ libraries and DirectX, unless you're targeting an Open GL only platform. for most PC's, DirectX is whats on the user's machine. If you ever plan on making games to sell, not requiring installation of OpenGL is a positive selling point. Also, vidcard driver support for directx is probably greater overall than that for OpenGL. And odds are there are more games made with DirectX than openGL, so any future project you become involved with will be more likely to use directx than openGL. While both are similar, already being versed in the one you're going to use helps. So even at the very start of a gamedev career, market forces influence what you do. In this case what poly engine library to learn.

Stay away from other libs like GDI, STL, templates, frameworks, and all that kind of junk. none of that stuff is for games, and just mucks things up.

I've been building games for 25 years. over time, programmers collect algo's into their "bag of tricks". code that they rely on again and again to get the job done. for making games, i've consolidated that bag of tricks into just 3000 lines of code that is a thin wrapper over directx. directx is rather verbose with lots of long variable and function names, and requires a lot of typing. The thin wrapper makes it less work: aniso(onoff) vs D3DSetTextureFilterSomethngOrAnother(Blah,Blah,Blah.........).

the "library" provides wrappers for directx, file io, mouse, windows message processing, keyboard input, string conversion, and random number generation. all wrappers compile inline.

the "library" also adds the following capabilities to directX: timer system; popup menu system; mesh, texture, model and animation databases; a limb based animation system; and matrix and string manipulators.

but the most important technology in the library is the drawlist. the drawlist queues all drawing calls, then sorts them based on the optimal order directx desires, then sends them off to directx for drawing.

these are representative of the types of capabilities needed in a generic gamedev library. As you can see, WINAPI, STL, MFC, GDI, and all the rest of that !^#@#%^$#*&^#@*%@!!!! stuff have none of this.

A minimal amount of windows API will be required to create a window class, register it, create a window, then go 3d and kiss windows goodbye! (yeah!).

a minimal windows message handler and window procedure will be required for mouse input.

as for what game to make....

well, the answer is obvious:

you make what you want to play and isn't already out there!

if you don't want to play it, odds are others won't want to either.

if you don't want to play it, you won't be motivated. might as well be programming databases for all the thrill you'll get at the end when you can use what you've built. if you're not motivated, you won't CARE about the project with the same passion, and the quality of your work will show it.

if its already out there, you don't need to built it, you can just go buy a copy and play it. in this case, building it would simply be an educational exercise. Nothing wrong with that, but another team has a head start, and it would be more work to eventually compete against them commercially.

Since you're just starting out and this will be for learning, not profit (at least at first), don't worry about whether there is already a game out there like it. this can actually be an advantage, as it gives you a working game to study and use as a reference for what you want to do. So simply decide what _FOR_YOU_ would be the coolest type of game to build, and go for it. I emphasize the "for you" because this will be key in keeping you motivated though the learning curve.

If the types of games you want to make are 3D games, don't waste time on learning how to make other types of games. there is very little in the way of game building knowledge from Tetris that transfers to Skyrim.

Also, if you want to BUILD games, don't waste time learning how to mod a game someone else has ALREADY built. While modding can be a somewhat roundabout way to learn how 3d games are built, its not the same thing as building one yourself (think "pimp my ride" vs a hand-built high-end Ferrari). And you get locked into the mindset of the designer of the engine you mod, thinking all games should be made this way. many is the time i've lamented the fact that Wolf3D/DOOM/Quake (and every shooter like on tthem) uses "levels" (level maps). now everyone thinks of game environments in terms of level maps, and that level maps are the only way to make a game. For anything you want to do in a game, there's usually a number of possible algo's, each with its own advantages and disadvantages, and its own capabilities and limitations. Learning game design by modding only exposes you to the solutions chosen by the engine designer for their particular application. If you build it yourself, the first step is to learn what algo's are out there, then pick one or roll your own if none is suitable. By doing so you learn about all the ways something can be done, not just one that may or may not be appropriate for the project at hand.

keep your favorite C++ book at your side, your favorite DirectX book at your side, the directx docs on a shortcut on your desktop, and GO FOR IT!

you may be looking up every single word in a line of code at first, and it may take a whole day to get 5 lines to work right, but keep at it, and you'll get there. eventually, it all becomes easy, especially if you spend 12-18 hours a day thinking 3d.

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php

Advertisement

(1) watch the demoscene documentary and get inspired to create cool effects

https://vimeo.com/40192433

(2) make some demos!

(3) profit! tongue.png

can start by doing a 4k intro doing pretty much just a GLSL or HLSL shader on fullscreen quad and go to demoparty (if you're in USA @party is in June http://atparty-demoscene.net/) and show it on the bigscreen and win fabulous prizes!

Learn what you need, as you need it, as you go along.

forget about object oriented C++ clasess. unnecessary overhead. unnecessary typing. and virtual methods are slower than non-virtual or regular code. use straight c code in a c++ compiler for the stronger compile time type checking. Use the standard C++ libraries and DirectX, unless you're targeting an Open GL only platform. for most PC's, DirectX is whats on the user's machine. If you ever plan on making games to sell, not requiring installation of OpenGL is a positive selling point. Also, vidcard driver support for directx is probably greater overall than that for OpenGL. And odds are there are more games made with DirectX than openGL, so any future project you become involved with will be more likely to use directx than openGL. While both are similar, already being versed in the one you're going to use helps. So even at the very start of a gamedev career, market forces influence what you do. In this case what poly engine library to learn.

Stay away from other libs like GDI, STL, templates, frameworks, and all that kind of junk. none of that stuff is for games, and just mucks things up.

I've been building games for 25 years. over time, programmers collect algo's into their "bag of tricks". code that they rely on again and again to get the job done. for making games, i've consolidated that bag of tricks into just 3000 lines of code that is a thin wrapper over directx. directx is rather verbose with lots of long variable and function names, and requires a lot of typing. The thin wrapper makes it less work: aniso(onoff) vs D3DSetTextureFilterSomethngOrAnother(Blah,Blah,Blah.........).

the "library" provides wrappers for directx, file io, mouse, windows message processing, keyboard input, string conversion, and random number generation. all wrappers compile inline.

the "library" also adds the following capabilities to directX: timer system; popup menu system; mesh, texture, model and animation databases; a limb based animation system; and matrix and string manipulators.

but the most important technology in the library is the drawlist. the drawlist queues all drawing calls, then sorts them based on the optimal order directx desires, then sends them off to directx for drawing.

these are representative of the types of capabilities needed in a generic gamedev library. As you can see, WINAPI, STL, MFC, GDI, and all the rest of that !^#@#%^$#*&^#@*%@!!!! stuff have none of this.

A minimal amount of windows API will be required to create a window class, register it, create a window, then go 3d and kiss windows goodbye! (yeah!).

a minimal windows message handler and window procedure will be required for mouse input.

as for what game to make....

well, the answer is obvious:

you make what you want to play and isn't already out there!

if you don't want to play it, odds are others won't want to either.

if you don't want to play it, you won't be motivated. might as well be programming databases for all the thrill you'll get at the end when you can use what you've built. if you're not motivated, you won't CARE about the project with the same passion, and the quality of your work will show it.

if its already out there, you don't need to built it, you can just go buy a copy and play it. in this case, building it would simply be an educational exercise. Nothing wrong with that, but another team has a head start, and it would be more work to eventually compete against them commercially.

Since you're just starting out and this will be for learning, not profit (at least at first), don't worry about whether there is already a game out there like it. this can actually be an advantage, as it gives you a working game to study and use as a reference for what you want to do. So simply decide what _FOR_YOU_ would be the coolest type of game to build, and go for it. I emphasize the "for you" because this will be key in keeping you motivated though the learning curve.

If the types of games you want to make are 3D games, don't waste time on learning how to make other types of games. there is very little in the way of game building knowledge from Tetris that transfers to Skyrim.

Also, if you want to BUILD games, don't waste time learning how to mod a game someone else has ALREADY built. While modding can be a somewhat roundabout way to learn how 3d games are built, its not the same thing as building one yourself (think "pimp my ride" vs a hand-built high-end Ferrari). And you get locked into the mindset of the designer of the engine you mod, thinking all games should be made this way. many is the time i've lamented the fact that Wolf3D/DOOM/Quake (and every shooter like on tthem) uses "levels" (level maps). now everyone thinks of game environments in terms of level maps, and that level maps are the only way to make a game. For anything you want to do in a game, there's usually a number of possible algo's, each with its own advantages and disadvantages, and its own capabilities and limitations. Learning game design by modding only exposes you to the solutions chosen by the engine designer for their particular application. If you build it yourself, the first step is to learn what algo's are out there, then pick one or roll your own if none is suitable. By doing so you learn about all the ways something can be done, not just one that may or may not be appropriate for the project at hand.

keep your favorite C++ book at your side, your favorite DirectX book at your side, the directx docs on a shortcut on your desktop, and GO FOR IT!

you may be looking up every single word in a line of code at first, and it may take a whole day to get 5 lines to work right, but keep at it, and you'll get there. eventually, it all becomes easy, especially if you spend 12-18 hours a day thinking 3d.

So I should forget OpenGL altogether?

I've been trying to figure out all of the crap I need to download aside from SDL for OpenGL.

I see a million things like FreeGLUT, GLFW, GLSL.

I figured DirectX was a microsoft only thing.

So I should forget OpenGL altogether?

I've been trying to figure out all of the crap I need to download aside from SDL for OpenGL.

I see a million things like FreeGLUT, GLFW, GLSL.

I figured DirectX was a microsoft only thing.

DirectX is MS only, though Wine can offer emulation for other platforms.

This is a pretty complicated field you are looking to get into. It's not overtly difficult, per se; there are areas of computing that are more challenging than game development. Nevertheless, you are going to have to learn to deal with some complexity. Google is your friend. For instance, if you used Google properly you would know that GLFW, FreeGLUT and SDL all fall into the category of abstraction frameworks that make it easier to create a window and initialize OpenGL, so you only need one of those; while GLSL stands for the GL Shading Language and is the language you would use to write shaders. Forgetting OpenGL altogether won't remove from you the need to understand a technical framework (trade the GL API for the Direct3D one, trade GLSL for HLSL).

The other posters in this thread have offered some good advice: figure out what you want to do, then figure out the very simplest set of tools you need in order to accomplish it. Don't get overwhelmed worrying about all the latest 3- and 4- letter acronyms, the latest technologies, etc... Frameworks such as SDL and SFML offer abstractions so you don't have to worry (yet) about the deeper technical aspects of OpenGL or Direct3D. Move up to more advanced stuff once you have a good grasp of the basics.

And understand that nobody on this forum or any other is going to solve your problem for you. No amount of forum posting or question asking is going to replace the simple acts of closing your web browser and opening your IDE and applying your brain to the active process of learning by doing.

blackpawn: while making demos sounds like fun, they do not help in teaching how to handle the interactive components that are present in games. Plus, a lot of demos involve generating procedural content on the fly, which can get pretty low level and therefor not as friendly for beginners (unless you're okay with your demo totalling several MB in pre-made assets).

My first experience with graphics programming was in SDL. I was able to get started sooner because I still haven't fully understood OOP at that time, but it wasn't necessary to make games with SDL.

I was still learning a lot about the C++ language with SDL, but I was able to make some basic scrolling shoot-em-ups (one with a ninja theme that I was proud of) and a Tetris Attack (Panel De Pon) clone with it. That puzzle game was coded sloppily and there were no menus, but it had a scoring system and game over condition that worked. To put it in perspective, the game was only one main.cpp file around 600 lines long. I could re-do it from scratch with a whole different approach, but the point is you don't have to be a big expert in any one area to make a playable game.

New game in progress: Project SeedWorld

My development blog: Electronic Meteor

sure, kinda depends where your interests are. if you're interested in graphics and looking for something to make a game could turn into a massive undertaking involving not much of the fun graphics you were hoping to spend your time on. with small demos and intros near 100% of your time is on the visuals and cool stuff. code up a tunnel, add some glow, put some music to it with lots of bass, show it off to your friends and you may find that much more rewarding than mucking about on a more complicated project you may never finish and get that self motivating pay off from. all depends on personal interest i suppose but that's my recommendation for Bill. :)

blackpawn: while making demos sounds like fun, they do not help in teaching how to handle the interactive components that are present in games. Plus, a lot of demos involve generating procedural content on the fly, which can get pretty low level and therefor not as friendly for beginners (unless you're okay with your demo totalling several MB in pre-made assets).

So I should forget OpenGL altogether?

I've been trying to figure out all of the crap I need to download aside from SDL for OpenGL.

I see a million things like FreeGLUT, GLFW, GLSL.

I figured DirectX was a microsoft only thing.

DirectX is MS only, though Wine can offer emulation for other platforms.

This is a pretty complicated field you are looking to get into. It's not overtly difficult, per se; there are areas of computing that are more challenging than game development. Nevertheless, you are going to have to learn to deal with some complexity. Google is your friend. For instance, if you used Google properly you would know that GLFW, FreeGLUT and SDL all fall into the category of abstraction frameworks that make it easier to create a window and initialize OpenGL, so you only need one of those; while GLSL stands for the GL Shading Language and is the language you would use to write shaders. Forgetting OpenGL altogether won't remove from you the need to understand a technical framework (trade the GL API for the Direct3D one, trade GLSL for HLSL).

The other posters in this thread have offered some good advice: figure out what you want to do, then figure out the very simplest set of tools you need in order to accomplish it. Don't get overwhelmed worrying about all the latest 3- and 4- letter acronyms, the latest technologies, etc... Frameworks such as SDL and SFML offer abstractions so you don't have to worry (yet) about the deeper technical aspects of OpenGL or Direct3D. Move up to more advanced stuff once you have a good grasp of the basics.

And understand that nobody on this forum or any other is going to solve your problem for you. No amount of forum posting or question asking is going to replace the simple acts of closing your web browser and opening your IDE and applying your brain to the active process of learning by doing.

that was...unnecessarily rude.

WinAPI and drawing dots with GDI? Sorry but I think that might be some of the worst ways to start with (3D) programming. If you start with a really high level toolkit like unity, then you can do things in minutes for which you might need years (if you have the endurance) going the way you have mentioned. Yes you won't understand what is going on in the background but you can learn that later or don't bother at all and continue making games.

If Bill was to attempt something like COD in WinAPI and drawing Dots in GDI - then yes, you are correct. It would be bloody painful. However, I was suggesting he start with a Wolfenstein-style ray-caster game, first. That's is a gentle introduction to 3D before the likes of DirectX and OpenGL. Windows API is readily available with minimum fuss, it only requires basic maths for raycasting and a knowledge of WinAPI allows one to make their own tool applications, which is of course useful for banging together level editors etc. With that experience stuff like DX and OpenGL will be much easier to settle into and be more appreciative of them.

Languages; C, Java. Platforms: Android, Oculus Go, ZX Spectrum, Megadrive.

Website: Mega-Gen Garage

that was...unnecessarily rude.

No, it was just about the right level.
You have already been given every single detail and then some about what you need to do next, yet you stand in paralysis, afraid to take even one step of your own into the wild.

The very first answer you got from JTippetts was already spot-on, and more people gave more advice on top of it, yet you keep coming back with “what should I do?”.

And as much as we want to help, what are we supposed to do? Keep repeating what has already been said?


My story is the same as JTippetts’, but maybe I can present it a bit differently. In steps.

Step 1: Acknowledge that I am a beginner and that my goal right now is more of a learning process than anything else. But games motivate me so that is what I want to make.
Step 2: Think of a simple game that I could make with my abilities.
-> #1: A text-based guess-the-number game first.
-> #2: Then a crappy DOS space shooter with lines for graphics.
-> #3: Then a C# Tetris clone third.
-> #4: Etc.
Step 3: It doesn’t matter what graphics API I use. My goal is to learn.

I guess what you need to learn is to stop thinking 12 years into your future. Stop over-complicating things.

Do you think I was worried about the differences between OpenGL and DirectX when I was making a crappy DOS shooter?

Do you think I made the Tetris clone in C# because I thought C# or XNA would be relevant to my future?

No. There are other things to be gained from making games than just graphics API’s.

C# has been completely irrelevant to my programming career, and that didn’t matter back then! I chose it because it was the easiest way to get graphics onto my screen.

Nothing else.

Stop over-complicating this.

Stop lurking the forums, get out there, and start coding. The point is to learn basic principles, and if you would stop overthinking things you would easily realize that whatever graphics API you are using you are gaining valuable experience in programming in general, game architecture, game-flow logic, etc.

L. Spiro

I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid

I have a LOT of books, a very good one in C++ Primer, but I get sick of reading so quick that I am not really going anywhere.

Start doing its exercises and read what you need to complete them.. the exercises are normally complete programs that you can make so that answer you're initial question..

I didn't use to like reading books too much either.. When I read technical books I sometimes can't read more than one page.. other days I can read ten or even more, but I force my self to at least open them once every day so the last years I've read many.

As everyone else says, just get started..

This topic is closed to new replies.

Advertisement