• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 11:45
CEST 17:45
KST 00:45
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
[ASL19] Finals Recap: Standing Tall10HomeStory Cup 27 - Info & Preview18Classic wins Code S Season 2 (2025)16Code S RO4 & Finals Preview: herO, Rogue, Classic, GuMiho0TL Team Map Contest #5: Presented by Monster Energy6
Community News
Firefly given lifetime ban by ESIC following match-fixing investigation7$25,000 Streamerzone StarCraft Pro Series announced4Weekly Cups (June 30 - July 6): Classic Doubles6[BSL20] Non-Korean Championship 4x BSL + 4x China9Flash Announces Hiatus From ASL66
StarCraft 2
General
Firefly given lifetime ban by ESIC following match-fixing investigation TL Team Map Contest #4: Winners Weekly Cups (June 30 - July 6): Classic Doubles The SCII GOAT: A statistical Evaluation The GOAT ranking of GOAT rankings
Tourneys
FEL Cracov 2025 (July 27) - $8000 live event $25,000 Streamerzone StarCraft Pro Series announced Sparkling Tuna Cup - Weekly Open Tournament RSL: Revival, a new crowdfunded tournament series WardiTV Mondays
Strategy
How did i lose this ZvP, whats the proper response Simple Questions Simple Answers
Custom Maps
[UMS] Zillion Zerglings
External Content
Mutation # 481 Fear and Lava Mutation # 480 Moths to the Flame Mutation # 479 Worn Out Welcome Mutation # 478 Instant Karma
Brood War
General
BGH Auto Balance -> http://bghmmr.eu/ i aint gon lie to u bruh... ASL20 Preliminary Maps [G] Progamer Settings [ASL19] Finals Recap: Standing Tall
Tourneys
[Megathread] Daily Proleagues [BSL20] Non-Korean Championship 4x BSL + 4x China [BSL20] Grand Finals - Sunday 20:00 CET CSL Xiamen International Invitational
Strategy
Simple Questions, Simple Answers I am doing this better than progamers do.
Other Games
General Games
Nintendo Switch Thread Stormgate/Frost Giant Megathread Path of Exile What do you want from future RTS games? Beyond All Reason
Dota 2
Official 'what is Dota anymore' discussion
League of Legends
Positive Thoughts on Setting Up a Dual-Caliber FX
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Heroes of StarCraft mini-set
TL Mafia
TL Mafia Community Thread Vanilla Mini Mafia
Community
General
US Politics Mega-thread Things Aren’t Peaceful in Palestine Russo-Ukrainian War Thread Summer Games Done Quick 2025! Stop Killing Games - European Citizens Initiative
Fan Clubs
SKT1 Classic Fan Club! Maru Fan Club
Media & Entertainment
Anime Discussion Thread [Manga] One Piece [\m/] Heavy Metal Thread
Sports
Formula 1 Discussion 2024 - 2025 Football Thread NBA General Discussion TeamLiquid Health and Fitness Initiative For 2023 NHL Playoffs 2024
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread
TL Community
The Automated Ban List
Blogs
momentary artworks from des…
tankgirl
Culture Clash in Video Games…
TrAiDoS
from making sc maps to makin…
Husyelt
StarCraft improvement
iopq
Customize Sidebar...

Website Feedback

Closed Threads



Active: 687 users

New TL KnowHow Article: Game Programming

Blogs > CecilSunkure
Post a Reply
Normal
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
Last Edited: 2012-10-24 05:18:44
October 24 2012 05:07 GMT
#1
In the past I wrote a few blog articles here on TL about game programming with the goal of introducing the idea to new people. I had been a bit unorganized and didn't really seem to get clear ideas out there to readers. So I've decided to try yet again except this time in the form of a TL KnowHow. I'm sharing this blog for two reasons; firstly it'd be cool to generate a little bit of hype! Be aware that I've taken great pains to write the entire article in such a way that it can easily be consumed by someone that has little to no programming experience at all; I explain a lot of concepts and provide a lot of high-level descriptions and ideas that aren't written in "programmer speak". I'd like anyone new and interested in learning something about programming, especially game programming as a profession, to be able to take something away.

Take a look at my table of contents for the KnowHow:

+ Show Spoiler [Crazyiest ToC Ever] +

Introduction
Goal of this Article
Game Programming and Software Development
The Hobbyist
Professional Programming
Real-Time Applications
Memory intensive
Computation intensive
Prerequisites
Variables, Keywords and Identifiers
Basic formatted input/output
Control structures
Arrays
Functions
Pointers
Structures
Classes
Quick Refresher
Stack and Heap
Bits and Bytes
Arrays
Second class type
Sizeof
Pointers
Address of
Indirection
Pass by value
References
Pointers and Arrays
Pointer arithmetic
Pointer to pointer
Preprocessor
#define
#include
#ifdef, #endif, #undef
Compiling and Linking
Code Organization for Large Projects
Coupling
Source files
Header files
Macros
Prototypes
Multiple Include protection
Circular inclusion
Forward Declarations
Extern
Data structures and program design
Linked lists
Ordered list
Array
std::vector
Hash table
Messaging
Game Engine Architecture
Overview
Systems
Main Loop
Display
Input
Memory Management
Object Management
Game logic
Physics
AI
Component Based Design
Component Based Game Objects
Factory
Data driven composition
Additional isolated topics
Finite State Machines
ActionList
Improved Messaging
Generic programming
Bitmasks
User Interface by Sean Reilly
Game User Interface
From Scratch
Preexisting Library
Editor User Interface
In-Game
External
External with Game Embedded


