• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 17:53
CEST 23:53
KST 06:53
  • 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
Serral wins EWC 202538Tournament Spotlight: FEL Cracow 202510Power Rank - Esports World Cup 202580RSL Season 1 - Final Week9[ASL19] Finals Recap: Standing Tall15
Community News
LiuLi Cup - August 2025 Tournaments3[BSL 2025] H2 - Team Wars, Weeklies & SB Ladder9EWC 2025 - Replay Pack4Google Play ASL (Season 20) Announced55BSL Team Wars - Bonyth, Dewalt, Hawk & Sziky teams11
StarCraft 2
General
Serral wins EWC 2025 The GOAT ranking of GOAT rankings Interview with Chris "ChanmanV" Chan Tournament Spotlight: FEL Cracow 2025 Classic: "It's a thick wall to break through to become world champ"
Tourneys
Sparkling Tuna Cup - Weekly Open Tournament LiuLi Cup - August 2025 Tournaments Sea Duckling Open (Global, Bronze-Diamond) TaeJa vs Creator Bo7 SC Evo Showmatch FEL Cracov 2025 (July 27) - $10,000 live event
Strategy
Custom Maps
External Content
Mutation # 485 Death from Below Mutation # 484 Magnetic Pull Mutation #239 Bad Weather Mutation # 483 Kill Bot Wars
Brood War
General
How do the new Battle.net ranks translate? BSL Team Wars - Bonyth, Dewalt, Hawk & Sziky teams BW General Discussion Nobody gona talk about this year crazy qualifiers? Google Play ASL (Season 20) Announced
Tourneys
[ASL20] Online Qualifiers Day 2 [Megathread] Daily Proleagues [ASL20] Online Qualifiers Day 1 Small VOD Thread 2.0
Strategy
[G] Mineral Boosting Muta micro map competition Does 1 second matter in StarCraft? Simple Questions, Simple Answers
Other Games
General Games
Total Annihilation Server - TAForever Nintendo Switch Thread Stormgate/Frost Giant Megathread Beyond All Reason [MMORPG] Tree of Savior (Successor of Ragnarok)
Dota 2
Official 'what is Dota anymore' discussion
League of Legends
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 9/11 Anniversary Possible Al Qaeda Attack on 9/11 Things Aren’t Peaceful in Palestine European Politico-economics QA Mega-thread
Fan Clubs
INnoVation Fan Club SKT1 Classic Fan Club!
Media & Entertainment
[Manga] One Piece Anime Discussion Thread [\m/] Heavy Metal Thread Movie Discussion! Korean Music Discussion
Sports
Formula 1 Discussion 2024 - 2025 Football Thread TeamLiquid Health and Fitness Initiative For 2023
World Cup 2022
Tech Support
Gtx660 graphics card replacement Installation of Windows 10 suck at "just a moment" Computer Build, Upgrade & Buying Resource Thread
TL Community
TeamLiquid Team Shirt On Sale The Automated Ban List
Blogs
ASL S20 English Commentary…
namkraft
The Link Between Fitness and…
TrAiDoS
momentary artworks from des…
tankgirl
from making sc maps to makin…
Husyelt
StarCraft improvement
iopq
Socialism Anyone?
GreenHorizons
Customize Sidebar...

Website Feedback

Closed Threads



Active: 557 users

Want to program video games?

Blogs > CecilSunkure
Post a Reply
Normal
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
Last Edited: 2011-12-05 22:45:08
November 16 2011 20:18 GMT
#1
Have you ever wanted to program video games, either as a hobby or profession? I can remember back in High School I'd ponder about the people who would actually develop things like animations, computer games, console games, all sorts of things. The specific section that interested me the most, obviously, was video game development.

For the longest time I always considered people who develop video games far and out of reach. I just sort of assumed they were people who were really rich and had family that got them into that field of profession. I just had no clue how anyone would actually go about developing video games, or how they'd get there in the first place.

So I began to research. What I found is there are three main types of developers (and I included a couple more for accuracy):
  • Programmers: they actually write code that is a translation of the software (game), which computers decode and then execute.
  • Artists: these people create all the art for video games. There are two main sections of art: 2D and 3D.
  • Designers: Game designers are the people that choose what goes where, and design how the actual game should be played and play out.
  • Writers/Sound Engineers - As development teams become larger, roles required to develop a game become more and more specialized. This opens up positions dedicated to things like sound engineering, and writers!

I figured that programming games is what interests me most in life, and so I pursued it and am now studying at DigiPen, a highly specialized school aimed at getting people into video game development. Basically I know of two ways to get into game programming: learning on your own, or with a college degree. Here is a podcast talking about both options, featuring a very experienced developer Ben Ellinger: podcast. This podcast contains a wealth of information that is vital to anyone new to the idea of becoming a game programmer, I highly recommend listening to it!

Once I found out I was accepted to my school of choice I decided to document the steps and progress one undergoes from having no programming experience (almost), to becoming a video game programmer. And so I started my blog: CecilSunkure's Game Programming Blog. I don't believe an in-depth documentation of the process has ever been written before, and as such I hope to have a popular and helpful blog in the future! What better a chance to help people achieve something they'd love to learn than to have access to a wealth of knowledge from a top computer science school?

On various occasions I've tried to search for online sources and articles aimed at beginning programmers who don't know how to take basic knowledge and apply it to actually construct a game. There is tons and tons of information out there on advanced topics in game programming, and many articles on the beginning steps of learning to code, but hardly anything out there is aimed at the middle stage. Currently I feel I'm in that middle stage, which gives me an ideal opportunity to create content aimed at remedying such a deficit!

I've been ravaged with an epic case of busy this last couple months due to transitioning from SC2 to college, but I'm finally getting the hang of managing my time. As such I'm getting up and running with getting time into blog posts again. This is an awesome time for anyone interested in programming to get started, and they can even learn a lot about how to become a professional through the resources my blog provides!

I've started my first post in a series explaining how to construct, in C, a game from scratch using the Windows Console (command prompt) as the platform. The great thing about coding a game in the windows console is that it requires basically no overhead, nothing to download or install (assuming you use windows), and the art requirements are hugely decreased because the only things you can display in a windows console are ASCII characters!
+ Show Spoiler [Why ASCII?] +
Now you might be thinking "but Cecil, what about UDK, or this or that or this pre-made engine???". Well let me tell you sir, making a game in an application someone else built is great for learning to create content. However, I'm not aiming at teaching anyone to create content right now, I'm aiming to help people get excited about learning to program. Coding a game in C on the Windows Console provides near-ideal circumstances for forcing people to focus their dev-time into learning just how to program effectively in a very fun and interesting way.

[image loading]
Screenshot of TerraNisi by Team qMopey


The reason I've chosen to focus on C is twofold: in the game industry 90% of video games are coded in C/C++. This is because the way C was written gets you as close as one can comfortably be (within reason) to the hardware. This means you have full control over everything, which is absolutely necessary for a real-time software application requiring high optimization. If you're serious about programming video games, I highly suggest learning C. Although I do love other languages like Flash and Python, C needs to be the primary focus for most any professional. The other reason is that since C++ should be your end goal if you wish to be able to work wherever you like, learning C thoroughly is a must. By becoming a competent C programmer, you learn the limitations of C. By learning the limitations of C you learn firsthand at a deep level of understanding how to make effective use of the features and advantages that C++ provides.

[image loading]
Game concept image by Markham


[image loading]
Concept mockup by Xion


In C the character datatype is a whole number in the range of 0 to 255 (if unsigned). This means that there are in total 256 different ASCII characters to use at your disposal when creating your own game. There's a lot of different tables for displaying all the ASCII characters, but I find this one the best - note that the indices are in hex not decimal:

[image loading]
ASCII table


Constructing the actual game requires a bit of setup in order to get a good looking window up and going. I've written some example code showing how to set up a console window with C (should be compatible all the way back to C89), in which I set the window's title, size, and screen buffer size. This is the template in which you can get started creating your own game. Here is the finalized example code from my blog post:

#include <windows.h> /* for HANDLE type, and console functions */
#include <stdio.h> /* standard input/output */

HANDLE wHnd; /* write (output) handle */
HANDLE rHnd; /* read (input handle */

int main(void)
{
/* Window size coordinates, be sure to start index at zero! */
SMALL_RECT windowSize = {0, 0, 69, 34};

/* A COORD struct for specificying the console's screen buffer dimensions */
COORD bufferSize = {70, 35};

/* initialize handles */
wHnd = GetStdHandle(STD_OUTPUT_HANDLE);
rHnd = GetStdHandle(STD_INPUT_HANDLE);

/* Set the console's title */
SetConsoleTitle("Our shiny new title!");

/* Set the window size */
SetConsoleWindowInfo(wHnd, TRUE, &windowSize);

/* Set the screen's buffer size */
SetConsoleScreenBufferSize(wHnd, bufferSize);

getchar();
}


Just copy/paste this code and compile it to an exe, and you'll have a nice executable that creates a window, resizes it, resizes the window's screen buffer, and sets the title! I recommend using a simple compiler like Dev-C++, though I myself am using GCC within Cygwin (which is a giant pain to install for your first time).

[image loading]
The window you constructed!


Feel like you want to actually try writing something to the Windows Console now? Well I've written the second post in this series all about this! Here's the link to the post.

[image loading]
Finished example program of writing chars of random color to a console window.


In this post you can learn all about how to re-create the above image! Here's a code snippet showing the logic behind assigning random values to an off-screen buffer:

for (y = 0; y < HEIGHT; ++y)
{
for (x = 0; x < WIDTH; ++x)
{
consoleBuffer[x + WIDTH * y].Char.AsciiChar = (unsigned char)219;
consoleBuffer[x + WIDTH * y].Attributes = rand() % 256;
}
}

/* Write our character buffer (a single character currently) to the console buffer */
WriteConsoleOutputA(wHnd, &consoleBuffer, characterBufferSize, characterPosition, &consoleWriteArea);


This code is actually pretty interesting if you're new to arrays. If you don't know what an array is, go google it real fast and come back. This code here sets up an array called consoleBuffer, which is single dimensional array. The array has elements WIDTH * HEIGHT, and in order to index the array during a loop as if it were a two dimensional array, you need to use a formula. The idea behind the formula is to figure out what row you want to access, by taking the number of elements in a row and multiplying it by a value. To access the first row, you multiply the WIDTH value by 0. To access the fifth row, you'd multiply WIDTH by five. This works since as the single dimensional array is written to the screen with WriteConsoleOutput, it wraps around the screen buffer once ever WIDTH elements. Then, access a specific element within that row you add in your x value.



I'm extremely excited to get the rest of the posts in the series finished and provide some awesome content for beginning programmers to actually develop their own games! The other posts cover topics such as:
  • Writing characters to the console buffer.
  • Reading console input events (key events, mouse events, etc).
  • Using a double buffer for displaying a buffer of characters onto the screen within a loop.
  • Painters algorithm.
  • And more to come!

Hopefully this blog post will get some of you excited and interested in learning to program, especially learning to program a game. I feel learning some sort of programming language is extremely beneficial in developing as a person in general; after I learned how to think like a programmer it was honestly as if I found a new way of thinking entirely. I encourage anyone interested to get started immediately!

However, what if you're completely new to programming and know really just about nothing? Well, I've written a nice post about getting started with the C language, and I don't assume you know anything! In about an hour you can be well on your way to writing programs that deal with simple mathematical statements, and even print output of those statements onto the screen! Here's an excerpt from the blog post I wrote called I Want to Learn Programming, but I Know Nothing!:

+ Show Spoiler [Blog Excerpt] +
CecilSunkure wrote on his Blog:
So you want to learn to program. Great! So you're reading this article, and here you'll learn to start with C on a Windows Operating System. Starting with C is an excellent place to start, as it grounds you with a very solid base of understanding for programming in general, that of which I feel is easily transferable to other languages! I even feel that once you learn the basics of C and transfer to another language (I recommend Python!) you'll be better off in the long run than if you started with another language and then moved to C (perhaps start with Java and move to C). I won't get into deep details about this point as that's out of the scope of this article, but you should definitely take my word on the matter!

...

You can write your C code in any text editor you like. You can just simply use notepad (to open hit windows key+r and type notepad, then hit enter), though I recommend using the IDE apart of Dev-C++. Once you write some C code, save your file as a .c file and then use a compiler to turn it into a .exe file.

Now what about this compiler business. You might have already googled for a C compiler by now and noticed that there is a multitude of compilers out there. Luckily I have one to recommend to you! Download and install Dev-C++.

When installing just install with all default settings. On your first run you must choose a language (probably English) and then you'll see a screen that looks like:

[image loading]


You should just hit the green Next button, as this feature is actually useful later on. Hit yes again to create a cache now, followed by ok. Close the annoying tips toolbar once the program starts, and walla! You're now ready to code your C programs, and compile them! ...



Interesting links to get started:
http://cecilsunkure.blogspot.com/ - Good wealth of resources to start programming, especially games
http://forums.tigsource.com/index.php?topic=14588.0 - Awesome thread on ascii art, with tools to create
http://labs.bp.io/2011/ascii-paint-bpio-fork.zip - My favorite tool to create ascii art
http://www.bloodshed.net/devcpp.html - The compiler I first started using when messing with C
http://www2.warwick.ac.uk/fac/sci/moac/students/peter_cock/cygwin/part1/ - How to install Cygwin to use the GCC compiler
http://www.crimsoneditor.com/ - Favorite text editor for writing code

****
Endymion
Profile Blog Joined November 2009
United States3701 Posts
Last Edited: 2011-11-16 20:34:13
November 16 2011 20:26 GMT
#2
I'm in no way in tune with coding, but I always love talking to artists and developers. I feel like programmers get none of the recognition, and they have the hardest job in my opinion! However, the best games are made when all three of the branches are really communicating with each other. I mean, when the programming is based off of the art and the art is based off of the programming, then the developers choose what happens based on the result of the two. It's beautiful!!

For instance, I remember talking to one of Blizzard's artists about how creep soon after they announced SC2. I likened it to the hives that xenomorphs make in the alien series, and how I thought there was a lot of potential for zerg "absorbing/altering" their enviornments artistically. He agreed and said that the game would feature a lot more creep for just that reason, because it looked awesome and zergy! Anyways, the artists and developers got together and now look what we have, an important gameplay feature based off of what was originally an "artistic" inovation. Truly the mark of good management on Blizzard's end.

Sorry I would comment more on the OP but I have no idea what I'm looking at in terms of code, it looks super complicated so good job!

Also, you forgot writers as a part of the development team, there as much a part of it as artists are =[ just look at rpgs!
Have you considered the MMO-Champion forum? You are just as irrational and delusional with the right portion of nostalgic populism. By the way: The old Brood War was absolutely unplayable
Akasha
Profile Blog Joined May 2010
United States261 Posts
November 16 2011 20:28 GMT
#3
Thanks for the resources! I've been thinking of just making games as a hobby and this is a great start.

I have programmed a little in C but I've already forgotten a lot of things so it will be a nice refresher.
Writer
thesideshow
Profile Blog Joined May 2010
930 Posts
November 16 2011 20:30 GMT
#4
Aww I'm so jealous. I wanna work in the games industry too Please blog more often so I can pick stuff up from you :p

Good luck ! I respect and envy you for chasing your dreams.
OGS:levelchange
kaisen
Profile Blog Joined June 2010
United States601 Posts
Last Edited: 2011-11-16 20:33:46
November 16 2011 20:33 GMT
#5
I have a question. Right now I'm studying Game Design, but I've heard the position for Game Design is less demanding compared to programmers and artists. Is this true? Where do we fit in? I have no knowledge in programming and my art skill is very limited (even though, I know how to model characters with programs like 3ds Max, but it's not my desirable job position).
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
Last Edited: 2011-11-16 20:42:24
November 16 2011 20:40 GMT
#6
On November 17 2011 05:33 kaisen wrote:
I have a question. Right now I'm studying Game Design, but I've heard the position for Game Design is less demanding compared to programmers and artists. Is this true? Where do we fit in? I have no knowledge in programming and my art skill is very limited (even though, I know how to model characters with programs like 3ds Max, but it's not my desirable job position).

I've worked professionally at a game development studio working on Age of Empires Online, and the designers there were actually critical. Basically, as a development studio gets larger in numbers of employees, the studio can tackle larger projects. The larger the studio, the larger their projects are. In order for this to work, each employee added to the company makes the employees of the company more and more specialized. In smaller studios, especially, indi developers, people can be a generalist; they can program, do art, design, production all at once. But in a highly specialized position, you do a more narrow set of jobs but you do them very very well.

Designers are needed and in my opinion especially critical for larger projects. There are different sections of game design, however. At GPG (gas powered games) I worked mostly with a single designer focused on Player vs Player experience - we balanced the multiplayer game. There were other level designers, lead designers, designers that work for the publisher as a liaison, and concept artists (which sorta spill into design). So to answer your question honestly, I feel that there is a strong need in the industry for highly skilled and valuable designers, but there is a lot less demand for entry-level design positions. Because of this designers here at DigiPen study design alongside with something else. Here you can be a designer with a heavy programming background, or heavy art-focused background. It's sort of funny, the CS focused design degree here is basically identical to the dedicated CS degree for the first year. This makes you more versatile and competent as a designer overall.

Hope that helps!
Jaxtyk
Profile Blog Joined December 2009
United States600 Posts
November 16 2011 20:41 GMT
#7
If I can only gain some motivation to do it.
To tell the truth....I could beat anyone in the world.
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
November 16 2011 20:45 GMT
#8
On November 17 2011 05:26 Endymion wrote:
I'm in no way in tune with coding, but I always love talking to artists and developers. I feel like programmers get none of the recognition, and they have the hardest job in my opinion! However, the best games are made when all three of the branches are really communicating with each other. I mean, when the programming is based off of the art and the art is based off of the programming, then the developers choose what happens based on the result of the two. It's beautiful!!

For instance, I remember talking to one of Blizzard's artists about how creep soon after they announced SC2. I likened it to the hives that xenomorphs make in the alien series, and how I thought there was a lot of potential for zerg "absorbing/altering" their enviornments artistically. He agreed and said that the game would feature a lot more creep for just that reason, because it looked awesome and zergy! Anyways, the artists and developers got together and now look what we have, an important gameplay feature based off of what was originally an "artistic" inovation. Truly the mark of good management on Blizzard's end.

Sorry I would comment more on the OP but I have no idea what I'm looking at in terms of code, it looks super complicated so good job!

Also, you forgot writers as a part of the development team, there as much a part of it as artists are =[ just look at rpgs!

Thanks for the awesome input! Yeah I remember hearing similar about Creep in some video, was very inspiring

And you're totally right about the writers! I added in another section for more specialized role.
wattabeast
Profile Blog Joined March 2011
United States957 Posts
November 16 2011 20:46 GMT
#9
This might sound silly but what does one have to do to become a game designer?
:O
Lysenko
Profile Blog Joined April 2010
Iceland2128 Posts
Last Edited: 2011-11-16 20:58:58
November 16 2011 20:56 GMT
#10
On November 17 2011 05:18 CecilSunkure wrote:
So I began to research. What I found is there are three main types of developers:
  • Programmers
  • Artists
  • Designers
  • Writers/Sound Engineers


At first I scratched my head, then I realized that like any good C programmer you started at an index of 0.

Edit: Also scratching my head about writers and sound engineers sharing a spot on the list!

BTW, best of luck to you with your career in game development.
http://en.wikipedia.org/wiki/Lysenkoism
Lysenko
Profile Blog Joined April 2010
Iceland2128 Posts
November 16 2011 21:05 GMT
#11
On November 17 2011 05:46 wattabeast wrote:
This might sound silly but what does one have to do to become a game designer?


I'm not in the games industry, but I work in animation, which has a similar team structure and approach. Here's what you have to know about getting into a creative position like game designer:

1) Everyone wants to do it, even in the business. Software engineers, customer support people, game testers, animators, most of them dream of being the Game Designer, or better yet Senior Game Designer or VP of Game Design.

2) Some people get into that kind of role just by designing their own games in their spare time until they get enough attention to get hired somewhere on a big project. The odds on this make it much like being struck by lighting and getting hit by a meteorite at the same time.

3) Most game designers probably started out at some other point in the process, working as a software engineer, game tester, animator, or possibly even as a customer support person, and wound up developing the contacts and having the conversations with the people around them that led someone in charge to think it would make sense to take a chance on that person being part of their game design team.

Substitute "motion picture director" for "game designer" and you have the story of my industry also.
http://en.wikipedia.org/wiki/Lysenkoism
KawaiiRice
Profile Blog Joined May 2007
United States2914 Posts
November 16 2011 21:10 GMT
#12
On November 17 2011 05:40 CecilSunkure wrote:
Show nested quote +
On November 17 2011 05:33 kaisen wrote:
I have a question. Right now I'm studying Game Design, but I've heard the position for Game Design is less demanding compared to programmers and artists. Is this true? Where do we fit in? I have no knowledge in programming and my art skill is very limited (even though, I know how to model characters with programs like 3ds Max, but it's not my desirable job position).

I've worked professionally at a game development studio working on Age of Empires Online, and the designers there were actually critical. Basically, as a development studio gets larger in numbers of employees, the studio can tackle larger projects. The larger the studio, the larger their projects are. In order for this to work, each employee added to the company makes the employees of the company more and more specialized. In smaller studios, especially, indi developers, people can be a generalist; they can program, do art, design, production all at once. But in a highly specialized position, you do a more narrow set of jobs but you do them very very well.

Designers are needed and in my opinion especially critical for larger projects. There are different sections of game design, however. At GPG (gas powered games) I worked mostly with a single designer focused on Player vs Player experience - we balanced the multiplayer game. There were other level designers, lead designers, designers that work for the publisher as a liaison, and concept artists (which sorta spill into design). So to answer your question honestly, I feel that there is a strong need in the industry for highly skilled and valuable designers, but there is a lot less demand for entry-level design positions. Because of this designers here at DigiPen study design alongside with something else. Here you can be a designer with a heavy programming background, or heavy art-focused background. It's sort of funny, the CS focused design degree here is basically identical to the dedicated CS degree for the first year. This makes you more versatile and competent as a designer overall.

Hope that helps!

Didn't seem like it when you talked on skype half the time at work and wrote guides there.

(L) Randy~
@KawaiiRiceLighT
Steveling
Profile Blog Joined January 2011
Greece10806 Posts
November 16 2011 21:15 GMT
#13
On November 17 2011 06:05 Lysenko wrote:
Show nested quote +
On November 17 2011 05:46 wattabeast wrote:
This might sound silly but what does one have to do to become a game designer?


I'm not in the games industry, but I work in animation, which has a similar team structure and approach. Here's what you have to know about getting into a creative position like game designer:

1) Everyone wants to do it, even in the business. Software engineers, customer support people, game testers, animators, most of them dream of being the Game Designer, or better yet Senior Game Designer or VP of Game Design.

2) Some people get into that kind of role just by designing their own games in their spare time until they get enough attention to get hired somewhere on a big project. The odds on this make it much like being struck by lighting and getting hit by a meteorite at the same time.

3) Most game designers probably started out at some other point in the process, working as a software engineer, game tester, animator, or possibly even as a customer support person, and wound up developing the contacts and having the conversations with the people around them that led someone in charge to think it would make sense to take a chance on that person being part of their game design team.

Substitute "motion picture director" for "game designer" and you have the story of my industry also.


OO, you work in the animation field? I study 3d animation currently in my 3rd year in uni and I feel so overwhelmed by the knewledge I have to aquire in order to land a job next year. T_T, any advise?
My dick has shrunk to the point where it looks like I have 3 balls.
Lysenko
Profile Blog Joined April 2010
Iceland2128 Posts
November 16 2011 21:21 GMT
#14
On November 17 2011 06:15 Steveling wrote:
OO, you work in the animation field? I study 3d animation currently in my 3rd year in uni and I feel so overwhelmed by the knewledge I have to aquire in order to land a job next year. T_T, any advise?


It's probably a bad idea to take up space in the OP's blog to talk about this. I'll send you a PM.
http://en.wikipedia.org/wiki/Lysenkoism
ClysmiC
Profile Blog Joined December 2010
United States2192 Posts
November 16 2011 21:31 GMT
#15
Awesome blog, I'm very interested in developing video games as well. I'm currently in HS, learning Java in my C.S. class. I hear that C is very similar to Java, so I figure in the future I can easily learn C, but I've never really known where to go from there. I'll definitely check out the podcast and your game blog. Looks awesome =)
GogoKodo
Profile Blog Joined April 2003
Canada1785 Posts
November 16 2011 21:33 GMT
#16
On November 17 2011 06:31 ClysmiC wrote:
Awesome blog, I'm very interested in developing video games as well. I'm currently in HS, learning Java in my C.S. class. I hear that C is very similar to Java, so I figure in the future I can easily learn C, but I've never really known where to go from there. I'll definitely check out the podcast and your game blog. Looks awesome =)

C is similar to Java in terms of syntax and how it looks but it is quite different to program with. But once you know 1 language it isn't so hard to pick up others.
twitter: @terrancem
Lysenko
Profile Blog Joined April 2010
Iceland2128 Posts
November 16 2011 21:41 GMT
#17
On November 17 2011 06:31 ClysmiC wrote:
I hear that C is very similar to Java, so I figure in the future I can easily learn C, but I've never really known where to go from there.


Being a proficient C programmer requires having a pretty good mental model for how data structures are laid out in memory and how the processor implements different data types. Much of that is hidden from you in Java, where memory management is taken care of for you and you have an exception mechanism that lets you very simply catch and deal with unexpected errors.

Expect to have to put in some significant effort getting your head around those matters. You'll find there's a period of time when you think you're a proficient C programmer, but you're actually not. It's kind of like Starcraft in that regard. :D
http://en.wikipedia.org/wiki/Lysenkoism
fanta[Rn]
Profile Blog Joined October 2004
Japan2465 Posts
Last Edited: 2011-11-16 21:57:28
November 16 2011 21:47 GMT
#18
Great blog, looking forward to more.
I'm pursuing a CS computer graphics degree and made a 3D engine/game for a class before and its then when I realised that all the Java we've been using for the other CS stuff is killing me in C++ lol.

Edit: listening to the podcast, how do you reverse the screen...?
mAgixWTF
Profile Blog Joined November 2010
Germany103 Posts
November 16 2011 22:10 GMT
#19
Do you know Ludum Dare? I like their 48h game competition There are a lot of great ideas and ingenuity to find there!

http://www.ludumdare.com/compo/

