Sign in to follow this  
Stephen Oller

What *is* game programming?

Recommended Posts

Hello. I know this sounds like a stupid question, but as someone who wants to learn game programming and who is already moderately skilled in programming, hear me out.

The basic problem is that I want to learn game programming, but don't know where to start because I don't know what it even *is*. For example, would you say that someone who knows how to use GameMaker to literally drag-and-drop functionality into their game actually knows how to program games? No, you wouldn't. Of course, this problem goes both ways with someone who is knowledgable about programming, but honestly doesn't know how to make a single colored pixel move across the screen.

Let me make a less exaggerated example. Let's say there's a magical API out there that allows a programmer to program games from the perspective of a game designer rather than a computer programming. So, instead of dragging and dropping functionality , you can program it in (like GameMaker, but more powerful). Would you say that such an individual knows how to program games? I, personally, wouldn't. But, then again, I don't actually know what game programming *is*.

I hope that this has explained my point sufficiently.

So, what *are* the building blocks of game programming? Where does someone go if they want to learn concepts and theory instead of just raw practicality? I'm not as concerned about being able to make games quickly, or even make them at all (let alone good ones) so much as I am with understanding and being able to play around with the concepts. I want to understand the building blocks, then work my way up. Where would I go to start learning *that*? Edited by Megacannon

Share this post


Link to post
Share on other sites
I would say that the building blocks are pretty much the same as any other project. Think of creating a normal project which has deadlines, requirements, needs to have certain functionality and the list goes on. The same stands for GAME programming. A game however simple it may be will have deadlines requirements and will be required to have a certain level of functionality.

[url="http://en.wikipedia.org/wiki/Game_programming"]http://en.wikipedia.org/wiki/Game_programming[/url] < Decent Description of game development.
[url="http://content.gpwiki.org/index.php/How_do_I_get_Started"]http://content.gpwiki.org/index.php/How_do_I_get_Started[/url] < Pretty much the same just more detailed.
[url="http://gamesfromwithin.com/so-you-want-to-be-a-game-programmer"]http://gamesfromwithin.com/so-you-want-to-be-a-game-programmer[/url] < Probably the best so far.

I still stand by my statement and say: It's the same as any normal software project just headed in a different direction with different tools.

Share this post


Link to post
Share on other sites
I'm going to sound like a total smart aleck, but I'm not being one when I say this: game programming is programming games. It's not some magical world separate from programming in general.

[quote name='Megacannon' timestamp='1341682682' post='4956679']
So, what *are* the building blocks of game programming?
[/quote]
Programming games. Practice, practice, practice.

[quote name='Megacannon' timestamp='1341682682' post='4956679']
Where does someone go if they want to learn concepts and theory instead of just raw practicality?
[/quote]
University. But not to some "game making university." I mean a proper one, where you'll likely major in Computer Science (or Computer Science with some emphasis, which could be a gaming emphasis).

If you know how to program in general, it's easy to get into game programming, because it [i]is [/i]programming.

Share this post


Link to post
Share on other sites
I will say that GameMaker is hardly drag and drop and that it is game programming. I think some people have this notion that some programming languages are "real" and that if you don't use those "real" languages then you are not a "real" programmer.

I disagree. For a number of reasons Game Maker is not a great example. For one the GML language has full programming support (variables, loops, you name it). Even the event based system relies on programming logic containing the "visual" equivalents of setting variables and program flow control. Very little functionality in Game Maker can be "dragged and dropped" with no implementation of logic.

So in that regard I would have to say someone who knows how to use Game Maker is certainly able to program games.

I can hear the people saying "but it's not 'REAL' programming" what is real programming? What makes a real programmer? I work professionally as a software engineer and I have absolutely no idea. To me a real language is a language that you can use to accomplish the task that you set out to do. If I set out to make a game in Game Maker, and I am able to complete that game and instruct the computer how to perform my game's logic, then to me it is a real language.

I will echo the statement that games are like any other type of program. You take input, process that input, and display an output. Many of the concepts are shared between games and other types of applications. You will have the same issues with working with files, databases, interprocess communications, data structures, ect. Typically games involve a higher degree of graphics output and more multimedia output than most other types of applications require.

Modern AAA games are highly complex systems that typically use many different engines and middlewares to create the game world.