The second reason I've written this blog is to ask, just in case, if there's anyone who would like to request a specific topic (related to software engineering and/or game programming). If I have knowledge of the topic, or know someone who does, I might get it in before the KnowHow goes live.

As for what the various sections look like, here's a tiny snippet of the very beginning:

Introduction
Hello! My name is Randy Gaul, and I am a computer science student. I study at DigiPen Institute of Technology, and am majoring in Real-Time Interactive Simulation (a fancy way of saying game programming). I’d like to share my know-how in the ways of game programming as a profession for anyone interested in learning. I encourage anyone interested in programming or creating games, no matter how little knowledge you have in either topic, to check out this article.

Goal of this Article
Before my studies at university I had spent a good deal of time trying to learn what it is like to create a piece of useful software from scratch. I spent many hours studying the basics of programming such as control structures, program design and even abstract data types. I however was very hardpressed to find any high-level information on how to piece together the smaller tools of programming in order to make a project of my own. This article aims at bridging the gap between the realm of a beginning programmer, straight into and through the intermediate level.
...


I hope anyone who reads this looks forward to the new KnowHow that will be coming very soon!

***
ketomai
Profile Joined June 2007
United States2789 Posts
October 24 2012 05:13 GMT
#2
Ooh I'm excited for this !

I however was very hardpressed to find any high-level information on how to piece together the smaller tools of programming in order to make a project of my own.


This in particular is currently my own dilemma as well.
EatThePath
Profile Blog Joined September 2009
United States3943 Posts
Last Edited: 2012-10-24 05:15:43
October 24 2012 05:15 GMT
#3
Super excited for this.

"Goal of this article" section is music to my ears.
Comprehensive strategic intention: DNE
BLinD-RawR
Profile Blog Joined April 2010
ALLEYCAT BLUES50115 Posts
October 24 2012 05:18 GMT
#4
I am so looking forward to this.
Brood War EICWoo Jung Ho, never forget.| Twitter: @BLinDRawR
TL+ Member
happyness
Profile Joined June 2010
United States2400 Posts
October 24 2012 06:16 GMT
#5
This is awesome! I just recently switched to Computer Science so I would love this!
Rhaegar99
Profile Blog Joined September 2008
Australia1190 Posts
October 24 2012 06:22 GMT
#6
How about threads/multithreads and sockets/networking. I've made some simple games myself in my spare time but I've never been able to create a functional server client system since it's so damn confusing to me.

Like everyone else I'm really excited for this.
NeThZOR
Profile Blog Joined November 2010
South Africa7387 Posts
October 24 2012 06:26 GMT
#7
Godspeed! I always wanted to learn more about game programming
SuperNova - 2015 | SKT1 fan for years | Dear, FlaSh, PartinG, Soulkey, Naniwa
MysteryMeat1
Profile Blog Joined June 2011
United States3291 Posts
October 24 2012 06:47 GMT
#8
CecilSunkure delivers once again!
"Cause ya know, Style before victory." -The greatest mafia player alive
Ruscour
Profile Blog Joined April 2011
5233 Posts
October 24 2012 07:06 GMT
#9
As someone learning C with an interest in game development, as well as a former Protoss player, I'm pretty sure you're just the world's greatest person, Cecil.
kusto
Profile Joined November 2010
Russian Federation823 Posts
October 24 2012 07:37 GMT
#10
I bookmarked your blogs and cannot wait for your new blog.
the game is the game
The_LiNk
Profile Blog Joined July 2010
Canada863 Posts
October 24 2012 07:38 GMT
#11
Oh shit your blog has a section on collision. Excellent excellent. Gonna pad my resume with programming projects this winter. Thanks for the info
Poltergeist-
Profile Blog Joined May 2010
Sweden336 Posts
October 24 2012 08:17 GMT
#12
Right on, will be reading this for sure.
Krikan
Profile Joined October 2010
Norway520 Posts
October 24 2012 08:40 GMT
#13
On October 24 2012 15:22 Rhaegar99 wrote:
How about threads/multithreads and sockets/networking. I've made some simple games myself in my spare time but I've never been able to create a functional server client system since it's so damn confusing to me.

Like everyone else I'm really excited for this.

To second this, I'd really like a section on sockets/networking too. Other than that, looking forward to reading this! :D
Naniwa on making the MLG finals: Uh, it's ok.
imPermanenCe
Profile Joined July 2011
Netherlands595 Posts
October 24 2012 08:45 GMT
#14
On October 24 2012 15:22 Rhaegar99 wrote:
How about threads/multithreads and sockets/networking. I've made some simple games myself in my spare time but I've never been able to create a functional server client system since it's so damn confusing to me.

Like everyone else I'm really excited for this.

I'm about to do that for a programming assignment :d Threads can be a bitch if you don't lock things properly
Micro at its best is like an elegant dance between two people trying to achieve a similar end.
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
October 24 2012 08:56 GMT
#15
On October 24 2012 17:40 Krikan wrote:
Show nested quote +
On October 24 2012 15:22 Rhaegar99 wrote:
How about threads/multithreads and sockets/networking. I've made some simple games myself in my spare time but I've never been able to create a functional server client system since it's so damn confusing to me.

Like everyone else I'm really excited for this.

To second this, I'd really like a section on sockets/networking too. Other than that, looking forward to reading this! :D