Get inspired and make great games! :D
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
November 16 2011 22:14 GMT
#20
On November 17 2011 06:10 KawaiiRice wrote:
Show nested quote +
On November 17 2011 05:40 CecilSunkure wrote:
On November 17 2011 05:33 kaisen wrote:
I have a question. Right now I'm studying Game Design, but I've heard the position for Game Design is less demanding compared to programmers and artists. Is this true? Where do we fit in? I have no knowledge in programming and my art skill is very limited (even though, I know how to model characters with programs like 3ds Max, but it's not my desirable job position).

I've worked professionally at a game development studio working on Age of Empires Online, and the designers there were actually critical. Basically, as a development studio gets larger in numbers of employees, the studio can tackle larger projects. The larger the studio, the larger their projects are. In order for this to work, each employee added to the company makes the employees of the company more and more specialized. In smaller studios, especially, indi developers, people can be a generalist; they can program, do art, design, production all at once. But in a highly specialized position, you do a more narrow set of jobs but you do them very very well.

Designers are needed and in my opinion especially critical for larger projects. There are different sections of game design, however. At GPG (gas powered games) I worked mostly with a single designer focused on Player vs Player experience - we balanced the multiplayer game. There were other level designers, lead designers, designers that work for the publisher as a liaison, and concept artists (which sorta spill into design). So to answer your question honestly, I feel that there is a strong need in the industry for highly skilled and valuable designers, but there is a lot less demand for entry-level design positions. Because of this designers here at DigiPen study design alongside with something else. Here you can be a designer with a heavy programming background, or heavy art-focused background. It's sort of funny, the CS focused design degree here is basically identical to the dedicated CS degree for the first year. This makes you more versatile and competent as a designer overall.

Hope that helps!

Didn't seem like it when you talked on skype half the time at work and wrote guides there.

(L) Randy~

LOL hey I got my own opinions I share in the chat, and they aren't really... Erm... Good to say in public

On November 17 2011 05:46 wattabeast wrote:
This might sound silly but what does one have to do to become a game designer?

Design games! There's a good podcast on the DigiPen site about what it's like being and how to become a game designer.
shannn
Profile Blog Joined May 2010
Netherlands2891 Posts
November 16 2011 22:36 GMT
#21
Great blog!

I'm a senior CS student here in Holland and we don't get C at all during college. It's heavily focused on Java which makes the transition from Java to C quite frustrating as a beginner.

I've been programming for over a year in Objective-C for the iOS apps (for my brother's work) and I like it very much (besides the memory management in C :D:D:D).

Recently I've been looking to expand my horizon by looking how games are being programmed and it made my curiosity even bigger than before. I really like it to make the music/designs/stories by yourself but most of all the programming.

It's a lot of work since I'm reading multiple books at the same time to learn more about the different aspects of making games.

I can only tell to anybody who is aspiring to become a game designer (programming side) that you just have to do it.
Nothing is easy and neither is this
http://www.teamliquid.net/forum/viewpost.php?post_id=6321864 Epic post.
Lysenko
Profile Blog Joined April 2010
Iceland2128 Posts
November 16 2011 22:41 GMT
#22
On November 17 2011 07:36 shannn wrote:
I've been programming for over a year in Objective-C for the iOS apps (for my brother's work) and I like it very much (besides the memory management in C :D:D:D).


The memory management in Objective-C is very forgiving compared to that of C.
http://en.wikipedia.org/wiki/Lysenkoism
stafu
Profile Blog Joined January 2009
Australia1196 Posts
November 16 2011 22:56 GMT
#23
Just as a side note, if anyone in Australia is interested in video game programming, particularly high-school students about to finish, definitely check out Murdoch University's Games Technology major. It is extremely challenging, but very rewarding - a real no bullshit games major that you can double with computer science (this is what I'm about to graduate with). Most graduates go on to graphics/simulations programming, but if you wanted to move to somewhere with a real games industry, you'd be well prepared. No engines, no scripting (apart from your own, by interfacing between C++ and Luabind), just C, C++ and OpenGL, apart from one unit in which you use XNA and C#.

During my degree I've created 6 games-related projects, from small scale C/OpenGL demos in the early years, to fully featured game engines, games, and virtual environment simulations, as well as a Brood War AI using BWAPI! I've learnt not only about game programming and large-scale software engineering, but physics, game design, intelligent systems, linear algebra, and a bunch of other inter-disciplinary topics.
shannn
Profile Blog Joined May 2010
Netherlands2891 Posts
November 16 2011 22:57 GMT
#24
On November 17 2011 07:41 Lysenko wrote:
Show nested quote +
On November 17 2011 07:36 shannn wrote:
I've been programming for over a year in Objective-C for the iOS apps (for my brother's work) and I like it very much (besides the memory management in C :D:D:D).


The memory management in Objective-C is very forgiving compared to that of C.

That sounds comforting

I don't really mind the memory management since it's quite good to learn and know how your objects take up memory and how they are being used.

My motto since I've been programming 5 years ago has just been: "Just do it ffs!"
http://www.teamliquid.net/forum/viewpost.php?post_id=6321864 Epic post.
Lysenko
Profile Blog Joined April 2010
Iceland2128 Posts
November 16 2011 23:05 GMT
#25
On November 17 2011 07:57 shannn wrote:
That sounds comforting


The good news is that there are very good automated code analysis tools these days that can help you identify memory management bugs. Of course, you'll be best off developing a coding style that ensures that you minimize those problems to begin with.
http://en.wikipedia.org/wiki/Lysenkoism
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
November 16 2011 23:29 GMT
#26
On November 17 2011 07:57 shannn wrote:
Show nested quote +
On November 17 2011 07:41 Lysenko wrote:
On November 17 2011 07:36 shannn wrote:
I've been programming for over a year in Objective-C for the iOS apps (for my brother's work) and I like it very much (besides the memory management in C :D:D:D).


The memory management in Objective-C is very forgiving compared to that of C.

That sounds comforting

I don't really mind the memory management since it's quite good to learn and know how your objects take up memory and how they are being used.

My motto since I've been programming 5 years ago has just been: "Just do it ffs!"

I haven't had any trouble with memory leaks or anything at all yet, and memory management hasn't seemed to be much a tough topic at all. Perhaps one just needs a good resource to learn from, is all
Lysenko
Profile Blog Joined April 2010
Iceland2128 Posts
Last Edited: 2011-11-17 00:05:15
November 17 2011 00:04 GMT
#27
On November 17 2011 08:29 CecilSunkure wrote:
I haven't had any trouble with memory leaks or anything at all yet, and memory management hasn't seemed to be much a tough topic at all. Perhaps one just needs a good resource to learn from, is all


Writing multithreaded or otherwise asynchronous code massively amplifies the difficulty of handling memory management. It can help to have a really good model in mind for how to handle this, but sometimes it is just an extremely tough problem.
http://en.wikipedia.org/wiki/Lysenkoism
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
Last Edited: 2011-11-17 01:01:42
November 17 2011 01:01 GMT
#28
On November 17 2011 09:04 Lysenko wrote:
Show nested quote +
On November 17 2011 08:29 CecilSunkure wrote:
I haven't had any trouble with memory leaks or anything at all yet, and memory management hasn't seemed to be much a tough topic at all. Perhaps one just needs a good resource to learn from, is all


Writing multithreaded or otherwise asynchronous code massively amplifies the difficulty of handling memory management. It can help to have a really good model in mind for how to handle this, but sometimes it is just an extremely tough problem.

Ah I see, I haven't done anything multi-threaded yet.

I've written the next post in the series, which is on writing colored text and images to the console's screen buffer: link.
Rynnte
Profile Joined September 2011
United States16 Posts
November 17 2011 03:42 GMT
#29
Great article Cecil! I'll try it out sometimes.
ImDrizzt
Profile Blog Joined February 2011
Norway427 Posts
November 17 2011 04:42 GMT
#30
Why aren't you in the Strategy section writing awesome guide's on how to pwn it up in the ladder??
Link to my serious blog, where I am serious and spreads truth, knowledge and "serious" stuff: http://www.liquidpoker.net/blog/viewblog.php?id=982066
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
Last Edited: 2011-11-17 21:21:34
November 17 2011 16:24 GMT
#31
On November 17 2011 13:42 ImDrizzt wrote:
Why aren't you in the Strategy section writing awesome guide's on how to pwn it up in the ladder??

Busy with school yo
ArcticVanguard
Profile Blog Joined August 2010
United States450 Posts
November 19 2011 15:18 GMT
#32
Do you have any articles that you can recommend on pointers and how you use them, why you use them, and what you use them for?
"When I became a man I put away childish things, including the fear of childishness and the desire to be very grown up." ~C.S. Lewis
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
November 19 2011 21:03 GMT
#33
On November 20 2011 00:18 ArcticVanguard wrote:
Do you have any articles that you can recommend on pointers and how you use them, why you use them, and what you use them for?

Yeah I wrote a pretty long article on pointers here: http://cecilsunkure.blogspot.com/search/label/Pointers

Is this enough info? Let me know if you would want to know more, and I can probably write it as my next article
Deleted User 61629
Profile Blog Joined March 2010
1664 Posts
November 19 2011 21:54 GMT
#34
--- Nuked ---
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
November 19 2011 22:00 GMT
#35
On November 20 2011 06:54 Inori wrote:
Recently I keep hearing from various sources that game dev is worst position a programmer can go to in terms of work stress. You're forced to work hard for months, constantly doing overtime (even unpaid) because of deadlines and etc. Then you finish it, have a little party and the cycle begins again with next title.

Is this in any way true?

Yeah at certain companies it's a real issue of over-working employees. There was a popular EA wives dispute where a large group banded together to protest against how EA was treating their husbands. I don't know all the details but you can easily google search the topic.

Where I worked it wasn't an issue really. One guy even had only 4 days a week of work during hardcore crunch time, and he was an integral designer, lol.

Afaik it's a known issue that's been progressively getting better.
PetitCrabe
Profile Blog Joined September 2010
Canada410 Posts
November 19 2011 22:04 GMT
#36
Awesome blog. I had to learn a little bit of C programming last year for university and I was pretty good at whatever they were throwing at us. Unfortunately, I have forgotten most of it because I stopped practicing (no more assignments) but am willing to learn again. I have already bookmarked your blog and please know that if you happen to keep writing guides about anything related to C, I will be reading them. Thank you.
b3h47pte
Profile Blog Joined May 2007
United States1317 Posts
November 19 2011 23:29 GMT
#37
For those who want to start at a bit higher level, remember there's also always UDK and CryEngine 3 SDK's for you to use.
http://udk.com/
http://mycryengine.com/

I personally use UDK myself so if you have questions about that i can probably answer some of them!
SarR
Profile Joined June 2011
476 Posts
Last Edited: 2011-11-20 05:44:27
November 20 2011 05:43 GMT
#38
I never get why people always talk about wanting to do game development in any discussion about programming. There is so much else you can do. Network programming, POS solutions, Database programming, web-based stuff. While i've not written any full-fledged games for modern Windows OS versions, I have dabbled in graphics based programming, the pinnacle of which produced a screen saver where I ripped sprites from various Doom based games and had them fight on screen. I wrote my own alpha-blending code, movement code and effects code and while it was the most fun I've ever had writing code, Id never do it for a living. There is way more money in other types of projects, specifically any thing that requires a Database. Someone always wants a program to manage customers and pricing and all that stuff. The game industry is way too competitive and unless you lease an engine from someone and base your game on it, its incredibly time consuming when compared against other types of software programming.

Do it if you absolutely love it but don't expect to get riches from it.

TLDR; There are other awesome stuff you can do with programming skills besides games.
Lysenko
Profile Blog Joined April 2010
Iceland2128 Posts
November 20 2011 06:27 GMT
#39
On November 20 2011 14:43 SarR wrote:
I never get why people always talk about wanting to do game development in any discussion about programming. There is so much else you can do. Network programming, POS solutions, Database programming, web-based stuff.


Game development includes all of those. You can pick most types of specializations and find some kind of application in games if you really care to.

One thing worth keeping in mind is that the best programming jobs are those where one learns a great deal about the subject area of what one's software is used to do, and applies that. So, being a game developer is probably a better long-term career than just being a guy who knows web development, because you have to have deep knowledge outside the technical tools to get anywhere.
http://en.wikipedia.org/wiki/Lysenkoism
ArcticVanguard
Profile Blog Joined August 2010
United States450 Posts
November 20 2011 17:33 GMT
#40
SarR: The reason that games come up so much is that they're so much more interesting to the casual beginner. Someone who's already got experience might find those things more interesting, but a beginner looks more at the finished product.
"When I became a man I put away childish things, including the fear of childishness and the desire to be very grown up." ~C.S. Lewis
youngminii
Profile Blog Joined May 2010
Australia7514 Posts
November 20 2011 17:42 GMT
#41
I'm going to start University (again?) next year and I'll be doing CS there, probably going on to do game design (unless I change my mind along the way which is like 99% possible). So I guess a thank you is in order.

Thank you.

You're such a great guy, bookmark'd your blog.
lalala
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
November 21 2011 16:22 GMT
#42
On November 20 2011 14:43 SarR wrote:
I never get why people always talk about wanting to do game development in any discussion about programming. There is so much else you can do. Network programming, POS solutions, Database programming, web-based stuff. While i've not written any full-fledged games for modern Windows OS versions, I have dabbled in graphics based programming, the pinnacle of which produced a screen saver where I ripped sprites from various Doom based games and had them fight on screen. I wrote my own alpha-blending code, movement code and effects code and while it was the most fun I've ever had writing code, Id never do it for a living. There is way more money in other types of projects, specifically any thing that requires a Database. Someone always wants a program to manage customers and pricing and all that stuff. The game industry is way too competitive and unless you lease an engine from someone and base your game on it, its incredibly time consuming when compared against other types of software programming.

Do it if you absolutely love it but don't expect to get riches from it.

TLDR; There are other awesome stuff you can do with programming skills besides games.

Programmings games is a whole lot of fun, especially if you want to start a small studio of your own in the future. Plus programming games includes like all those different topics you mentioned. If I find I don't like it I can go into any field I like.

On November 21 2011 02:42 youngminii wrote:
I'm going to start University (again?) next year and I'll be doing CS there, probably going on to do game design (unless I change my mind along the way which is like 99% possible). So I guess a thank you is in order.

Thank you.

You're such a great guy, bookmark'd your blog.

Inspiring! I wish you luck!
KeksX
Profile Blog Joined November 2010
Germany3634 Posts
Last Edited: 2011-11-21 18:49:49
November 21 2011 17:51 GMT
#43
Hey,
nice blog! Always nice to see people being passionate about programming, makes me feel less alone about this.

I just have two things I want to say about your recommandations:

1)
Don' ever recommend Dev-C++ again. Ever. Your credibility suffers a lot from this statement. Would you recommend an old timer to someone who wants to learn to drive? xD
2)
Don't start out by programming games(at least don't recommend it). Most people have problems understanding basic programming concepts, so starting out with just skipping them and go into the game dev stuff is ... not the best way.
Remember:
Game Programming is still programming, you can't learn how to program games without learning how to program first!

Also:
The reason I've chosen to focus on C is twofold: in the game industry 90% of video games are coded in C/C++. This is because the way C was written gets you as close as one can comfortably be (within reason) to the hardware. This means you have full control over everything, which is absolutely necessary for a real-time software application requiring high optimization. If you're serious about programming video games, I highly suggest learning C. Although I do love other languages like Flash and Python, C needs to be the primary focus for most any professional.


If you want to work in the industry on a relatively low level(engine programming) you should go for C++. It is the actual standard, however, most game dev tools that these engine engineerers will create use C#, so it's also enough to "just" learn C# and it's highly likely that this will be the standard in the future for most game devs.

Also I agree with SarR:
You can program games all you want, but if you are seriously into programming there are way more exciting things to do.
If you're saying "I don't want to use premade stuff and actually code myself, but in the end just program games" learning how to program with a language like C++ might not be the best idea, things like XNA etc will do very well for you.
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
November 21 2011 23:18 GMT
#44
On November 22 2011 02:51 KeksX wrote:
2)
Don't start out by programming games(at least don't recommend it). Most people have problems understanding basic programming concepts, so starting out with just skipping them and go into the game dev stuff is ... not the best way.
Remember:
Game Programming is still programming, you can't learn how to program games without learning how to program first!

Right right, I have a lot of other content, I was just posting about the series detailing actually making a console game since it's a pretty cool topic.
[/QUOTE]

On November 22 2011 02:51 KeksX wrote:
If you want to work in the industry on a relatively low level(engine programming) you should go for C++. It is the actual standard, however, most game dev tools that these engine engineerers will create use C#, so it's also enough to "just" learn C# and it's highly likely that this will be the standard in the future for most game devs.

Yeah I tried to recommend C then into C++, so it was totally in the plan to specialize in C++.
KeksX
Profile Blog Joined November 2010
Germany3634 Posts
November 22 2011 10:23 GMT
#45
On November 22 2011 08:18 CecilSunkure wrote:
Right right, I have a lot of other content, I was just posting about the series detailing actually making a console game since it's a pretty cool topic.

I can't remember how many countless hours I spent on writing little games in the console :D It's really addictive .



Yeah I tried to recommend C then into C++, so it was totally in the plan to specialize in C++.

Great! I mean no offense to C, it's really a great and powerful tool, but in the gaming industry (or rather the media industry) C++ is way more comfortable to use.

Good luck on your journey, will totally check your blog out!
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
Last Edited: 2011-11-26 21:12:43
November 26 2011 21:12 GMT
#46
Well I wanted to update my OP a bit, but for some reason it keeps saying I broke ESPORTS or something when I try. So I'll just post the update here!

I just finished up another post on event handling with the console: http://cecilsunkure.blogspot.com/2011/11/windows-console-game-event-handling.html

That article teaches you how to make a cool drawing program that looks like:
[image loading]
LXR
Profile Joined June 2011
357 Posts
December 02 2011 06:58 GMT
#47
I'm currently studying CS at university. I am really interested in game design, but i'm always struggling with the idea because i'm not sure if the programming field for video games will be as fulfilling as I hope. With the program i'm in, if I work really hard i have the option of taking great jobs at big software companies, which would be much more financially stable.... but i'm much more passionate about games.... so I can't ever decide. My friends and I have fun making small phone games though which is a good way to get your feet wet i guess
feardragon
Profile Blog Joined October 2010
United States972 Posts
December 02 2011 07:05 GMT
#48
Love it. I'm getting into game programming myself(Computer Science at Purdue) and I have to agree with the lack of good information out there.

I actually got started with DirectX since I didn't want to start at actual ground zero. I found this great guide on DirectX. So my hat's off to you on this great stuff.

Also I chuckled when you said that game developers were rich and unreachable....mainly because game programmers are actually considered really underpaid for the skill level required for their job. xD
Ok Starcraft 2 Commentator
horsman
Profile Blog Joined June 2010
Canada45 Posts
December 02 2011 07:15 GMT
#49
I'm the owner of an independent game company. I love this thread and Cecil's approach to learning. I think starting off near the metal is a great way to go when learning to create games.

The insight I'd like to add to this picture is the power that fundamentals for math in 3 dimensions (or 2) and understanding of the graphics pipeline add to creating games. If you are interested in game programming I highly recommend picking up a copy of "Real time Rendering" and perhaps "Game Engine Architecture".

I'd also be happy to do my best to answer questions anyone has about the work game developers of all types do.



horsman
Profile Blog Joined June 2010
Canada45 Posts
December 02 2011 07:22 GMT
#50
On December 02 2011 15:58 LXR wrote:
struggling with the idea because i'm not sure if the programming field for video games will be as fulfilling as I hope.


Hi! in my experience it is as fulfilling as I hoped and more interesting than writing most types of applications. The best part of developing games is that the code you write is often very different on a day to day basis and uses your critical thinking skills frequently instead of you just needing to rehash something you've done before.

The danger is being taken advantage of by the industry and being paid less than you are worth. It is worth noting that the average salary of a game programmer in the US was around 80 000 in 2007, which is quite respectable, but about 25% less than what a comparably good programmer would make in the finance industry.


iplayBANJO
Profile Joined September 2010
United States129 Posts
December 02 2011 07:26 GMT
#51
Anyone who does Java programming and is looking into programming games as a hobby, or possibly more seriously, I would recommend David Brackeen's Developing Games in Java. I bought a lot of books on game programming when I was younger and this was probably my favorite as it seemed the best balanced between technical details, easy approach, and practical application. C is a very strong language that is used in a lot of application, like programming a microwave, but it is not easily approachable for many people and is not very common in game programming from what I have heard. Java (and C# as some others have mentioned) are very common languages for indie games as they are common in mobile applications and are largely platform independent. (I'm not so sure about C# since I have never used it personally) I was told once that the Unreal Engine uses C# and is the most commonly used game engine out there.

Cool blog though, I'll probably browse through some of the linked materials and duplicate some old fashioned DOS style games just for giggles. Right now though I'm told I should be focusing on mastering Assembly so that I can pass my compiler class whenever I take it. It's one of those courses that you always hear stories about 30+ people starting the class and less than 5 passing every semester.
"So you think you know stuff about things? Well, I will see your stuff about things, and raise you things about stuff."
Noak3
Profile Blog Joined May 2010
United States236 Posts
Last Edited: 2011-12-02 07:40:05
December 02 2011 07:36 GMT
#52
It's seriously cool that you're studying at DigiPen. I have a friend who is working on 3d-modeling and CGI there, and from what he was saying it is a seriously difficult school. Mad props to anyone who can get through Art 101.
Love and be kind in the face of adversity. If you stand up for others, they will stand up for you.
aevealon
Profile Joined June 2011
Singapore80 Posts
December 02 2011 07:45 GMT
#53
Very nice. I've been looking at Game Deisgning as a possible university course at DigiPen Singapore but i never really knew how to start. I've been trying to learn some C programming but i couldn't find relevent resources.

