Languages to learn

Discussion in 'I wanna be a Game Programmer' started by Suiken, Apr 16, 2007.

  1. FANatiko

    FANatiko Former N-Gage Druid One Of Us Not From Round Here

    In my very short (for now) experience in the game industry I have found three techologies very interesting for the company I work:

    i) MaxScript :deadcrab: It can be one of the most painful things to use and I am sure there are better ways to get the triangles in 3dsmax in nice bytes for your code but, at least here in Spain, Max and MaxScript are used in a lot of companies and it seems it is not a very common knowledge.

    ii) General Purpose Scripting language (ANY): Depending of your employer, it may not be culturally possible to make scripts for some tasks, but if your employer allows it (like mine), I prefer doing some tasks with a script than making a "tool" for it. F.ex I made some tests for our ranking calculations using Python to tune our ELO (that weird chess ranking value) algorithm values.

    iii) Command-line::cube: I don't know if this is global but I have found that it's very common for game programmers, in particular for the engine and graphic ones, to be very Visual Studio centric. I have been a Linux user at the University and I currently use Mac at home and I miss a lot a propper command-line when working with the GCC based toolchain for Symbian and N-Gage.

    Of course, I have skipped the 0) knowledge which is C++. I couldn't have had this job if I didn't knew the videogame programming lingua franca, STL, templates and that stuff. Although, I have to say, that working for mobile phones we need to think twice before using these techniques.
     
  2. Hop

    Hop Troll One Of Us

    When you have started to get the hang of C, I would recommend spending a day or two from time to time trying to learn at least the basics of multi-threaded programming. PC/PS3/XBOX 360 are all multi-core architectures and this trend is definitely going to continue. Although each machine may have different hardware, the core principles are the same.

    Try writing a multi-threaded program to get some simple problem done faster (on a dual core system). The classic example is calculating a portion of the Mandelbrot set on each CPU and measuring the speedup (should be 2 for 2 cores!).
     
  3. Mathematix

    Mathematix Banned

    There is confusion here between learning about writing code specific to certain technologies over writing specific game code. There are much more important aspects in learning to create games: AI, graphics, audio, physics, etc. Wasting time with multithreading right now will not progress you very far in term of games, even though it's not that difficult at all!

    If you want to make game, write games! ;)
     
  4. Suiken

    Suiken Lurker Not From Round Here

    One of my CS professors sent us this link (to an article titled "Computer Science Education: Where Are the Software Engineers of Tomorrow?")

    For those of you who would take the time to read/skim through it, what are your thoughts?
     
  5. Unsurprised Jack

    Unsurprised Jack Industry God One Of Us

    Where Are the Software Engineers of Tomorrow?

    My first thought is that they're in Madrid. I mean it's 4:30pm here in Vancouver, so it will be just half an hour into tomorrow there already.

    Not a bad article.

    Lisps are not usually functional languages. Some time with Haskell would be better for learning about functional languages (and strong typing).

    Scheme offers the student a way to build up from simple functions, to a machine code compiler use only a very small amount of syntax. That makes it an idea language for the first steps into computer science, by which I mean really learning the subject, not just learning enough to get a web server running or move a sprite about on screen.
     
  6. randomnine

    randomnine Internet Robot One Of Us

    Here's all I can think of to add to the excellent advice here already...

    After 3D vector and matrix maths, computational complexity theory and time/space complexity (aka "big O notation", as in: bubble sort's time complexity is O(n*n), heap sort's is O(n log(n)), radix sort's is O(n), etc.).

    This is basically the study of how fast algorithms are when fed nontrivial datasets or how fast certain operations are on certain data structures. It's a simple, abstract introduction to writing efficient code - code that's tens, hundreds or thousands times faster than the simplest solution - by picking the right algorithms and data structures or through better algorithm design. If your course runs an optional advanced module on complexity theory grab hold of it with both hands even if it's a hard course or an unpopular one. As a programmer, an intuitive understanding of this stuff (and a grasp of the various time characteristics of common data structures and algorithms) will help you tackle harder, more technical problems whether you go into games or not.
     
  7. keymontea

    keymontea No longer special One Of Us

    I'm really surprised by the number of people suggesting functional languages and lisps. I mean, it's great - really good - but are they actually used anywhere, in which case why aren't they mentioned on any job adverts, or are they just useful (but esoteric) skills for a game programmer's armoury?

    The only real cases I've heard of are Naughty Dog (Scheme tools and scripting) and Nokia (Erlang MMO servers).
     
  8. Unsurprised Jack

    Unsurprised Jack Industry God One Of Us

    Even if you don't use what you learn when investigating functional languages, chances are you will use the concepts at least.

    But the fact that Naughty Dog are awesome and they use functional languages and lisp should tell us something?
     
  9. MaciejS

    MaciejS Industry Superbeing One Of Us

    Not much more then the fact that for every Naughty Dog there are 10 other awesome companies not using functional languages.
     
    • Thank Thank x 1