Definitely won't be covering any networking. As for threading, I will consider a section on that. Although if I do it will be about higher level concepts rather than nitty details of a specific implementation (as is the rest of the KnowHow).
spinesheath
Profile Blog Joined June 2009
Germany8679 Posts
October 24 2012 09:17 GMT
#16
This looks very much like it will be all about C++.
I don't particularly like giving people the impression that you can read a rather short piece about C++ and be ready to properly work on a medium or large scale program. I generally support the article of course, but you should make sure that you make people aware that C++ is pretty much the Broodwar among the programming languages. Your article cannot possibly replace reading good books like The C++ Programming Language, Effective C++ and so on. A medium/large C++ project without a deep understanding of the language is extremely error prone and very hard to maintain.


Personally, I'd rather do an article purely on Game Programming, without talking about specific programming languages. For beginners, languages like C# or Java are suited so much better anyways. Game Programming by itself is still a broad topic.
If you have a good reason to disagree with the above, please tell me. Thank you.
Eiii
Profile Blog Joined April 2009
United States2566 Posts
Last Edited: 2012-10-24 09:51:50
October 24 2012 09:49 GMT
#17
On October 24 2012 17:56 CecilSunkure wrote:
Show nested quote +
On October 24 2012 17:40 Krikan wrote:
On October 24 2012 15:22 Rhaegar99 wrote:
How about threads/multithreads and sockets/networking. I've made some simple games myself in my spare time but I've never been able to create a functional server client system since it's so damn confusing to me.

Like everyone else I'm really excited for this.

To second this, I'd really like a section on sockets/networking too. Other than that, looking forward to reading this! :D

Definitely won't be covering any networking. As for threading, I will consider a section on that. Although if I do it will be about higher level concepts rather than nitty details of a specific implementation (as is the rest of the KnowHow).


To be honest, I really think you should reconsider including networking-- it's really intimidating for people who aren't familiar with sockets to get started, but if you can show even just how to get a simple UDP client/server up and running it'll be much easier for those interested to continue on from there.

Most hobbyist games really don't gain anything by using threading, but simple networking can make a small project really cool! If it doesn't fit with how you've got the articles planned then don't worry about it of course, but if it's at all possible I think a lot of people would benefit from an article or two on the subject.

EDIT:
On October 24 2012 18:17 spinesheath wrote:
This looks very much like it will be all about C++.
I don't particularly like giving people the impression that you can read a rather short piece about C++ and be ready to properly work on a medium or large scale program. I generally support the article of course, but you should make sure that you make people aware that C++ is pretty much the Broodwar among the programming languages. Your article cannot possibly replace reading good books like The C++ Programming Language, Effective C++ and so on. A medium/large C++ project without a deep understanding of the language is extremely error prone and very hard to maintain.


Personally, I'd rather do an article purely on Game Programming, without talking about specific programming languages. For beginners, languages like C# or Java are suited so much better anyways. Game Programming by itself is still a broad topic.


I disagree with this-- it's very easy to have a decent idea of how to program in C++ without knowing how to translate that into making a simple game. Personally, I don't think using C++ for small projects like what I assume the articles will be covering is significantly more difficult or risky than using Java/C#.
:3
Teoita
Profile Blog Joined January 2011
Italy12246 Posts
October 24 2012 10:06 GMT
#18
Dat toc is impressive holy crap :O Are you doing the whole thing by yourself?
ModeratorProtoss all-ins are like a wok. You can throw whatever you want in there and it will turn out alright.
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
October 24 2012 10:40 GMT
#19
On October 24 2012 19:06 Teoita wrote:
Dat toc is impressive holy crap :O Are you doing the whole thing by yourself?

I had some help
dartoo
Profile Joined May 2010
India2889 Posts
Last Edited: 2012-10-24 15:09:44
October 24 2012 15:04 GMT
#20
On October 24 2012 18:17 spinesheath wrote:
This looks very much like it will be all about C++.
I don't particularly like giving people the impression that you can read a rather short piece about C++ and be ready to properly work on a medium or large scale program. I generally support the article of course, but you should make sure that you make people aware that C++ is pretty much the Broodwar among the programming languages. Your article cannot possibly replace reading good books like The C++ Programming Language, Effective C++ and so on. A medium/large C++ project without a deep understanding of the language is extremely error prone and very hard to maintain.


Personally, I'd rather do an article purely on Game Programming, without talking about specific programming languages. For beginners, languages like C# or Java are suited so much better anyways. Game Programming by itself is still a broad topic.



This was the exact feeling I got looking at the contents aswell. C++ and game programming are very big topics on their own, putting both together...seems very ambitious.

Might be easier to focus on a managed language, with minimal input on programming itself, and go deeper into the game programming side of it. In that way your article could help people who are kinda new to programming but also want to learn about game dev. People who already program (in c++ or otherwise) can easily grasp concepts about programming in general, and can learn of it.
Snuggles
Profile Blog Joined May 2010
United States1865 Posts
October 24 2012 15:22 GMT
#21
Being a CS student myself I'm looking forward to this article. I've always wondered how the hell programmers create huge games from just pages of code and what not. I've written small simple programs that you supposedly could call a game however it's nothing on the scale of broodwar or even super mario for that matter lol.
Zaranth
Profile Blog Joined June 2011
United States345 Posts
October 24 2012 15:22 GMT
#22
Looks like a great article, I will be very interested in reading it! thanks!
Maker of Cheerfuls @eZaranth
Yorbon
Profile Joined December 2011
Netherlands4272 Posts
October 24 2012 15:57 GMT
#23
I'm doing little bits of programming in college with multiple languages. I do think i have some (very) basic understanding of those languages, so i'm very looking forward to this. This might give me some inspiration for my own programming assignments.
Deleted User 135096
Profile Blog Joined December 2010
3624 Posts
October 24 2012 16:14 GMT
#24
So this is where you've been hiding Cecil? As someone who did a very brief foray into pseudo-programming (AS3) I would be very interested to see how this article turns out, and what it discusses.