This is a really big help haha, going to bookmark your blog :D
julianto
Profile Joined December 2010
2292 Posts
December 02 2011 07:50 GMT
#54
When I was younger, I used a program called GameMaker (it's in its 8th version I think). I'm not a computer science major, so anyone who isn't totally dedicated to making games but would still like to make simple games could try that program out. Its language is similar to C++, I hear.
¯\_(ツ)_/¯
horsman
Profile Blog Joined June 2010
Canada45 Posts
Last Edited: 2011-12-02 07:52:22
December 02 2011 07:51 GMT
#55
On December 02 2011 16:26 iplayBANJO wrote: Java (and C# as some others have mentioned) are very common languages for indie games as they are common in mobile applications and are largely platform independent. (I'm not so sure about C# since I have never used it personally) I was told once that the Unreal Engine uses C# and is the most commonly used game engine out there.


Hi, just want to respond to a few of these misconceptions. Java is extremely uncommon in game development because of the garbage collector, memory usage, startup times and graphics library bindings available. Of recent times the only significant game I can think of made with Java is Minecraft.

C/C++ is the main language of virtually all the important part (read: parts that need to run fast) of game engines or games out there. Many engines implement a scripting layer on top of the engine that might be in Lua (example Homeworld) or C# (example Unity3D) or Unrealscript or Actionscript (Flash), for instance.

Last note: Unreal engine is probably not even close to the most common game engine out there! Think Adobe Flash first, maybe Unreal competes at the highest quality of game for most common, but it is probably only used in something between 10-15 games a year (which I think is a generous estimate), while something like Unity3D might have shipped in 100 - 500 range and Flash something like 10 000 games.
leperphilliac
Profile Blog Joined September 2010
United States399 Posts
December 02 2011 07:59 GMT
#56
Hm I'm taking the first "real" programming class in my school. First half of quarter is going over all of C, second half is a mix of assembly (we're using IA-32), ELF structures and the stack/heap. Loved the C, hating the assembly. I'm guessing for me personally C is the lowest level I can go without losing my passion (lol). I'm wondering if you guys deal with that in game programming?
dignity
Profile Blog Joined May 2010
Canada908 Posts
December 02 2011 08:02 GMT
#57
I actually am doing the same thing you are doing right now (going to school for game dev) and I am currently working with c++ mainly doing opengl programming. We have to create our own actual models and read/load/render them ourselves. I would like to say, unless you are really good at math, the programming part of game dev is not for you.

I can completely understand why you are busy too... I have a game demo to finish in 3 days.
horsman
Profile Blog Joined June 2010
Canada45 Posts
Last Edited: 2011-12-02 08:04:18
December 02 2011 08:03 GMT
#58
Some very important parts of some very fast engines use some assembly in the inner most loops. Some graphics card programs "shaders" also use assembly like code for certain speed ups, but for the most part, not something most game programmers see.
Ramuh
Profile Joined February 2011
Germany238 Posts
December 02 2011 08:08 GMT
#59
I make games all the time :D

Few month ago i made a Minecraft Clone that runs in a CAVE, which is basically multiple 3d Screens. It was awesome.
Also made a Star Fox 4 Player Battle Clone, that is controlled with Kinect.

These were University Projects, and i got the best grades for it :D

Making Games is fun :D Though i often lack the ideas to create something of my own
Gesh
Profile Joined November 2010
Bulgaria69 Posts
December 02 2011 08:15 GMT
#60
"Have you ever wanted to program video games, either as a hobby or profession? "
As Stephen King has said - If you want to be a writer, write, dammit! ( loosely quoted)

So, if you want to be a game developer, pick an idea and start coding /working, dammit! The same applies for the others areas - artist, designers, etc. etc.
Let me elaborate - we are living in an age, where all the information and tools, that you need for you to make games are readily available or if you in the mood, there are enough open source projects, you can join. Right now, I'm working on my own sandbox rpg (using XNA) and I had some patches sent to VCMI - recreation of the HOMM3 engine. So, if you want to make games, sit on your butt and make games.
Great blog, please add gamasutra to your links, there is lot of information there. E..g I learned how to implement the bloom effect from an article posted there.
Hairy
Profile Joined February 2011
United Kingdom1169 Posts
December 02 2011 08:16 GMT
#61
I went into programming, and was in the games industry for a whopping 18 months. My advice personally to anyone wanting to become a "game designer" is... to stop. Most games DESIGN degrees are actually a sham, and are not teaching the skills that games development studios actually want - make sure your degree course is not one of those. And do you actually know what a game DESIGN job is?

How does the menu flow work?
What menus will there be?
What button presses do what?
What button hints will we show on the screen?
What happens when we press those buttons?
What happens if he presses different buttons?
What help text should we display?
When should that help text appear?
Will that help text have a delay in appearing? How big should that delay be?
Will that help text work ok in different languages?
Are any of the game UI elements too close to the edge of the screen? (nintendo enforced)

Game DESIGN involves solving ALL those questions, and thousands and thousands more, and extensively documenting it. You don't do the art - the art is done by artists. You don't actually make it happen, as that is done by the programmers. You don't think of and make the cool sounds or music, as that is done by the music guys. Your job is to write a document. Every_SINGLE_DETAIL of how EVERYTHING works must be documented exactly. That is what game design is. Very little of it is thinking up what cool weapons you use etc. In fact, you'll be lucky if you have much choice in the matter - a lot of the time you'll be designing a game that fits what the publisher needs/wants (the publisher is the company funding the work on your game), and you will have a strict budget you need to stick to (cool ideas usually take time (and therefore money) to implement).

I would also warn that I don't think you'll ever get a job out of university with a game 'designer' degree. Very small indie games companies require someone else already in the team (a programmer/artist) to take on the responsibilities of that role - they can't afford to pay someone just to design. Big companies have the money to hire someone with proven skill and experience, OR they can take someone from their team that they know and trust and have them do the role instead. Why would you hire someone fresh out of university, with no experience or proven track record to do one of the most important jobs?

If you want in the games industry, don't aim for games design. Do music, or art, or programming (incidentally, do C++, not C). You can move onto games designer later after you've gained experience in the industry.


On November 20 2011 06:54 Inori wrote:
Recently I keep hearing from various sources that game dev is worst position a programmer can go to in terms of work stress. You're forced to work hard for months, constantly doing overtime (even unpaid) because of deadlines and etc. Then you finish it, have a little party and the cycle begins again with next title.

Is this in any way true?

Yes. Overtime is almost always unpaid, and it is expected. It is not constant, but you WILL have to do overtime. At my job I did 4 weeks where I was in the office will 9 - 10pm at night, and I didn't see a penny of extra cash. You are constantly working towards the next deadline, and often it is a pretty intense working environment.

I don't intend to dissuade people TOO much - there IS still fun to be had. But, realistically, only go into it if you absolutely adore MAKING games (making is very different from playing), and you intend to put in the work required. Only the most dedicated are going to actually make it into the industry, and only the most passionate of those are going to stay there. The games industry is incredibly competitive, so you need to be fantastic. Go and learn some programming like in the opening post in your free time. Go and learn MORE programming. Do projects off your own back, in your own time. If this is sounding too much like hard work... it probably is. Because there are people out there who have the passion to spend almost all of their free time just programming, improving their craft, and practicing to get better. If you can't be at least as good as them you're going to find it difficult.

Become a hobbyist game programmer, and if you still ADORE it then go for it. If you just like games, and think working on games will be cool... you need to rethink.
Sometimes I sits and thinks, and sometimes I just sits
leperphilliac
Profile Blog Joined September 2010
United States399 Posts
December 02 2011 08:26 GMT
#62
On December 02 2011 17:16 Hairy wrote:
I went into programming, and was in the games industry for a whopping 18 months. My advice personally to anyone wanting to become a "game designer" is... to stop. Most games DESIGN degrees are actually a sham, and are not teaching the skills that games development studios actually want - make sure your degree course is not one of those. And do you actually know what a game DESIGN job is?

How does the menu flow work?
What menus will there be?
What button presses do what?
What button hints will we show on the screen?
What happens when we press those buttons?
What happens if he presses different buttons?
What help text should we display?
When should that help text appear?
Will that help text have a delay in appearing? How big should that delay be?
Will that help text work ok in different languages?
Are any of the game UI elements too close to the edge of the screen? (nintendo enforced)

Game DESIGN involves solving ALL those questions, and thousands and thousands more, and extensively documenting it. You don't do the art - the art is done by artists. You don't actually make it happen, as that is done by the programmers. You don't think of and make the cool sounds or music, as that is done by the music guys. Your job is to write a document. Every_SINGLE_DETAIL of how EVERYTHING works must be documented exactly. That is what game design is. Very little of it is thinking up what cool weapons you use etc. In fact, you'll be lucky if you have much choice in the matter - a lot of the time you'll be designing a game that fits what the publisher needs/wants (the publisher is the company funding the work on your game), and you will have a strict budget you need to stick to (cool ideas usually take time (and therefore money) to implement).

I would also warn that I don't think you'll ever get a job out of university with a game 'designer' degree. Very small indie games companies require someone else already in the team (a programmer/artist) to take on the responsibilities of that role - they can't afford to pay someone just to design. Big companies have the money to hire someone with proven skill and experience, OR they can take someone from their team that they know and trust and have them do the role instead. Why would you hire someone fresh out of university, with no experience or proven track record to do one of the most important jobs?

If you want in the games industry, don't aim for games design. Do music, or art, or programming (incidentally, do C++, not C). You can move onto games designer later after you've gained experience in the industry.


Show nested quote +
On November 20 2011 06:54 Inori wrote:
Recently I keep hearing from various sources that game dev is worst position a programmer can go to in terms of work stress. You're forced to work hard for months, constantly doing overtime (even unpaid) because of deadlines and etc. Then you finish it, have a little party and the cycle begins again with next title.

Is this in any way true?

Yes. Overtime is almost always unpaid, and it is expected. It is not constant, but you WILL have to do overtime. At my job I did 4 weeks where I was in the office will 9 - 10pm at night, and I didn't see a penny of extra cash. You are constantly working towards the next deadline, and often it is a pretty intense working environment.

I don't intend to dissuade people TOO much - there IS still fun to be had. But, realistically, only go into it if you absolutely adore MAKING games (making is very different from playing), and you intend to put in the work required. Only the most dedicated are going to actually make it into the industry, and only the most passionate of those are going to stay there. The games industry is incredibly competitive, so you need to be fantastic. Go and learn some programming like in the opening post in your free time. Go and learn MORE programming. Do projects off your own back, in your own time. If this is sounding too much like hard work... it probably is. Because there are people out there who have the passion to spend almost all of their free time just programming, improving their craft, and practicing to get better. If you can't be at least as good as them you're going to find it difficult.

Become a hobbyist game programmer, and if you still ADORE it then go for it. If you just like games, and think working on games will be cool... you need to rethink.


Damn, this post is sobering. Just wondering, though, isn't unpaid overtime highly illegal?
horsman
Profile Blog Joined June 2010
Canada45 Posts
December 02 2011 08:42 GMT
#63
On December 02 2011 17:26 leperphilliac wrote:
Damn, this post is sobering. Just wondering, though, isn't unpaid overtime highly illegal?


It varies from place to place. The poster you quoted has a good warning about the sobering reality of trying to be only a game designer without a skill to bring to the table. Many salaried workers in many industries work unpaid overtime. In games it is even more common than most, but less than say a lawyer.
Tobberoth
Profile Joined August 2010
Sweden6375 Posts
December 02 2011 08:46 GMT
#64
I would personally recommend people to learn SDL instead of working with ASCII in the console. It's actually extremely easy to learn and allows you to make far better looking games. SDL not only lets you work with "real" graphics easily, it also includes support for gamepads and joysticks, audio etc.

If you're good enough at C to program a proper game in the console, you can easily learn to do the same thing in SDL.
skipgamer
Profile Blog Joined April 2010
Australia701 Posts
Last Edited: 2011-12-02 09:45:33
December 02 2011 08:59 GMT
#65
I like this blog post, except for the word hobbyist in the first sentence... (I actually opened the post after seeing it on the front page and hoping it had some insightful tips for me as a hobbyist.)

A beginner hobbyist game programmer should not bother learning C, it is not worth the time, and I'd be surprised to hear a professional recommend it (to a hobbyist) either. Better off focusing on learning a language/engine/SDK that has the tools and meets the requirements of whatever type of game you're trying to make.

Sure it may not exactly be "programming" in the eyes of professionals, but there is a big difference between wanting to be a professional game programmer, and wanting to make games as a hobby. You can (and have to) get your hands dirty with coding regardless of what language/engine/SDK you choose if you are going it alone.


6 years as a hobbyist programmer/game developer with the UT2k4 engine (unrealscript), Source engine(c++), Java, Actionscript and the UnrealEngine(unrealscript+actionscript) have taught me this. (oh, i should chuck in a brief stint with SourceMod, a serverside modification for the source engine with a custom scripting language too)

If I started by learning C, I wouldn't have had anywhere near the amount of experience I've had... That being said, I've never actually taken a project to completion (the most I could say I have created is a proof of concept), but that's what being a hobbyist is all about right? It's the journey, not the destination.
Osmoses
Profile Blog Joined October 2008
Sweden5302 Posts
Last Edited: 2011-12-02 09:05:38
December 02 2011 09:04 GMT
#66
Writing games in the windows console can be fun, but I don't think it teaches you very much about how to do anything else. Knowing memory management is well and good, but modern coding is all about abstraction. I hardly think building a new game engine from scratch is common practice anywhere these days. Why reinvent the wheel when you can just build onto an existing, proven library?

As has been already said, game designing is a collaborative effort outside indie studios, and you generally have very little influence yourself. And if you want to make your game, you can't spend your time writing low level memory management code, you'll never see anything close to a finished product. Swallow your pride and use someone else's code, use an API or a finished engine. Your game doesn't need to be cutting edge, minecraft looks like shit but it's still a great game.

If you want to make a game and see some real results before you die, try Cocos2D. There are 3D APIs as well, but I haven't tried any.

On December 02 2011 17:59 skipgamer wrote:
I like this blog post, except for the word hobbyist in the first sentence...

A beginner hobbyist game programmer should not bother learning C, it is not worth the time, and I'd be surprised to hear a professional recommend it either. Better off focusing on learning a language/engine/SDK that has the tools and meets the requirements of whatever type of game you're trying to make.

Sure it may not exactly be "programming" in the eyes of professionals, but there is a big difference between wanting to be a professional game programmer, and wanting to make games as a hobby. You can (and have to) get your hands dirty with coding regardless of what language/engine/SDK you choose if you are going it alone.


6 years as a hobbyist programmer/game developer with the UT2k4 engine (unrealscript), Source engine(c++), Java, Actionscript and the UnrealEngine(unrealscript+actionscript) have taught me this.

If I started by learning C, I wouldn't have had anywhere near the amount of experience I've had... That being said, I've never actually taken a project to completion (the most I could say I have created is a proof of concept), but that's what being a hobbyist is all about right? It's the journey, not the destination.

Lol you beat me to it :p
Excuse me hun, but what is your name? Vivian? I woke up next to you naked and, uh, did we, um?
Jaeger
Profile Joined December 2009
United States1150 Posts
December 02 2011 09:29 GMT
#67
I've been a programmer in the industry for 8 or 9 years now.

In my experience it's much easier to teach a good programmer to make games than to teach a typical game programmer to be a good programmer.

Focus less on the fact that you're making games and more on solid programming mechanics.

If you have any questions I'd be happy to answer.

Here are some resources to read/watch/follow.
___________________________________________________________________________________________________

The Free Lunch Is Over
An article explaining why programs have stopped getting magically faster as new hardware becomes available and foreshadows much of the current developments in programming and computer technology.

Herb Sutter Machine Architecture Talk (Slides)
Required viewing for serious developers regardless of language or platform.

Sutter’s Mill
Herb Sutter's blog.

Andrew Koenig's Blog
Andrew Koenig's blog.

XKCD
A webcomic that every programmer should know about.

C++Next
A blog about future directions of C++.

Standard Template Library Programmer's Guide
The STL might be the greatest programming interface every designed.

Boost C++ Libraries
Boost C++ Libraries are on par with the STL for the best thing since sliced bread.

Boost Mailing List Archive
Following and reading the Boost developer mailing list will teach you more about C++ that any book, school, or single person ever could. Unless that person was Steven Watanabe, who posts frequently on the this list. Following this list will make you better not only at C++ but at everything programming related.

Effective Concurrency
A series of articles by Herb Sutter explaining concurrency which is very very very important to modern high performance programming such as game development.

Real-Time Rendering
Real-Time Rendering blog
The definitive graphics programming book.

Design Patterns: Elements of Reusable Object-Oriented Software
If I could only choose one book for a programmer that worked with me to know this would be it. The patterns and principles shown in this book are timeless and I use knowledge from this book daily. It's one of the few books I keep at my desk at all times.

Refactoring: Improving the Design of Existing Code
If this book only had the code smells chapter it would be required reading for any serious developer. This book teaches you how to make your code better consistently and reliably.

The Pragmatic Programmer
A good solid all-around book on best practices. It's also an easier read than most programming books.

Elements of Programming
This book is quite hard to get through but it is written by the creator of the STL and is probably the most scientific and correct discussion of computer programming available. The C++Next blog has many entries dedicated to working through the chapters of this book.

Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development
Known in my circle as simply the Larman book. It's huge and not the easiest read but understanding UML is one of the greatest tools you can have as a programmer for expressing yourself to others. Especially class diagrams and sequence diagrams.

Inside the C++ Object Model
Everything that seems confusing or magic about C++ will become clear after reading this book. Understanding the C++ object model will help you to more readily understand other object models such as the Action Script object model used by Flash.

Exceptional C++
More Exceptional C++
Wonderful puzzles that teach great lessons about general programming, c++, error handling, memory management, inefficiency coding, etc.

Effective C++
More Effective C++
Effective STL
The most practical and easy to digest "do this" / "don't do that" guides to good C++.

C++ Coding Standards: 101 Rules, Guidelines, and Best Practices
Easy to digest great advice.

Beyond the C++ Standard Library: An Introduction to Boost
This is a bit outdated but still a good beginners introduction to Boost and why it's great.

Michael Abrash's Graphics Programming Black Book
As free downloads
An old book but still very interesting. Many of the lessons learned here, especially about ways to approach tough problems, are applicable still today.
https://www.dotabuff.com/players/8137911
Mirosuu
Profile Blog Joined December 2010
England283 Posts
December 02 2011 09:36 GMT
#68
I would ask you why you learn game programming with C? What were the reasons given to you by Digipen? I always thought that C++ would be a significantly more powerful and expressive language for what you would want to do with a game. It doesn't even have performance drops compared to C and it boasts a lot of improvements upon the language.

One particular thing that bothers me is the debugging and error propagation techniques in C. I come from a Java background and am learning C++ rather intensively at the moment (should be doing final year CS work, but C++ is interesting... >_>) and I think that exceptions are a far better way to be handling errors than an if-else block with setjmp() and longjmp() calls.

Another question is why do you code your games in a console window? Aren't they rather limited in scope compared to a window created as part of a GUI?

The more things change, the more they stay the same.
Ramuh
Profile Joined February 2011
Germany238 Posts
December 02 2011 09:41 GMT
#69
On December 02 2011 18:36 Mirosuu wrote:
Another question is why do you code your games in a console window? Aren't they rather limited in scope compared to a window created as part of a GUI?



I think that is the point
Mirosuu
Profile Blog Joined December 2010
England283 Posts
December 02 2011 09:43 GMT
#70
On December 02 2011 18:41 Ramuh wrote:
Show nested quote +
On December 02 2011 18:36 Mirosuu wrote:
Another question is why do you code your games in a console window? Aren't they rather limited in scope compared to a window created as part of a GUI?



I think that is the point



Meh, disregard my post then. I'm just being an idiot.
The more things change, the more they stay the same.
Nifoxeli
Profile Blog Joined May 2011
Netherlands26 Posts
Last Edited: 2011-12-02 09:54:13
December 02 2011 09:48 GMT
#71
Damn, I really loved reading this. I used to play a lot with the Warcraft 3 map editor and some other editors but mostly the Warcraft 3 one. And that really made me want to be a gamedesigner. So now I'm currently following a Gamedeveloper education at the Noorderpoort College in the Netherlands. It was a new education when I started and I'm currently in my 4th year.
I started learning some of the basics in all area's. Some Flash, C# and 3D. And at the end of the first year I had to pick on of the three directions the OP had mentioned. We didnt have the Writers/Sound Engineers part strangely enough.
And I decided to go for the programmer side. I liked working with 3D aswell but I always wanted to be able to program games.

I'm now so far along with my education that I'm mostly working with XNA and C# and making simple games for the Xbox 360.
I cant even begin to describe how awesome it is now that I've come this far along.
Here's an image of a game I made in about 6-7 weeks time. I know the background is ugly as hell but I'm a shitty artist and I had to make a background to show my teachers I knew how to do that.
[image loading]
I think its quite clear what kind of style I wanted the game to be

brachester
Profile Blog Joined March 2011
Australia1786 Posts
December 02 2011 10:08 GMT
#72
lol, i just started looking into these stuff yesterday, and you posted this today 0.o
Thank you Cecil, starcraft and Final Fantasy ftw!!!!!!!!!!!!
I hate all this singing
Clearout
Profile Blog Joined April 2010
Norway1060 Posts
December 02 2011 10:21 GMT
#73
Java all the way <3 just started learning to make android apps on my spare time, in addition to the regular stuff I make at Uni. Hoping to make me some decent app games in the future.
really?
impression
Profile Blog Joined March 2011
413 Posts
December 02 2011 10:22 GMT
#74
I actually haven't had much experience with computers before, I have only had my own computer for the last 3 years, and I went into animation because I wanted to animate computer games. But I admit to having a slight leaning towards wanting to learn to program, however my maths skills aren't amazing and the little bit of programming experience I got from doing 3D animation (a small amount of MEL scripting and Python) and I don't think it was really for me, it frazzled my brain a little -_-
But this was a really interesting read, thank you for posting! I will just stick to the part of game making that I know, regardless of if I end up in that field or not
행운을 빌어요 재미
Calvin[Deck]
Profile Joined November 2010
Denmark88 Posts
December 02 2011 10:33 GMT
#75
On December 02 2011 18:04 Osmoses wrote:
Writing games in the windows console can be fun, but I don't think it teaches you very much about how to do anything else. Knowing memory management is well and good, but modern coding is all about abstraction. I hardly think building a new game engine from scratch is common practice anywhere these days. Why reinvent the wheel when you can just build onto an existing, proven library?

As has been already said, game designing is a collaborative effort outside indie studios, and you generally have very little influence yourself. And if you want to make your game, you can't spend your time writing low level memory management code, you'll never see anything close to a finished product. Swallow your pride and use someone else's code, use an API or a finished engine. Your game doesn't need to be cutting edge, minecraft looks like shit but it's still a great game.

If you want to make a game and see some real results before you die, try Cocos2D. There are 3D APIs as well, but I haven't tried any.

Show nested quote +
On December 02 2011 17:59 skipgamer wrote:
I like this blog post, except for the word hobbyist in the first sentence...

A beginner hobbyist game programmer should not bother learning C, it is not worth the time, and I'd be surprised to hear a professional recommend it either. Better off focusing on learning a language/engine/SDK that has the tools and meets the requirements of whatever type of game you're trying to make.

Sure it may not exactly be "programming" in the eyes of professionals, but there is a big difference between wanting to be a professional game programmer, and wanting to make games as a hobby. You can (and have to) get your hands dirty with coding regardless of what language/engine/SDK you choose if you are going it alone.


6 years as a hobbyist programmer/game developer with the UT2k4 engine (unrealscript), Source engine(c++), Java, Actionscript and the UnrealEngine(unrealscript+actionscript) have taught me this.

If I started by learning C, I wouldn't have had anywhere near the amount of experience I've had... That being said, I've never actually taken a project to completion (the most I could say I have created is a proof of concept), but that's what being a hobbyist is all about right? It's the journey, not the destination.

Lol you beat me to it :p



I am a professional programmer, and i have the complete opposite opinion. You have to start with the complete basic to get really good at something.

If you use flash+actionscript, or some other tool/API, yes you can have a lot if fun, and you will get faster to doing something.

But then you will hit a wall, where you want to do something that the tool does not easily provide. And by that point you will need the basic skills of programming, to extend the API you are using, instead of being limited by it.

I am not saying that you should not use some high level API, but eventually you need to get into really nasty technical details about some technology, if you have some need in your game, that are pushing the technology a bit.

That is why making simple games in ASCII art can improve your skills in programming a lot.
Tobberoth
Profile Joined August 2010
Sweden6375 Posts
December 02 2011 10:56 GMT
#76
On December 02 2011 19:33 Calvin[Deck] wrote:
Show nested quote +
On December 02 2011 18:04 Osmoses wrote:
Writing games in the windows console can be fun, but I don't think it teaches you very much about how to do anything else. Knowing memory management is well and good, but modern coding is all about abstraction. I hardly think building a new game engine from scratch is common practice anywhere these days. Why reinvent the wheel when you can just build onto an existing, proven library?

As has been already said, game designing is a collaborative effort outside indie studios, and you generally have very little influence yourself. And if you want to make your game, you can't spend your time writing low level memory management code, you'll never see anything close to a finished product. Swallow your pride and use someone else's code, use an API or a finished engine. Your game doesn't need to be cutting edge, minecraft looks like shit but it's still a great game.

If you want to make a game and see some real results before you die, try Cocos2D. There are 3D APIs as well, but I haven't tried any.

On December 02 2011 17:59 skipgamer wrote:
I like this blog post, except for the word hobbyist in the first sentence...

A beginner hobbyist game programmer should not bother learning C, it is not worth the time, and I'd be surprised to hear a professional recommend it either. Better off focusing on learning a language/engine/SDK that has the tools and meets the requirements of whatever type of game you're trying to make.

Sure it may not exactly be "programming" in the eyes of professionals, but there is a big difference between wanting to be a professional game programmer, and wanting to make games as a hobby. You can (and have to) get your hands dirty with coding regardless of what language/engine/SDK you choose if you are going it alone.


6 years as a hobbyist programmer/game developer with the UT2k4 engine (unrealscript), Source engine(c++), Java, Actionscript and the UnrealEngine(unrealscript+actionscript) have taught me this.

If I started by learning C, I wouldn't have had anywhere near the amount of experience I've had... That being said, I've never actually taken a project to completion (the most I could say I have created is a proof of concept), but that's what being a hobbyist is all about right? It's the journey, not the destination.

Lol you beat me to it :p



I am a professional programmer, and i have the complete opposite opinion. You have to start with the complete basic to get really good at something.

If you use flash+actionscript, or some other tool/API, yes you can have a lot if fun, and you will get faster to doing something.

But then you will hit a wall, where you want to do something that the tool does not easily provide. And by that point you will need the basic skills of programming, to extend the API you are using, instead of being limited by it.

I am not saying that you should not use some high level API, but eventually you need to get into really nasty technical details about some technology, if you have some need in your game, that are pushing the technology a bit.

That is why making simple games in ASCII art can improve your skills in programming a lot.

While it's true that using extremely top-level stuff will leave you wanting eventually, I disagree that you have to start from the basics to remedy that. Say you're working with Flash and you're making a game. You make a game or two then come up with a great idea which you feel flash is inadequate for. That's the perfect time to go basic, you have experience making games in Flash, so you need to learn what you feel is appropriate.

I wouldn't expect someone to jump from making a flash game to making a C++ game, but I would think someone would have more motivation. Learning how to program is, at least IMO, not all that hard. Learning how to properly program a game, an enginge etc, is harder. If you know how to program in python, learning to program in C is not that bad and you will be motivated since you decided to learn C for a good reason, instead of motivating it by "it being basic".

I would personally recommend people to start using either C and SDL to make oldschool games were you have a ton of freedom, or XNA to make windows/xbox games. Both give you perfect freedom to make the games you want, yet give you the tools needed to not get stuck, such as audio and graphic frameworks.
skipgamer
Profile Blog Joined April 2010
Australia701 Posts
Last Edited: 2011-12-02 11:14:55
December 02 2011 11:12 GMT
#77
On December 02 2011 19:33 Calvin[Deck] wrote:
Show nested quote +
On December 02 2011 18:04 Osmoses wrote:
Writing games in the windows console can be fun, but I don't think it teaches you very much about how to do anything else. Knowing memory management is well and good, but modern coding is all about abstraction. I hardly think building a new game engine from scratch is common practice anywhere these days. Why reinvent the wheel when you can just build onto an existing, proven library?

As has been already said, game designing is a collaborative effort outside indie studios, and you generally have very little influence yourself. And if you want to make your game, you can't spend your time writing low level memory management code, you'll never see anything close to a finished product. Swallow your pride and use someone else's code, use an API or a finished engine. Your game doesn't need to be cutting edge, minecraft looks like shit but it's still a great game.

If you want to make a game and see some real results before you die, try Cocos2D. There are 3D APIs as well, but I haven't tried any.

On December 02 2011 17:59 skipgamer wrote:
I like this blog post, except for the word hobbyist in the first sentence...

A beginner hobbyist game programmer should not bother learning C, it is not worth the time, and I'd be surprised to hear a professional recommend it either. Better off focusing on learning a language/engine/SDK that has the tools and meets the requirements of whatever type of game you're trying to make.

Sure it may not exactly be "programming" in the eyes of professionals, but there is a big difference between wanting to be a professional game programmer, and wanting to make games as a hobby. You can (and have to) get your hands dirty with coding regardless of what language/engine/SDK you choose if you are going it alone.


6 years as a hobbyist programmer/game developer with the UT2k4 engine (unrealscript), Source engine(c++), Java, Actionscript and the UnrealEngine(unrealscript+actionscript) have taught me this.

If I started by learning C, I wouldn't have had anywhere near the amount of experience I've had... That being said, I've never actually taken a project to completion (the most I could say I have created is a proof of concept), but that's what being a hobbyist is all about right? It's the journey, not the destination.

Lol you beat me to it :p



I am a professional programmer, and i have the complete opposite opinion. You have to start with the complete basic to get really good at something.

If you use flash+actionscript, or some other tool/API, yes you can have a lot if fun, and you will get faster to doing something.

But then you will hit a wall, where you want to do something that the tool does not easily provide. And by that point you will need the basic skills of programming, to extend the API you are using, instead of being limited by it.

I am not saying that you should not use some high level API, but eventually you need to get into really nasty technical details about some technology, if you have some need in your game, that are pushing the technology a bit.

That is why making simple games in ASCII art can improve your skills in programming a lot.

I don't mean to disagree with you, I'm just interested, don't you think it's appropriate at that point, when you hit that wall, to go out and learn how to get past that wall?

edit: had a big long rant here but I deleted it, because it was just that.
Clearout
Profile Blog Joined April 2010
Norway1060 Posts
December 02 2011 11:49 GMT
#78
When I make small games I find nothing more enjoyable than seeing my "engine" in action, doing what I created it for. Making a good game (albeit small and simple) for me comes from making the engine, knowing exactly my limitations and possibilities, and having the knowledge to further add functionality. Then I can worry about how the game itself will unfold, often I end up with a completely different game than I intended just because of how my engine turned out. I see this as a good thing.
really?
grs
Profile Blog Joined April 2011
Germany2339 Posts
December 02 2011 11:49 GMT
#79
On November 17 2011 05:56 Lysenko wrote:
Show nested quote +
On November 17 2011 05:18 CecilSunkure wrote:
So I began to research. What I found is there are three main types of developers:
  • Programmers
  • Artists
  • Designers
  • Writers/Sound Engineers


At first I scratched my head, then I realized that like any good C programmer you started at an index of 0.


Really nice and intersting OP and it contained my personal joke of the day too
TBO
Profile Joined September 2009
Germany1350 Posts
December 02 2011 11:53 GMT
#80
On November 17 2011 05:40 CecilSunkure wrote:
Show nested quote +
On November 17 2011 05:33 kaisen wrote:
I have a question. Right now I'm studying Game Design, but I've heard the position for Game Design is less demanding compared to programmers and artists. Is this true? Where do we fit in? I have no knowledge in programming and my art skill is very limited (even though, I know how to model characters with programs like 3ds Max, but it's not my desirable job position).

I've worked professionally at a game development studio working on Age of Empires Online, and the designers there were actually critical. Basically, as a development studio gets larger in numbers of employees, the studio can tackle larger projects. The larger the studio, the larger their projects are. In order for this to work, each employee added to the company makes the employees of the company more and more specialized. In smaller studios, especially, indi developers, people can be a generalist; they can program, do art, design, production all at once. But in a highly specialized position, you do a more narrow set of jobs but you do them very very well.

Designers are needed and in my opinion especially critical for larger projects. There are different sections of game design, however. At GPG (gas powered games) I worked mostly with a single designer focused on Player vs Player experience - we balanced the multiplayer game. There were other level designers, lead designers, designers that work for the publisher as a liaison, and concept artists (which sorta spill into design). So to answer your question honestly, I feel that there is a strong need in the industry for highly skilled and valuable designers, but there is a lot less demand for entry-level design positions. Because of this designers here at DigiPen study design alongside with something else. Here you can be a designer with a heavy programming background, or heavy art-focused background. It's sort of funny, the CS focused design degree here is basically identical to the dedicated CS degree for the first year. This makes you more versatile and competent as a designer overall.

Hope that helps!


guess you worked with Eric?^^ he is a cool dude
Skeggaba
Profile Blog Joined April 2009
Korea (South)1556 Posts
December 02 2011 12:15 GMT
#81
You can´t spell pro gamer without programmer (or is it the other way around perhaps).. Nice article, even for a noob like me!
Bisu[about JD]=I was scared (laughs). The force emanating from his facial expression was so manly that I was even a little jealous.
Umpteen
Profile Blog Joined April 2010
United Kingdom1570 Posts
Last Edited: 2011-12-02 12:56:00
December 02 2011 12:49 GMT
#82
Excellent blog.

For what it's worth, I've been programming games for a living since 1994, and I wholeheartedly endorse the approach described here. I prepared a similar series of exercises for my nephew when he expressed an interest in learning to code.

Some are recommending development platforms other than the ASCII console and C++, including high-level SDKs. Personally, I think it depends upon what you're trying to do.

Using Unrealscript or the free Cryengine SDK etc allows you to focus on content production. If what you have is a content-led idea for a game, particularly a first-person game, and can create or source the art you need, these platforms are excellent. What do I mean by content-led? Well, let's say you came up with the idea for Amnesia: The Dark Descent. The mechanics of that game are pretty much covered by the Unreal or Cryengine SDKs. What makes it different is the art, setting, story and such.

However, I would not particularly recommend these SDKs to a programming novice. They are certainly not aimed at the novice. They are powerful professional-grade tools aimed at experienced programmers, level designers and game artists (ie, development companies) who want to compete at a high level of production value but lack the resources to develop their own API. They are not there to be your friend or hold your hand.

A step down from there things start to get more interesting for newcomers. I've used C# to prototype some simple ideas at home, and I find it pitched at just the right level for someone who wants to cut their teeth on - for instance - a 2D platform game. You get nice simple wrappers for loading and rendering bitmaps, managing windows and input, and the sense of connection between the code you're writing and what's happening on the screen is strong and direct. This is fantastic if your idea is gameplay-led (eg innovative movement mechanics) or intentionally retro (16bit Zelda-style): you don't have to get your hands too dirty but at the same time there's more control (and more useful learning imo) than if you use a 'game creator' type suite.

But if you're just starting out as a coder, Cecil's approach is, in my opinion, hard to beat. Pasting characters directly to the window lets you forget about doodling and concentrate on fundamental principles like loops, functions, data structures and the like. Your development is iterated on a super-fast turnaround, and you'll find yourself bolting on more and more features as ideas occur to you. Got a little ascii man moving around the screen? How about making it scroll? How would you do that? How about adding monsters? Weapons? Pathfinding and other AI? Keys, doors, switches, items - maybe an editor to speed up content creation. The sky's the limit.

The important point here is not that you'll be advancing the frontiers of computer science by scrolling a level around in a window, but that you'll be nurturing the number one skill essential to development on any platform in any language: problem solving. I first learned to program in BBC BASIC. I learned 6502 assembler, then 68000 assembler, then C++ as the platforms I was developing for changed. I've dabbled in Javascript, PHP, C# - it really doesn't matter. The one constant has been the need to take a high-level conceptual problem and break it down into solvable chunks. Different languages support different solutions more or less elegantly, and I value the perspective upon problems learning new languages has given me, but being a programmer is, for me, about the way you think, not about what you type.
The existence of a food chain is inescapable if we evolved unsupervised, and inexcusable otherwise.
Slaytilost
Profile Joined October 2010
Netherlands968 Posts
December 02 2011 13:04 GMT
#83
The reason I've chosen to focus on C is twofold: in the game industry 90% of video games are coded in C/C++.

You might want to adjust that 90% of yours, or perhaps adjust your definition of game industry.

Perhaps 90%-ish of games that are boxed and are for purchase in your local store, but remember that the game industry is much, much more then that. The mobile game industry is booming, and web-games have been around for a while too. They usually use higher level languages such as Java/C# or Actionscript, and iOS games are frequently built in Obj-C.

In fact; i've been a professional game programmer for 3 years now, and i hardly know any C++, let alone objective C. But i still have collaborated on 3 titles that are currently available in the appstore. Since we use some amazing middleware (Unity) we can code comfy in our C# environment, even for Android and iOS.

In short i'd like to say that the game industry is much broader then what people think. Its not only the starcrafts, modern warfares and battlefields. Its also Doodle Jump, Dora the Explorer and Hello Kitty online.
Teoita
Profile Blog Joined January 2011
Italy12246 Posts
December 02 2011 13:07 GMT
#84
Awesomeness! I have taken a couple of c++ classes in college (and i'm awful at it), so this was a really interesting read Good luck in programming games man!
ModeratorProtoss all-ins are like a wok. You can throw whatever you want in there and it will turn out alright.
livingtarget
Profile Joined November 2011
8 Posts
December 02 2011 13:25 GMT
#85
On November 17 2011 06:47 fanta[Rn] wrote:
Great blog, looking forward to more.
I'm pursuing a CS computer graphics degree and made a 3D engine/game for a class before and its then when I realised that all the Java we've been using for the other CS stuff is killing me in C++ lol.

Edit: listening to the podcast, how do you reverse the screen...?


I did java at university and thought it was pointless because I wanted to do C but in the end I got a job as a Java Games Programmer. Missing function pointers the most to be honest. At least Java and C are fairly similar syntax wise anyway.
AimlessAmoeba
Profile Blog Joined December 2010
Canada704 Posts
December 02 2011 13:41 GMT
#86
This is so weird. Only just yesterday I got the urge to program my own NES game, and after an hour or so of searching, I gave up already because I couldn't find a good resource for a beginner like myself. My original attempt at college was CPA (Comp. Programmer Analyst) but the stuff they were teaching me (although, probably necessary) was terribly unexciting and I dropped out. I wish I hadn't at this point but if you keep this blog going I think I may take a crack at teaching myself because I have a lot of simple ideas and I'd love to just create SOMETHING at this point, a labor of love so to speak.
BisuDagger
Profile Blog Joined October 2009
Bisutopia19239 Posts
December 02 2011 14:26 GMT
#87
I'm a video game developer, woot! Great article, glad your trying to get more people interested. It's a wonderful field to be in. Anyone who needs help or has questions about getting started feel free to pm me.

Btw, this article reminded me of when I wrote my first Gameboy Advanced game which was, oh so much fun :/
ModeratorFormer Afreeca Starleague Caster: http://afreeca.tv/ASL2ENG2
Tobberoth
Profile Joined August 2010
Sweden6375 Posts
December 02 2011 14:47 GMT
#88
On December 02 2011 22:41 AimlessAmoeba wrote:
This is so weird. Only just yesterday I got the urge to program my own NES game, and after an hour or so of searching, I gave up already because I couldn't find a good resource for a beginner like myself. My original attempt at college was CPA (Comp. Programmer Analyst) but the stuff they were teaching me (although, probably necessary) was terribly unexciting and I dropped out. I wish I hadn't at this point but if you keep this blog going I think I may take a crack at teaching myself because I have a lot of simple ideas and I'd love to just create SOMETHING at this point, a labor of love so to speak.

NES is probably pretty far from what a beginner should be doing. Going basic and starting with C is one thing, to program a NES you have to work with 6502 assembly which is a pure bitch in comparision. It's easy to believe that NES games should be pretty simple to make because of how simple they look, but since it's assembly and extremely limited by the hardware, it's quite a hard nut to crack.
Ramuh
Profile Joined February 2011
Germany238 Posts
December 02 2011 14:53 GMT
#89
On December 02 2011 23:47 Tobberoth wrote:
Show nested quote +
On December 02 2011 22:41 AimlessAmoeba wrote:
This is so weird. Only just yesterday I got the urge to program my own NES game, and after an hour or so of searching, I gave up already because I couldn't find a good resource for a beginner like myself. My original attempt at college was CPA (Comp. Programmer Analyst) but the stuff they were teaching me (although, probably necessary) was terribly unexciting and I dropped out. I wish I hadn't at this point but if you keep this blog going I think I may take a crack at teaching myself because I have a lot of simple ideas and I'd love to just create SOMETHING at this point, a labor of love so to speak.

NES is probably pretty far from what a beginner should be doing. Going basic and starting with C is one thing, to program a NES you have to work with 6502 assembly which is a pure bitch in comparision. It's easy to believe that NES games should be pretty simple to make because of how simple they look, but since it's assembly and extremely limited by the hardware, it's quite a hard nut to crack.


Looked at GB a while ago, even with a C compiler its unintuitive as shit, stupid sprite stuff
Heyoka
Profile Blog Joined March 2008
Katowice25012 Posts
December 02 2011 15:12 GMT
#90
I found a book on 6502 assembly in my dad's den over the summer, it seemed to bizarre I brought it with me when I moved to NY. Shit is confusing as fuck.
@RealHeyoka | ESL / DreamHack StarCraft Lead
AimlessAmoeba
Profile Blog Joined December 2010
Canada704 Posts
December 02 2011 15:16 GMT
#91
On December 02 2011 23:53 Ramuh wrote:
Show nested quote +
On December 02 2011 23:47 Tobberoth wrote:
On December 02 2011 22:41 AimlessAmoeba wrote:
This is so weird. Only just yesterday I got the urge to program my own NES game, and after an hour or so of searching, I gave up already because I couldn't find a good resource for a beginner like myself. My original attempt at college was CPA (Comp. Programmer Analyst) but the stuff they were teaching me (although, probably necessary) was terribly unexciting and I dropped out. I wish I hadn't at this point but if you keep this blog going I think I may take a crack at teaching myself because I have a lot of simple ideas and I'd love to just create SOMETHING at this point, a labor of love so to speak.

NES is probably pretty far from what a beginner should be doing. Going basic and starting with C is one thing, to program a NES you have to work with 6502 assembly which is a pure bitch in comparision. It's easy to believe that NES games should be pretty simple to make because of how simple they look, but since it's assembly and extremely limited by the hardware, it's quite a hard nut to crack.


Looked at GB a while ago, even with a C compiler its unintuitive as shit, stupid sprite stuff


Ah, well thank you for clearing that up - I was totally under that assumption, that the simplicity would make it the easiest to learn. Could I make something with like, a retro NESish look with C if I got enough experience with it?
Roggay
Profile Joined April 2010
Switzerland6320 Posts
December 02 2011 15:35 GMT
#92
I've been meaning to try and learn to program video games. But between gaming and college (computer science), I've never quite found the time to do it.
Abraxas514
Profile Blog Joined May 2010
Canada475 Posts
Last Edited: 2011-12-02 15:44:01
December 02 2011 15:41 GMT
#93
Can I suggest anyone who wants to work with graphics and C++ go look at http://irrlicht.sourceforge.net/

I'm a hobbyist programmer, this is my baby child:

http://irrlicht.sourceforge.net/forum/viewtopic.php?f=6&t=36040

I also have a message board (free hosting... but it goes down pretty often) at http://starempires.zxq.net

Irrlicht is a very high level graphics engine that's based on either DX9 or openGL. There are some twenty tutorials for newbies to understand the engine and some basic problem solving using c++. Also, the forums are incredibly helpful if you don't mind waiting a day or two for an answer.

Good luck everyone!
Fear is the mind killer
shannn
Profile Blog Joined May 2010
Netherlands2891 Posts
December 02 2011 15:51 GMT
#94
You'd figure with all these skillfull people on TL that we'd make our own starcraft game )))
http://www.teamliquid.net/forum/viewpost.php?post_id=6321864 Epic post.
Umpteen
Profile Blog Joined April 2010
United Kingdom1570 Posts
December 02 2011 15:52 GMT
#95
On December 03 2011 00:12 heyoka wrote:
I found a book on 6502 assembly in my dad's den over the summer, it seemed to bizarre I brought it with me when I moved to NY. Shit is confusing as fuck.


