Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. We have updated the language to the Editor Terms based on feedback from our employees and community. Learn more.
    Dismiss Notice
  3. Join us on November 16th, 2023, between 1 pm and 9 pm CET for Ask the Experts Online on Discord and on Unity Discussions.
    Dismiss Notice

What are the programming languages that a game developer should master ?

Discussion in 'General Discussion' started by CrispToTheMax, Oct 18, 2015.

  1. CrispToTheMax

    CrispToTheMax

    Joined:
    Oct 18, 2015
    Posts:
    2
    Hey guys :)
    To start off, my name is Omar El Atyqy and i'm from Morocco. One of my biggest dreams is to become and follow the path of a game developer. While it may look odd and too early for you, i'm only 14 years old but that didn't stop me from looking around the web and learn more about the job of a game developer and the qualifications it needs. I must add that i'm more attracted to the coding/scripting (or whatever it's called) side of the job, so the most of my researches on the wed were about the languages that are the most used in game coding/scripting (still not sure about the correct word) and a good game developer should master o_O.
    The other thing is, while looking around the web, i learned that a game can be coded by hand (writing your code from the beginning till the end) or using a game engine that wall simplify the task, and while looking at some comparisons between the most popular "game engines" (i'm putting it between quotes because i might have a wrong idea about them), i found and fell in love (well ... not literally :oops:) with unity and decided that, if i'm gonna use a "game engine" for my (future) projects, it should be it :)

    So without further talking, here are the questions :
    • 1) What are the languages that a game developer must know and master ?
    • 2) What are the languages that a game developer using Unity must know and master ?
    • 3) From the 2 first questions (that sounds more like a test than anything else :p), what is the order to learn these languages ?
    • 4) And finally, can you give some courses to learn those languages (that contains exercises and everything needed for a good learning) ?
    So yeah, these are the questions i need answers to and i hope they weren't that dumb and sorry if my text contains a lot of grammar/expression mistakes, but like i said, i'm Moroccan and English is my third language :rolleyes: (But i'm pretty sure that it will help me the most in term of the path i had choosen ;))

    Thank you :D
     
  2. pKallv

    pKallv

    Joined:
    Mar 2, 2014
    Posts:
    1,129
  3. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,141
    Don't focus on mastering a language, focus on mastering programming. You will change languages through the course of your career, but any concepts you've learned will carry over from one language to the next.
     
  4. MarkFowler

    MarkFowler

    Joined:
    Nov 29, 2012
    Posts:
    31
    Choosing Unity as a lone developer is a great idea, probably the best. I have tried a lot of game engines as a single developer, and let me tell you, Unity does it the best. The interface is clean and easy to navigate and the component-based approach to scene management is bar none the best approach, because its so much easier to manage than other systems. With that said, let me hit those numbered points:

    1 - Most game engines use C++, but that language is very obtrusive, difficult to master and so easy to introduce system-breaking code into your project. Some use Java, some use Python, but if you are using Unity, see #2.
    2 - For Unity, the best to learn is C#, as not only is it a cleaner to read language than all the others (in my opinion), it is also backed by the entire .NET library, so very powerful.
    3 - For learning, I suggest looking up thenewboston or BurgZergArcade on YouTube as well as just jumping into the tutorials on the Unity site itself.

    Hope this helps, and welcome to the frustrating and very rewarding field of game development.
     
  5. Kiwasi

    Kiwasi

    Joined:
    Dec 5, 2013
    Posts:
    16,860
    Google should be your first target for mastery.

    A quick search would have revealed that Unity supports C# and UnityScript/JavaScript. A little more searching would reveal that C# is typically considered the better choice.

    Without mastery of google you will get nowhere as a programmer.
     
    landon912, MarkFowler and Ryiah like this.
  6. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    9,763
  7. CrispToTheMax

    CrispToTheMax

    Joined:
    Oct 18, 2015
    Posts:
    2
    Well, if you actually read the whole message, including the first question, you would have understood that i'm looking also for languages that are used by all the game developers, using a game engine or not ;)
     
  8. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,141
    Games have been written in practically every programming language, but if you're asking for a universal programming language, one that has been used by every game developer, then you're going to be disappointed. There are none.

    While some languages such as C++ are highly popular, they are by no means universally used.
     
    Last edited: Oct 18, 2015
  9. Azmar

    Azmar

    Joined:
    Feb 23, 2015
    Posts:
    246
    C (its a good foundation language), because if you understand C you will understand practically every other language or will understand a new language very quickly. Object oriented language for sure would be Java, after that its easy to understand all object oriented languages.
     
  10. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,141
    Sounds like you're suggesting we start with the miserable languages first. Especially in the case with Java. :p
     
    zombiegorilla and Kiwasi like this.
  11. Azmar

    Azmar

    Joined:
    Feb 23, 2015
    Posts:
    246
    University tortured me with these languages, so everyone else has to feel my pain too.
     
    zombiegorilla and Ryiah like this.
  12. Kiwasi

    Kiwasi

    Joined:
    Dec 5, 2013
    Posts:
    16,860
    Sure if you are doing a comp sci degree. If you want to learn programming for its own sake, then starting with C isn't a bad idea. Heck, start off with drawing out binary logic gates.

    However if you want to make games, I'd suggest starting with the language supported by the engine. That would be C# for Unity and C++/blueprints for Unreal. Leave the low level stuff to the specialists building the engine.
     
    Ryiah likes this.
  13. Tomnnn

    Tomnnn

    Joined:
    May 23, 2013
    Posts:
    4,148
    You should build your own language. Write the interpreter in c# so it can run in unity. Use

    Code (CSharp):
    1. Application.dataPath.substr(0, Application.dataPath.indexOf("/Assets")) + "/YourLang";
    For loading files when the engine starts.
     
    Ryiah and Kiwasi like this.
  14. GarBenjamin

    GarBenjamin

    Joined:
    Dec 26, 2013
    Posts:
    7,441
    I'd recommend starting with Assembler. It's very straightforward & easy to code in and yet it gets you a real understanding of what is actually going on later when you move to higher level languages. You'll have a much better understanding of what is going on when you use something like a List for example. Also, it is a great way to get your brain thinking the right way from the beginning. For example, you can certainly do test driven development in Assembly language although it is probably not common.

    If Assembler is too low then get into something like C or a good old BASIC language (maybe QBasic). If you absolutely want to use a high level language such as C# then be sure you do some research on data structures and algorithms. Then spend some time writing your own code experiments using what you found in your research. Yes, it is true a lot of this stuff is built-in these days and I personally think people are missing out on attaining a deep understanding of the fundamentals as a result.

    This is all for becoming a great programmer. If your interest is simply in making games then forget all of that and just get to work in Unity and C#, Gamemaker Studio or whatever.

    Just my two cents.
     
    Tomnnn and Kiwasi like this.
  15. angrypenguin

    angrypenguin

    Joined:
    Dec 29, 2011
    Posts:
    15,516
    It doesn't matter. Learn any language to get the fundamental programming skills. A "C-style" language will be most immediately transferrable. From there, adapt to whatever your development environment requires of you. Once you're fluent in three or four languages you'll be able to read just about any, and pick up writing them pretty easily (as little as hours for some).
     
  16. LMan

    LMan

    Joined:
    Jun 1, 2013
    Posts:
    493
    I started using a visual scripting tool, then moved on to c# when I began to grasp how everything fit.

    Other useful languages include databases like XML or mySQL,

    Shader language- ShaderLab can be handy as well.
     
  17. Yash987654321

    Yash987654321

    Joined:
    Oct 22, 2014
    Posts:
    729
    What's wrong with Java? We are going to learn in next year in our school (And I already know a lot :p) and you are saying its a miserable language! BTW I never learnt Java but I can easily write many programs in it
    Just took hardly an hour to understand the difference... So I think it can be vices versa too. Learn any one and you can easily learn another......
    BTW c++ scripts can be compiled into DLL or as plugin to run with unity I guess.
     
  18. Tomnnn

    Tomnnn

    Joined:
    May 23, 2013
    Posts:
    4,148
    I give java credit for turning me into the genius I am now regarding code. It was excessively verbose and had great documentation :)

    Some people look down on it for running in a virtual machine... hypocrites. Mono is the same thing with C#! :p
     
    Yash987654321 likes this.
  19. thegamer1234

    thegamer1234

    Joined:
    Feb 13, 2015
    Posts:
    48
    I knew someone my age would turn up.
    MAstering java/ python/C#/C++/all is good for a game developer.

    The language you choose depends upon the engine the platforrm you choose to publish etc.
    And yes Are there no computer classes in school?

    my school teaches me java rright now
     
    Last edited: Oct 19, 2015
  20. Yash987654321

    Yash987654321

    Joined:
    Oct 22, 2014
    Posts:
    729
    There are surely more 'someone of your age' that you could imagine
     
  21. thegamer1234

    thegamer1234

    Joined:
    Feb 13, 2015
    Posts:
    48
    :):):p:D
     
  22. goat

    goat

    Joined:
    Aug 24, 2009
    Posts:
    5,182
    Google and copy / paste is mostly useless to you without understanding the underlying concepts of what you are doing from the perspective of a programmer.

    I'm tempted to recommend C# but I know the IDE and solution template environment so helpful in Microsoft's tools often is a crutch and not a help when trying to learn the fundamentals of programming but I will recommend C# anyway.

    If you are looking to make your life easier at University then you should learn C++ (superset of C), and Java on FreeBSD, Linux, or similar UNIX environments. C# will seem like a walk in the park afterwards but seeing as you probably want to make game quickly as possibly you will probably choose C# to begin with.

    It will help to know C++, Java, and C# later in your productivity as you can adapt solutions in other languages to your own environment and needs.
     
  23. Aiursrage2k

    Aiursrage2k

    Joined:
    Nov 1, 2009
    Posts:
    4,835
    Punchcards
     
    Kiwasi likes this.
  24. Kiwasi

    Kiwasi

    Joined:
    Dec 5, 2013
    Posts:
    16,860
    My first real programming job was in ladder logic, if that helps. ;)
     
  25. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,141
    Java simply feels like an incomplete C#.
     
    landon912 and McMayhem like this.
  26. Tomnnn

    Tomnnn

    Joined:
    May 23, 2013
    Posts:
    4,148
    My highschool compsci teacher called C# "microsoft's java", though your description is accurate. The clone has surpassed the master!

    In Java8 you have delegates though, so they're working on it...
     
    Kiwasi likes this.
  27. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,141
    @Tomnnn: Do they have properties yet?
     
  28. angrypenguin

    angrypenguin

    Joined:
    Dec 29, 2011
    Posts:
    15,516
    While I see where you're coming from (based only on very dated experience with Java) I really don't see properties being a big deal. In fact, half of me really doesn't like them - their entire purpose is to obfuscate things!

    I know they look nice, but making a function call look like you're just accessing a variable seems backwards to me. I'm all for encapsulating things behind function calls if their access should be controlled (now or potentially in the future), I just personally don't see the benefit of making it look like something else.

    (Is anyone able to explain what that benefit is? Am I missing something?)
     
    tiggus and Kiwasi like this.
  29. Kiwasi

    Kiwasi

    Joined:
    Dec 5, 2013
    Posts:
    16,860
    With a property I can lazily make a field public. Then I can add properties later when I realise I should have encapsulated the field properly from the beginning.

    That may or may not be an advantage, depending on where you are standing.
     
  30. Mwsc

    Mwsc

    Joined:
    Aug 26, 2012
    Posts:
    189
    I see the word 'mastery' tossed around a lot on this forum, in contexts such as this. But what do people really mean by it? I think of mastery as meaning you are a 100 percent total expert. You can master multiplication, meaning you have your times tables memorized up to 12x12, along with being very fast at multiplying large numbers out on paper. If you can do a formal proof that the longhand paper algorithm is correct, then you are a master. But how can you master a programming language, realistically? You would have to know the entire spec by heart, be an expert at every design pattern and every standard library call. Are you guys using a weaker concept of mastery, that really just means competence?
     
    landon912, Kiwasi and angrypenguin like this.
  31. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,141
    It was simply the first thing that came to mind when he mentioned Java 8 bringing it closer to C#.
     
    Last edited: Oct 20, 2015
  32. angrypenguin

    angrypenguin

    Joined:
    Dec 29, 2011
    Posts:
    15,516
    Then the properties don't even look like properties, because they're going to be named like fields as well as addressed like them. I shudder at the thought of such changes!

    (You could of course follow this up with appropriate refactoring, but then the work is about the same as if you'd just done it with GetX() and SetX(type newX) in the first place.
     
    Deleted User and Kiwasi like this.
  33. angrypenguin

    angrypenguin

    Joined:
    Dec 29, 2011
    Posts:
    15,516
    Yeah, I've been doing this for quite a long time and have many successful projects under my belt, and still don't consider myself to be a "master". The people I consider to me "masters" are also only masters at relatively specific things, and are comfortable enough to tell you that themselves.
     
  34. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,141
    Additionally they take less typing to look up in IntelliSense and less space in IntelliSense (one entry versus two for Get/Set).
     
    angrypenguin likes this.
  35. Deleted User

    Deleted User

    Guest

    Arnold C of course..
     
    Ryiah and angrypenguin like this.
  36. Tomnnn

    Tomnnn

    Joined:
    May 23, 2013
    Posts:
    4,148
    I saw someone create a get & set property thing using lambda expressions with java 8, so yea kind of :)
     
  37. snacktime

    snacktime

    Joined:
    Apr 15, 2013
    Posts:
    3,356
    As a language I prefer C# over java any day, and it just hurts having to switch over and use Eclipse. But it's really about the job at hand. Java rules server side just like .NET rules on the client side. And it really has nothing to do with the merits of the languages. Ecosystems just tend to specialize over time for various reasons and it's the collected wisdom and libraries and tools that decide what language is the best tool.

    My advice for new developers is go learn half a dozen languages as fast as you can. Get to the point where you are proficient in learning languages and you simply won't care all that much which one you use. The benefits of using the language that has a strong ecosystem for the job at hand almost always outweigh any merits of the language itself. Once I got to the point where I could be productive in a new language within days or weeks, I stopped making technical choices based on language,and it was a turning point in my career. My only regret was that I didn't get there sooner.
     
    Tomnnn, angrypenguin and Kiwasi like this.
  38. angrypenguin

    angrypenguin

    Joined:
    Dec 29, 2011
    Posts:
    15,516
    You should know better than this. The Internet is no place for pragmatism!



    ;)
     
    Ryiah and Kiwasi like this.
  39. Tomnnn

    Tomnnn

    Joined:
    May 23, 2013
    Posts:
    4,148
    It's a much clearer choice when I'm in the mood to use goto ;)
     
  40. Deleted User

    Deleted User

    Guest

    But I do love the LWJGL implementation, I've built engines quickly off that champion. I couldn't do it in C# / OpenTK, it's great but sooo confusing. I was only re-hashing what I'd wrote in Java too..

    Personally I have fond memories of Java and I can put up with C++, C (type language) is useful for shaders. Unity's version of C# (component) is awesome, as for C# itself well I'm kind of indifferent towards it.

    Ultimately, a language is just a language but if they give me cool frameworks then it sweetens the deal.
     
    landon912, Ryiah, Kiwasi and 2 others like this.
  41. Tomnnn

    Tomnnn

    Joined:
    May 23, 2013
    Posts:
    4,148
    Maybe it would be easier to make a list of languages that aren't that useful to learn instead? Languages that occupy a very small niche that is done better by another language?

    ROUND 1

    Lua vs Python

    FIGHT!
     
    Deleted User likes this.
  42. GarBenjamin

    GarBenjamin

    Joined:
    Dec 26, 2013
    Posts:
    7,441
    I wouldn't say you're missing something. I see properties as something to use when returning a simple value and methods (functions) used when there is processing going on.

    I've heard people talk about shielding the underlying data but I don't see that as being the reason to use them because both methods and properties hide access to the underlying data member.

    It is more about expressing intent and providing the ability to both set and get a value using the same notation I think. If I see a method I tend to think there is probably something more involved going on to get a return value than when I see a property. And I think that is the main point of them.

    Like if you have a property age, I'd expect using that property would simply be sort of shadow copying an underlying _age variable. Although there could be some control access in place. For example, the setter may be limiting the age to certain minimum and maximum values.

    For an age property I can get it with someVar = something.age and set it with a something.age = someVal

    With methods I need to do something like this:
    someVar = something.GetAge() and something.SetAge(someVal)

    I don't think either way is better or worse than the other. They just provide a different interface to the data. The naming of the method can certainly express intent as well. I think it'd be pretty obvious what GetAge and SetAge is ultimately doing.

    However, I wouldn't assume that GetAge() is simply copying out a local age value and returning it. It could be performing a currentDate - birthDate (or deathDate - birthDate) calculation and returning the result.

    Methods can certainly be used the same as properties and in that case there really is little value over the notation in using them. If you use properties only for copying values out of/into the underlying data member and use functions for everything doing some calculations to get the values there may be some value.

    Just my two cents. Apples and oranges really.
     
  43. Yash987654321

    Yash987654321

    Joined:
    Oct 22, 2014
    Posts:
    729
    Did you forgot other languages?
    10 Print I am awesome :)
    20 GOTO 10
    30 END
    xD
     
    Tomnnn likes this.
  44. Dantus

    Dantus

    Joined:
    Oct 21, 2009
    Posts:
    5,667
    Please use code tags ;)
     
  45. Yash987654321

    Yash987654321

    Joined:
    Oct 22, 2014
    Posts:
    729
    On an android device can't do so :( and code tag again do bit support Q-BASIC :(
     
  46. Azmar

    Azmar

    Joined:
    Feb 23, 2015
    Posts:
    246
    I took some other languages in University called: Ada, Fortran, COBOL.

    The prof told me you should start with these languages. But he was pulling out all his hair, and I think he is crazy.
     
    landon912, Ryiah and Kiwasi like this.
  47. Kiwasi

    Kiwasi

    Joined:
    Dec 5, 2013
    Posts:
    16,860
    Always got to be careful of University professors advice. "Those who can do, those who can't teach." :p
     
  48. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    20,141
    I took part in an evaluation to see what other jobs I might have talent for and one of the programming professors actually did teach COBOL. Along with Pascal and some other languages I don't recall any longer. This wasn't a considerably long time ago either. It was in the late 90s.

    No idea how effective it was at teaching though. I already knew programming languages at the time so I mostly learned the actual development aspects before software reached code. It was informative if a bit dated at times.

    He's most likely dead now. He was really old at the time he was still teaching. I swear he looked like he was in his 80s.
     
    Last edited: Oct 21, 2015
  49. tiggus

    tiggus

    Joined:
    Sep 2, 2010
    Posts:
    1,240
    Pascal wasn't so bad, I thought it was a great teaching language.
     
  50. Tomnnn

    Tomnnn

    Joined:
    May 23, 2013
    Posts:
    4,148
    Never used that language. Can you define line numbers out of order?

    10
    30
    15

    ?