Also, that ToC formatting looks strikingly familiar to something I've seen before.
Administrator
JieXian
Profile Blog Joined August 2008
Malaysia4677 Posts
October 24 2012 16:41 GMT
#25
looking forward to it!
Please send me a PM of any song you like that I most probably never heard of! I am looking for people to chat about writing and producing music | https://www.youtube.com/watch?v=noD-bsOcxuU |
Weebem-Na
Profile Joined May 2010
United States221 Posts
October 24 2012 18:32 GMT
#26
I can already tell this is going to be my favorite tl know how, awesome idea!
The reaction of boron-11 and plain hydrogen produces all its energy in the form of charged particles which can be directed by a magnetic field, but the reaction is very difficult to sustain and many fusion physicists doubt it will ever prove practical
inn5013orecl
Profile Blog Joined March 2010
United States227 Posts
October 24 2012 19:06 GMT
#27
Like others before me. C++ pretty ambitious and interesting choice for programming language to use to teach game programming. Granted a lot of big companies are still using it, most are making the switch to Java or C# (if they use non-proprietary game engines). That being said, C++ one of the most powerful languages out there, and if you know what you're doing, runs faster than Java, Python, and all scripting languages. I have a bit of knowledge of game programming and design concepts, but can definitely look to learn more. I will be following this. Good luck!
i live with a korean who doesnt play sc...wtf
spinesheath
Profile Blog Joined June 2009
Germany8679 Posts
Last Edited: 2012-10-24 19:24:25
October 24 2012 19:23 GMT
#28
On October 25 2012 04:06 inn5013orecl wrote:
Like others before me. C++ pretty ambitious and interesting choice for programming language to use to teach game programming. Granted a lot of big companies are still using it, most are making the switch to Java or C# (if they use non-proprietary game engines). That being said, C++ one of the most powerful languages out there, and if you know what you're doing, runs faster than Java, Python, and all scripting languages. I have a bit of knowledge of game programming and design concepts, but can definitely look to learn more. I will be following this. Good luck!

For high end games, C++ definitely is still one of the best languages, and likely will stay that way until fast inherently parallel languages are established. Which might still take a while.

But a beginner can't make good use the strengths of C++ for such cases (he won't be writing a high end game anyways), and will most likely run into problems with the disadvantages of C++. There's a lot of problems to be expected when it comes to C++ memory management, especially if you lack understanding of RAII. Pointer magic also seems to be unreasonably attractive to beginners (been there, done that, seen it from countless people).

Languages like C# and Java just force you into not comitting these kinds of mistakes, and they are easily powerful and fast enough for almost any kind of low budget games.


On the plus side: Once you are good with C++, any procedural language is a piece of cake. Well maybe not the esoteric ones.
If you have a good reason to disagree with the above, please tell me. Thank you.
Lorizean
Profile Blog Joined March 2011
Germany1330 Posts
October 24 2012 19:41 GMT
#29
Just wondering, are you gonna be using libraries like SFML or do you intend to do explain everything from ground up?
And are you going to cover cross-platform compatibility as well?

I think C++ is a good choice, it is my favourite language anyways

Looking forward to this.
Logo
Profile Blog Joined April 2010
United States7542 Posts
Last Edited: 2012-10-24 19:47:48
October 24 2012 19:46 GMT
#30
On October 25 2012 04:23 spinesheath wrote:
Show nested quote +
On October 25 2012 04:06 inn5013orecl wrote:
Like others before me. C++ pretty ambitious and interesting choice for programming language to use to teach game programming. Granted a lot of big companies are still using it, most are making the switch to Java or C# (if they use non-proprietary game engines). That being said, C++ one of the most powerful languages out there, and if you know what you're doing, runs faster than Java, Python, and all scripting languages. I have a bit of knowledge of game programming and design concepts, but can definitely look to learn more. I will be following this. Good luck!

For high end games, C++ definitely is still one of the best languages, and likely will stay that way until fast inherently parallel languages are established. Which might still take a while.

But a beginner can't make good use the strengths of C++ for such cases (he won't be writing a high end game anyways), and will most likely run into problems with the disadvantages of C++. There's a lot of problems to be expected when it comes to C++ memory management, especially if you lack understanding of RAII. Pointer magic also seems to be unreasonably attractive to beginners (been there, done that, seen it from countless people).

Languages like C# and Java just force you into not comitting these kinds of mistakes, and they are easily powerful and fast enough for almost any kind of low budget games.


On the plus side: Once you are good with C++, any procedural language is a piece of cake. Well maybe not the esoteric ones.


Yeah I agree with this, there's just no reason to really invest into C++ unless you are interested in working on more advanced 3d graphics and/or CPU heavy games (or want to be a career programmer as C++'s concepts are important to understanding how things work in managed languages)..

When you look at indie games that are on C++ and need to be there it's a short list of things like Dwarf Fortress and complex 3d games. Even games as complete and competitive as Minecraft can avoid using C++.