So that's what you've been reading instead of emails...
The existence of a food chain is inescapable if we evolved unsupervised, and inexcusable otherwise.
gCgCrypto
Profile Joined December 2010
Germany297 Posts
December 02 2011 16:07 GMT
#96
Thanks a lot dude, i want to learn game design after i finish 13th grade ^^ hope it gets me to companys like Blizzard eventually :D
L E E J A E D O N G ! <3
Hairy
Profile Joined February 2011
United Kingdom1169 Posts
December 02 2011 16:18 GMT
#97
On December 03 2011 00:51 shannn wrote:
You'd figure with all these skillfull people on TL that we'd make our own starcraft game )))

Actually, making my own hobby clone version of BW / SC2 was something I've been thinking about doing for a while. It would have incredibly basic visuals (I'm a programmer, not an artist), and my own hand-crafted sound effects (though nothing is funnier than having a game using your own hand-crafted sound effects/voices). Undoubtedly the pathfinding would probably be just as bad as SC1 :D

Huge project though, but lots of fun. My issue with hobby projects like this is that I simply can't seem to find the time to get around to doing them. That and the 'getting started' phase with a new programming project is the absolute worst; I always end up saying "fuck it" and aborting the fetus before it's even begun to take shape.
Sometimes I sits and thinks, and sometimes I just sits
Dyskrete
Profile Joined August 2011
Australia2 Posts
December 02 2011 16:31 GMT
#98
Wow seems sweet. As an aspiring Australian sound engineer i would be more than willing to contribute whatever i can for this project PM me if u want more deets
Hairy
Profile Joined February 2011
United Kingdom1169 Posts
December 02 2011 16:55 GMT
#99
On December 03 2011 01:31 Dyskrete wrote:
Wow seems sweet. As an aspiring Australian sound engineer i would be more than willing to contribute whatever i can for this project PM me if u want more deets

Thanks for the offer, but when/if I get my smeg together to start a big pet project like that it would be a long long time before I would even be at the stage where sound effects could happen

If you're interested in doing your own project it might be fun to do a total sound conversion for SC2? Should be completely possible using the current SC2 tools available afaik.
Sometimes I sits and thinks, and sometimes I just sits
Warpath
Profile Joined April 2010
Canada1242 Posts
Last Edited: 2011-12-02 17:17:27
December 02 2011 17:16 GMT
#100
I'm reading this from my game dev class

Me and some classmates are working on a fun little co-op XBox game where you customize a little character (heavily themed on actors like Rambo and Morgan Freeman) and kill space pig-men.

Here's one of the earlier screenshots :D (all its really missing is the hud and players/updated artwork)
+ Show Spoiler +
[image loading]


Game developing is awesome, if your interested you should take a look into the field!
Glowbox
Profile Joined June 2010
Netherlands330 Posts
Last Edited: 2011-12-02 17:23:09
December 02 2011 17:22 GMT
#101
Surprised no one mentioned http://altdevblogaday.com/ yet. It has all sorts of articles on game devving (mainly technical). Some other good links: http://gamedev.stackexchange.com/ , http://www.stackoverflow.com (for general programming questions)

Jaeger nailed it imo, you should strive to become a good programmer rather than a good game programmer. Getting to work at some game development company itself is already quite the task as there's tons of competition. If you're a good programmer who knows his stuff you can probably always find a good/awesome job.
Hairy
Profile Joined February 2011
United Kingdom1169 Posts
December 02 2011 17:30 GMT
#102
I really should dig out my old flash game I made in university, "Zombie Shooter". You play as a desperate man equipped only with an AK47 and a jetpack, who alone must face the evil hordes of zombies.

Zombies equipped with bazookas and jetpacks.
Sometimes I sits and thinks, and sometimes I just sits
Noobity
Profile Blog Joined February 2011
United States871 Posts
December 02 2011 18:05 GMT
#103
So, just as a little bit of a note, because I know a tiny bit about this kind of thing. For those of you who want to go into the artistic side of things, don't rely on a degree. Rely on passion. I currently have a bachelor's degree in Computer Animation, specializing in environment art, but have no passion for it. Because of this I was able to scrape by to getting a degree, but could not, cannot, and will not find a job relating to the field.

The absolute #1 thing that you need to understand when searching for a job in this field is that you need skill, passion, and a desire to get better before you can really even consider pushing forward. I was neither skilled nor passionate, but did have a desire to get better, and because of that I was able to pass my classes, but now have a very expensive and useless degree.

I stress, STRESS highly, that you think long and hard before going into a field of study like this.

Now, that being said, Cecil, you have a knack for being passionate about things. All things it seems, and I want to wish you a great deal of luck in your future endeavors. Thanks for what you've done for the community and I hope the karma hits you on the positive in the near future.
My name is Mike, and statistically, yours is not.
Frastic
Profile Joined December 2010
United States96 Posts
December 02 2011 18:27 GMT
#104
Noob Questions:
What's the main difference between C++ and C? And if C++ is like the base of most games made nowadays, why should I learn C at all?

Also, what colleges do you recommend to a high school student looking to go into game programming?
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
Last Edited: 2011-12-02 18:33:11
December 02 2011 18:31 GMT
#105
On December 02 2011 18:04 Osmoses wrote:
Writing games in the windows console can be fun, but I don't think it teaches you very much about how to do anything else. Knowing memory management is well and good, but modern coding is all about abstraction. I hardly think building a new game engine from scratch is common practice anywhere these days. Why reinvent the wheel when you can just build onto an existing, proven library?

As has been already said, game designing is a collaborative effort outside indie studios, and you generally have very little influence yourself. And if you want to make your game, you can't spend your time writing low level memory management code, you'll never see anything close to a finished product. Swallow your pride and use someone else's code, use an API or a finished engine. Your game doesn't need to be cutting edge, minecraft looks like shit but it's still a great game.

If you want to make a game and see some real results before you die, try Cocos2D. There are 3D APIs as well, but I haven't tried any.

Show nested quote +
On December 02 2011 17:59 skipgamer wrote:
I like this blog post, except for the word hobbyist in the first sentence...

A beginner hobbyist game programmer should not bother learning C, it is not worth the time, and I'd be surprised to hear a professional recommend it either. Better off focusing on learning a language/engine/SDK that has the tools and meets the requirements of whatever type of game you're trying to make.

Sure it may not exactly be "programming" in the eyes of professionals, but there is a big difference between wanting to be a professional game programmer, and wanting to make games as a hobby. You can (and have to) get your hands dirty with coding regardless of what language/engine/SDK you choose if you are going it alone.


6 years as a hobbyist programmer/game developer with the UT2k4 engine (unrealscript), Source engine(c++), Java, Actionscript and the UnrealEngine(unrealscript+actionscript) have taught me this.

If I started by learning C, I wouldn't have had anywhere near the amount of experience I've had... That being said, I've never actually taken a project to completion (the most I could say I have created is a proof of concept), but that's what being a hobbyist is all about right? It's the journey, not the destination.

Lol you beat me to it :p

First off, I'm not really a hobbyist, so I can't write a post about using unreal engines, or other pre-made engines. So sure if you just want to make something content-driven as a hobby, you don't truly need to learn C. Though as a beginner you absolutely shouldn't shut doors to possibilities on yourself.

As for writing a game in C, it teaches you a lot of essentials needed to move onto C++, or any other language with a high degree of success. If you're serious about becoming a professional you're not going to be using code someone else wrote as your engine when you're listing your achievements and projects completed in your resume; if you want your job of choice you're going to want to be able to show people a game you constructed from scratch, in C++. Nothing will beat that. Anything else is taking the easy way out. Teams of a few people here at my school make entire production level games from scratch while taking a full course load in six months; you're being unrealistic in how you favor using pre-made engines over the creation of one yourself.

With that in mind this is an important note everyone should understand reading the blog: coding a a good sized game in C like described in my blog series will teach you fundamental C programming skills at a wonderfully rounded and thorough manner. This is essential if you aspire to become a lethally skilled programmer due to how learning C teaches you the limitations of C. If you learn the limitations of C you then learn how to make effective use of features in C++, thus being all the better as a programmer.