So yes game programming is *programming*. In my mind *programming* is telling the computer to do stuff and having it do that stuff. It doesn't make a difference to my definition if I am writing a bash script, or a 10,000 line C++/Qt application. Getting the task done is what matters. Edited by shadowisadog

Share this post


Link to post
Share on other sites
In addition, there isn't some UPS truck (to borrow from someones' post) that delivers your "Official Game Programmers' Certificate".

What matters is shipping finished, feature-complete products. If you can do that in a game maker, then seriously consider using a game maker.

Share this post


Link to post
Share on other sites
"magical API" or not if you make a game through the use of a programming language(not only scripting unless it's the primarily used language) then y

Share this post


Link to post
Share on other sites
It's so strange to me that people think there is fundamental difference between programming and game programming.
Why do people even with programming experience think that?
Graphics make them think that?
I have been always wondering.

Share this post


Link to post
Share on other sites
[quote name='szecs' timestamp='1341739020' post='4956876']
It's so strange to me that people think there is fundamental difference between programming and game programming.
Why do people even with programming experience think that?
Graphics make them think that?
I have been always wondering.
[/quote]
It's the intricate interaction between many parts of a modern game that's complicated, second only perhaps to an OS.
Old games were not that difficult. You had a static or barely animated intro screen with a bit of text saying press fire to start game. If the user did that simple loop would have been exited and a new one entered that was equally simple. If the player died usually all movement stopped and a simple game over screen appeared and then it's back to the intro.
In a modern game you would have gamestates that blend into each other seamlessly. You leave the intro with a crossfade between it and the overworld. All the while the music crossfades too. That means both loops get intertwined. An action performed in one castle can affect an event in another part of the game (although that part isn't truly complicated but don't lose track)

Share this post


Link to post
Share on other sites
I don't think games are more complex than other applications. It's just the emphasises are elsewhere.

If a game crashes, the user is pissed then she restarts. If a company's main management system crashes, catastrophe.
Applications can have quite complex user interfaces, much more complex than games of game (content) making tools.
Parametric 3D design software is one of the very few programming areas where I donn't have the slightest idea how the hell they work.
Etc.

It's really the graphics and the audio that seems to be significantly more complex than other applications. And that applications (other than games) is a much broader field than game programming, so it's hard to realize the complexity of other applications.

Share this post


Link to post
Share on other sites
One thing I have noticed though is that game programming in general tends to require a bit more knowledge in the mathematics/physics department than the average application. The mere act of getting an object to move around on the screen tends to require some knowledge of linear algebra and elementary physics. 3D games tend to require a considerable knowledge of linear algebra as you deal with matrices, vectors, quaternions, ect to a considerable degree. Even if you use a 3D engine with built in physics capability, some concept of what "mass" is can help (Just throw some more higgs bosons in there)

Share this post


Link to post
Share on other sites
I think drop the word "game" from "game programming". Game programming is nothing but programming. You're just implementing an aspect of the game design process. Designing a game, then, is something else. Anyone can be a game designer.

If you want to learn to program a game, come up with your game idea first. Then find a means to get it made. You can even make a game with Javascript, CSS, and HTML, the most cross-platform languages right now with some limitations. Webpages have made text-based "go to page" adventure games incredibly easy to make. That's a start.

Then, as your game demands more features and gimmicks, you might want to start taking control of more aspects of the internal implementations. This is when you have to learn VB, C++, C#, whatever. It would then be more than just learning the language, you have to understand the concepts behind programming (object oriented programming, organization, abstraction, encapsulation, etc), otherwise you'll be making clunky, inefficient, brute-force software.

Like most games, start with a piece of paper and a pencil.

Share this post


Link to post
Share on other sites
Drag and drop or typing text? No difference really, both can achieve programming,. games or otherwise. Operator stacking, wiring nodes, punch cards?

Since the output is==> a game you are programming a game,.

I have a dream/idea about a pure symbolic programming language that IS a game., you just reminded me about that one.

Share this post


Link to post
Share on other sites
Excellent. Many interesting ideas, everyone. This has been very helpful and given me some interesting things to think about.

To clarify and respond to a few things...

Some of you seemed to think that I want to "make a game". I actually don't. I'm much more interested in programming rather than making a game (though I am also a gamer). I thought game programming would be a good avenue to provide programming challenge since it seems so complicated and varied. I'm more interested in low-level implementation details rather than high level usability.

Some of you simply described game programming as "programming". That's a good point with a lot of truth in it that I hadn't thought of before, but I disagree and it doesn't provide the information I'm looking for. From what I can see, game programming requires an additional set of skills and knowledge that most programmers fresh out of college don't have. A simple example would be The Game Loop. While loops are nothing special, the concept of The Game Loop seems to be something unique to game programming. The use of math in games programming would also be another example of "game programming" versus "other programming". Advanced manipulation of graphics and object interact interaction would also be examples. Perhaps this is just an area with many shades of grey? The more I ponder your responses the more apparent this seems to me.

Share this post


Link to post
Share on other sites
[quote name='Megacannon' timestamp='1341842547' post='4957267']
Some of you simply described game programming as "programming". That's a good point with a lot of truth in it that I hadn't thought of before, but I disagree and it doesn't provide the information I'm looking for. From what I can see, game programming requires an additional set of skills and knowledge that most programmers fresh out of college don't have. A simple example would be The Game Loop. While loops are nothing special, the concept of The Game Loop seems to be something unique to game programming.
[/quote]
It's not unique to game programming. The main game loop is synonymous with any program's main event loop, and most programs have a main event loop.

[quote name='Megacannon' timestamp='1341842547' post='4957267']
The use of math in games programming would also be another example of "game programming" versus "other programming".
[/quote]
Not all programs are math heavy, but game programming isn't always math heavy, and there are plenty of non-games that are math heavy. Video and audio transcoding (which is my line of work) is quite math heavy and relies a lot on signal analysis and signal processing. Linear algebra (which is typically used a lot in games) is used in faaaar more than just games.

[quote name='Megacannon' timestamp='1341842547' post='4957267']
Advanced manipulation of graphics and object interact interaction would also be examples.
[/quote]
I would agree that most programs in the world don't deal much with graphics and GPUs, but this also isn't really unique to game programming. Graphics programming is used a lot in the entertainment industry (gaming is a part of this, but so are things like movies (for special effects), etc.) and in simulations (to help researchers visualize what's happening).

I think you're getting slightly confused about game programming assuming that programming one game is just like programming another game, which isn't how it is. Not all games use advance graphics, not all games are heavy on the math, not all games involve networking, not all games use physics, etc. A particular game will use things from several different branches of research (like networking, physics, 3D graphics with object deformation, etc.). But the same is true for any program. Any particular program will use things from several different branches of research (video/audio transcoding uses things from signal/image analysis and processing, color space theory, parallelism and load balancing, etc.). Looking at these two examples, you might declare game programming completely different from regular application programming, but you've extrapolated too far. Programming [i]this[/i] game compared to programming [i]this[/i] audio/video transcoder might be different. But there may be a different game or program out there that shows similarities between the two.

Programming in general just takes things from different branches of research, combining them with some computer-science related algorithms and design patterns. If you know your algorithms and design patterns, it's easy to work on any program, provided you just learn a bit about the branches of research that program incorporates so you know how to handle them. Not all games take from the same branches of research that other programs (and games) do, but there's always overlap to find. The thing is that[i] [b]one[/b] particular game may take from a specific, unique combination of branches of research and combine them in a particular way, making that [b]one[/b] game unique[/i]. But it doesn't make [i]general[/i] game programming unique. Just that [i]one[/i] game. The same holds true for [i]any[/i] program. Edited by Cornstalks

Share this post


Link to post
Share on other sites
I know this seems a bit far fetched but in my opinion game programming(or any kind of graphics stuff) is the ultimate art form. You can simulate everything from books to drawings to 3D sculptures to even the universe (yes I think it would be possible to simulate the universe, not real-time of course). It is the ultimate catalyst of creativity and can turn some sad/unimportant guy, who is unhappy with his life, into a might warrior or soldier in WWII. It can do things that you can't do in real life and visualizes the human imagination.
The possibilities are literally endless(well not literally but basically).
Would be awesome if I live to see the first mainstream quantum computer. Imagine being able to simulate the universe close to real-time speed. It would be impossible to simulate the universe real-time.
No homo.

Share this post


Link to post
Share on other sites
[quote name='CryoGenesis' timestamp='1341862529' post='4957383'] yes I think it would be possible to simulate the universe, not real-time of course[/quote]

Isn't this provably absurd and in violation of some fundamental laws regarding entropy, maybe second law of thermodynamics?

Share this post


Link to post
Share on other sites
[quote name='Megacannon' timestamp='1341842547' post='4957267']
From what I can see, game programming requires an additional set of skills and knowledge that most programmers fresh out of college don't have.
[/quote]

I think that this is mostly correct. I also think that this applies to pretty much every "branch" of programming. Game programmers know a lot of the basic stuff that typical "enterprise" developers do not, and vice versa. How many game developers do you know use inversion of control containers or test driven development?? I think that sometimes people give game developers too much credit and while I do enjoy looking like I'm more intelligent than I may or may not be (and I'm one of a few at my school who has interest in gamedev as a hobby) I strongly feel like we're all on equal footing. Unless of course you've mastered the esoteric art of template meta programming, then I hate you ;).