Not that it makes the article any less useful or anything.
Logo
czaku
Profile Joined June 2011
Poland429 Posts
October 24 2012 20:34 GMT
#31
Wow, subscribing, i know basics of c++ (like i made a program calculating harmonic series sum of given n). Hope it helps me extend my skills!
y0su
Profile Blog Joined September 2011
Finland7871 Posts
October 24 2012 20:58 GMT
#32
As I'm about to start a programming course... timing couldn't be better :D
ClysmiC
Profile Blog Joined December 2010
United States2192 Posts
October 24 2012 21:58 GMT
#33
Oh yes, this article-to-be sounds very interesting
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
October 24 2012 22:37 GMT
#34
On October 25 2012 04:41 Lorizean wrote:
Just wondering, are you gonna be using libraries like SFML or do you intend to do explain everything from ground up?
And are you going to cover cross-platform compatibility as well?

I think C++ is a good choice, it is my favourite language anyways

Looking forward to this.

It's not a comprehensive article from the ground up with code examples everywhere to show how it's done. I don't have the time to write an entire novel

Instead many of the topics are explained from a high-level point of view in order to provide the reader a clear sense of how an entire game project may look like.

As for all the people saying C++ is ambitious, I don't really agree. Being afraid of memory management and pointers isn't something I feel a professional software engineer (especially one that wants to work on game development) should ever be afraid of. Starting to learn by running straight into both C and C++, I feel, are great ways to build a strong programming foundation. Though I do specialize in C++ and my experience come from there, the article talks a lot about architecture and concepts and ideas that aren't language specific.
Sega92
Profile Blog Joined November 2010
United States467 Posts
October 25 2012 01:07 GMT
#35
oh you tease you NEED MOAR!!!

i love all kinds of programming and am always eager to read what better minds have to say on the subject
Bobbias
Profile Blog Joined March 2008
Canada1373 Posts
October 25 2012 02:03 GMT
#36
On the subject of C#/Java vs C++:

I would say that C++ may require learning more of the language itself before you get to a point where you can comfortably create something a bit larger than the usual starter programs, but when you get to that point, you may have a better grasp of overall programming concepts than someone who just jumps into C#/Java.

I started off learning C++, and moved to Java and C# later on. I'm thankful I learned some C++ to begin because although it was a bit harder for me to understand at first (I was 14 when I started learning C++); the understanding of what a pointer was and how they worked really made it easier to understand some of the inner workings of C# and Java and gave me a better overall view of things in the first place.

One of the aspects that nobody mentioned yet is that C# and Java don't have all the libraries that C++ has. There are certainly some ports, but sometimes the ports may be relatively different from the C++ port, may be unfinished, or may require some.... interesting... code to interface with it (example: calling unmanaged functions from C#, specifically, ones involving pointers and such). C++ has an extremely mature set of libraries for damn near anything you would ever want.

All in all, I think that the only barrier to applying knowledge from one programming language to another is how well a person truly understands something. If you truly understand what is being done, there is no reason you should have much trouble doing it in another language. Learning one language shouldn't suddenly make you only program in that language. I've dabbled in Python, PHP, Assembly, C#, Java, Turing (lol), Haskell, and VB... I'm also currently learning to design hardware in VHDL... I have little trouble switching between languages once I learn the syntax of the language I'm working in. After that, the only stuff you really need to learn is little stuff (say the language you're learning is strongly typed, and you came from a weakly typed language, and suddenly you need to learn how to convert between types.... that is pretty minor compared to learning what a for loop is.)

The sort of thing I'd like to see in a TL-Knowhow on programming a game is more generalized things like structural approaches, how to create a decent resource management system, maybe how and where to integrate pathfinding, and other architectural design stuff. I know that stuff is rather advanced for the topic of creating a game, but there are very few articles covering things like that while also dealing with actual code, and sometimes it's nice to see a slightly more concrete implementation of a generalized idea.
imJealous
Profile Joined July 2010
United States1382 Posts
October 25 2012 03:08 GMT
#37
Can't wait to check this out
... In life very little goes right. "Right" meaning the way one expected and the way one wanted it. One has no right to want or expect anything.
imPermanenCe
Profile Joined July 2011
Netherlands595 Posts
Last Edited: 2012-10-25 09:26:47
October 25 2012 09:25 GMT
#38
My take on C#/Java vs C++:

I myself have learned C#, together with the XNA engine it's really easy to make games. In C# you don't have to understand what's under the hood, you can just focus on making a game/program.