On December 02 2011 20:53 TBO wrote:
Show nested quote +
On November 17 2011 05:40 CecilSunkure wrote:
On November 17 2011 05:33 kaisen wrote:
I have a question. Right now I'm studying Game Design, but I've heard the position for Game Design is less demanding compared to programmers and artists. Is this true? Where do we fit in? I have no knowledge in programming and my art skill is very limited (even though, I know how to model characters with programs like 3ds Max, but it's not my desirable job position).

I've worked professionally at a game development studio working on Age of Empires Online, and the designers there were actually critical. Basically, as a development studio gets larger in numbers of employees, the studio can tackle larger projects. The larger the studio, the larger their projects are. In order for this to work, each employee added to the company makes the employees of the company more and more specialized. In smaller studios, especially, indi developers, people can be a generalist; they can program, do art, design, production all at once. But in a highly specialized position, you do a more narrow set of jobs but you do them very very well.

Designers are needed and in my opinion especially critical for larger projects. There are different sections of game design, however. At GPG (gas powered games) I worked mostly with a single designer focused on Player vs Player experience - we balanced the multiplayer game. There were other level designers, lead designers, designers that work for the publisher as a liaison, and concept artists (which sorta spill into design). So to answer your question honestly, I feel that there is a strong need in the industry for highly skilled and valuable designers, but there is a lot less demand for entry-level design positions. Because of this designers here at DigiPen study design alongside with something else. Here you can be a designer with a heavy programming background, or heavy art-focused background. It's sort of funny, the CS focused design degree here is basically identical to the dedicated CS degree for the first year. This makes you more versatile and competent as a designer overall.

Hope that helps!


guess you worked with Eric?^^ he is a cool dude

Haha he seemed nice, but he rarely ever showed his face in the room I was working in. I think he was afraid of us balance guys as one of my co-workers was really brash and harsh the very first meeting in which we met Eric.


On December 02 2011 22:04 Slaytilost wrote:
Show nested quote +
The reason I've chosen to focus on C is twofold: in the game industry 90% of video games are coded in C/C++.

You might want to adjust that 90% of yours, or perhaps adjust your definition of game industry.

Perhaps 90%-ish of games that are boxed and are for purchase in your local store, but remember that the game industry is much, much more then that. The mobile game industry is booming, and web-games have been around for a while too. They usually use higher level languages such as Java/C# or Actionscript, and iOS games are frequently built in Obj-C.

In fact; i've been a professional game programmer for 3 years now, and i hardly know any C++, let alone objective C. But i still have collaborated on 3 titles that are currently available in the appstore. Since we use some amazing middleware (Unity) we can code comfy in our C# environment, even for Android and iOS.

In short i'd like to say that the game industry is much broader then what people think. Its not only the starcrafts, modern warfares and battlefields. Its also Doodle Jump, Dora the Explorer and Hello Kitty online.

I understand, but that's a pretty specialized area. You'd have immense trouble getting a job in a lot of other areas due to not knowing C++. Also the quote was actually loosely quoted from the podcast in the OP by one of the teachers here at DigiPen.

On December 03 2011 03:27 Frastic wrote:
Noob Questions:
What's the main difference between C++ and C? And if C++ is like the base of most games made nowadays, why should I learn C at all?

Also, what colleges do you recommend to a high school student looking to go into game programming?

As I just posted, it's because by learning C you learn how to effectively use C++. You can't really do this firsthand without starting in C. As for schools, listen to the podcast I posted in the OP. Both of your questions are answered there.
andiCR
Profile Blog Joined March 2008
Costa Rica2273 Posts
December 02 2011 19:01 GMT
#106
First person to quote this sentence (back on TL at the Lessons thread), and the one directly after it, will win a free one hour lesson! Additionally whoever is the 100th poster in this thread (cmon, we can get that many posts!) will win a free one hour lesson as well!


More than a lesson, I think i'd rather have a good old game dev to game dev chat
Nightmare1795 wrote: I played a guy in bronze who said he was Japanese. That was the only game I ever dropped a nuke, which was purely coincidental.
iplayBANJO
Profile Joined September 2010
United States129 Posts
December 02 2011 19:04 GMT
#107
On December 03 2011 03:27 Frastic wrote:
Noob Questions:
What's the main difference between C++ and C? And if C++ is like the base of most games made nowadays, why should I learn C at all?


C is a procedural language, while C++ is a object oriented language. In addition to being object oriented, C++ has made re-usability of code a large focus recently with the addition of generic templates and the STL library.

C++ encompasses the entirety of C (as I understand it) and procedural C can be used within a C++ program, but the addition of several keywords make certain C functions unnecessary. Most notably the C functions revolving around memory allocation are much more difficult to use than the more simple C++ versions new and delete.

If you are looking to learn C and C++ on your own I would recommend the books C Primer Plus and C++ Primer Plus both written by Stephen Prata, and both far more easily understood than the books I used in school to learn the languages. I should note that while the C Primer Plus book is nearly twice as long as C++ Primer Plus, The more technical reference manuals for each language are actually opposite, with The C Programming Language, by Brian Kernaghan and Denis Ritchie, being almost a quarter of the size of The C++ Programming Language, by Bjarne Stroustrup.
"So you think you know stuff about things? Well, I will see your stuff about things, and raise you things about stuff."
andiCR
Profile Blog Joined March 2008
Costa Rica2273 Posts
December 02 2011 19:05 GMT
#108
By the way, im wondering why don't you use something like Microsoft Visual C++ to learn C++ coding instead of DevC++? I mean, dont get me wrong, i loved devc++, but i think Microsoft has such an awesome tool its not even worth digging into devcpp.
Nightmare1795 wrote: I played a guy in bronze who said he was Japanese. That was the only game I ever dropped a nuke, which was purely coincidental.
Jaeger
Profile Joined December 2009
United States1150 Posts
December 02 2011 19:05 GMT
#109
On December 02 2011 22:04 Slaytilost wrote:
Show nested quote +
The reason I've chosen to focus on C is twofold: in the game industry 90% of video games are coded in C/C++.

You might want to adjust that 90% of yours, or perhaps adjust your definition of game industry.

Perhaps 90%-ish of games that are boxed and are for purchase in your local store, but remember that the game industry is much, much more then that. The mobile game industry is booming, and web-games have been around for a while too. They usually use higher level languages such as Java/C# or Actionscript, and iOS games are frequently built in Obj-C.

In fact; i've been a professional game programmer for 3 years now, and i hardly know any C++, let alone objective C. But i still have collaborated on 3 titles that are currently available in the appstore. Since we use some amazing middleware (Unity) we can code comfy in our C# environment, even for Android and iOS.

In short i'd like to say that the game industry is much broader then what people think. Its not only the starcrafts, modern warfares and battlefields. Its also Doodle Jump, Dora the Explorer and Hello Kitty online.


Guess what language Unity is written in? Guess what language C# is a derivative of?
https://www.dotabuff.com/players/8137911
Jaeger
Profile Joined December 2009
United States1150 Posts
December 02 2011 19:14 GMT
#110
On December 03 2011 04:04 iplayBANJO wrote:
Show nested quote +
On December 03 2011 03:27 Frastic wrote:
Noob Questions:
What's the main difference between C++ and C? And if C++ is like the base of most games made nowadays, why should I learn C at all?


C is a procedural language, while C++ is a object oriented language. In addition to being object oriented, C++ has made re-usability of code a large focus recently with the addition of generic templates and the STL library.


To nit a little C++ is a multi-paradigm language that supports object-oriented, generic, functional, procedural, declarative, and modular, and meta-programming.
https://www.dotabuff.com/players/8137911
KaBoom300
Profile Joined January 2011
United States225 Posts
Last Edited: 2011-12-02 19:20:39
December 02 2011 19:16 GMT
#111
I actually love the ASCII style art of your game and Dwarf Fortress and similar things! I am actually a student at the University of Utah in their game design program as a CompSci major (U of U actually has second best game design program in the nation behind USC) and I'm learning ActionScript 3.0 right now and have a general knowledge of Java. Here is a screenshot for my final project I'm working on in Flash

[image loading]

It's going to be a sort of Dwarf Fortress/Minecraft/Terraria sort of game. It's not nearly finished right now but you get the idea.

I love designing games and I really hope to be a indie game designer when I graduate. Great blog! I will be coming back to this for sure as it would be great to start learning C in addition to Java and ActionScript 3.0
Liquid Dota Fighting!
EsX_Raptor
Profile Blog Joined February 2008
United States2801 Posts
December 02 2011 19:19 GMT
#112
Markham's ASCII art is simply magnificent, superb!
Fandango
Profile Joined October 2011
291 Posts
Last Edited: 2011-12-02 19:27:38
December 02 2011 19:22 GMT
#113
On December 03 2011 04:05 Jaeger wrote:
Show nested quote +
On December 02 2011 22:04 Slaytilost wrote:
The reason I've chosen to focus on C is twofold: in the game industry 90% of video games are coded in C/C++.

You might want to adjust that 90% of yours, or perhaps adjust your definition of game industry.

Perhaps 90%-ish of games that are boxed and are for purchase in your local store, but remember that the game industry is much, much more then that. The mobile game industry is booming, and web-games have been around for a while too. They usually use higher level languages such as Java/C# or Actionscript, and iOS games are frequently built in Obj-C.

In fact; i've been a professional game programmer for 3 years now, and i hardly know any C++, let alone objective C. But i still have collaborated on 3 titles that are currently available in the appstore. Since we use some amazing middleware (Unity) we can code comfy in our C# environment, even for Android and iOS.

In short i'd like to say that the game industry is much broader then what people think. Its not only the starcrafts, modern warfares and battlefields. Its also Doodle Jump, Dora the Explorer and Hello Kitty online.


Guess what language Unity is written in? Guess what language C# is a derivative of?


How on earth is that relevant? He's talking about areas where you don't need to know C++ specifically, which now is the majority of game development. Knowing C++ is great and all and it's good to have on a resume and so on, but if you want to work on actual gameplay development these days, even at the largest of studios, it's going to be in an interpreted language. It's also ridiculous how much people confuse knowing C++ with knowing how computers and the current crop of OOP programming languages work, if you know C# well enough to have dealt with multithreading and managing the garbage collector, you'll be able to pick C++ very quickly anyway. The hardest things about C++ as a language are unrelated to the language itself anyway, it's stuff like linking and makefiles and dependencies and sometimes having less functionality from the STL than you might expect.

If you can competently do the job you're applying to and demonstrate that through your portfolio and thus demonstrate an ability to learn new subjects, whether you can write the software that you write your software in is irrelevant.

edit: I also totally disagree with the whole "you must know C to understand C++" tripe, C++ is a superset of C so if you know C++ you know C, if you really think removing features and using malloc instead of new is the important part of programming in a lower-level language than interpreted ones, you're really missing the point. By this logic you should learn X86 ASM first so you'll understand how C allocates memory and performs arithmetic, you don't need to know everything, that time is far better spent learning your chosen area of expertise anyway.
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
December 02 2011 20:46 GMT
#114
On December 03 2011 04:22 Fandango wrote:
Show nested quote +
On December 03 2011 04:05 Jaeger wrote:
On December 02 2011 22:04 Slaytilost wrote:
The reason I've chosen to focus on C is twofold: in the game industry 90% of video games are coded in C/C++.

You might want to adjust that 90% of yours, or perhaps adjust your definition of game industry.

Perhaps 90%-ish of games that are boxed and are for purchase in your local store, but remember that the game industry is much, much more then that. The mobile game industry is booming, and web-games have been around for a while too. They usually use higher level languages such as Java/C# or Actionscript, and iOS games are frequently built in Obj-C.

In fact; i've been a professional game programmer for 3 years now, and i hardly know any C++, let alone objective C. But i still have collaborated on 3 titles that are currently available in the appstore. Since we use some amazing middleware (Unity) we can code comfy in our C# environment, even for Android and iOS.

In short i'd like to say that the game industry is much broader then what people think. Its not only the starcrafts, modern warfares and battlefields. Its also Doodle Jump, Dora the Explorer and Hello Kitty online.


Guess what language Unity is written in? Guess what language C# is a derivative of?


How on earth is that relevant? He's talking about areas where you don't need to know C++ specifically, which now is the majority of game development. Knowing C++ is great and all and it's good to have on a resume and so on, but if you want to work on actual gameplay development these days, even at the largest of studios, it's going to be in an interpreted language. It's also ridiculous how much people confuse knowing C++ with knowing how computers and the current crop of OOP programming languages work, if you know C# well enough to have dealt with multithreading and managing the garbage collector, you'll be able to pick C++ very quickly anyway. The hardest things about C++ as a language are unrelated to the language itself anyway, it's stuff like linking and makefiles and dependencies and sometimes having less functionality from the STL than you might expect.

If you can competently do the job you're applying to and demonstrate that through your portfolio and thus demonstrate an ability to learn new subjects, whether you can write the software that you write your software in is irrelevant.

edit: I also totally disagree with the whole "you must know C to understand C++" tripe, C++ is a superset of C so if you know C++ you know C, if you really think removing features and using malloc instead of new is the important part of programming in a lower-level language than interpreted ones, you're really missing the point. By this logic you should learn X86 ASM first so you'll understand how C allocates memory and performs arithmetic, you don't need to know everything, that time is far better spent learning your chosen area of expertise anyway.

You actually do learn to code in Assembly here at DigiPen, in order to appreciate and understand C better. Then by extension, do the same with C to C++. It's fine if you disagree, though you're argument is kinda lacking against mine.

On December 03 2011 04:05 iPAndi wrote:
By the way, im wondering why don't you use something like Microsoft Visual C++ to learn C++ coding instead of DevC++? I mean, dont get me wrong, i loved devc++, but i think Microsoft has such an awesome tool its not even worth digging into devcpp.

Yeah I definitely think VS is much better, but you gotta remember the target audience of that article; people who know literally nothing about programming. Those people aren't going to want to go "buy" VS when there's a free tool much simpler to start off with. Also, that article isn't teaching C++, just some very basic C.
Jaeger
Profile Joined December 2009
United States1150 Posts
December 02 2011 20:57 GMT
#115
On December 03 2011 04:22 Fandango wrote:
Show nested quote +
On December 03 2011 04:05 Jaeger wrote:
On December 02 2011 22:04 Slaytilost wrote:
The reason I've chosen to focus on C is twofold: in the game industry 90% of video games are coded in C/C++.

You might want to adjust that 90% of yours, or perhaps adjust your definition of game industry.

Perhaps 90%-ish of games that are boxed and are for purchase in your local store, but remember that the game industry is much, much more then that. The mobile game industry is booming, and web-games have been around for a while too. They usually use higher level languages such as Java/C# or Actionscript, and iOS games are frequently built in Obj-C.

In fact; i've been a professional game programmer for 3 years now, and i hardly know any C++, let alone objective C. But i still have collaborated on 3 titles that are currently available in the appstore. Since we use some amazing middleware (Unity) we can code comfy in our C# environment, even for Android and iOS.

In short i'd like to say that the game industry is much broader then what people think. Its not only the starcrafts, modern warfares and battlefields. Its also Doodle Jump, Dora the Explorer and Hello Kitty online.


Guess what language Unity is written in? Guess what language C# is a derivative of?


How on earth is that relevant? He's talking about areas where you don't need to know C++ specifically, which now is the majority of game development. Knowing C++ is great and all and it's good to have on a resume and so on, but if you want to work on actual gameplay development these days, even at the largest of studios, it's going to be in an interpreted language. It's also ridiculous how much people confuse knowing C++ with knowing how computers and the current crop of OOP programming languages work, if you know C# well enough to have dealt with multithreading and managing the garbage collector, you'll be able to pick C++ very quickly anyway. The hardest things about C++ as a language are unrelated to the language itself anyway, it's stuff like linking and makefiles and dependencies and sometimes having less functionality from the STL than you might expect.

If you can competently do the job you're applying to and demonstrate that through your portfolio and thus demonstrate an ability to learn new subjects, whether you can write the software that you write your software in is irrelevant.

edit: I also totally disagree with the whole "you must know C to understand C++" tripe, C++ is a superset of C so if you know C++ you know C, if you really think removing features and using malloc instead of new is the important part of programming in a lower-level language than interpreted ones, you're really missing the point. By this logic you should learn X86 ASM first so you'll understand how C allocates memory and performs arithmetic, you don't need to know everything, that time is far better spent learning your chosen area of expertise anyway.


The implication is that you don't need to learn C/C++ to be a good game programmer. At my job we work in C C++ C# PHP Javascript AS3 and more regularly. If you don't know C++ you're going to limit yourself greatly.

In my experience coding gameplay in interpreted languages is done by designers that know scripting not programmers.

And yes you should learn assembly and if you're working in C# you should learn IL as well.

P.S. On Rage we wrote our gameplay logic in C++.

On December 03 2011 05:46 CecilSunkure wrote:
Show nested quote +
On December 03 2011 04:05 iPAndi wrote:
By the way, im wondering why don't you use something like Microsoft Visual C++ to learn C++ coding instead of DevC++? I mean, dont get me wrong, i loved devc++, but i think Microsoft has such an awesome tool its not even worth digging into devcpp.

Yeah I definitely think VS is much better, but you gotta remember the target audience of that article; people who know literally nothing about programming. Those people aren't going to want to go "buy" VS when there's a free tool much simpler to start off with. Also, that article isn't teaching C++, just some very basic C.


FWIW Visual C++ express is free.
https://www.dotabuff.com/players/8137911
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
December 02 2011 20:59 GMT
#116
On December 03 2011 05:57 Jaeger wrote:FWIW Visual C++ express is free.

Oh I didn't realize. Only thing used here at my school is VS 2010 professional atm. Maybe I can get some time to re-write that section to include the use of it
Fandango
Profile Joined October 2011
291 Posts
December 02 2011 21:27 GMT
#117
On December 03 2011 05:57 Jaeger wrote:
Show nested quote +
On December 03 2011 04:22 Fandango wrote:
On December 03 2011 04:05 Jaeger wrote:
On December 02 2011 22:04 Slaytilost wrote:
The reason I've chosen to focus on C is twofold: in the game industry 90% of video games are coded in C/C++.

You might want to adjust that 90% of yours, or perhaps adjust your definition of game industry.

Perhaps 90%-ish of games that are boxed and are for purchase in your local store, but remember that the game industry is much, much more then that. The mobile game industry is booming, and web-games have been around for a while too. They usually use higher level languages such as Java/C# or Actionscript, and iOS games are frequently built in Obj-C.

In fact; i've been a professional game programmer for 3 years now, and i hardly know any C++, let alone objective C. But i still have collaborated on 3 titles that are currently available in the appstore. Since we use some amazing middleware (Unity) we can code comfy in our C# environment, even for Android and iOS.

In short i'd like to say that the game industry is much broader then what people think. Its not only the starcrafts, modern warfares and battlefields. Its also Doodle Jump, Dora the Explorer and Hello Kitty online.


Guess what language Unity is written in? Guess what language C# is a derivative of?


How on earth is that relevant? He's talking about areas where you don't need to know C++ specifically, which now is the majority of game development. Knowing C++ is great and all and it's good to have on a resume and so on, but if you want to work on actual gameplay development these days, even at the largest of studios, it's going to be in an interpreted language. It's also ridiculous how much people confuse knowing C++ with knowing how computers and the current crop of OOP programming languages work, if you know C# well enough to have dealt with multithreading and managing the garbage collector, you'll be able to pick C++ very quickly anyway. The hardest things about C++ as a language are unrelated to the language itself anyway, it's stuff like linking and makefiles and dependencies and sometimes having less functionality from the STL than you might expect.

If you can competently do the job you're applying to and demonstrate that through your portfolio and thus demonstrate an ability to learn new subjects, whether you can write the software that you write your software in is irrelevant.

edit: I also totally disagree with the whole "you must know C to understand C++" tripe, C++ is a superset of C so if you know C++ you know C, if you really think removing features and using malloc instead of new is the important part of programming in a lower-level language than interpreted ones, you're really missing the point. By this logic you should learn X86 ASM first so you'll understand how C allocates memory and performs arithmetic, you don't need to know everything, that time is far better spent learning your chosen area of expertise anyway.


The implication is that you don't need to learn C/C++ to be a good game programmer. At my job we work in C C++ C# PHP Javascript AS3 and more regularly. If you don't know C++ you're going to limit yourself greatly.

In my experience coding gameplay in interpreted languages is done by designers that know scripting not programmers.

And yes you should learn assembly and if you're working in C# you should learn IL as well.

P.S. On Rage we wrote our gameplay logic in C++.


You're talking about big studio development, precisely the opposite of what I'm referencing and precisely where C++ is treasured. There a literally hundreds if not thousands of smaller studios now that create games in situations where you won't ever run into using C++ past some tiny exception like using flash Alchemy or Unity Pro plugins. These are game development positions just as much as working at Id is even if the prestige in your eyes is lower. Yes you're limiting yourself by not knowing C++, but it's not the C++ that's the hard part of learning C++ game development anyway, it's the specific APIs and shader languages, nearly everything else is language inspecific.

The only reason you'll ever need to know IL is if you're implementing an IL based language as a scripting language for a C++ base, which is not relevant to studios that use middleware that handles it anyway. And if you really honestly think that knowing how to program in assembly is a good idea for someone who wants to learn C so they can transitively learn C++ I just don't know what to say.

There's a weird cult of logic that comes from a surprisingly large amount of young games programmers where they have this idea of what's 'proper' and if your skills don't fit that mould you can't do anything in the industry and I think it's a result of the competitive nature of games jobs and especially CompSci and games programming specific university courses. You don't have to do it any specific way as long as you're capable of doing the job that you want and in the current industry (not the one of 10 years ago where a lot of the rigid approach comes from) a lot of them will never call on you to have extensive knowledge of half the things you suggest.

Not to mention the biggest skill in all of game development is the ability to learn new things quickly as need arises. There's a reason why 10-15 years ago most people were hired from completely unrelated fields too but that's a whole other kettle of fish.
Fandango
Profile Joined October 2011
291 Posts
December 02 2011 21:32 GMT
#118
On December 03 2011 05:46 CecilSunkure wrote:
You actually do learn to code in Assembly here at DigiPen, in order to appreciate and understand C better. Then by extension, do the same with C to C++. It's fine if you disagree, though you're argument is kinda lacking against mine.


You haven't argued anything at all, you've literally just said that this is the way it is without any justification, I provided reasoning behind why that approach is flawed and you didn't refute any of it and again just assumed you're right. There's really no reason to continue to argue with you either because you seem to think you know everything about game development when you're still at college and apparently not that far along from your outlook. I'm not suggesting that my outlook is definitively the best or anything i'm just saying that your approach to learning is flawed because you don't really know what you're arguing.
chocorush
Profile Joined June 2009
694 Posts
December 02 2011 21:35 GMT
#119
To be a good programmer, you should understand assembly. It's very useful to know how the computer does what it does.

That being said, the compiler will very certainly be better at assembly than you are, and you don't need to be a good programmer to make games.
Fandango
Profile Joined October 2011
291 Posts
Last Edited: 2011-12-02 21:45:47
December 02 2011 21:43 GMT
#120
On December 03 2011 06:35 chocorush wrote:
To be a good programmer, you should understand assembly. It's very useful to know how the computer does what it does.

That being said, the compiler will very certainly be better at assembly than you are, and you don't need to be a good programmer to make games.


You don't need to know a specific dialect of assembly to understand how the computer does what it does, you should know how a processor works with registers, program counters, the ALU and so on, but there's very little practical value to knowing X86 or ARM assembly these days unless you're working on something that's low level or incredible performance centric in which case you obviously should know it but that's a very small minority of game developers as a whole. Yall seem to be confusing general computer/performance/optimising knowledge with very specific niche technical knowledge, in my opinion.

edit: And a good programmer is the one who does whatever jobs he/she is given in as close to the best possible manner as is possible in the situation, it has absolutely nothing to do with what technical knowledge he/she has if they can do that.
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
December 02 2011 21:48 GMT
#121
On December 03 2011 06:32 Fandango wrote:
Show nested quote +
On December 03 2011 05:46 CecilSunkure wrote:
You actually do learn to code in Assembly here at DigiPen, in order to appreciate and understand C better. Then by extension, do the same with C to C++. It's fine if you disagree, though you're argument is kinda lacking against mine.


You haven't argued anything at all, you've literally just said that this is the way it is without any justification, I provided reasoning behind why that approach is flawed and you didn't refute any of it and again just assumed you're right. There's really no reason to continue to argue with you either because you seem to think you know everything about game development when you're still at college and apparently not that far along from your outlook. I'm not suggesting that my outlook is definitively the best or anything i'm just saying that your approach to learning is flawed because you don't really know what you're arguing.

Sorry I should clarify. By "mine" I meant what I've been taught here. I'm merely quoting people more experienced that me that tell me these things. For example the guy in the podcast in the OP, he's a huge proponent of the philosophy I've cited. I understand what you are saying and why you are saying it, but I just disagree since I trust these people here more than you. Sorry for being a bit unclear on "the argument", as again it isn't mine, just one I trust.
Bey
Profile Joined May 2010
United States78 Posts
Last Edited: 2011-12-02 21:56:42
December 02 2011 21:56 GMT
#122
I've got a bachelor's in CS and have been working in software development for three years now. I do some kernel-mode and some user-mode system stuff - while I'm not on the bare-bones hardware like many of my colleagues, I'm closer than you would need to get for modern game development.

Don't worry about C. There are a lot of things that are bad about C and a lot of practices you'll pick up from starting in C that'll you'll need to unlearn when you move on to more mature languages. There's a reason we don't write software using the same tools that were used in the 1970's and that's because there are a lot of better tools out there today.

Skip C. It's not like a prerequisite, like C is your 101 level class that you have to take before the 102 of C++. It's not like C is arithmetic and C++ is calculus. It's not part of some progression you need to follow. C is different. It's old. There are a lot of ways to do C wrong and only a few ways to do it right. While there are some limited scenarios where it's the proper tool for the job, those are few and far between. And OOP is important. Start learning how to think that way now. When you're learning to be an architect, you don't start designing your first building to be built without hammers. Don't do the same when you're learning to be a developer.

C++ still gives you all the cool ways to shoot yourself in the foot and waste your weekends that C does. It has enough low-level power to prime you for that world but enough high-level expressiveness to get you used to working in that world as well. And if there ever comes a time when you need to fall back and learn C, your exposure to C++ is going to make that easy.

Sure there will be classes which require you to do some ASM and some C and whatever, and that's fine. It's good to have exposure. OCAML was cool to learn in school but fuck if I can even imagine what I'd do with it now. But on your personal projects, the stuff where you get to call the shots and where you get to really pour your heart and soul into it, don't take on this needless restriction of doing C first. For most purposes, C++ offers a *better* way to solve problems and one that your future employers are going to expect you to understand.

TL;DR: There are *drawbacks* to C. It's not a right of passage... in many cases, C is just wrong . Skip it!
Do it. Do it right. Do it right now.
Fandango
Profile Joined October 2011
291 Posts
Last Edited: 2011-12-02 22:04:20
December 02 2011 22:01 GMT
#123
On December 03 2011 06:48 CecilSunkure wrote:
Show nested quote +
On December 03 2011 06:32 Fandango wrote:
On December 03 2011 05:46 CecilSunkure wrote:
You actually do learn to code in Assembly here at DigiPen, in order to appreciate and understand C better. Then by extension, do the same with C to C++. It's fine if you disagree, though you're argument is kinda lacking against mine.


You haven't argued anything at all, you've literally just said that this is the way it is without any justification, I provided reasoning behind why that approach is flawed and you didn't refute any of it and again just assumed you're right. There's really no reason to continue to argue with you either because you seem to think you know everything about game development when you're still at college and apparently not that far along from your outlook. I'm not suggesting that my outlook is definitively the best or anything i'm just saying that your approach to learning is flawed because you don't really know what you're arguing.

Sorry I should clarify. By "mine" I meant what I've been taught here. I'm merely quoting people more experienced that me that tell me these things. For example the guy in the podcast in the OP, he's a huge proponent of the philosophy I've cited. I understand what you are saying and why you are saying it, but I just disagree since I trust these people here more than you. Sorry for being a bit unclear on "the argument", as again it isn't mine, just one I trust.


You should be aware that he's only referring to the studios that stick to the old model of physical media and consoles releases and so on, what i'm referring to is the other side of the industry that makes web games, mobile games (including but not limited to iPhone/Android) and other contracted works where ultra high performance is needed. It's a whole different kettle of fish and there's even parts of big studios that focus on small projects that operate in the same manner and hire the same people. You should always be wary of anyone telling you that the industry is like this or this, it's almost always all of the above it's just whoever is saying it hasn't necessarily been exposed to that side of things.

I've worked at a big studio, ran a small studio that was based on contract work and been to quite a few developer conferences and depending on who you talk to, everyone is wrong and everyone is right. As a student you should just look what you want to do and go about doing that, for you it sounds like big studio development and you're on the right path for that so great. I'd also like to add that at no point am I condoning not learning anything you want to learn about just what is considered a requirement. Although i'd still skip C because it's not going to be relevant to anything but embedded systems programming and unless you want to work on robots or custom peripheral hardware it's probably a waste of time.

edit: Listen to the dude above too he's a cool cat
repomaniak
Profile Joined January 2009
Poland324 Posts
Last Edited: 2011-12-02 22:21:09
December 02 2011 22:14 GMT
#124
http://en.wikipedia.org/wiki/Klik

games factory and other similar - easier way to make your own game without coding

http://www.newgrounds.com/wiki/creator-resources/game-dev-resources/the-games-factory-2

you can create games in flash and upload them into newgrounds - its kind of demo version working only on newgrounds. full version is not cheap
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
Last Edited: 2011-12-02 22:28:18
December 02 2011 22:27 GMT
#125
On December 03 2011 07:01 Fandango wrote:
Show nested quote +
On December 03 2011 06:48 CecilSunkure wrote:
On December 03 2011 06:32 Fandango wrote:
On December 03 2011 05:46 CecilSunkure wrote:
You actually do learn to code in Assembly here at DigiPen, in order to appreciate and understand C better. Then by extension, do the same with C to C++. It's fine if you disagree, though you're argument is kinda lacking against mine.


You haven't argued anything at all, you've literally just said that this is the way it is without any justification, I provided reasoning behind why that approach is flawed and you didn't refute any of it and again just assumed you're right. There's really no reason to continue to argue with you either because you seem to think you know everything about game development when you're still at college and apparently not that far along from your outlook. I'm not suggesting that my outlook is definitively the best or anything i'm just saying that your approach to learning is flawed because you don't really know what you're arguing.

Sorry I should clarify. By "mine" I meant what I've been taught here. I'm merely quoting people more experienced that me that tell me these things. For example the guy in the podcast in the OP, he's a huge proponent of the philosophy I've cited. I understand what you are saying and why you are saying it, but I just disagree since I trust these people here more than you. Sorry for being a bit unclear on "the argument", as again it isn't mine, just one I trust.


You should be aware that he's only referring to the studios that stick to the old model of physical media and consoles releases and so on, what i'm referring to is the other side of the industry that makes web games, mobile games (including but not limited to iPhone/Android) and other contracted works where ultra high performance is needed. It's a whole different kettle of fish and there's even parts of big studios that focus on small projects that operate in the same manner and hire the same people. You should always be wary of anyone telling you that the industry is like this or this, it's almost always all of the above it's just whoever is saying it hasn't necessarily been exposed to that side of things.

I've worked at a big studio, ran a small studio that was based on contract work and been to quite a few developer conferences and depending on who you talk to, everyone is wrong and everyone is right. As a student you should just look what you want to do and go about doing that, for you it sounds like big studio development and you're on the right path for that so great. I'd also like to add that at no point am I condoning not learning anything you want to learn about just what is considered a requirement. Although i'd still skip C because it's not going to be relevant to anything but embedded systems programming and unless you want to work on robots or custom peripheral hardware it's probably a waste of time.

edit: Listen to the dude above too he's a cool cat

Yeah I understand. In the podcast he even himself says that if you're just interested in Flash development that strong foundation in C/C++ isn't really necessary. Nothing was said on mobile development though. From people I've heard talk it sounds like heavy optimization is important in mobile development as well due to limited hardware power. It's just a matter of goals of the target audience.
Fandango
Profile Joined October 2011
291 Posts
December 02 2011 22:36 GMT
#126
On December 03 2011 07:27 CecilSunkure wrote:
Show nested quote +
On December 03 2011 07:01 Fandango wrote:
On December 03 2011 06:48 CecilSunkure wrote:
On December 03 2011 06:32 Fandango wrote:
On December 03 2011 05:46 CecilSunkure wrote:
You actually do learn to code in Assembly here at DigiPen, in order to appreciate and understand C better. Then by extension, do the same with C to C++. It's fine if you disagree, though you're argument is kinda lacking against mine.


You haven't argued anything at all, you've literally just said that this is the way it is without any justification, I provided reasoning behind why that approach is flawed and you didn't refute any of it and again just assumed you're right. There's really no reason to continue to argue with you either because you seem to think you know everything about game development when you're still at college and apparently not that far along from your outlook. I'm not suggesting that my outlook is definitively the best or anything i'm just saying that your approach to learning is flawed because you don't really know what you're arguing.

Sorry I should clarify. By "mine" I meant what I've been taught here. I'm merely quoting people more experienced that me that tell me these things. For example the guy in the podcast in the OP, he's a huge proponent of the philosophy I've cited. I understand what you are saying and why you are saying it, but I just disagree since I trust these people here more than you. Sorry for being a bit unclear on "the argument", as again it isn't mine, just one I trust.


You should be aware that he's only referring to the studios that stick to the old model of physical media and consoles releases and so on, what i'm referring to is the other side of the industry that makes web games, mobile games (including but not limited to iPhone/Android) and other contracted works where ultra high performance is needed. It's a whole different kettle of fish and there's even parts of big studios that focus on small projects that operate in the same manner and hire the same people. You should always be wary of anyone telling you that the industry is like this or this, it's almost always all of the above it's just whoever is saying it hasn't necessarily been exposed to that side of things.

I've worked at a big studio, ran a small studio that was based on contract work and been to quite a few developer conferences and depending on who you talk to, everyone is wrong and everyone is right. As a student you should just look what you want to do and go about doing that, for you it sounds like big studio development and you're on the right path for that so great. I'd also like to add that at no point am I condoning not learning anything you want to learn about just what is considered a requirement. Although i'd still skip C because it's not going to be relevant to anything but embedded systems programming and unless you want to work on robots or custom peripheral hardware it's probably a waste of time.

edit: Listen to the dude above too he's a cool cat

Yeah I understand. In the podcast he even himself says that if you're just interested in Flash development that strong foundation in C/C++ isn't really necessary. Nothing was said on mobile development though. From people I've heard talk it sounds like heavy optimization is important in mobile development as well due to limited hardware power. It's just a matter of goals of the target audience.


Well the issue with mobile development for iPhone and Android (and I believe the old Samsung OS that failed), is that they don't allow you to program in C++ properly anyway, it's either Obj-C or Java. Optimising is far far far far far more down to code design than language speed anyway, compilers (including the JIT ones used in C# or Java) are very good at optimising these days. The biggest thing is always going to be how you've programmed it, removing unnecessary loops, avoiding costly operations and so on. Hardcore optimisations that rely on language speed differences or knowing how to use the different programming caches are like the last resort that rarely need to be done outside of engine development.
Jaeger
Profile Joined December 2009
United States1150 Posts
December 02 2011 23:08 GMT
#127
On December 03 2011 06:27 Fandango wrote:
You're talking about big studio development, precisely the opposite of what I'm referencing and precisely where C++ is treasured.


On December 03 2011 04:22 Fandango wrote:
Knowing C++ is great and all and it's good to have on a resume and so on, but if you want to work on actual gameplay development these days, even at the largest of studios, it's going to be in an interpreted language.
https://www.dotabuff.com/players/8137911
Fandango
Profile Joined October 2011
291 Posts
December 02 2011 23:28 GMT
#128
Yeah in retrospect that was a dumb thing to say, it's probably the majority of gameplay development these days but when UnrealScript is so poor compared to working with full source for UE, that's going to take up a lot of people so i'm not sure if that's true. There's definitely been a huge shift towards fast scripting languages for full engine middleware though, from Gamebryo (glad that's gone) to Unity to Blitztech and so on. It's not like the Id tech based approaches have done well in the last decade or so as middleware though, both Source and IdTech4 are really short on licensed titles. Plus if you were seriously doing the majority of gameplay programming in C++ I can't imagine how Rage ever got finished with all that compile time.

I mean you didn't address any of the other points though so I guess you agree with me on those?
SeeDLiNg
Profile Joined January 2010
United States690 Posts
December 02 2011 23:32 GMT
#129
Thank you so much for posting this
Phrost
Profile Blog Joined May 2010
United States4008 Posts
December 03 2011 00:21 GMT
#130
On December 02 2011 23:26 BisuDagger wrote:
I'm a video game developer, woot! Great article, glad your trying to get more people interested. It's a wonderful field to be in. Anyone who needs help or has questions about getting started feel free to pm me.

Btw, this article reminded me of when I wrote my first Gameboy Advanced game which was, oh so much fun :/


Who let you out of your hole?


Also about the whole c/c++/c#/cwhatever argument, if you learn the lowest level it will help you greater to understand the higher levels. The curriculum at my school (Full Sail in Florida) starts off with the most basic things and slowly works its way up so that you learn the "hard" way and the "easy" or convenient way to do things.

For example, we learned how to store data in a fixed size array, then a dynamic array, then how to use the STL vector. Each getting progressively easier to use but the knowledge of the previous helps a lot.

With the array knowledge we were able to learn how to construct basic strings before learning the STL string class.

I would highly suggest starting as low as possible and working your way up.
iamphrost.tumblr.com // http://howtobebettermagicplayer.tumblr.com // twitter @phrost_
RayGay
Profile Joined December 2011
1 Post
December 03 2011 00:36 GMT
#131
I think that this is just a list of things that you like to do because you think you're good at programming, AKA you're showing off.
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
December 03 2011 00:40 GMT
#132
On December 03 2011 09:36 RayGay wrote:
I think that this is just a list of things that you like to do because you think you're good at programming, AKA you're showing off.

Then don't read it. No need to make a new account just to tell me that
Jaeger
Profile Joined December 2009
United States1150 Posts
December 03 2011 01:10 GMT
#133
On December 03 2011 08:28 Fandango wrote:
Yeah in retrospect that was a dumb thing to say, it's probably the majority of gameplay development these days but when UnrealScript is so poor compared to working with full source for UE, that's going to take up a lot of people so i'm not sure if that's true. There's definitely been a huge shift towards fast scripting languages for full engine middleware though, from Gamebryo (glad that's gone) to Unity to Blitztech and so on. It's not like the Id tech based approaches have done well in the last decade or so as middleware though, both Source and IdTech4 are really short on licensed titles. Plus if you were seriously doing the majority of gameplay programming in C++ I can't imagine how Rage ever got finished with all that compile time.