[quote name='return0' timestamp='1341881022' post='4957464']
[quote name='CryoGenesis' timestamp='1341862529' post='4957383'] yes I think it would be possible to simulate the universe, not real-time of course[/quote]

Isn't this provably absurd and in violation of some fundamental laws regarding entropy, maybe second law of thermodynamics?
[/quote]

Probably breaks some lemma in computational theory that mere mortals cannot comprehend.

Share this post


Link to post
Share on other sites
[quote name='return0' timestamp='1341881022' post='4957464']
[quote name='CryoGenesis' timestamp='1341862529' post='4957383'] yes I think it would be possible to simulate the universe, not real-time of course[/quote]
Maybe a simpler explanation even:
How could a quantum computer with a limited number of qubits represent all the other quantum states of every particle in the universe that's not part of the computer itself?

Isn't this provably absurd and in violation of some fundamental laws regarding entropy, maybe second law of thermodynamics?
[/quote]

Share this post


Link to post
Share on other sites
Just an idea. I would think that even with a digital computer you could simulate the 3Dimensional universe even if it is incredibly slow. You can fit the theory of Quantum Physics on a A4 sheet of paper. With a computer with billions of Terabytes of ram surely you would be able to simulate all the laws of the universe. I don't mean in its current state of course. What would be the point of simulating the universe in its current state? It wouldn't even be possible. The more RAM you add to contain the information to calculate the more RAM you would have to simulate in the simulation if it were a current state simulation.
If people can calculate what can happen when a singularity expands using equations then surely a computer would be able to as well.
Tell me if I'm saying anything wrong. I'm not too good with complicated astrophysics.
Still think that programming is the ultimate art form though.
P.S: Can't believe I got -2rep for that D;

