@RIOT Game Programmers, Coding Like A Boss How?

  • I have two goals for my life. My first dream is to code game characters to do the stuff we see champs do in LoL. And my second dream is to work at riot as a game programmer while I fulfill my first dream. So, pretty much what Xypherous does.

    Back in the day when I played CS:S I would always play WCS servers and my favorite thing to do was make custom races for people when they asked. I would end up the main admin when it came to creating these races many times. Any time I looked at the coding I would be in love. As I was doing this I realized that this is what I wanted to do with my life. Create coding to make game characters do the awesome things that they do. Not create the models, art and what not. I want to write what tells them what to do.

    My issue with this though is that I have no idea where to go to achieve my dreams of working at RIOT and coding for them. ATM I am attending school for Networking Systems Administration but I know that wont get me there nor is it even entertaining.

    So my question is: RIOT's Game Programmers.. What did you do to get to where you are at RIOT to be coding the champs. What school did you attend? What sort of stuff was on your Resume? and What should I be knowledgeable about to work at RIOT as a Programmer?

    (Also, an idea I have thought about doing as far as something for a programmers resume, was to create a WCS server once its released for CS:GO and make my own WCS Server that I will write all the races for and then personally balance them. Much like what is done at RIOT. So everything with the server I would be doing solely when it comes to Races, Balance, and running the server.
  • Quote:
    Originally Posted by Major Jae View Post
    I have two goals for my life. My first dream is to code game characters to do the stuff we see champs do in LoL. And my second dream is to work at riot as a game programmer while I fulfill my first dream. So, pretty much what Xypherous does.

    Back in the day when I played CS:S I would always play WCS servers and my favorite thing to do was make custom races for people when they asked. I would end up the main admin when it came to creating these races many times. Any time I looked at the coding I would be in love. As I was doing this I realized that this is what I wanted to do with my life. Create coding to make game characters do the awesome things that they do. Not create the models, art and what not. I want to write what tells them what to do.

    My issue with this though is that I have no idea where to go to achieve my dreams of working at RIOT and coding for them. ATM I am attending school for Networking Systems Administration but I know that wont get me there nor is it even entertaining.

    So my question is: RIOT's Game Programmers.. What did you do to get to where you are at RIOT to be coding the champs. What school did you attend? What sort of stuff was on your Resume? and What should I be knowledgeable about to work at RIOT as a Programmer?

    (Also, an idea I have thought about doing as far as something for a programmers resume, was to create a WCS server once its released for CS:GO and make my own WCS Server that I will write all the races for and then personally balance them. Much like what is done at RIOT. So everything with the server I would be doing solely when it comes to Races, Balance, and running the server.
    You don't sound like you want to be a programmer; you sound like you want to be a designer.

    Programmers, more often than not (this is not a hard and fast rule), do not actually design champion movesets or balance numbers or what have you, but rather give designers the tools to do these things. Games are bytecode, and that is generated from some language like C++ or C#, and programmers make it so pixels appear on the screen, packets are sent across the network, and files of specific formats are read in. They expose specific tools for designers to access so that they can easily create whatever it is they need to create.
  • Quote:
    Originally Posted by liHDlGinzo View Post
    Perl, Java and C++
    Those are the 3 main languages they use.
    Perl for the champion skills / AI.
    Java for the launcher and C++ for the engine.
    This is incorrect.

    Launcher and game client are both C++. Champion skills are lua.
  • Quote:
    Originally Posted by relevantex View Post
    You guys you C++ over Java??

    Blasphemy.
    Gotta go fast.
  • Quote:
    Originally Posted by Dona eis Requiem View Post
    Fast????? The lolclient in the background (In-game) Use 500/800mb of ram

    so fast
    That's not the game client, that's the air client.
  • Quote:
    Originally Posted by Mynt View Post
    Incidentally, I've been meaning to train myself for that side of programming for some time now. While others find source coding to be a chore, I find manipulating the binary of machine code into something meaningful on the screen to be more natural than speaking the English language, more vibrantly beautiful than oil paintings.

    Here's my roadblock--I don't know how to interface with a computer in this manner. I have pages written on paper by hand, in Java and Lua for audio compression codexes, n-body simulations I'd like to run, and whatever all else interests me at the moment. But I have no idea how to run this code on a computer. I'm guessing that there is a program somewhere on the internet, which I can run, and will convert my input (code) into an output (binary memory.) I can't find such a program, don't know what such a program is called, and the description is too complex for me to effectively use Google's search engine.

    WhattayaBrian, since this is your job, like... how do you do it? I'm not asking a painter how he comes up with the idea of what to paint. I'm asking how he physically grabs the brush and puts onto the canvas. Figuratively speaking. In what window are you typing your codes and where do you click to make the computer you wrote it on start doing what you coded?
    I heavily recommend Microsoft Visual C++ Express. It's free, and it gives you everything you need.

    I need to head home now, but I'll be back and I can go into more details about solutions and projects and compilations and links and all that fun stuff.
  • Quote:
    Originally Posted by Mynt View Post
    Ah! Exactly.

    You are great.
    *deep breath*

    At its simplest, any C++ compiler will take a collection of CPP files, turn them into bytecode (called compiling), stick them together (called linking), and make an executable.

    This executable, when run, starts at the function called "main" (or "WinMain" sometimes), and ends when main returns.

    CPP files cannot talk to each other unless you tell them how to speak. This is most often achieved through headers. Class declarations, externs, function prototypes, and #include's make their homes in files ending in .h. However, header files are not compiled directly. They are only compiled because they are #include'd in CPP files.

    When you tell a CPP file that a class or a function exists through a header file, it "trusts" you. It says "okay, you said this thing existed so I'm going to use it, and I expect it later!"

    This "later" is the link step. This step takes all of the intermediate pieces of bytecode and fills in the missing pieces, quite literally "linking" them together.

    Note that "compiling" is often used to refer to the entire process, of both "compiling" and "linking", but it is also just a singular step as well. Which one it is is based on context and I'm sorry.

    Now, Visual C++ (or Studio) collects all of your source files into what's called a "project". There are different types of projects. You can make a Console window C++ project, or a Win32 C++ project, or a C# class library, or a C# application, or whatever. Lots and lots of different things to make. Each project also has a bunch of things you can configure, but you probably don't need to deal with those yet.

    But beginning in 2005 and going forward, you can no longer just build a project in Microsoft's development environment. It must also be a part of a "solution". This is the simplest thing yet: it is literally just a collection of projects. It also has control over the order projects build in, but is otherwise analogous to a simple folder.

    So, in your beginning simple attempts at coding, you'll almost assuredly have a single solution, within which is a single project, within which is a collection of CPP and H files that make up your codebase.

    I recommend starting with an Empty Console C++ project. If you've never actually built anything, it's best to start without a graphical component.

    Code:
    #include <iostream>
    
    int main()
    {
        std::cout << "Hello world!";
    }
  • In case the OP or other participants in this thread are interested, there was a similar thread floating around last week that had a lot of good questions and responses in this same vein, including learning resources:

    http://na.leagueoflegends.com/board/...ht=riotschmick
  • Quote:
    Originally Posted by liHDlGinzo View Post
    Cute. You forgot "return 0;", excluding that could cause memory issues later on.
    This is not correct. "main" is sort of special in that it can have several different prototypes. The most standard is "int main()" or "int main(int argc, char * argv[])", while the deprecated, but still valid (in some compilers), forms are "void main()" or "void main(int argc, char * argv[])".

    void main (where it's supported) returns 0 implicitly.
    int main returns what you say it returns, but returns 0 if it doesn't reach a return statement.

    The return value is valuable for people calling your function, but there are no "memory issues" here, unless there's some crazy edge case I've never heard of (and there always seems to be...).