I mean you didn't address any of the other points though so I guess you agree with me on those?


Not necessarily I mostly just have work to do so I have to pick my battles .

To address a few more of your points:

I will agree that the most important things are language agnostic. For example solid OO design, task driven parallelism, algorithms, data structures, agile process.

I will still contend that you need to have a solid understanding of what your code actually does. This includes having a solid understanding of the target machine architecture and at least a working understanding of any language your code is compiled down to (IL, x86, ARM, etc). Knowing what the high level code you're writing is actually doing is important even in high level garbage collected managed languages. And while you don't need to always think about what your code is doing at the hardware level, being able to do that analysis makes you a more valuable coder and will subconsciously lead you towards better design.

The ability to learn new things quickly is important but somewhat misleading. Really it's the ability to apply existing knowledge to new circumstances.

Compile time is not an issue if you architect your code properly. Make use of components in separately compiled libraries and compilation firewalls. In lieu of good architecture you can always just throw money at the problem and use IncrediBuild.
https://www.dotabuff.com/players/8137911
iplayBANJO
Profile Joined September 2010
United States129 Posts
December 03 2011 01:27 GMT
#134
On December 03 2011 09:21 Phrost wrote:
Also about the whole c/c++/c#/cwhatever argument, if you learn the lowest level it will help you greater to understand the higher levels. The curriculum at my school (Full Sail in Florida) starts off with the most basic things and slowly works its way up so that you learn the "hard" way and the "easy" or convenient way to do things.

For example, we learned how to store data in a fixed size array, then a dynamic array, then how to use the STL vector. Each getting progressively easier to use but the knowledge of the previous helps a lot.


That's always what bothered me about the CS major, which I am still working on. It seems like every time you struggle through some difficult class you're told at the end to not worry about how hard it was, you'll probably never have to do anything like that again. Then you move on to another class that ends with a similar process. It's kind of disheartening, especially since I love the C and assembly that I have done, and I feel like I thrive off of all the frustrating bit twiddling that I get sucked into all the time.
"So you think you know stuff about things? Well, I will see your stuff about things, and raise you things about stuff."
Umpteen
Profile Blog Joined April 2010
United Kingdom1570 Posts
December 03 2011 01:42 GMT
#135
On December 03 2011 09:36 RayGay wrote:
I think that this is just a list of things that you like to do because you think you're good at programming, AKA you're showing off.


... and you're doing what, here?

Irony: kind of like iron.
The existence of a food chain is inescapable if we evolved unsupervised, and inexcusable otherwise.
Fandango
Profile Joined October 2011
291 Posts
December 03 2011 02:04 GMT
#136
On December 03 2011 10:10 Jaeger wrote:
Show nested quote +
On December 03 2011 08:28 Fandango wrote:
Yeah in retrospect that was a dumb thing to say, it's probably the majority of gameplay development these days but when UnrealScript is so poor compared to working with full source for UE, that's going to take up a lot of people so i'm not sure if that's true. There's definitely been a huge shift towards fast scripting languages for full engine middleware though, from Gamebryo (glad that's gone) to Unity to Blitztech and so on. It's not like the Id tech based approaches have done well in the last decade or so as middleware though, both Source and IdTech4 are really short on licensed titles. Plus if you were seriously doing the majority of gameplay programming in C++ I can't imagine how Rage ever got finished with all that compile time.

I mean you didn't address any of the other points though so I guess you agree with me on those?


Not necessarily I mostly just have work to do so I have to pick my battles .

To address a few more of your points:

I will agree that the most important things are language agnostic. For example solid OO design, task driven parallelism, algorithms, data structures, agile process.

I will still contend that you need to have a solid understanding of what your code actually does. This includes having a solid understanding of the target machine architecture and at least a working understanding of any language your code is compiled down to (IL, x86, ARM, etc). Knowing what the high level code you're writing is actually doing is important even in high level garbage collected managed languages. And while you don't need to always think about what your code is doing at the hardware level, being able to do that analysis makes you a more valuable coder and will subconsciously lead you towards better design.

The ability to learn new things quickly is important but somewhat misleading. Really it's the ability to apply existing knowledge to new circumstances.

Compile time is not an issue if you architect your code properly. Make use of components in separately compiled libraries and compilation firewalls. In lieu of good architecture you can always just throw money at the problem and use IncrediBuild.



My issue with the assembly/hardware architecture thing isn't that it isn't worthwhile or isn't valuable to know, it's that utility of that information when you're writing flash games or android games or really anything that's expected to run in a VM on a huge range of hardware setups is pretty minimal. Given the generally unspecialised nature of the work you'd be more efficient at what you do by learning how to do a wide range of game elements from physics engines to GUI systems to general good code architecture.

On the apply existing knowledge thing you're right that's a better way to put it and the above knowledge will certainly help with that. I keep wanting to say that C++ will inherently teach you most of the things you'll need to know but i'm wary since I did computer science so who knows what I take for granted.
Soan
Profile Blog Joined August 2010
New Zealand194 Posts
December 03 2011 02:30 GMT
#137
Nice post, I actually just finished a 32 week diploma here at Media Design School in NZ that focused on game programming. I loved it, and would recommend the school to anyone in NZ or even in the general oceanic area that wants to do game dev stuff (either programming or art, you'll see why in a second), as the school is great. I'm actually going back next year to do the graduate diploma of game dev, where they mix programmers and artists together for some portions of the course, and all end up working together in teams a six month game project.

On my course, they assume you have no previous programming knowledge, and start teaching C++ from scratch. Our first assignment was actually a text based battleships. From there, we moved onto the Windows GDI and made some sprite games. Before we moved onto DirectX, they actually taught us how to do all the 3D maths, matrix transformations and projections etc manually, supposedly so we'd have a better understanding of the pipeline, but I have no idea if that helped.

We actually ended with an 8 week team project, where we designed and then built a 3D game from scratch. Our class ended up with a Wipeout clone(my team), a Plants vs Zombies clone, and a more traditional tower defense game.

For me personally, I'm definitly going to use the break to work on some stuff before going back. Given that alot of the studios locally here, both game and non-game seem to be mobile/web focused, going to be looking at creating a mobile game or two. Also plan on fixing our collision detection based assignment (a pool game!), as I screwed it up.
Jaeger
Profile Joined December 2009
United States1150 Posts
Last Edited: 2011-12-03 02:41:52
December 03 2011 02:40 GMT
#138
On December 03 2011 11:04 Fandango wrote:
Show nested quote +
On December 03 2011 10:10 Jaeger wrote:
On December 03 2011 08:28 Fandango wrote:
Yeah in retrospect that was a dumb thing to say, it's probably the majority of gameplay development these days but when UnrealScript is so poor compared to working with full source for UE, that's going to take up a lot of people so i'm not sure if that's true. There's definitely been a huge shift towards fast scripting languages for full engine middleware though, from Gamebryo (glad that's gone) to Unity to Blitztech and so on. It's not like the Id tech based approaches have done well in the last decade or so as middleware though, both Source and IdTech4 are really short on licensed titles. Plus if you were seriously doing the majority of gameplay programming in C++ I can't imagine how Rage ever got finished with all that compile time.

I mean you didn't address any of the other points though so I guess you agree with me on those?


Not necessarily I mostly just have work to do so I have to pick my battles .

To address a few more of your points:

I will agree that the most important things are language agnostic. For example solid OO design, task driven parallelism, algorithms, data structures, agile process.

I will still contend that you need to have a solid understanding of what your code actually does. This includes having a solid understanding of the target machine architecture and at least a working understanding of any language your code is compiled down to (IL, x86, ARM, etc). Knowing what the high level code you're writing is actually doing is important even in high level garbage collected managed languages. And while you don't need to always think about what your code is doing at the hardware level, being able to do that analysis makes you a more valuable coder and will subconsciously lead you towards better design.

The ability to learn new things quickly is important but somewhat misleading. Really it's the ability to apply existing knowledge to new circumstances.

Compile time is not an issue if you architect your code properly. Make use of components in separately compiled libraries and compilation firewalls. In lieu of good architecture you can always just throw money at the problem and use IncrediBuild.



My issue with the assembly/hardware architecture thing isn't that it isn't worthwhile or isn't valuable to know, it's that utility of that information when you're writing flash games or android games or really anything that's expected to run in a VM on a huge range of hardware setups is pretty minimal. Given the generally unspecialised nature of the work you'd be more efficient at what you do by learning how to do a wide range of game elements from physics engines to GUI systems to general good code architecture.

On the apply existing knowledge thing you're right that's a better way to put it and the above knowledge will certainly help with that. I keep wanting to say that C++ will inherently teach you most of the things you'll need to know but i'm wary since I did computer science so who knows what I take for granted.


FWIW I just finished working on a Flash game for facebook using AS3, PHP and Javascript and I'm currently working on an iOS game using C# in Unity so it's not like I don't have perspective on the kinds of projects you're talking about.

I find that knowledge valuable and very useful.
https://www.dotabuff.com/players/8137911
sluggaslamoo
Profile Blog Joined November 2009
Australia4494 Posts
Last Edited: 2011-12-03 02:52:07
December 03 2011 02:48 GMT
#139
C++ is a terrible language (even compared to C), but it is absolutely necessary if you want to work for a large games studio.

Knowing C will hardly help when it comes to C++ either, it is completely different, only that C++ is backwards compatible with C, so you can write C and claim you are doing C++ . The only areas C will help is with learning basic programming concepts like functional decomposition and memory management, after that, everything is different.

Its also important that you know assembly language, as with working with huge games, it is vital for debugging.

I originally wanted to become a games programmer. Although I know C++ as well as a ton of other languages, I won't be doing games programming simply because I hate C++ . I worked on phone and facebook games for a while in Obj-C and Ruby (I love Ruby!) but everyone was really stressed out and I didn't like working there.


On December 03 2011 04:05 iPAndi wrote:
By the way, im wondering why don't you use something like Microsoft Visual C++ to learn C++ coding instead of DevC++? I mean, dont get me wrong, i loved devc++, but i think Microsoft has such an awesome tool its not even worth digging into devcpp.


Windows is a terrible platform for doing Dev work. I love working on Linux, and its so easy and quick to set up and isolate dev environments. Mac is ok simply because of Bash, but apart from that, its still Windows as far as developing is concerned. I do all my dev work in Xmonad, I am 100x more productive in a tiling window manager, than a crappy point and click one.
Come play Android Netrunner - http://www.teamliquid.net/forum/viewmessage.php?topic_id=409008
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
December 03 2011 02:52 GMT
#140
On December 03 2011 11:48 sluggaslamoo wrote:
Knowing C will hardly help when it comes to C++... it is completely different...

The whole point of learning C, according to the professionals at my school, is that it is different from C++.
iiTiamatii
Profile Blog Joined August 2010
United States73 Posts
December 03 2011 03:42 GMT
#141
On December 03 2011 09:21 Phrost wrote:

Also about the whole c/c++/c#/cwhatever argument, if you learn the lowest level it will help you greater to understand the higher levels. The curriculum at my school (Full Sail in Florida) starts off with the most basic things and slowly works its way up so that you learn the "hard" way and the "easy" or convenient way to do things.

For example, we learned how to store data in a fixed size array, then a dynamic array, then how to use the STL vector. Each getting progressively easier to use but the knowledge of the previous helps a lot.

With the array knowledge we were able to learn how to construct basic strings before learning the STL string class.

I would highly suggest starting as low as possible and working your way up.


This is also relevant aside from a "useful to learn the later things" standpoint because each has its own advantages. There's a lot of knowledge that you get from programming from lower level languages that seems very theoretical and irrelevant at first but ends up being useful. From an "I want to fill a list of things" in a perfect world, you'll always just use the STL vector. But once you have real-world limitations (memory footprint, speed, flexibility, usability), you'll find that each approach is useful in its own right. Also you'll have the knowledge necessary to write your own version of the STL vector or dynamic array that fits a specific balance of performance vs. flexibility.

However you'll be looking at most of those differences just within the scope of C++ already, so while I might suggest learning assembly and C in a world where you have infinite time, I would suggest just skipping to C++.
SCbiff
Profile Joined May 2010
110 Posts
December 03 2011 03:50 GMT
#142
On December 03 2011 06:56 Bey wrote:
Don't worry about C. There are a lot of things that are bad about C and a lot of practices you'll pick up from starting in C that'll you'll need to unlearn when you move on to more mature languages. There's a reason we don't write software using the same tools that were used in the 1970's and that's because there are a lot of better tools out there today.

Skip C. It's not like a prerequisite, like C is your 101 level class that you have to take before the 102 of C++. It's not like C is arithmetic and C++ is calculus. It's not part of some progression you need to follow. C is different. It's old. There are a lot of ways to do C wrong and only a few ways to do it right. While there are some limited scenarios where it's the proper tool for the job, those are few and far between. And OOP is important. Start learning how to think that way now. When you're learning to be an architect, you don't start designing your first building to be built without hammers. Don't do the same when you're learning to be a developer.


I'm sorry, but this is tripe. If I had a dollar for every time somebody's told me that C is just an accident waiting to happen, I could retire right now and make my own video game. C, like any other language, is a tool. It's no more prone to "doing things wrong" than any other language, and BY FAR, the more important issue is the quality of the programmer. So much more, in fact, that I assert the language is largely irrelevant in the discussion. I'll take a great C programmer over a mediocre C++ (or any other language) programmer any day.

Furthermore, assuming C++ is where you're heading (which I think is a smart choice since almost all game development is done in C/C++ right now), I don't see a reason to not learn C since it is a subset of C++ anyway (IOW, you have to learn C to learn C++). But even more important is simply that C is so ubiquitous, that to not learn it for almost any CS field now, with the possible exception of exclusive front-end web development, would be a dubious decision. Let me just put it this way - I don't know a single C programmer right now that can't find a job, but I know plenty of ruby/php developers that are struggling, mainly because they are only able to do one thing. C proficiency will always be a valuable resource, at least for the foreseeable future.

Lastly, learning any language is valuable. The number one reason I like prospective applicants who have C experience is that the lower-level nature of the language requires you to understand (better) how the computer is actually working. Abstraction, as a concept, is a nice idea and has its place, but I want the people I'm working with to really know what's happening under the scenes, and I feel that C experience helps there.

So, in short: Learn C. You will almost certain use the knowledge, especially in game development, and it will make you a better programmer even if not (and you have to learn it to learn C++ anyway).
Neo27
Profile Blog Joined August 2009
United States154 Posts
December 03 2011 04:37 GMT
#143
On November 17 2011 05:56 Lysenko wrote:
Show nested quote +
On November 17 2011 05:18 CecilSunkure wrote:
So I began to research. What I found is there are three main types of developers:
  • Programmers
  • Artists
  • Designers
  • Writers/Sound Engineers


At first I scratched my head, then I realized that like any good C programmer you started at an index of 0.


I'm a programmer and I missed that. Nice work!
"I was born too damn early! Where were these games when I was a kid?" - Angry Video Game Nerd
eieio
Profile Blog Joined November 2009
United States14512 Posts
Last Edited: 2011-12-03 05:54:18
December 03 2011 05:27 GMT
#144
Great blog :D Hope it gets a few more people into coding.

On December 03 2011 07:36 Fandango wrote:
Show nested quote +
On December 03 2011 07:27 CecilSunkure wrote:
On December 03 2011 07:01 Fandango wrote:
On December 03 2011 06:48 CecilSunkure wrote:
On December 03 2011 06:32 Fandango wrote:
On December 03 2011 05:46 CecilSunkure wrote:
You actually do learn to code in Assembly here at DigiPen, in order to appreciate and understand C better. Then by extension, do the same with C to C++. It's fine if you disagree, though you're argument is kinda lacking against mine.


You haven't argued anything at all, you've literally just said that this is the way it is without any justification, I provided reasoning behind why that approach is flawed and you didn't refute any of it and again just assumed you're right. There's really no reason to continue to argue with you either because you seem to think you know everything about game development when you're still at college and apparently not that far along from your outlook. I'm not suggesting that my outlook is definitively the best or anything i'm just saying that your approach to learning is flawed because you don't really know what you're arguing.

Sorry I should clarify. By "mine" I meant what I've been taught here. I'm merely quoting people more experienced that me that tell me these things. For example the guy in the podcast in the OP, he's a huge proponent of the philosophy I've cited. I understand what you are saying and why you are saying it, but I just disagree since I trust these people here more than you. Sorry for being a bit unclear on "the argument", as again it isn't mine, just one I trust.


You should be aware that he's only referring to the studios that stick to the old model of physical media and consoles releases and so on, what i'm referring to is the other side of the industry that makes web games, mobile games (including but not limited to iPhone/Android) and other contracted works where ultra high performance is needed. It's a whole different kettle of fish and there's even parts of big studios that focus on small projects that operate in the same manner and hire the same people. You should always be wary of anyone telling you that the industry is like this or this, it's almost always all of the above it's just whoever is saying it hasn't necessarily been exposed to that side of things.

I've worked at a big studio, ran a small studio that was based on contract work and been to quite a few developer conferences and depending on who you talk to, everyone is wrong and everyone is right. As a student you should just look what you want to do and go about doing that, for you it sounds like big studio development and you're on the right path for that so great. I'd also like to add that at no point am I condoning not learning anything you want to learn about just what is considered a requirement. Although i'd still skip C because it's not going to be relevant to anything but embedded systems programming and unless you want to work on robots or custom peripheral hardware it's probably a waste of time.

edit: Listen to the dude above too he's a cool cat

Yeah I understand. In the podcast he even himself says that if you're just interested in Flash development that strong foundation in C/C++ isn't really necessary. Nothing was said on mobile development though. From people I've heard talk it sounds like heavy optimization is important in mobile development as well due to limited hardware power. It's just a matter of goals of the target audience.