Share this post


Link to post
Share on other sites
[quote name='CryoGenesis' timestamp='1341951165' post='4957764']
P.S: Can't believe I got -2rep for that D;
[/quote]
It's probably because you're derailing the thread. If you want to talk about this stuff, you should take it to the lounge.

Share this post


Link to post
Share on other sites
[quote name='CryoGenesis' timestamp='1341951165' post='4957764']
Just an idea. I would think that even with a digital computer you could simulate the 3Dimensional universe even if it is incredibly slow. You can fit the theory of Quantum Physics on a A4 sheet of paper. With a computer with billions of Terabytes of ram surely you would be able to simulate all the laws of the universe. I don't mean in its current state of course. What would be the point of simulating the universe in its current state? It wouldn't even be possible. The more RAM you add to contain the information to calculate the more RAM you would have to simulate in the simulation if it were a current state simulation.
If people can calculate what can happen when a singularity expands using equations then surely a computer would be able to as well.
Tell me if I'm saying anything wrong. I'm not too good with complicated astrophysics.
Still think that programming is the ultimate art form though.
P.S: Can't believe I got -2rep for that D;
[/quote]
The thing is, to simulate the universe exactly, you would need exactly as much data as is in the universe...

...Plus a universe-sized machine to compute it all.

The law of diminishing returns.

Edit:
[quote]
It's probably because you're derailing the thread. If you want to talk about this stuff, you should take it to the lounge.
[/quote]
Good point, sorry.

For the topic, game programming is programming games. Much like programming a text editor, it requires a selection of esoteric skills, plus the ability to code, plus various people to do non-code contributions.

As someone else made clear, any particular program is only distinct in the details of that particular program.

Now, as to whether there's game programmers as compared to other programmers - Not really. Sure, I don't know much about making a text editor in general, but that's what a design document is for.

Give an experienced programmer a design document and (if needed) a large enough team, and you've got a program that matches the design document in code. Edited by Narf the Mouse

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