Whereas with C++ you have to take care of multiple things yourself, such as garbage collection (removing pointers that aren't reachable anymore etc.).

So, as people have said before, when you want to make simple games that don't require much resources (CPU/Memory) C# is the better one to use. But if you're working on really big games (such as game companies do), you want to optimize your game as much as possible. And this can only be done (properly) with C++.

I don't know how in depth this guide is, but can't most things be explained in pseudo code? In that case there shouldn't be too much difference between a C++ and C#/Java background. Although, some concepts may be very much related to the programming language you're using, such as making a game engine.
Micro at its best is like an elegant dance between two people trying to achieve a similar end.
Rollin
Profile Joined March 2011
Australia1552 Posts
Last Edited: 2012-10-25 14:44:00
October 25 2012 14:40 GMT
#39
Well I have a fair bit of C understanding, and I was going to be working as best I could this summer break (winter for you americans) on a joint C++ project with some people over the internet, so this will be invaluable.

Looks amazing, although it would probably be geared at people that have some prior experience with programming already, no? Seems kinda like a split between gamemaking / intro to programming article to me (but I'm not complaining).

On October 25 2012 11:03 Bobbias wrote:
I'm also currently learning to design hardware in VHDL...

Um what exactly do you use that for, I'm curious. I had to do a unit with it, and it seemed rather esoteric and not really useful outside of designing your own chips (not practical outside of large scale).
Throw off those chains of reason, and your prison disappears. | Check your posting frequency timeline: http://www.teamliquid.net/mytlnet/post_activity_img.php
Vronti
Profile Blog Joined August 2011
United States111 Posts
October 25 2012 21:37 GMT
#40
Don't have the experience to really debate C++ vs C#/Java, but as a sophomore computer engineering student I've only worked with C++ so far and really enjoyed developing a few small games in it. Starting with the lowest level (and the language I'll probably be using as a career programmer) is slow yeah but I'm really starting to understand it, and I think I'll be able to apply the knowledge more readily to other languages etc.

Looking forward to this! Glad to have insight from someone who's had some experience.
"By three methods we may learn wisdom: First, by reflection, which is noblest; Second, by imitation, which is easiest; and third by experience, which is the bitterest." — Confucius
SeeDLiNg
Profile Joined January 2010
United States690 Posts
October 25 2012 23:03 GMT
#41
Do we have an approximate ETA on this? x.x

Super pumped ^^
chaokel
Profile Blog Joined October 2010
Australia535 Posts
Last Edited: 2012-10-25 23:20:01
October 25 2012 23:17 GMT
#42
Looks good!

Some potential topics that i would be interested in learning more about or would of liked to have been able to find a useful guide on when i was learning them.

Inheritance, appropriate usage. the importance of using it in game programming?
Abstract classes
Collision detection
Getting game assets into a program, whether it be created in code or imported (i know i personally have had a lot of struggle here, took me a long time to get an obj importer working)
The importance of documentation, comments etc.
Threads / multi threads?
Graphical options in c++ (opengl vs directx) maybe a description of the way the two pipelines work and advantages / disadvantages.
Use of namespaces?

Looking forwards to the final article.
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
October 26 2012 01:05 GMT
#43
On October 26 2012 08:17 chaokel wrote:
Looks good!

Some potential topics that i would be interested in learning more about or would of liked to have been able to find a useful guide on when i was learning them.

Inheritance, appropriate usage. the importance of using it in game programming?
Abstract classes
Collision detection
Getting game assets into a program, whether it be created in code or imported (i know i personally have had a lot of struggle here, took me a long time to get an obj importer working)
The importance of documentation, comments etc.
Threads / multi threads?
Graphical options in c++ (opengl vs directx) maybe a description of the way the two pipelines work and advantages / disadvantages.
Use of namespaces?

Looking forwards to the final article.

Thanks for the awesome suggestions but I've already submitted the final copy to MightyAtom for editting. I don't know if I'll be able to get in any other large changes before it's out
chaokel
Profile Blog Joined October 2010
Australia535 Posts
October 26 2012 01:45 GMT
#44
Understandable.

How is your course? I'm doing an equivalent degree over here in Australia. Curious to how comparable it is to what I'm doing. What kind of content have you covered? How much of your knowledge comes from actual course work / assignments, and how much is self taught? What are your assignments like?

Feel free to answer as much or as little as you feel comfortable. Will give me a much needed break from this AI assignment i'm working on .
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
October 26 2012 02:18 GMT
#45
On October 26 2012 10:45 chaokel wrote:
Understandable.

How is your course? I'm doing an equivalent degree over here in Australia. Curious to how comparable it is to what I'm doing. What kind of content have you covered? How much of your knowledge comes from actual course work / assignments, and how much is self taught? What are your assignments like?

Feel free to answer as much or as little as you feel comfortable. Will give me a much needed break from this AI assignment i'm working on .

Well you can look at my course sequence here. I'd say about 25% of what I learn computer science wise is from school and the rest is on my own time. Though that's because I study that topic a lot on my own time. I learn around more around 50% of what I know in all other subjects (graphics, mathematics, physics) from classes. Lots of time has to be put into independent studies (and should be like this in any school). Though it should be noted that we have very insane GAM classes that allow you to put in unlimited time... You could say that all my spare time studying goes into this GAM class.
LlamaNamedOsama
Profile Blog Joined July 2010
United States1900 Posts
October 26 2012 02:40 GMT
#46
Looks really cool, I look forward to this! I've never had much experience with programming but always wanted to learn, and always wanted to get some rudimentary skills in it. Just curious, how does this kind of programming language/scripting relate to the scripting that might be done in the SC2 galaxy editor? I did some mapmaking back in WC3, and I know you could use JASS (which I never learned), is there something similar for SC2?
Dario Wünsch: I guess...Creator...met his maker *sunglasses*
inn5013orecl
Profile Blog Joined March 2010
United States227 Posts
October 26 2012 18:17 GMT
#47
On C#/Java vs C++

Another thing one will have to consider, and I'd actually suggest mentioning this somewhere in your game design writeups (as it is important pertaining to production, but has to be considered close to beginning of development), is the inherent cross-platform functionality of programs written in Java and C#.

To do in C++, will have to go through a couple more steps, either using frameworks like Qt, which can run quite expensive if you're actually planning to publish, or write a fair share of macros to handle/except each platform's specific functions.
i live with a korean who doesnt play sc...wtf
Bobbias
Profile Blog Joined March 2008
Canada1373 Posts
Last Edited: 2012-10-27 02:17:10
October 27 2012 02:05 GMT
#48
On October 25 2012 23:40 Rollin wrote:
Well I have a fair bit of C understanding, and I was going to be working as best I could this summer break (winter for you americans) on a joint C++ project with some people over the internet, so this will be invaluable.

Looks amazing, although it would probably be geared at people that have some prior experience with programming already, no? Seems kinda like a split between gamemaking / intro to programming article to me (but I'm not complaining).

Show nested quote +
On October 25 2012 11:03 Bobbias wrote:
I'm also currently learning to design hardware in VHDL...

Um what exactly do you use that for, I'm curious. I had to do a unit with it, and it seemed rather esoteric and not really useful outside of designing your own chips (not practical outside of large scale).


Honestly it's just personal interest. I'd love to get my hands on an FPGA, and ultimately, I'd love to do something like this demo [youtube video here] (not that I'd likely ever be able to make something that awesome)

EDit; This one is more like what I'd want to do.
Incanus
Profile Joined October 2009
Canada695 Posts
October 27 2012 12:57 GMT
#49
On October 25 2012 07:37 CecilSunkure wrote:
As for all the people saying C++ is ambitious, I don't really agree. Being afraid of memory management and pointers isn't something I feel a professional software engineer (especially one that wants to work on game development) should ever be afraid of. Starting to learn by running straight into both C and C++, I feel, are great ways to build a strong programming foundation.

No, knowing about memory management and pointers prepares you pretty well for C. C is a fairly small and basic language. However, being a competent in C++ involves knowing a shitload more than that. C++ is a beast with tons of C++ exclusive features and quirks. Undefined behaviour, memory ownership, and too many (bad) choices are all things that beginner C++ developers have to worry about. There are so many pitfalls to avoid (that beginners would have to unlearn) that starting with C++ is probably the last thing I would recommend.
Flash: "Why am I so good?" *sob sob*
spinesheath
Profile Blog Joined June 2009
Germany8679 Posts
October 27 2012 13:16 GMT
#50
On October 27 2012 21:57 Incanus wrote:
Show nested quote +
On October 25 2012 07:37 CecilSunkure wrote:
As for all the people saying C++ is ambitious, I don't really agree. Being afraid of memory management and pointers isn't something I feel a professional software engineer (especially one that wants to work on game development) should ever be afraid of. Starting to learn by running straight into both C and C++, I feel, are great ways to build a strong programming foundation.

No, knowing about memory management and pointers prepares you pretty well for C. C is a fairly small and basic language. However, being a competent in C++ involves knowing a shitload more than that. C++ is a beast with tons of C++ exclusive features and quirks. Undefined behaviour, memory ownership, and too many (bad) choices are all things that beginner C++ developers have to worry about. There are so many pitfalls to avoid (that beginners would have to unlearn) that starting with C++ is probably the last thing I would recommend.

Pretty much that. I haven't seen anyone yet who started programming with C++ and wasn't godawful at it. Me included. It took me ages to learn proper C++. Not so much because it's hard (it isn't THAT hard actually), but because there are only very few resources that teach you proper C++ from the very beginning. And an article on TL just can't teach proper C++ due to length restrictions.
Languages like C#/Java force you to avoid most of these pitfalls that turn you into a crappy programmer. That's the one of the main ideas behind their design, after all. You still should read up on pointers when you learn C# anyways, or else you will run into issues with reference types and value types. Then when you make the switch to C++ you will find that emulating the designs you know from C#/Java leads to pretty solid C++ code.

I'm not hating on C++ by the way. I like it a lot. I just hate crappy C++ code, and might as well suggest people to take the easier approach.
If you have a good reason to disagree with the above, please tell me. Thank you.
AKnopf
Profile Blog Joined March 2011
Germany259 Posts
October 28 2012 11:56 GMT
#51
Hey,

you could write a List of game engines with some comment to each entry. Especially those you have already used.

Here is mine (fyi):
- JMonkey (I used it in Version 2.something)
Neat 3D engine written in Java. Rather basic features so a lot of hand work to do. I believe Minecraft is written with JMonkey.
- Gosu
2D engine written in C++ and Ruby. Very very basic but therefore lean. It is surprisingly fast (ruby) but has some weird bug with sound and process termination (windows)
- Chingu
2D engine based on Gosu. Very high level artifacts with convenient classes, methods etc. Has a trait model to write you own "kind-of-extensions" to the engine.
- JGame
Basic 2D game engine in Java. I have near-to-no experience with it, so not much to say.
- XNA
3D game engine from MS. Easy conversion between PC and XBOX. Games can even be published on XBOX platform if they are approved by some instance I don't remember. I used it for a 2D game, so i cannot say too much about its 3D features. 2D features are very basic (rather horrible).

XNA has some restrictions on when it is free and when not. I do not really remember the specifics. All the others are open source and free to use.
The world - its a funny place
thedeadhaji *
Profile Blog Joined January 2006
39489 Posts
October 29 2012 01:22 GMT
#52
if this goes well, maybe you can consider flushing it out and publishing an ebook
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
October 31 2012 02:40 GMT
#53
On October 29 2012 10:22 thedeadhaji wrote:
if this goes well, maybe you can consider flushing it out and publishing an ebook

An ebook hmm? Do you have an example I can check out of what you mean?
WhalesFromSpace
Profile Joined March 2012
390 Posts
October 31 2012 06:32 GMT
#54
What experience do you have as a game programmer?
Nihility
ptrpb
Profile Joined March 2011
Canada753 Posts
October 31 2012 15:03 GMT
#55
Any chance we could get some networking stuff in there?
MBAACC | SG | shit at fighting games
XythOs
Profile Blog Joined February 2005
Germany520 Posts
October 31 2012 19:48 GMT
#56
Thank you so much for all these blogs and especially for the awesome article thats going to get released!
(And +1 for please include basic networking :D )
ShiroNeko
Profile Joined June 2012
Australia20 Posts
November 01 2012 04:51 GMT
#57
Always wanted to progress my programming knowledge further by programming video games. Can't wait for this xD
HaRuHi
Profile Blog Joined November 2010
1220 Posts
November 02 2012 00:13 GMT
#58
Any chance we could get some networking stuff in there?


He already said he won't cover networking stuff-but for the heck of it:
Can you give some insight on networking?

In all srslynss, I have yet to see the text that can gap the bridge for people, good luck with that! I think I will mostly take some teaching advice from this if you happen to pull that of.

Kudus and good luck
MilesTeg
Profile Joined September 2010
France1271 Posts
November 04 2012 15:18 GMT
#59
Add me to the list of people who are super excited about this! Any idea of when we'll see it?
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
November 04 2012 18:41 GMT
#60
On November 05 2012 00:18 MilesTeg wrote:
Add me to the list of people who are super excited about this! Any idea of when we'll see it?

Any time
Normal
Please log in or register to reply.
Live Events Refresh
Next event in 15m
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
mouzHeroMarine 405
mcanning 162
uThermal 91
StarCraft: Brood War
Flash 2572
Bisu 2458
Shuttle 2145
EffOrt 1286
firebathero 505
Snow 470
hero 380
Larva 355
Soulkey 310
Mini 296
[ Show more ]
actioN 246
Soma 210
Zeus 142
ToSsGirL 87
Hyun 83
TY 73
Pusan 56
JYJ40
soO 38
Yoon 37
Terrorterran 32
Noble 29
Rush 28
Sacsri 21
JulyZerg 19
Rock 17
IntoTheRainbow 10
GoRush 10
HiyA 9
sorry 7
zelot 4
Dota 2
Gorgc11640
qojqva2399
oskar116
League of Legends
singsing2246
Counter-Strike
flusha329
byalli295
zeus1
Heroes of the Storm
Khaldor154
Other Games
gofns16817
FrodaN2383
B2W.Neo1321
hiko1009
shahzam810
crisheroes203
Liquid`VortiX186
KnowMe116
QueenE50
Trikslyr42
Organizations
Other Games
gamesdonequick40078
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 14 non-featured ]
StarCraft 2
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• iopq 9
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Dota 2
• C_a_k_e 2179
League of Legends
• Nemesis7321
• TFBlade963
Upcoming Events
uThermal 2v2 Circuit
15m
WardiTV European League
15m
Jumy vs NightPhoenix
Percival vs Nicoract
ArT vs HiGhDrA
MaxPax vs Harstem
Scarlett vs Shameless
SKillous vs uThermal
Replay Cast
8h 15m
RSL Revival
18h 15m
ByuN vs SHIN
Clem vs Reynor
OSC
21h 15m
Replay Cast
1d 8h
RSL Revival
1d 18h
Classic vs Cure
FEL
2 days
OSC
2 days
RSL Revival
2 days
[ Show More ]
FEL
2 days
FEL
3 days
CSO Cup
3 days
BSL20 Non-Korean Champi…
3 days
Bonyth vs QiaoGege
Dewalt vs Fengzi
Hawk vs Zhanhun
Sziky vs Mihu
Mihu vs QiaoGege
Zhanhun vs Sziky
Fengzi vs Hawk
Sparkling Tuna Cup
3 days
RSL Revival
3 days
FEL
3 days
BSL20 Non-Korean Champi…
4 days
Bonyth vs Dewalt
QiaoGege vs Dewalt
Hawk vs Bonyth
Sziky vs Fengzi
Mihu vs Zhanhun
QiaoGege vs Zhanhun
Fengzi vs Mihu
Replay Cast
5 days
Liquipedia Results

Completed

Proleague 2025-07-07
HSC XXVII
Heroes 10 EU

Ongoing

JPL Season 2
BSL 2v2 Season 3
Acropolis #3
KCM Race Survival 2025 Season 2
CSL 17: 2025 SUMMER
Copa Latinoamericana 4
Jiahua Invitational
Championship of Russia 2025
RSL Revival: Season 1
Murky Cup #2
BLAST.tv Austin Major 2025
ESL Impact League Season 7
IEM Dallas 2025
PGL Astana 2025
Asian Champions League '25
BLAST Rivals Spring 2025
MESA Nomadic Masters
CCT Season 2 Global Finals
IEM Melbourne 2025

Upcoming

2025 ACS Season 2: Qualifier
CSLPRO Last Chance 2025
CSL Xiamen Invitational
2025 ACS Season 2
CSLPRO Chat StarLAN 3
K-Championship
uThermal 2v2 Main Event
SEL Season 2 Championship
FEL Cracov 2025
Esports World Cup 2025
Underdog Cup #2
StarSeries Fall 2025
FISSURE Playground #2
BLAST Open Fall 2025
BLAST Open Fall Qual
Esports World Cup 2025
BLAST Bounty Fall 2025
BLAST Bounty Fall Qual
IEM Cologne 2025
FISSURE Playground #1
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2025 TLnet. All Rights Reserved.