Well the issue with mobile development for iPhone and Android (and I believe the old Samsung OS that failed), is that they don't allow you to program in C++ properly anyway, it's either Obj-C or Java. Optimising is far far far far far more down to code design than language speed anyway, compilers (including the JIT ones used in C# or Java) are very good at optimising these days. The biggest thing is always going to be how you've programmed it, removing unnecessary loops, avoiding costly operations and so on. Hardcore optimisations that rely on language speed differences or knowing how to use the different programming caches are like the last resort that rarely need to be done outside of engine development.


iOS developer here. The vast majority of time the biggest concern(at least for me) when you're optimizing your code for a mobile device is much more related to maximizing battery life than to "optimization" as we often think of it. A simple example: when you're using the phone's GPS for a location-based app it's very important to weigh the benefit of increasing the accuracy of your current measurement versus the cost of obtaining the measurement in terms of battery life. It is very easy to construct an app that will destroy battery life. It's definitely true that there are situations where you're constrained by hardware power and you have to keep that in mind, but I feel like much of that typically falls under the general category of programming well. Unless it involves significant obfuscation of your code one should be choosing a reasonably optimal solution.

Also, fuck objective c.
LiquidDota Staff
TL+ Member
Kogut
Profile Blog Joined September 2010
United States147 Posts
December 03 2011 06:28 GMT
#145
Just wanted to add my commendations to what you've done in this thread and with your life. Excellent job writing this up, and excellent job following your dreams and being an encouraging figure for young programmers. I'm on the management side of life, but I go downstairs when I can and look over the shoulders of the programmers we have at my office.

Cheers.
CHILL GET OUT
hasuterrans
Profile Joined April 2009
United States614 Posts
Last Edited: 2011-12-03 10:32:53
December 03 2011 10:32 GMT
#146
On December 03 2011 12:50 SCbiff wrote:
Show nested quote +
On December 03 2011 06:56 Bey wrote:
Don't worry about C. There are a lot of things that are bad about C and a lot of practices you'll pick up from starting in C that'll you'll need to unlearn when you move on to more mature languages. There's a reason we don't write software using the same tools that were used in the 1970's and that's because there are a lot of better tools out there today.

Skip C. It's not like a prerequisite, like C is your 101 level class that you have to take before the 102 of C++. It's not like C is arithmetic and C++ is calculus. It's not part of some progression you need to follow. C is different. It's old. There are a lot of ways to do C wrong and only a few ways to do it right. While there are some limited scenarios where it's the proper tool for the job, those are few and far between. And OOP is important. Start learning how to think that way now. When you're learning to be an architect, you don't start designing your first building to be built without hammers. Don't do the same when you're learning to be a developer.


I'm sorry, but this is tripe. If I had a dollar for every time somebody's told me that C is just an accident waiting to happen, I could retire right now and make my own video game. C, like any other language, is a tool. It's no more prone to "doing things wrong" than any other language, and BY FAR, the more important issue is the quality of the programmer. So much more, in fact, that I assert the language is largely irrelevant in the discussion. I'll take a great C programmer over a mediocre C++ (or any other language) programmer any day.

Furthermore, assuming C++ is where you're heading (which I think is a smart choice since almost all game development is done in C/C++ right now), I don't see a reason to not learn C since it is a subset of C++ anyway (IOW, you have to learn C to learn C++). But even more important is simply that C is so ubiquitous, that to not learn it for almost any CS field now, with the possible exception of exclusive front-end web development, would be a dubious decision. Let me just put it this way - I don't know a single C programmer right now that can't find a job, but I know plenty of ruby/php developers that are struggling, mainly because they are only able to do one thing. C proficiency will always be a valuable resource, at least for the foreseeable future.

Lastly, learning any language is valuable. The number one reason I like prospective applicants who have C experience is that the lower-level nature of the language requires you to understand (better) how the computer is actually working. Abstraction, as a concept, is a nice idea and has its place, but I want the people I'm working with to really know what's happening under the scenes, and I feel that C experience helps there.

So, in short: Learn C. You will almost certain use the knowledge, especially in game development, and it will make you a better programmer even if not (and you have to learn it to learn C++ anyway).


Yeah learning a language requiring explicit memory management will make you a better programmer regardless of whether it's C, C++ etc.
brain_
Profile Joined June 2010
United States812 Posts
December 03 2011 10:49 GMT
#147
I'm a Compsci (game emphasis) major finishing my second semester of C++... And I have to say, C looks sort of crazy. Not looking forward to writing an operating system in it during my senior year. Also blows my mind that you could accomplish anything without objects. >_<
chokke
Profile Joined August 2010
Norway228 Posts
December 03 2011 11:40 GMT
#148
I am nearly done with my first semester for my game programming degree-thingy and I was told the opposite. Grades don't mean shit.
IF you are good, you will be a great contribution to large teams. If you are bad, you can run the company to the ground basically. Due to the efficiency of code, ability to make it easy to understand and so on.

Since many people don't got any programming experience on the study, the first two semesters are basically learning math and programming with small game-related studies since we share class with general program-study and network security.
Can't wait till next autumn, where we'll really start this up.

We'll be using Java for AI-programming for some reason,


As a small side-note, I can't wait to make my own game engine. My biggest dream is probably to work behind the game, adjusting, optimizing the engine people using (prefferably DICE, Valve or Blizzard).
Tobberoth
Profile Joined August 2010
Sweden6375 Posts
December 03 2011 11:50 GMT
#149
On December 03 2011 19:32 hasuterrans wrote:
Show nested quote +
On December 03 2011 12:50 SCbiff wrote:
On December 03 2011 06:56 Bey wrote:
Don't worry about C. There are a lot of things that are bad about C and a lot of practices you'll pick up from starting in C that'll you'll need to unlearn when you move on to more mature languages. There's a reason we don't write software using the same tools that were used in the 1970's and that's because there are a lot of better tools out there today.

Skip C. It's not like a prerequisite, like C is your 101 level class that you have to take before the 102 of C++. It's not like C is arithmetic and C++ is calculus. It's not part of some progression you need to follow. C is different. It's old. There are a lot of ways to do C wrong and only a few ways to do it right. While there are some limited scenarios where it's the proper tool for the job, those are few and far between. And OOP is important. Start learning how to think that way now. When you're learning to be an architect, you don't start designing your first building to be built without hammers. Don't do the same when you're learning to be a developer.


I'm sorry, but this is tripe. If I had a dollar for every time somebody's told me that C is just an accident waiting to happen, I could retire right now and make my own video game. C, like any other language, is a tool. It's no more prone to "doing things wrong" than any other language, and BY FAR, the more important issue is the quality of the programmer. So much more, in fact, that I assert the language is largely irrelevant in the discussion. I'll take a great C programmer over a mediocre C++ (or any other language) programmer any day.

Furthermore, assuming C++ is where you're heading (which I think is a smart choice since almost all game development is done in C/C++ right now), I don't see a reason to not learn C since it is a subset of C++ anyway (IOW, you have to learn C to learn C++). But even more important is simply that C is so ubiquitous, that to not learn it for almost any CS field now, with the possible exception of exclusive front-end web development, would be a dubious decision. Let me just put it this way - I don't know a single C programmer right now that can't find a job, but I know plenty of ruby/php developers that are struggling, mainly because they are only able to do one thing. C proficiency will always be a valuable resource, at least for the foreseeable future.

Lastly, learning any language is valuable. The number one reason I like prospective applicants who have C experience is that the lower-level nature of the language requires you to understand (better) how the computer is actually working. Abstraction, as a concept, is a nice idea and has its place, but I want the people I'm working with to really know what's happening under the scenes, and I feel that C experience helps there.

So, in short: Learn C. You will almost certain use the knowledge, especially in game development, and it will make you a better programmer even if not (and you have to learn it to learn C++ anyway).


Yeah learning a language requiring explicit memory management will make you a better programmer regardless of whether it's C, C++ etc.

That's a really diffuse comment. A better programmer in what way?

See, when programming in C# or Java, it's definitely not bad to know how memory works. That doesn't mean you have to have experience with explicit memory management. All you need to know is the worst case scenarios for the garbage collector and minimize those, and learning memory management in C or C++ doesn't help at all since it's a completely different system. Experience with explicit memory management will generally not give you any advantages when programming in languages with garbage collection since you aren't explicitly managing it anyway.
Slaytilost
Profile Joined October 2010
Netherlands968 Posts
Last Edited: 2011-12-03 13:33:02
December 03 2011 13:29 GMT
#150
On December 03 2011 03:31 CecilSunkure wrote:

Show nested quote +
On December 02 2011 22:04 Slaytilost wrote:
The reason I've chosen to focus on C is twofold: in the game industry 90% of video games are coded in C/C++.

You might want to adjust that 90% of yours, or perhaps adjust your definition of game industry.

Perhaps 90%-ish of games that are boxed and are for purchase in your local store, but remember that the game industry is much, much more then that. The mobile game industry is booming, and web-games have been around for a while too. They usually use higher level languages such as Java/C# or Actionscript, and iOS games are frequently built in Obj-C.

In fact; i've been a professional game programmer for 3 years now, and i hardly know any C++, let alone objective C. But i still have collaborated on 3 titles that are currently available in the appstore. Since we use some amazing middleware (Unity) we can code comfy in our C# environment, even for Android and iOS.

In short i'd like to say that the game industry is much broader then what people think. Its not only the starcrafts, modern warfares and battlefields. Its also Doodle Jump, Dora the Explorer and Hello Kitty online.

I understand, but that's a pretty specialized area. You'd have immense trouble getting a job in a lot of other areas due to not knowing C++. Also the quote was actually loosely quoted from the podcast in the OP by one of the teachers here at DigiPen.



Specialized? I'd beg the differ, i'd say triple A studios are specialized. Just count the number of studios creating triple a titles, and the smaller studios that create other games, including but not limited to educational and serious games. There's only a very small portion of the whole industry actually working on triple A titles, and for good measure. Working at a triple a studio sucks, bigtime. Just ask any employee at such a studio (i know a couple), the work hours are terrible and crunchtime goes on continuously.

Immense trouble getting a job in other area's? Well, .NET developers and even sharepoint developers are in high demand if you are looking outside the game industry. Sure, if you want to work at a triple A studio a decent knowledge of hardcore game dev. concepts are needed, but you can get along well if you dont have that. Besides, a programming language is a tool to get the job done, its not that significant. Just about everything C++ can do C# can too, its the concepts and the maths that are hard to learn.
sluggaslamoo
Profile Blog Joined November 2009
Australia4494 Posts
December 03 2011 14:33 GMT
#151
On December 03 2011 19:49 brain_ wrote:
I'm a Compsci (game emphasis) major finishing my second semester of C++... And I have to say, C looks sort of crazy. Not looking forward to writing an operating system in it during my senior year. Also blows my mind that you could accomplish anything without objects. >_<


Interesting that you learned OOP before Structured Programming. Hopefully you will learn Functional programming (I did business instead of comp-sci so I don't know what the syllabus is), if structured programming will blow your mind, then functional programming will blow up your whole universe.

Quicksort in one line of Haskell

qsortOneLine xs = concat [qsortOneLine [y | y <- tail xs, y < x] ++ x : qsortOneLine [y | y <- tail xs, y >= x] | x <- take 1 xs]
Come play Android Netrunner - http://www.teamliquid.net/forum/viewmessage.php?topic_id=409008
tehelsper
Profile Joined August 2010
United States19 Posts
December 03 2011 16:55 GMT
#152
Wow, I am always excited when I see new people getting into programming - especially with writing and communication skills like yours. If you keep at it, I am sure you will find a terrific job in the tech field.

Your story is very similar to mine when I started programming 10 years ago. I was in middle school and started programming in Blitz BASIC. It's a language that was relatively simple and offered some nice tools specifically for programming simple video games. I agree that C/C++ is probably the best language to learn and use at this point. Because it is so powerful, learning it will make most other languages seem easy. It will force you to manually perform memory management which is important to understand if you want to develop complex, yet efficient applications. I use C/C++ now working on software for embedded systems used in Routers and Switches and no other language would be possible in this situation. Its size and speed allow us to work in these limited environments.

I graduated from college with a degree in software engineering and I was easily able to find a great job right after graduating. It seems like software is one of the fields that is still relatively prosperous in this bad economy. So if you really enjoy this, and it seems you do, keep at it and I'm sure you won't regret it!

On November 17 2011 05:18 CecilSunkure wrote:
For the longest time I always considered people who develop video games far and out of reach. I just sort of assumed they were people who were really rich and had family that got them into that field of profession. I just had no clue how anyone would actually go about developing video games, or how they'd get there in the first place.


I also have a little aside / advice. This type of thinking is very dangerous and will only prevent you from succeeding. You can control what you become and don't let anyone tell you other wise.
Jaeger
Profile Joined December 2009
United States1150 Posts
December 03 2011 19:31 GMT
#153
On December 03 2011 19:49 brain_ wrote:
I'm a Compsci (game emphasis) major finishing my second semester of C++... And I have to say, C looks sort of crazy. Not looking forward to writing an operating system in it during my senior year. Also blows my mind that you could accomplish anything without objects. >_<


I highly recommend you check out the book Inside the C++ Object Model. Through it you can see how objects actually work and you should then be able to see how you can write object oriented code in C.

+ Show Spoiler +

Basically you make structs with all your members in them. All of the methods on the object are free functions that take a pointer to the struct as their first member (this pointer). If you need virtual functions you store a pointer to a static function table in your struct and look up which function to call using that table. You can implement privates by putting them in the .c file and not exposing them to the header. You can have private members by having a private struct in the .c file which has the public struct from the .h file as its first member followed by the private members then mallocing this private struct and returning the pointer to the public struct. Then you can simply cast to the private type when you need access to the private members.


On December 03 2011 20:50 Tobberoth wrote:
Show nested quote +
On December 03 2011 19:32 hasuterrans wrote:
On December 03 2011 12:50 SCbiff wrote:
On December 03 2011 06:56 Bey wrote:
Don't worry about C. There are a lot of things that are bad about C and a lot of practices you'll pick up from starting in C that'll you'll need to unlearn when you move on to more mature languages. There's a reason we don't write software using the same tools that were used in the 1970's and that's because there are a lot of better tools out there today.

Skip C. It's not like a prerequisite, like C is your 101 level class that you have to take before the 102 of C++. It's not like C is arithmetic and C++ is calculus. It's not part of some progression you need to follow. C is different. It's old. There are a lot of ways to do C wrong and only a few ways to do it right. While there are some limited scenarios where it's the proper tool for the job, those are few and far between. And OOP is important. Start learning how to think that way now. When you're learning to be an architect, you don't start designing your first building to be built without hammers. Don't do the same when you're learning to be a developer.


I'm sorry, but this is tripe. If I had a dollar for every time somebody's told me that C is just an accident waiting to happen, I could retire right now and make my own video game. C, like any other language, is a tool. It's no more prone to "doing things wrong" than any other language, and BY FAR, the more important issue is the quality of the programmer. So much more, in fact, that I assert the language is largely irrelevant in the discussion. I'll take a great C programmer over a mediocre C++ (or any other language) programmer any day.

Furthermore, assuming C++ is where you're heading (which I think is a smart choice since almost all game development is done in C/C++ right now), I don't see a reason to not learn C since it is a subset of C++ anyway (IOW, you have to learn C to learn C++). But even more important is simply that C is so ubiquitous, that to not learn it for almost any CS field now, with the possible exception of exclusive front-end web development, would be a dubious decision. Let me just put it this way - I don't know a single C programmer right now that can't find a job, but I know plenty of ruby/php developers that are struggling, mainly because they are only able to do one thing. C proficiency will always be a valuable resource, at least for the foreseeable future.

Lastly, learning any language is valuable. The number one reason I like prospective applicants who have C experience is that the lower-level nature of the language requires you to understand (better) how the computer is actually working. Abstraction, as a concept, is a nice idea and has its place, but I want the people I'm working with to really know what's happening under the scenes, and I feel that C experience helps there.

So, in short: Learn C. You will almost certain use the knowledge, especially in game development, and it will make you a better programmer even if not (and you have to learn it to learn C++ anyway).


Yeah learning a language requiring explicit memory management will make you a better programmer regardless of whether it's C, C++ etc.

That's a really diffuse comment. A better programmer in what way?

See, when programming in C# or Java, it's definitely not bad to know how memory works. That doesn't mean you have to have experience with explicit memory management. All you need to know is the worst case scenarios for the garbage collector and minimize those, and learning memory management in C or C++ doesn't help at all since it's a completely different system. Experience with explicit memory management will generally not give you any advantages when programming in languages with garbage collection since you aren't explicitly managing it anyway.


Garbage collection isn't a panacea. You can still have logical memory leaks. You still often have to explicitly manage your memory just with less control over the process.

A excerpt from Refactoring:

Optimizing a Payroll System
Rich Garzaniti
We had been developing Chrysler Comprehensive Compensation
System for quite a while before we started to move it to GemStone.
Naturally, when we did that, we found that the program wasn't fast
enough. We brought in Jim Haungs, a master GemSmith, to help us
optimize the system.
After a little time with the team to learn how the system worked, Jim used
GemStone's ProfMonitor feature to write a profiling tool that plugged into
our functional tests. The tool displayed the numbers of objects that were
being created and where they were being created.
To our surprise, the biggest offender turned out to be the creation of
strings. The biggest of the big was repeated creation of 12,000-byte
strings. This was a particular problem because the string was so big that
GemStone's usual garbage-collection facilities wouldn't deal with it.
Because of the size, GemStone was paging the string to disk every time
it was created. It turned out the strings were being built way down in our
IO framework, and they were being built three at a time for every output
record!
Our first fix was to cache a single 12,000-byte string, which solved most
of the problem. Later, we changed the framework to write directly to a file
stream, which eliminated the creation of even the one string.
Once the huge string was out of the way, Jim's profiler found similar
problems with some smaller strings: 800 bytes, 500 bytes, and so on.
Converting these to use the file stream facility solved them as well.
With these techniques we steadily improved the performance of the
system. During development it looked like it would take more than 1,000
hours to run the payroll. When we actually got ready to start, it took 40
hours. After a month we got it down to around 18; when we launched we
were at 12. After a year of running and enhancing the system for a new
group of employees, it was down to 9 hours.
Our biggest improvement was to run the program in multiple threads on
a multiprocessor machine. The system wasn't designed with threads in
mind, but because it was so well factored, it took us only three days to
run in multiple threads. Now the payroll takes a couple of hours to run.
Before Jim provided a tool that measured the system in actual operation,
we had good ideas about what was wrong. But it was a long time before
our good ideas were the ones that needed to be implemented. The real
measurements pointed in a different direction and made a much bigger
difference.
https://www.dotabuff.com/players/8137911
Bortlett
Profile Joined October 2010
United States302 Posts
December 03 2011 20:40 GMT
#154
On December 03 2011 22:29 Slaytilost wrote:
Working at a triple a studio sucks, bigtime. Just ask any employee at such a studio (i know a couple), the work hours are terrible and crunchtime goes on continuously.


I work at a AAA studio, and this is not the case for me. We do have crunch (we are crunching right now in fact as we are getting close to shipping), but it's not that bad - I'm working ~50 hours per week. We will get a lot of this back in comp time once we are finished. I love working on big time games, so AAA studios are perfect for me. There are studios out there that crunch way too much, like Team Bondi did, but studios are starting to realize that too much crunch leads to burn out of your best talent, and that hurts you as a company.

You will be crunching in most studios, AAA or not. It's just a question of how much and what studios are trying to do to minimize it.
vitruvia
Profile Joined June 2009
Canada235 Posts
December 03 2011 21:07 GMT
#155
i'm studying mech engi right now and its really pissing me off , i dont like any of the courses, it feels like a grind everyday. now i'm considering switching to com sci or software engi, and hopefully make it into the multimedia industry and more specifically, game design. Thanks a lot for the information, do you know if the industry have any preferences between software engi or plain programmer? or can programmer be a software engi as well?
what quote?
Drake
Profile Joined October 2010
Germany6146 Posts
December 03 2011 22:04 GMT
#156
i writing some games for school and they are in XNA its so easy with that
Nb.Drake / CoL_Drake / Original Joined TL.net Tuesday, 15th of March 2005
brain_
Profile Joined June 2010
United States812 Posts
December 03 2011 22:29 GMT
#157
On December 03 2011 23:33 sluggaslamoo wrote:
Show nested quote +
On December 03 2011 19:49 brain_ wrote:
I'm a Compsci (game emphasis) major finishing my second semester of C++... And I have to say, C looks sort of crazy. Not looking forward to writing an operating system in it during my senior year. Also blows my mind that you could accomplish anything without objects. >_<


Interesting that you learned OOP before Structured Programming. Hopefully you will learn Functional programming (I did business instead of comp-sci so I don't know what the syllabus is), if structured programming will blow your mind, then functional programming will blow up your whole universe.

Quicksort in one line of Haskell

qsortOneLine xs = concat [qsortOneLine [y | y <- tail xs, y < x] ++ x : qsortOneLine [y | y <- tail xs, y >= x] | x <- take 1 xs]



The first semester we didn't use objects, but all the projects/assignments were very small scale. And yes, I expect functional programming to be insane... Quicksort in one line? Seriously?
Eaglelives
Profile Joined July 2011
United Kingdom4 Posts
December 04 2011 07:31 GMT
#158
I don't know if anyone else has posted this link, but if you could edit it into the original post that would be lovely, not all of us are from the U.S!

For those of us in the UK, Train 2 Game train people for the games industry. Anyone can apply for this, qualifications or not, and go on a course in how to design or program games, how to become artists or animators for games.

They did a "Jam" last month, where teams of people on the course come together and get given tasks of games to make over the course of the weekend. The winners of last months Jam are currently doing placements at Epic Games.
"We have done the impossible and that makes us mighty."
zhurai
Profile Blog Joined September 2010
United States5660 Posts
December 04 2011 08:52 GMT
#159
Hmm

What do you think about using UDK and Unity3D and etc for games tho?
Twitter: @zhurai | Site: http://zhurai.com
Myrddraal
Profile Joined December 2010
Australia937 Posts
December 04 2011 11:20 GMT
#160
On December 03 2011 06:56 Bey wrote:
C++ still gives you all the cool ways to shoot yourself in the foot and waste your weekends that C does. It has enough low-level power to prime you for that world but enough high-level expressiveness to get you used to working in that world as well. And if there ever comes a time when you need to fall back and learn C, your exposure to C++ is going to make that easy.


Ah I remember the subject I did in C, it was quite painful, probably in part because I found it hard to stay awake and alert during the lectures. The assignments specificially, I'm surprised I don't get nightmares about segmentation faults.
[stranded]: http://www.indiedb.com/games/stranded
leser
Profile Joined May 2010
Croatia239 Posts
December 04 2011 13:05 GMT
#161
nice writeup

I knew my way around c, but haven't done anything for a few years now :S. I learned PHP for web related stuff, and Java for my uni stuff (currently taking a class where we're creating a compiler, doing it all in Java). I'm kind of sorry now for abandoning c, and I have never done anything in cpp. While I really do like Java, I have a strong feeling that my skills are deteriorating because Java is so forgivable compared to c :/.

Does anyone know of a good book/website/resource where I can find some good c++ problems arranged by difficulty, going from easy/intermediate to some more complex stuff? I'd really like to pick up on c++ in my spare time.
lulz
Calvin[Deck]
Profile Joined November 2010
Denmark88 Posts
December 04 2011 13:27 GMT
#162
On December 02 2011 19:56 Tobberoth wrote:
Show nested quote +
On December 02 2011 19:33 Calvin[Deck] wrote:
On December 02 2011 18:04 Osmoses wrote:
Writing games in the windows console can be fun, but I don't think it teaches you very much about how to do anything else. Knowing memory management is well and good, but modern coding is all about abstraction. I hardly think building a new game engine from scratch is common practice anywhere these days. Why reinvent the wheel when you can just build onto an existing, proven library?

As has been already said, game designing is a collaborative effort outside indie studios, and you generally have very little influence yourself. And if you want to make your game, you can't spend your time writing low level memory management code, you'll never see anything close to a finished product. Swallow your pride and use someone else's code, use an API or a finished engine. Your game doesn't need to be cutting edge, minecraft looks like shit but it's still a great game.

If you want to make a game and see some real results before you die, try Cocos2D. There are 3D APIs as well, but I haven't tried any.

On December 02 2011 17:59 skipgamer wrote:
I like this blog post, except for the word hobbyist in the first sentence...

A beginner hobbyist game programmer should not bother learning C, it is not worth the time, and I'd be surprised to hear a professional recommend it either. Better off focusing on learning a language/engine/SDK that has the tools and meets the requirements of whatever type of game you're trying to make.

Sure it may not exactly be "programming" in the eyes of professionals, but there is a big difference between wanting to be a professional game programmer, and wanting to make games as a hobby. You can (and have to) get your hands dirty with coding regardless of what language/engine/SDK you choose if you are going it alone.


6 years as a hobbyist programmer/game developer with the UT2k4 engine (unrealscript), Source engine(c++), Java, Actionscript and the UnrealEngine(unrealscript+actionscript) have taught me this.

If I started by learning C, I wouldn't have had anywhere near the amount of experience I've had... That being said, I've never actually taken a project to completion (the most I could say I have created is a proof of concept), but that's what being a hobbyist is all about right? It's the journey, not the destination.

Lol you beat me to it :p



I am a professional programmer, and i have the complete opposite opinion. You have to start with the complete basic to get really good at something.

If you use flash+actionscript, or some other tool/API, yes you can have a lot if fun, and you will get faster to doing something.

But then you will hit a wall, where you want to do something that the tool does not easily provide. And by that point you will need the basic skills of programming, to extend the API you are using, instead of being limited by it.

I am not saying that you should not use some high level API, but eventually you need to get into really nasty technical details about some technology, if you have some need in your game, that are pushing the technology a bit.

That is why making simple games in ASCII art can improve your skills in programming a lot.

While it's true that using extremely top-level stuff will leave you wanting eventually, I disagree that you have to start from the basics to remedy that. Say you're working with Flash and you're making a game. You make a game or two then come up with a great idea which you feel flash is inadequate for. That's the perfect time to go basic, you have experience making games in Flash, so you need to learn what you feel is appropriate.

I wouldn't expect someone to jump from making a flash game to making a C++ game, but I would think someone would have more motivation. Learning how to program is, at least IMO, not all that hard. Learning how to properly program a game, an enginge etc, is harder. If you know how to program in python, learning to program in C is not that bad and you will be motivated since you decided to learn C for a good reason, instead of motivating it by "it being basic".

I would personally recommend people to start using either C and SDL to make oldschool games were you have a ton of freedom, or XNA to make windows/xbox games. Both give you perfect freedom to make the games you want, yet give you the tools needed to not get stuck, such as audio and graphic frameworks.


It properly also depends on what trigger your interest, if it is the overall game design, or the nitty gritty technical stuff.

There is no reason to do something that is not fun, but if you want to get really good at it fast, i think you need to learn C and basic machine knowledge first.

Calvin[Deck]
Profile Joined November 2010
Denmark88 Posts
December 04 2011 13:30 GMT
#163
On December 02 2011 20:12 skipgamer wrote:
Show nested quote +
On December 02 2011 19:33 Calvin[Deck] wrote:
On December 02 2011 18:04 Osmoses wrote:
Writing games in the windows console can be fun, but I don't think it teaches you very much about how to do anything else. Knowing memory management is well and good, but modern coding is all about abstraction. I hardly think building a new game engine from scratch is common practice anywhere these days. Why reinvent the wheel when you can just build onto an existing, proven library?

As has been already said, game designing is a collaborative effort outside indie studios, and you generally have very little influence yourself. And if you want to make your game, you can't spend your time writing low level memory management code, you'll never see anything close to a finished product. Swallow your pride and use someone else's code, use an API or a finished engine. Your game doesn't need to be cutting edge, minecraft looks like shit but it's still a great game.

If you want to make a game and see some real results before you die, try Cocos2D. There are 3D APIs as well, but I haven't tried any.

On December 02 2011 17:59 skipgamer wrote:
I like this blog post, except for the word hobbyist in the first sentence...

A beginner hobbyist game programmer should not bother learning C, it is not worth the time, and I'd be surprised to hear a professional recommend it either. Better off focusing on learning a language/engine/SDK that has the tools and meets the requirements of whatever type of game you're trying to make.

Sure it may not exactly be "programming" in the eyes of professionals, but there is a big difference between wanting to be a professional game programmer, and wanting to make games as a hobby. You can (and have to) get your hands dirty with coding regardless of what language/engine/SDK you choose if you are going it alone.


6 years as a hobbyist programmer/game developer with the UT2k4 engine (unrealscript), Source engine(c++), Java, Actionscript and the UnrealEngine(unrealscript+actionscript) have taught me this.

If I started by learning C, I wouldn't have had anywhere near the amount of experience I've had... That being said, I've never actually taken a project to completion (the most I could say I have created is a proof of concept), but that's what being a hobbyist is all about right? It's the journey, not the destination.

Lol you beat me to it :p



I am a professional programmer, and i have the complete opposite opinion. You have to start with the complete basic to get really good at something.

If you use flash+actionscript, or some other tool/API, yes you can have a lot if fun, and you will get faster to doing something.

But then you will hit a wall, where you want to do something that the tool does not easily provide. And by that point you will need the basic skills of programming, to extend the API you are using, instead of being limited by it.

I am not saying that you should not use some high level API, but eventually you need to get into really nasty technical details about some technology, if you have some need in your game, that are pushing the technology a bit.

That is why making simple games in ASCII art can improve your skills in programming a lot.

I don't mean to disagree with you, I'm just interested, don't you think it's appropriate at that point, when you hit that wall, to go out and learn how to get past that wall?

edit: had a big long rant here but I deleted it, because it was just that.


Sure, but sometimes that is very hard, if you need to learn some some basic stuff first.

But you are right, sometimes when i hit a wall, i have to solve it by reading a book, or taking a class.
Kevan
Profile Joined April 2011
Sweden2303 Posts
December 04 2011 16:08 GMT
#164
I just know a little bit of Java now but I will learn c/c++ next year. I'm also decent when it comes to 3D in Maya. I still have a long way to go and a lot of work ahead of me before I'm good enough to work with creating games though. Good thing they teach me this in school.
SC2, rip in pepperinos
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
December 04 2011 21:57 GMT
#165
On December 04 2011 17:52 zhurai wrote:
Hmm

What do you think about using UDK and Unity3D and etc for games tho?

As a hobby, or designer, great. As a professional programmer, not very great.
cowsrule
Profile Joined February 2010
United States80 Posts
Last Edited: 2011-12-05 02:00:34
December 05 2011 01:49 GMT
#166
I didn't see this linked anywhere, but this guy has some sound advice about the games industry (more specifically for game designers not necessaraily programmers). Good luck!

http://www.sloperama.com/advice.html

Also gamedev.net is a great resource with many intelligent people from inside the industry that post there.

Edit: Note that some of these articles were written years ago, but on the whole what he is talking about is still valid.
Blackthorne
Profile Joined June 2010
Norway69 Posts
December 05 2011 09:00 GMT
#167
Great effort, I'm sure a lot of aspiring programmers will learn a lot! I have a Computer Science degree, and I work in an IT firm (though I don't do a whole lot of programming there). I did however do quite a bit of programming during my studies, but I've never tried game programming. Do you have any good recommendations for blogs/resources for people that are comfortable with programming, but have no game experience?
MrShankly
Profile Blog Joined October 2009
United Kingdom371 Posts
December 05 2011 10:01 GMT
#168
For programmers i recommend looking up lectures from other universities, for example standford has great lectures on ios development, and an awesome lecture on optimising for openGL by some dude form mgmoco
DONATE SC2 BETA KEY TO ME PLEASE
KeksX
Profile Blog Joined November 2010
Germany3634 Posts
Last Edited: 2011-12-05 10:14:03
December 05 2011 10:11 GMT
#169
On December 05 2011 06:57 CecilSunkure wrote:
Show nested quote +
On December 04 2011 17:52 zhurai wrote:
Hmm

What do you think about using UDK and Unity3D and etc for games tho?

As a hobby, or designer, great. As a professional programmer, not very great.

What? Especially Unity3D is quite popular in the "Small Games Business" and UDK is a powerful tool for the Unreal Engine 3 that is used by many big titles and companies such as Ubisoft, EA, DICE, Disney, Sega...

There's still a lot of programming to do even though I agree that both kits take a lot of work away from you. While both have some handy "oneclick-functions" they are just frameworks.
downmaster
Profile Joined April 2011
Canada116 Posts
December 05 2011 12:29 GMT
#170
On December 05 2011 19:01 MrShankly wrote:
For programmers i recommend looking up lectures from other universities, for example standford has great lectures on ios development, and an awesome lecture on optimising for openGL by some dude form mgmoco


Also if I'm not mistaken, MIT puts all their lectures online as well. Also MIT has a system called opencoursecode, where they put everything they did that semester online like lectures, exams, assignments, etc. Definitely worth while if you want to get into programming. My teacher here in canada told me about it.
Gnaix
Profile Joined February 2009
United States438 Posts
December 05 2011 17:00 GMT
#171
So basically you're just telling people that they need to learn to program, because this article has next to nothing about actually creating a game in the actual industry.
one thing that sc2 has over bw is the fact that I can actually manage my hotkeys
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
December 05 2011 20:49 GMT
#172
On December 06 2011 02:00 Gnaix wrote:
So basically you're just telling people that they need to learn to program, because this article has next to nothing about actually creating a game in the actual industry.

I didn't say anything about that, because it's not about that...
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
December 05 2011 22:44 GMT
#173
Wrote the next post in the blog! Will update OP to include link at bottom:

http://cecilsunkure.blogspot.com/2011/12/windows-console-game-painters-algorithm.html
DanceSC
Profile Blog Joined March 2008
United States751 Posts
December 06 2011 03:13 GMT
#174
If there is anything I learned from game programming it is mostly self taught. If you know where to look you probably don't even need to take classes on it. At least that is how I reflect back on it, but a good place to start if you are using XNA through C# is http://www.riemers.net/
Dance.943 || "I think he's just going to lose. There's only so many ways you can lose. And he's going to make some kind of units. And I'm going to attack him, and then all his stuff is going to die. That's about the best prediction that I can make" - NonY
dinosaurcow
Profile Joined August 2011
United States31 Posts
December 06 2011 04:27 GMT
#175
On December 02 2011 17:16 Hairy wrote:
I went into programming, and was in the games industry for a whopping 18 months. My advice personally to anyone wanting to become a "game designer" is... to stop. Most games DESIGN degrees are actually a sham, and are not teaching the skills that games development studios actually want - make sure your degree course is not one of those. And do you actually know what a game DESIGN job is?

How does the menu flow work?
What menus will there be?
What button presses do what?
What button hints will we show on the screen?
What happens when we press those buttons?
What happens if he presses different buttons?
What help text should we display?
When should that help text appear?
Will that help text have a delay in appearing? How big should that delay be?
Will that help text work ok in different languages?
Are any of the game UI elements too close to the edge of the screen? (nintendo enforced)

Game DESIGN involves solving ALL those questions, and thousands and thousands more, and extensively documenting it. You don't do the art - the art is done by artists. You don't actually make it happen, as that is done by the programmers. You don't think of and make the cool sounds or music, as that is done by the music guys. Your job is to write a document. Every_SINGLE_DETAIL of how EVERYTHING works must be documented exactly. That is what game design is. Very little of it is thinking up what cool weapons you use etc. In fact, you'll be lucky if you have much choice in the matter - a lot of the time you'll be designing a game that fits what the publisher needs/wants (the publisher is the company funding the work on your game), and you will have a strict budget you need to stick to (cool ideas usually take time (and therefore money) to implement).

I would also warn that I don't think you'll ever get a job out of university with a game 'designer' degree. Very small indie games companies require someone else already in the team (a programmer/artist) to take on the responsibilities of that role - they can't afford to pay someone just to design. Big companies have the money to hire someone with proven skill and experience, OR they can take someone from their team that they know and trust and have them do the role instead. Why would you hire someone fresh out of university, with no experience or proven track record to do one of the most important jobs?

If you want in the games industry, don't aim for games design. Do music, or art, or programming (incidentally, do C++, not C). You can move onto games designer later after you've gained experience in the industry.


Show nested quote +
On November 20 2011 06:54 Inori wrote:
Recently I keep hearing from various sources that game dev is worst position a programmer can go to in terms of work stress. You're forced to work hard for months, constantly doing overtime (even unpaid) because of deadlines and etc. Then you finish it, have a little party and the cycle begins again with next title.

Is this in any way true?

Yes. Overtime is almost always unpaid, and it is expected. It is not constant, but you WILL have to do overtime. At my job I did 4 weeks where I was in the office will 9 - 10pm at night, and I didn't see a penny of extra cash. You are constantly working towards the next deadline, and often it is a pretty intense working environment.

I don't intend to dissuade people TOO much - there IS still fun to be had. But, realistically, only go into it if you absolutely adore MAKING games (making is very different from playing), and you intend to put in the work required. Only the most dedicated are going to actually make it into the industry, and only the most passionate of those are going to stay there. The games industry is incredibly competitive, so you need to be fantastic. Go and learn some programming like in the opening post in your free time. Go and learn MORE programming. Do projects off your own back, in your own time. If this is sounding too much like hard work... it probably is. Because there are people out there who have the passion to spend almost all of their free time just programming, improving their craft, and practicing to get better. If you can't be at least as good as them you're going to find it difficult.

Become a hobbyist game programmer, and if you still ADORE it then go for it. If you just like games, and think working on games will be cool... you need to rethink.


DISCLAIMER: This is all my own personal opinion from my experience as a game designer.

I feel this is pretty close to true and overall a great and informative post, but perhaps a bit too depressing. I agree that you should be wary of those degrees that claim to teach you game design, but I also know that there are some legitimate universities out there offering game design courses. Game Design in and of itself is not necessarily well-defined, and isn't really something you can just learn like programming. It takes a wealth of knowledge from a variety of experiences. You're not calculating an algorithm to run a physics engine as optimally as possible, you're crafting a world that your player will experience.

A game designer's job almost certainly demands tasks like designing menus, buttons, flows, UX flows, and writing tons of detailed docuemnts. However the idea that it is the only thing a game designer does is a bit over the top. This may be true at large game studios, where they hire individuals to work on one specific aspect, but that's only one discipline of game design. The really cool decisions in large companies are often decided by the senior designers. There is also level design, system/mechanics design (combat, experience, multiplayer etc), narrative design, and a slew of other items. Sure you may have an individual who is dedicated to that, but it's the same as having a network programmer vs a physics programmer. They're still game programmers.

If you want to be a game designer I think the best situation to find yourself in early-on is to find a small company to start with. This will offer you the broadest range of skills you will have to develop to be successful. As a game designer at a small company where the development team is 9 people, my job entails level design, system design, QA testing, community management, UI design, UX design, and even some project management. Sometimes I will spend a day designing a new mission for a quest, which maybe include level design, narrative writing, and tutorials. Other times I will be designing a new game mechanic and how it will fit into every other system we have in the game. And there are certainly days where I just interact with the community, receive feedback, criticism, questions, or just play some games.

To be a game designer? There is no set path at the moment. Just teaming up with one or two others and designing games simply for your portfolio is a great idea. You will learn a lot through trial and error, figuring out what works and what doesn't. ALWAYS ask for feedback and be open to criticism -- you are not designing a game just for you to play, but for your audience. As previously mentioned, starting in another discipline like programming can be another gate. You really just have to find and jump at every opportunity.

I personally went to school and graduated with a bachelor's in computer science. My last semester I landed an internship at a new game company one of my good friends was the lead flash programmer for. They had me doing boring, menial tasks at first that slowly expanded. By the end of my internship they liked my work and offered me a job. They said they could not guarantee job security or a lot of pay, since it all depends on the success of the product. EXPECT THIS. Games are not always successful! Plenty of game developers come and go and success is gained and lost. As a side note, I have also not done ANY programming since graduating -- I love game design and fully intend to stay focused in this field.

As for skills I believe are very important as a game designer:

-Write. It is important that you can write, and write well! Other members of your team will be using your documents as their starting point for their work. Which leads to the next point...

-Communication. You MUST be able to communicate your ideas to each different team in your company (programming, art, producers, sound). Each discipline has different ideas, different approaches, it's up to you as the game design to bring it all together.

-Humility. Everyone's opinion matters in way or another. I'm not saying cave-in to every suggestion that is thrown at you, but be sure to really understand and see what they are trying to say. This leads to playtesting and criticism, THESE ARE EXTREMELY IMPORTANT. Iteration cannot be stressed enough.

-Experience. You really can't do much about this one, but experience is key. The more you design, the more you will learn what works and what doesn't. You can learn a LOT from an experienced designer, since they can help to warn you about pitfalls they've already had. Also, you are crafting an experience for your audience. Use what you know to nail this right. Experience will expand your knowledge.

-Any knowledge of any other game developing discipline. It helps to be able to cater your designs with your programmers, art team, sound team, or any other fellow coworker in mind. Now I'm not saying you go around telling your programmer exactly how the physics should be implemented, but it does help for me to know that asking the programmer implement friction and momentum would be quite a chunk of time.

My list is clearly not the end-all, be-all, and I am also not someone who claims to have all knowledge of everything game design. This is my own personal opinion from my time in the games industry as a designer (~2 years). I hope my wall of text was informative and gives you an idea of the work a game designer may do!
Bunkerr
Profile Joined October 2011
United States22 Posts
December 06 2011 07:14 GMT
#176
Great post, really interesting stuff!
imPermanenCe
Profile Joined July 2011
Netherlands595 Posts
December 06 2011 16:57 GMT
#177
I'm currently doing a game technology study, we're using C# with the XNA game engine, I'm wondering if it could become a standard in the game industry.
Micro at its best is like an elegant dance between two people trying to achieve a similar end.
gotMilkshake
Profile Joined December 2010
Sweden10 Posts
December 06 2011 20:06 GMT
#178
You are the man Programmed a bit a few years back and this seems nice to get me motivated and back on track. Thanks!
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
December 06 2011 20:50 GMT
#179
On December 07 2011 05:06 gotMilkshake wrote:
You are the man Programmed a bit a few years back and this seems nice to get me motivated and back on track. Thanks!

Great! Exactly the type of reason I wrote it in the first place.
On December 06 2011 16:14 Bunkerr wrote:
Great post, really interesting stuff!

Wonderful to hear!
Glacierz
Profile Blog Joined May 2010
United States1244 Posts
December 06 2011 22:55 GMT
#180
A must read:
http://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628
Kinshuk
Profile Joined February 2011
India116 Posts
December 07 2011 02:56 GMT
#181
really good read there was a time when i was really interesting in becoming a programmer but its just way over my head... i just cannot deal with such complicated math
Spikeke
Profile Joined October 2010
Canada106 Posts
December 07 2011 19:33 GMT
#182
Junior game programmer here. I started programming and game making about 12 years ago as a hobby. First using RPG Makers and VB in high school, after graduation I taught myself the basics of C++ and managed to create some games/apps. Couple years past and I managed to get into a Game Dev program at a local college. Which is an eye-opener in itself, infinite amounts of work with little time and sometimes with groups that won't function together. I had the impression that many students felt that if they graduated with minimal effort they would be guaranteed a job. These game dev programs teach many useful skills, but you can't rely on a school program alone, you have to work on projects and your ideas on your own time, constantly improving your skills. And not for the sake of graduating or getting a job later, but because you want to, you love to code/draw and want to improve your skills. Needless to say, more than half of the students that I started with, either failed or dropped out... And half of the students that did graduate, actually got jobs that I know of. I graduated this spring, and started my brutal search for a game programming related job. About 5 months later, I was offered a position at a local start-up company.

Programming is just one slice of the game development pie, and just because you know how to program, doesn't mean you know how to make games. A programmer writes code, not "make games". There are many aspects of game design, understanding the psychology of the player and what incentives drive the player are also important. I would also say that most games have more artists than programmers on staff. Deciding where you fit and pushing your skills to the limit is what you have to do to get recognized. Great games are made with great teams. Thus, inter-personal skills are also important, no one wants to hire you if you can't work along with anyone.

I would never imagine I would be a programmer if you asked me 10 years ago. I'm not even a math genius, I failed grade 10 math when I was a teen and had to take it over in summer school. My point is, do what you love and keep at it, and you'll get where you want to be. Be persistent and never give up.

Anyway enough jibber jabber, got to get back to work :S
Amaroq64
Profile Joined October 2011
United States75 Posts
December 07 2011 21:11 GMT
#183
This is awesome. I commend you for recommending C and C++. An ex-friend of mine thinks Python is the be-all end-all programming language for everything, but it is a hell of a lot slower than C which makes a difference for something potentially huge like a game.

I haven't programmed any games, but I've done some of the SDL tutorials on an SDL tutorial website. My programming experience is mostly making web pages. Which I know doesn't really count as programming until you get into things like javascript and php.

But making games is one of my dreams in life. Just because I have amazing game ideas that I want to bring to life.

One of the things I've realized is that just programming for the sake of programming bores me. The thrill I get out of programming is the same thrill that an artist gets out of drawing: Coming up with an amazing idea and bringing it to life.
A is A.
ddengster
Profile Blog Joined January 2009
Singapore129 Posts
December 08 2011 13:34 GMT
#184
@CecilSunkure
Some advice from a fellow DP-Sg student
On http://cecilsunkure.blogspot.com/2011/12/windows-console-game-painters-algorithm.html, whats that pile of hardcoded garbage? I hope you're not putting that into your game. Write a .bmp image importer, and never put that huge array(and in fact any hardcoded stuff) in any source code again.

And don't hardcode 255 as 'transparency'. Maintain a frame buffer with depth buffer values, or do z-ordering per image. Avoid such hardcoding especially in the early stages of your development.

Plus, I'm surprised you have the time to blog given DP's unforgiving schedule. You'll find yourself watching less starcraft as time goes on.
Check out NEO Impossible Bosses, RTS-MOBA boss rush at http://neoimpossiblebosses.coder-ddeng.com
KeksX
Profile Blog Joined November 2010
Germany3634 Posts
December 08 2011 13:51 GMT
#185
On December 08 2011 22:34 ddengster wrote:
@CecilSunkure
Some advice from a fellow DP-Sg student
On http://cecilsunkure.blogspot.com/2011/12/windows-console-game-painters-algorithm.html, whats that pile of hardcoded garbage? I hope you're not putting that into your game. Write a .bmp image importer, and never put that huge array(and in fact any hardcoded stuff) in any source code again.

For learning purposes it's perfectly fine, even though the next step should always be how to avoid that.
ShadowWolf
Profile Joined March 2010
United States197 Posts
December 08 2011 15:12 GMT
#186
On December 08 2011 22:34 ddengster wrote:
@CecilSunkure
Some advice from a fellow DP-Sg student
On http://cecilsunkure.blogspot.com/2011/12/windows-console-game-painters-algorithm.html, whats that pile of hardcoded garbage? I hope you're not putting that into your game. Write a .bmp image importer, and never put that huge array(and in fact any hardcoded stuff) in any source code again.

And don't hardcode 255 as 'transparency'. Maintain a frame buffer with depth buffer values, or do z-ordering per image. Avoid such hardcoding especially in the early stages of your development.

Plus, I'm surprised you have the time to blog given DP's unforgiving schedule. You'll find yourself watching less starcraft as time goes on.


Writing this in to a bitmap and then decoding it would be an enormous hassle because bitmap encoding applications I've seen don't support CHAR_INFO stuff. Unless I'm missing something, you'd end up probably having to build a bunch of meta-data and analysis to transform the bitmap to the desired CHAR_INFO struct. What he should do is put it in a source file and load it (which maybe is a long-term plan).

Considering his game is a console app and must be written specifically to do console stuff, I'm pretty sure that any type of abstraction he does is going to just make life more miserable for him with absolutely no value later-on. There aren't really translatable concepts in a cruddy win32 console window that will easily move over to a Win32 non-console app. He'll have to do plenty of hacks just to get everything working. While learning, adding something like a generic rendering subsystem just adds complexity where you don't need it to a system that will never use it.

Besides, going through the pain of taking something from Win32Console -> Generic Console (for example) at least once is probably good because it'll help you understand how to better build a generic console abstraction. When you have a good understanding of what the differences are then you will have an easier time of visualizing where you need abstraction and where it's unnecessary.
ddengster
Profile Blog Joined January 2009
Singapore129 Posts
December 08 2011 15:47 GMT
#187
On December 09 2011 00:12 ShadowWolf wrote:
Show nested quote +
On December 08 2011 22:34 ddengster wrote:
@CecilSunkure
Some advice from a fellow DP-Sg student
On http://cecilsunkure.blogspot.com/2011/12/windows-console-game-painters-algorithm.html, whats that pile of hardcoded garbage? I hope you're not putting that into your game. Write a .bmp image importer, and never put that huge array(and in fact any hardcoded stuff) in any source code again.

And don't hardcode 255 as 'transparency'. Maintain a frame buffer with depth buffer values, or do z-ordering per image. Avoid such hardcoding especially in the early stages of your development.

Plus, I'm surprised you have the time to blog given DP's unforgiving schedule. You'll find yourself watching less starcraft as time goes on.


Writing this in to a bitmap and then decoding it would be an enormous hassle because bitmap encoding applications I've seen don't support CHAR_INFO stuff. Unless I'm missing something, you'd end up probably having to build a bunch of meta-data and analysis to transform the bitmap to the desired CHAR_INFO struct. What he should do is put it in a source file and load it (which maybe is a long-term plan).

Considering his game is a console app and must be written specifically to do console stuff, I'm pretty sure that any type of abstraction he does is going to just make life more miserable for him with absolutely no value later-on. There aren't really translatable concepts in a cruddy win32 console window that will easily move over to a Win32 non-console app. He'll have to do plenty of hacks just to get everything working. While learning, adding something like a generic rendering subsystem just adds complexity where you don't need it to a system that will never use it.

Besides, going through the pain of taking something from Win32Console -> Generic Console (for example) at least once is probably good because it'll help you understand how to better build a generic console abstraction. When you have a good understanding of what the differences are then you will have an easier time of visualizing where you need abstraction and where it's unnecessary.


It might be a bit daunting at first, but the rewards justify the cost. It's much, much easier to open a picture-editing program like photoshop/gimp/etc and edit the correct color values, save the file and load it into the game. Compare that to putting lots of 255s and color values into hardcoded arrays. You'll be wasting more time doing these kinds of stuff than actually learning things like how file formats are stored, etc. No to mention that if you have to change image sizes and so on, you'll have to maintain the array to make sure crashes don't happen.

http://en.wikipedia.org/wiki/BMP_file_format details the bmp file format image. It's probably one of the easier file formats to decode, and I'm sure that you can google for code on decoding such stuff. Basically, you try to strip away all the headers and excess information, leaving the RGB values that you can store.

Many programmers copy paste code. Don't be one of them. Make sure you understand what the code is actually doing.
Check out NEO Impossible Bosses, RTS-MOBA boss rush at http://neoimpossiblebosses.coder-ddeng.com
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
December 08 2011 17:03 GMT
#188
On December 08 2011 22:34 ddengster wrote:
@CecilSunkure
Some advice from a fellow DP-Sg student
On http://cecilsunkure.blogspot.com/2011/12/windows-console-game-painters-algorithm.html, whats that pile of hardcoded garbage? I hope you're not putting that into your game. Write a .bmp image importer, and never put that huge array(and in fact any hardcoded stuff) in any source code again.

And don't hardcode 255 as 'transparency'. Maintain a frame buffer with depth buffer values, or do z-ordering per image. Avoid such hardcoding especially in the early stages of your development.

Plus, I'm surprised you have the time to blog given DP's unforgiving schedule. You'll find yourself watching less starcraft as time goes on.

That's all out of the scope of a freshman first-semester game and pretty pointless. If my grade depends on my freshmen game being playable with a certain amount of content, a BMP parser and proper image rendering isn't going to help. Plus, we wrote tools to manipulate large arrays of characters and didn't "waste time" doing it by hand.

If you have proper time management you can do a lot of things while attending DigiPen.
Loophole
Profile Blog Joined October 2002
United States867 Posts
December 08 2011 19:51 GMT
#189
Programmer for 25 years here.

I would suggest reading Andre La'Mothe's books on game programming. He's an entertaining read, and you can learn a lot of the basics from him.
"Fundamental preparation is always effective. Work on those parts of your game that are fundamentally weak." -Kareem Abdul-Jabbar
rrowland
Profile Joined March 2010
United States84 Posts
December 11 2011 02:20 GMT
#190
On November 17 2011 06:31 ClysmiC wrote:
Awesome blog, I'm very interested in developing video games as well. I'm currently in HS, learning Java in my C.S. class. I hear that C is very similar to Java, so I figure in the future I can easily learn C, but I've never really known where to go from there. I'll definitely check out the podcast and your game blog. Looks awesome =)

