Program The rantings of a lunatic Scientist

Archived Posts for September 2012


On the topic of studying Computer Science

L2Program Rant University

So today I saw a post on /r/compsci where the poster was a new Comp Sci student 2 months into his course, having a hard time with programming and not sure how to keep going with his course so he can get a job as a Game Designer. I wrote quite a healthy response to him about how I feel people need to think about CS and I thought I’d mirror it here because it seems to have gone down very well on /r/compsci and because I haven’t posted anything in a few days.

For those interested, here is the post on Reddit. /r/compsci/comments/zdx5v/some_questions_from_a_computer_science_rookie/c63qgsu

Firstly, (IT != CS).


Languages

Something that will become very apparent to you as you study CS is that it isn’t about C#, C++, or any one programming language. Yes you may have modules on certain languages but they are merely an ends to a means. That is to say, they don’t teach you C# so you learn how to program C# they teach it to you so you learn how to structure a hierarchical based Object Oriented (OO) program. Once you understand the theory of how to structure that kind of program you can learn the syntax of any like styled language and immediately run with it. Also bear in mind (rawr) that when they teach you C# they do not expect you to learn every function name in the standard library, they expect you to learn what things you can expect a language or standard library to come with. So that when you move to another like language and the standard library has all different function names you’re okay because you can just search what you need in the Language Documentation online.


Don’t use your degree to learn game development

Computer science is not about game development. However! A lot of the stuff you learn can be applied directly to game development. For instance, you shouldn’t learn “How to write a FPS game.”, you should learn…

  • 3D Vector Mathematics and Trig
  • Algorithm Design
  • Object Oriented programming, and you’ll want to get pretty comfortable with a language so the code is neat and efficient
  • Artificial Intelligence
  • Graphics Programming (Probably using OpenGL)
  • If you have a module on “Game Theory” then by all means take it but bare in mind that Game Theory will be 99% breaking down and modelling very simple games like Coin Flip, Nim, Tower of Hanoi, ect in a very basic mathematical representation and will almost certainly include no programming unless they ask you to model any of those games as a Finite State Machine.

Use your degree to become exceedingly good at building programs

A good Computer Scientist does not know how to do one thing very well, with the mindset that “It’s okay, I’ll get a job doing that very specific thing.” (especially if that thing is Game Development) A good Computer Scientist understands Algorithm Design and Optimization, Data Storage Structures and Sorting, the benefits of Linear and Parallel execution and when to use each, the mathematics behind Formal Logic, Trig, Vectors, the (basic) Psychology of Human Computer Interaction (HCI) and how you can apply that to UI design, Database Design including Relational Algebra and Calculus to model them, …, the list goes on.


The game industry is Cut Throat and immensely competitive

You have likely heard this many times before but your dreams of working for a big game developer like DICE or 2K (just two random ones off the top of my head don’t downvote me because they aren’t your favorites) are probably not going to come to fruition.

Game Studios do not hire people based on their degree. I know, if you look at the recruitment page it says a BSc in CS and some experience working on other titles. This is just to push teenagers who think it would be a cool career to actually go to University and learn what they need to write that kind of software. Games after all, are software, and very complex pieces of software at that.

Truth be told if someone has a good enough programming portfolio and can show off a really impressive demo to a Game Studio they will not care which Uni (if any) you went to. They want good people (the best people) working for them. If you want one of three positions open at a Game Studio that 8000 people have applied for, you need to be the best.


But the best at what?

At a Game Company people do different jobs, they specialize, and then they get very good at what they do. A level designer probably doesn’t know much about how the core engine works, and he doesn’t have to. The Engine Designer probably can’t design a User Interface, and he doesn’t have to. And the UI designer… you get my point.

So pick a subfield of Game Development. If you hate programming and you don’t enjoy it, you are not going to be a professional programmer, or if you are you’re going to be miserable and you’ll write terrible code. There’s a lot to be said for the theory that good developers enjoy coding and writing software, and they do it in their spare time as a hobby despite the exact same thing being their 9-5. Anyway, you don’t like coding, so you aren’t going to be an Engine Programmer. If you like and enjoy Game Theory then maybe you should look into becoming a Level Designer. Designing a map in an FPS and designing a level in a Side Scrolling shoot’em up game use 90% the same skills and theory.


All of that said

You have only been at this for two months. It takes years to become a good and proficient Computer Scientist, it takes years to get to a point where you intuitively know how to layout and structure a piece of software, and even then you’ll make mistakes, and you’ll waste a lot of time redoing things in the “right” way only to have to redo them again.

If you are still worrying about C# and C++ don’t. They take time to learn but you’ll probably find it just clicks one day and you’ll realize that if this does that there a then this will do that and then that will happen, ect, and it will start to make sense.

Xenomorphs have hatched!

Game Dev Graphics Java

Okay I really need to get some sleep, it’s a quarter past 4 in the morning! But look! I’m really happy with progress on the game.

I’ve narrowed the premise down to a model that I am satisfied with. Here it is:

  • You are a lone marine trapped inside the LV426 Colony, your squad mates are presumed dead.
  • You are armed with an M41A Pulse Rifle but you have no bullets left!
  • There are four dead bodies of you fallen comrades laying around the map in the locations of the Pacman Mega-Pills. Each body has 1 magazines worth of salvageable ammo containing 25 bullets. (There are 100 total bullets per level)
  • The floor of the LV426 Colony is strewn with items that were knocked over or dropped when the chaos began, amidst the rubble you can find batteries to power your flashlight. (These batteries would be the normal pills from Pacman)
  • There is also a Motion Tracker at the location of the Pacman Cherry. The motion tracker will show the player the location and range of any Xenomorphs in the direction it is looking.

Pacman on LV426?

Game Dev Graphics Java

Yes that’s right! I’m working on First Person Pacman again!

And better yet, you can be too (if you are so inclined to) because the whole project is now available on Github!

I’ve decided that while the game is fun in it’s current state it is not scary enough. Don’t get me wrong, walking around a blind corner only to see a Ghost fly out and make a bee-Line straight for is pretty damn heart pumping but I feel like it can still be improved upon. Thus I propose we drop the lights, up the rust, and drop our little yellow hero into the hellish world that is LV426!

Edit Perhaps I could make it so you (Pacman) are the Xenomorph, being chased by the Marines (instead of Ghosts). You are injured so you cannot go on the offensive unless you feed on bodies laying around the map (the Mega-Pills from traditional Pacman)

I found some good ‘Aliens’ style wall textures just by googling them, I would credit the sources but it was obvious to me that the sites Google linked to were not the original sources, nor did they credit the artists. If anyone knows who they were then please email me.

I took the textures and duplicated them 4 times altering each one to make it subtly different.

Additionally with this set of walls I added a rust overlay to make it look more dilapidated. LV426 is not exactly a clean place to live.