Home Technical Talk

Favor for a friend...calling you programmer types

Bronco
polycounter lvl 18
Offline / Send Message
Bronco polycounter lvl 18
Hey guys.

possibly you technical artist types may know the answer here as well smile.gif.

one of my Co-Workers wants to make the switch from what he is doing now,to videogame programming. I said id ask around at polycount which goes as far as making a post smile.gif.

The basic question is what should he be learning? and what should he produce/show to a possible videogame based employer to get an interview/job?.

He has exsperience in a huge range programming languages from simple html,xml etc to C and C++. Though this exspecrience is largily self-taught and done for friends or himself rather than an employer. The job he has with us is is first programming job and is largily flash based action-script and .xml coding which he has had enough of and in the opinion of the rest of us (though oviously I don't know how good he acturally is since im an artist) is way below his actural abilitites.

Right now he is infact learning C-Sharp in his spare time and is creating his own game engine and world builder from the ground up using DX9 and Shader 2 Tech.We hope to create a small game out of it with myself doing the art.He is also learning 3dSmax with my help so he can make basic .fx shaders and placeholders so he can test stuff himself. but is this the best way for him to demostrate his programming creditials to an employer?

His only other game based programming exsperince is creating mini-mods that him and his friends played over LAN for the Quake and UT series. but again these where never made public.

In an ideal world he would like to do shader programming "because I like the maths involved" (crazy man confused.gif) or editor building.

Any Advise would be much appreciated.

Cheers

John

Replies

  • Ryan Clark
    Options
    Offline / Send Message
    Ryan Clark polycounter lvl 18
    Sounds like he's on the right track!

    When applying for a game-programming job, the most important thing is to show a game that you've coded yourself. It's the best way to learn, and the best way to prove your skills to an employer.
  • sonic
    Options
    Offline / Send Message
    sonic polycounter lvl 18
    Well I'd say he is wasting his time learning C#. It is basically Microsoft's version of Java. If he is looking to do game programming, stick to learning advanced C, C++, and DirectX (or OpenGL).
  • Asthane
    Options
    Offline / Send Message
    Asthane polycounter lvl 18
    [ QUOTE ]
    Well I'd say he is wasting his time learning C#. It is basically Microsoft's version of Java. If he is looking to do game programming, stick to learning advanced C, C++, and DirectX (or OpenGL).

    [/ QUOTE ]

    Yes, because no one uses that XNA junk laugh.gif

    I wouldn't be so quick to write off C#, there's a lot more to it than "microsoft's Java".
  • Bronco
    Options
    Offline / Send Message
    Bronco polycounter lvl 18
    cheers for the info lads.

    ill pass it on smile.gif

    John
  • Ryan Clark
    Options
    Offline / Send Message
    Ryan Clark polycounter lvl 18
    I suspect it's more common than you think. I've worked for two different studios where C# was used for internal tools. Certainly C++ is the more valued skill, but C# has its uses.

    At any rate, specific language skills are overrated; It just isn't very hard to pick up a new language when you need to.

    Familiarity with a 3D API is very helpful. It doesn't really matter which one. They're all basically the same.

    A polished game demo will be impressive no matter what languages & APIs it's built with. A good demo is the single most important thing for a programming candidate to have. It needn't be big. It can be very simple. Just make sure it feels fun & polished.
  • CrazyButcher
    Options
    Offline / Send Message
    CrazyButcher polycounter lvl 18
    bringing a project (even small) to an end, so that it has proper useability, is indeed a good goal. So better not do an engine with billions of features, but more compact so that you touch more than just the technical side of things (interface, control behavior...)

    I also think that C# is a good pick, especially when it comes to tool coding or any other non-extreme speed critical tasks, which normally are most tasks wink.gif
    Certainly C++ will be in many ways a lot "harder" to achieve things, thats the whole point of high level languages... after all C replaced ASM for good reason as well. And the same will happen again with the high-level languages.
  • Rick Stirling
    Options
    Offline / Send Message
    Rick Stirling polycounter lvl 18
    What kind of games programming? It's getting very specialised these days, I know peoples who jobs are animation systems, hard-core engine stuff, shaders, AI, UI, audio.


    C++ is what pretty much every coder I know from everywhere I've ever worked uses.
  • sonic
    Options
    Offline / Send Message
    sonic polycounter lvl 18
    [ QUOTE ]
    At any rate, specific language skills are overrated; It just isn't very hard to pick up a new language when you need to.

    Familiarity with a 3D API is very helpful. It doesn't really matter which one. They're all basically the same.

    A polished game demo will be impressive no matter what languages & APIs it's built with. A good demo is the single most important thing for a programming candidate to have. It needn't be big. It can be very simple. Just make sure it feels fun & polished.

    [/ QUOTE ]

    Are you an artist or a programmer?

    Specific language skills are NOT overrated. If a studio uses only C/C++ for its engine and you only know C#, you will not be hired.

    3D APIs are NOT just all the same. DirectX is a complete graphics/audio/interface API that relies on the hardware while OpenGL is just a 3D renderer that can be hardware accelerated.

    Like Rick said, you should pick an area of game programming. Maybe not as specific as animation or lighting, but at least decide whether or not you will be programming tools or if you will be programming engines. This will allow you to choose the best programming language to learn. C++ is very powerful and is definitely the harder of the two to learn, but it is easier to learn C++ first and move to C# than it is to do the opposite.

    Crazybutcher: he said he wants to be a game programmer and you're telling him to pick the language that you yourself say isn't good for speed critical tasks. And it is not harder to use C++, it is harder to learn. You can often write algorithms in C++ that will be smaller and more efficient than any other language out there.
  • Snowfly
    Options
    Offline / Send Message
    Snowfly polycounter lvl 18
    omg sonic just tried to lay the smack down on mr. crazybump! laugh.gif

    kidding aside, i wouldn't be so quick to write off C# as only a tools language. it has its value too in game prototyping, especially combined with XNA.
  • KeyserSoze
    Options
    Offline / Send Message
    KeyserSoze polycounter lvl 18
    [ QUOTE ]
    C++ is very powerful and is definitely the harder of the two to learn, but it is easier to learn C++ first and move to C# than it is to do the opposite.

    [/ QUOTE ]

    Actually, I would submit that the opposite is true. C# is very Object-Oriented with a C-like syntax. If you learn C# first it will pretty much force you to learn OO programming from the start, and since the syntax is similar, the transition to C++ is pretty painless... at least, that's been my experience. He said the guy already knows C/C++ anyway, so it doesn't really matter. Don't discount C# so easily, it's a great high level language that's very versatile.
  • CrazyButcher
    Options
    Offline / Send Message
    CrazyButcher polycounter lvl 18
    speed critical is a very stretchable statement, if you want to code a crysis like engine, then yes you would pick whatever is fastest. But taking farcry or other games for instance, often game related code (ai, mission...) is coded in high level interpreted scripting languages which are even slower than compiled stuff such as C#/Java. Yet their speed hit is negligible, because their whole share on the main game work is very tiny. The raw renderer/physics and so on just eat it up so much time, that the few entities you typically have in games just have no impact.

    That said of course if you are working on "super awesome title II" with billions of characters and so on, you might pick faster stuff here as well.

    I think way too many people overrate the "speed hit" of certain languages, its not the best to use the fastest language possible, which might still be assembly. There is a difference between writing fast code, and writing code fast. If the latter gets the job (as in time until the code is ready to use) done quicker, and job itself is not of high importance, you effectively get more features going on. And actually you could replace the stuff later with fast code, in case it really becomes a bottleneck.

    and I agree with Ryan about the language itself being secondary. Yes he will need to know c++ (which he does) for most jobs, but what is more important is the algorithms and code structure itself, the way to organize data / functions and so on. Which is the actual main brainwork!
    And if he can do a polished demo, that is finished, as Ryan suggested, he proves himself capable of such "bigger" tasks that involved many different tasks (controls, logic, effects..). Compared to picking a language like c++ which simply requires more work to just write stuff down, and that time eats away from doing "more".

    So say you have a guy who coded a c++ demo of some nice render effect, very fast and efficient. Yet it is rather one specific effect. And then another guy who has done a full little game, yes in theory it doesnt run as fast as the demo renderer, but it is a full product.

    interesting read about languages by Tim Sweeny
    http://www.st.cs.uni-sb.de/edu/seminare/2005/advanced-fp/docs/sweeny.pdf

    or a java based quake2 engine as speed comparison between C (which might arguably be even faster than c++) and java (which is basically the same thing as c#)
    http://bytonic.de/html/benchmarks.html

    sonic, are you a coder or artist or both ?
    if you were a coder, who doesnt rely on a single langauge for the rest of his life, I would suspect you are aware of how generational changes were made in history of programming. The same C vs ASM discussion was done before, with the same "oh its not as fast" arguments, yet we dont code in ASM anymore...

    about dx featuring more than opengl, yes of course, but dx has a software renderer just like opengl could use one. However the important bits the actual rendering. Creating vertexbuffers, setting shaders and so on, is similar, as the hardware is the same... For Direct3D you might need to know a bit more about what slows down the api there, cause dx uses more cpu than opengl which has a much more direct interface to the hardware.
  • Bronco
    Options
    Offline / Send Message
    Bronco polycounter lvl 18
    Cheers,fellas

    I think I might have to flick rubber bands at him on Monday until he registers here smile.gif. But he is following this thread closly.

    Rick:- He wants to work on Shaders and/or world builders,so making things similar to what crytek seem to be doing and the programming to make Unreal ED work for example.

    As said he does know C++,but just hasn't had the need to use it over the last couple of years so is abit rusty with it,but if you were to put some C++ code in front of him he wouldn't be totally lost with it and would pick it up quickly again.

    also we have decided to go with the idea of an arcady motorcross game in the essence of say "motorcross madness" for several reasons.

    *Its pretty simple yet theres room to do some neat things with it.
    *Simplier physics than a car game,physics and animations are his weakest areas in programming.
    *with the various surfaces and terrains in motorcross he can show off what his world builder and editor can do.
    *doesn't take a stupid amount of work to produce something that looks OK and workable...so not to ambitious. (i.e no MMORPGS here wink.gif)

    again thanks for the advise.

    John
  • doc rob
    Options
    Offline / Send Message
    doc rob polycounter lvl 19
    [ QUOTE ]

    Specific language skills are NOT overrated. If a studio uses only C/C++ for its engine and you only know C#, you will not be hired.


    [/ QUOTE ]
    Not true. This guy is familiar with C++ and that absolutely could be enough.

    Oh, and C? Really?

    You are hatin' a bit too much on C#. It's a great language for tools programming. This guy might not be trying to be the next Carmack and be a low-level engine coder. If his 'folio' consisted of an awesome tool (like CrazyBump), but written entirely in C# , that is a great thing. Familiarity with C++ is a necessity, but he has that. It's also completely possible to write good game demos entirely in C# these days with XNA. It's arguable that C# might be the BEST choice for writing a quick gameplay prototype (it depends on what you're prototype is focused on).

    My recommendation, as mentioned by others, would be to specialize in a specific aspect of game programming (AI, Physics, Artist Tools, Networking, UI, Graphics, etc). From there, just program something relevant to game companies, and make it hot.
  • sonic
    Options
    Offline / Send Message
    sonic polycounter lvl 18
    KeyserSoze: while C# was built with OO from the ground up, OO implementation has been in C++ forever. C#, OO wise, is no more powerful than C++. And he said is familiar with C++/C, which in no way says he is proficient in it. I am not dismissing C#, I swear! In fact, most stuff I have done over the past several years has been in Java/C#, but if you want speed and power (which is what game companies need) you should learn C++ very well.

    CrazyButcher: speed critical is questionable? Which game company goes, "You know what, we're not worried about speed or how well this runs, who cares what language it is in?" when there are plenty of C++ developers? And Java isn't even really compiled. It is converted to bytecode which is interpreted by the JVM. Have you ever actually programmed in Java or C#? The speed hit is not overrated. I definitely agree with you that understanding OO, algorithms, etc is the most important part. But what about C++ makes it "requires more work to just write stuff down?" Can you give me an actual example? I've seen that speed comparison between the C version of Quake2 and the Java version. It is not a fair comparison, because the original Quake2 was written with a deadline a long ass time ago when programming knowledge was nothing like it is today. The Java version took the base C version and modified it and tweaked it over and over and over. Give the C version to an expert programmer and tell him to optimize it in C and you will get a speed boost as well. And although I am an artist, I am about to finish my Computer Science degree. There is a huge difference between C and assembly, but there isn't enough of a difference between C# and C++ to switch over yet. And you are wrong that OpenGL has a more direct interface to the hardware.

    I don't get what everyone is trying to argue here. C++ is clearly faster, more powerful, and is harder to learn. If you learn C++ it is easier to move to C# if necessary. If he wants to make only tools, then yes C# will suffice. If you want to be more versatile, learn C++.
  • Ryan Clark
    Options
    Offline / Send Message
    Ryan Clark polycounter lvl 18
    Sonic, what you don't get is that you're being a little bit abrasive.

    The relative merits of C++ aren't in question. It's the lingua franca, and a professional game programmer absolutely needs to be comfortable using it.

    What's in question is whether Bronco's friend who already knows C++, is "wasting his time" picking up another language.

    That sentiment was just silly. Learning a new language is never a waste of time. Languages are fun to learn and the mental exercise is nice even if you seldom end up using it.

    I don't know whether I'd recommend C#. For mental gymnastics I'd probably recommend Lisp instead... but it's hardly fair to say he's wasting his time. At any rate what he learns will be more about the project than the language.

    (And seriously, the difference between 3D APIs is minor syntactic sugar; you learn one and then you can use them all.)
  • sonic
    Options
    Offline / Send Message
    sonic polycounter lvl 18
    Ryan: sorry for coming across as being abrasive. Each one of my posts in this thread has been rushed because I wrote them in hurry to head out the door. I agree with the idea that learning a new language is NOT a waste of time. The way I read his post however, inferred that he is only familiar with C++. I have heard so many programmers use the word "familiar" in the sense of "I've used it a few times, and I could probably learn it if I had to." I was never arguing that he shouldn't learn C# eventually, I was merely trying to say that C++ should be his first language to become proficient with if he wants a job working on an engine. If I am mistaken and he is already very familiar with C++, then yes by all means he should learn C#.

    I also didn't catch on that he wanted to program tools, so in the end C# may be his best option.

    And I'm sorry if I came across as an ass. It's not often that I see threads like this so I usually get riled up when I get to shove my opinion in others faces wink.gif. You are obviously a talented programmer who has done some great work for the industry and the scene. This is honestly the first time I've been in "Technical Talk" in forever because people used to just talk about art techniques and modeling programs back when I used to use it tongue.gif
  • CrazyButcher
    Options
    Offline / Send Message
    CrazyButcher polycounter lvl 18
    sonic, I am very well aware how java/c# use bytecode, I had my share on java programming as well, just as c,c++,lua,maxscript. And I strongly go with my opinion, that games do not always pick the fastest compiled code, but do use scripting and other not-so-fast stuff for game-related issues. Just take UnrealScript for instance, or Lua being used in many games. I think you completely exaggerate the "slowness" and speed hit of using those languages. I'd suggest you to read the sweeny notes, there is a also a comparison of game/engine code and their relevance.

    and about opengl driver being faster/direct access, have a look at this http://www.beyond3d.com/content/articles/55/1 it shows how d3d10 was modelled after the same way of opengl support already in w2k/wxp. Exactly for the performance reasons.
  • Ryan Clark
    Options
    Offline / Send Message
    Ryan Clark polycounter lvl 18
    Oh, in that case I definitely agree, Sonic. To work at a studio he needs to be comfortable with C++. In particular, he needs to know how to manage his own memory and resources, which is a discipline that C# won't teach him.

    The technical arguments are almost beside the point because studios already have large bases of C++ code and teams working on it. Inability to maintain that code would be a real disadvantage.

    His demo won't be any less impressive for being written in C#... but if he can't hack C++ then, yeah, he'd better learn to.
  • CrazyButcher
    Options
    Offline / Send Message
    CrazyButcher polycounter lvl 18
    c++ is definitely the industry standard and nearly all job application demand it, so yes he better be comfy with it. And I do not want to neglect that at all, I just say that there is a world next to c++, and that is also used in games.
  • Shallan
    Options
    Offline / Send Message
    Cheers for the input all, it certainly gives me an idea where to aim for. My experience with c/c++ while limited to creating RTCW and Q3 mods does give me a good place to start to learn the finer details such as the memory management. My reasons for choosing C# initially was to give myself a grounding in DirectX concepts and a way to experiment with shaders without getting bogged down with just these things in C++. After reviewing both this thread and my current code I now feel confident I can port this over to C++.

    As far as my aim in the industry, I've thought alot about this the last few days and I can safely say I'm more into making the editor tools and shaders than actually creating the 3D pipeline. I tend to start testing some concepts for an engine and end up making a tool to edit things to test in it. Ive done this for pretty much every thing I've worked on as a personal project way back to my C64 days hehe. And as Bronco says with shaders I just love the math involved.

    But thanks again for your input much appreciated.
  • Snowfly
    Options
    Offline / Send Message
    Snowfly polycounter lvl 18
    Cheers Shallan, looking forward to yours and Broncos little motocross game. Make sure it supports plug and play characters! tongue.gif
Sign In or Register to comment.