C is Procedural and Java is Object-Oriented. What you may have heard is C# is similar to Java. Basically, C# is Microsoft's Windows-proprietary version of Java. They copied Java almost exactly, with the obvious difference being some syntax and the .NET libraries.
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
January 02 2012 01:24 GMT
#191
So has anyone worked on anything? Would be extremely cool to see some ASCII projects. I'd like to post mine from first semester though I have to wait for cert from school before doing so (legal protection).
Normal
Please log in or register to reply.
Live Events Refresh
Next event in 13h 7m
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
CosmosSc2 130
Codebar 4
StarCraft: Brood War
Larva 283
firebathero 162
Stork 114
ggaemo 105
Aegong 29
Dota 2
capcasts175
NeuroSwarm15
League of Legends
JimRising 403
Reynor111
Counter-Strike
byalli582
flusha547
Heroes of the Storm
Khaldor352
Other Games
tarik_tv21305
gofns9323
summit1g9264
Grubby3299
fl0m901
B2W.Neo698
420jenkins332
JuggernautJason31
ROOTCatZ17
Organizations
Other Games
gamesdonequick1766
StarCraft 2
angryscii 41
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 18 non-featured ]
StarCraft 2
• Berry_CruncH238
• davetesta76
• StrangeGG 51
• Hupsaiya 22
• RyuSc2 8
• AfreecaTV YouTube
• intothetv
• Kozan
• sooper7s
• IndyKCrew
• LaughNgamezSOOP
• Migwel
StarCraft: Brood War
• STPLYoutube
• ZZZeroYoutube
• BSLYoutube
Dota 2
• masondota21995
League of Legends
• Doublelift3973
Other Games
• imaqtpie1425
Upcoming Events
Wardi Open
13h 7m
OSC
1d 2h
Stormgate Nexus
2 days
uThermal 2v2 Circuit
2 days
The PondCast
3 days
Replay Cast
4 days
LiuLi Cup
4 days
uThermal 2v2 Circuit
4 days
RSL Revival
5 days
RSL Revival
5 days
[ Show More ]
uThermal 2v2 Circuit
5 days
Sparkling Tuna Cup
6 days
uThermal 2v2 Circuit
6 days
Liquipedia Results

Completed

ASL Season 20: Qualifier #1
FEL Cracow 2025
CC Div. A S7

Ongoing

Copa Latinoamericana 4
Jiahua Invitational
BSL 20 Non-Korean Championship
BSL 20 Team Wars
KCM Race Survival 2025 Season 3
BSL 21 Qualifiers
ASL Season 20: Qualifier #2
HCC Europe
IEM Cologne 2025
FISSURE Playground #1
BLAST.tv Austin Major 2025
ESL Impact League Season 7
IEM Dallas 2025

Upcoming

ASL Season 20
CSLPRO Chat StarLAN 3
BSL Season 21
RSL Revival: Season 2
Maestros of the Game
SEL Season 2 Championship
WardiTV Summer 2025
uThermal 2v2 Main Event
MESA Nomadic Masters Fall
Thunderpick World Champ.
CS Asia Championships 2025
Roobet Cup 2025
ESL Pro League S22
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
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...

Disclosure: This page contains affiliate marketing links that support TLnet.

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.