Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Learning an actual language

Discussion in 'General Discussion' started by Duskling, Jun 14, 2012.

  1. Duskling

    Duskling

    Joined:
    Mar 15, 2011
    Posts:
    1,196
    I'm a strange person. I have been working with unity for a long time, but I feel like unityscript just isn't giving me a whole lot of experience that I can actually use in the industry. I have learned the basics of C++ and Java, and I love unity, But I think I should go back and make some games with C++ or Java before I really get into working in some sort of engine.

    What are your thoughts on this? If I do go back and start with another language, which one should it be?

    I just feel like It would be better for me as a self taught student of programming to start with a language that I can apply in many places.
     
  2. andorov

    andorov

    Joined:
    Feb 10, 2011
    Posts:
    1,061
    You could learn C#, which is an "actual" language, at least in my opinion. That would be applicable to Unity as well.

    C++ is good too, but I don't miss the days when I had to use it. :X
     
  3. Tanel

    Tanel

    Joined:
    Aug 31, 2011
    Posts:
    508
    Why not C# then? You can apply that in many places, including Unity.
     
  4. Diviner

    Diviner

    Joined:
    May 8, 2010
    Posts:
    677
    If you know Java, you know C#. Their similarities far outweigh their differences on the coding level (syntax, principles, keywords, etc).

    I do consider Unityscript a "real language", in the sense that I can write real programs and real games with it. It's as real as it gets on that aspect.

    However, if you feel it doesn't give you the options you need, or if your ego can't stand the fact that you're writing code on an API dependent language, C# is a very good alternative, given the fact that you already know Java.

    Don't jump between languages however. Pick one and stick with it.
     
  5. Morning

    Morning

    Joined:
    Feb 4, 2012
    Posts:
    1,141
    It doesn't matter which one you learn, because they all are similar, just some require more time to adapt.
     
  6. tasadar

    tasadar

    Joined:
    Nov 23, 2010
    Posts:
    290
    Programming is not only about learning language syntax. You should learn about algorithms, data structures, software engineering etc. You can learn many languages on the way but your aim should be to use effectively.

    Back in school they gave us lots of assignments which were usually known stuff. Coding them without cheating was generally difficult but very beneficial. One of them was a number class that could do the 4 basic operations instantly on very large numbers(limitless digits). You can try that kind of stuff to improve your overall skills. Language does not matter.
     
  7. Duskling

    Duskling

    Joined:
    Mar 15, 2011
    Posts:
    1,196
    I was looking at C# and XNA, would that be a good choice?
     
  8. n0mad

    n0mad

    Joined:
    Jan 27, 2009
    Posts:
    3,732
    If the goal is to build some skill to use in a videogame job application, then C++ is for sure the way to go.
     
  9. Diviner

    Diviner

    Joined:
    May 8, 2010
    Posts:
    677
    Excellent choice. Go for it.
     
  10. Integria

    Integria

    Joined:
    May 12, 2012
    Posts:
    145
    It often isn't that relevant to know multiple languages. The syntax between the different languages available in Unity just isn't major enough. If you are able to code in one, you should be able to shift almost effortlessly. Most of the time spent getting used to Java (not Javascript), from a C# developers perspective, for example, is a matter of getting used where the built-in functionality of the framework resides, rather than dealing with the actual programming language.

    That being said, there are a LOT of programming languages I consider worth learning, if for no other reason than them providing a different approach, or take.

    - Assembler is always worth learning, if you ask me. If you're serious about programming, it will teach you a lot of worthwhile lessons.
    - Erlang
    - Haskell
    - Lua
    - Scala

    If you want to learn a different programming language, I'd honestly suggest you pick one that is different from your current one in some regard; whether that be abstraction level, paradigm or level of parallelism.

    Edit; oh and C++ along with OpenGL or DirectX, if you have no prior experience with it. It will teach you a few lessons as well. In general, dealing with a state-driven system such as OpenGL is somewhat of a different experience.
     
  11. Diviner

    Diviner

    Joined:
    May 8, 2010
    Posts:
    677
    Assembly in game design? Overkill don't you think?

    He shouldn't waste his time on low level languages unless he's writing drivers for hardware.
     
  12. Duskling

    Duskling

    Joined:
    Mar 15, 2011
    Posts:
    1,196
    I've delved a bit into lua and I actually like it quite a bit, but it seems more for scripting than writing an actual game.

    Pretty torn between what to choose, C# and XNA are nice, and I love how C# is object oriented, but I think C++ would be nice to learn more of if I decide I want to mess with udk when UE4 comes out since that is going to be purely C++.
     
  13. Duskling

    Duskling

    Joined:
    Mar 15, 2011
    Posts:
    1,196
    Let me make a quick edit:

    Unity goes above and beyond my expectations and I can do everything I want with it. But sometimes I feel like it would just be more...substantial to learn a more commonly used language and make games in openGL or directx. What are peoples thoughts on this?
     
  14. Foam

    Foam

    Joined:
    Jun 13, 2012
    Posts:
    322
    The language is irrelevant.

    Every realistic language that you'd look at is Turing Complete. You can do in C# what you can in C++ or VB or Python or LISP or Perl or Go. Eventually, every language will look pretty much the same to you and it won't really matter what you pick.
     
  15. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,203
    C# is a commonly used language.

    As for using openGL or DirectX - What do you want to accomplish? Writing a game engine? Or writing a game? I can tell you it takes a long time to write an engine, and that's what you'd be doing before you ever got to game making.
     
  16. Integria

    Integria

    Joined:
    May 12, 2012
    Posts:
    145
    I wouldn't ever recommend making a game from the grounds up in C++ along with DirectX / OpenGL. It is, however, worth learning if you wish to toy around with custom implementations of deferred shading and lighting, particle systems, fluid dynamics, etc. I wouldn't ever implement a full game in C++ along with DX, but I find it ever so handy to have available proof-of-concept for more tech-centred applications.
     
  17. Integria

    Integria

    Joined:
    May 12, 2012
    Posts:
    145
    No, I do not think it is overkill. This isn't as much related to the actual viability of writing assembly programs, as it is to the understanding of the underlying structure and interpretation of programs. Hell, if I could suggest it, I'd suggest that everyone have a decent understanding of compilers.

    It isn't related to actually knowing how to code in assembly. It is more to give the general understanding of how programs are interpreted. It is highly relevant for a lot of developers. I've met plenty recently, who little clue why brancing is taxing on the CPU (more so some than others), or why square roots are expensive.

    Also, yes. It would be overkill for game DESIGN. For the programming aspect of game DEVELOPMENT however, I'd find it quite relevant.
     
  18. Deleted User

    Deleted User

    Guest

    Sounds like what you should do is play around with an open source game engine like ogre (or whatever the hot open source engine is these days) and maybe make contributions to it.
     
  19. Integria

    Integria

    Joined:
    May 12, 2012
    Posts:
    145
    I wouldn't necesarily recommend this. The complexity of opensource projects can often be a daunting task to deal with, in itself. This might just be my personal, weird take on it, but it often feels rewarding to implement something, whether real-time or not, from the scratch. If you haven't ever done a raytracer, a basic radiosity implementation, a take on deferred rendering, or something of the sort, it can honestly be a worthwhile investment of your time... if you have the time to spare, and wish to do something simply for the sake of learning, that is.
     
  20. VeraxOdium

    VeraxOdium

    Joined:
    Jul 2, 2011
    Posts:
    233
    It sounds like what you want is to learn the nitty gritty at a foundation level. If so C++ and DirectX and or OpenGL is the way to go. As suggested assembly is good to learn for the sake of learning, nobody uses that anymore for the most part that I am aware of, perhaps some AAA games highly optimize small functions that are called thousands of times a second, but other than that I don't think so. Also for the sake of learning you should look into hardware, understand what all GPU's do.
     
  21. TylerPerry

    TylerPerry

    Joined:
    May 29, 2011
    Posts:
    5,577
    Well, if you get a job using Unity then why not UnityScript? I think the differences are so small it is better off just learning one and learning another if you need but become good at the actual writing of programs and not just syntax.
     
  22. Duskling

    Duskling

    Joined:
    Mar 15, 2011
    Posts:
    1,196
    Yeah, this is pretty much it.

    After watching Indie Game: The Movie, I noticed everyone was using some sort of raw programming language. And it seems like it would be better for my learning and just feel more substantial to learn how to program in C++ or C# ( still deciding ) and even though I wouldn't be able to make advanced games like unity, I would still feel like I was doing stuff that matters in my education.

    I'm not dissing unityscript but as I've said many times it doesnt feel substantial enough.
     
  23. Morning

    Morning

    Joined:
    Feb 4, 2012
    Posts:
    1,141
    Then why not go with C++?
     
  24. VeraxOdium

    VeraxOdium

    Joined:
    Jul 2, 2011
    Posts:
    233
    Don't learn one learn both! Once you learn C++ thoroughly C# is a snap. I learned C++ when I was a teenager then C# last year when I picked up Unity. I didn't really need to learn C#, just figure out the differences, I did however spend too much time trying to get a global variable to work in C# (there isn't any unlike C++), so you might run into funny stuff like that but both languages are extensively used so its good to know them both. Unreal Engine 4 is supposed to be purely C++ and Unity with C# is great so... they're both relevant.
     
  25. Khyrid

    Khyrid

    Joined:
    Oct 8, 2010
    Posts:
    1,790
    I went from GML (game maker language) which is similar to the C languages to using Javascript in unity. The transition was painless. It didn't take long to grasp the concept of functions, where game maker tried to dictate what functions I would work with (create, step, draw, alarm event...) In javascript you make your own functions though there are some defaults (start, update, late update ..etc).

    The cool thing is I actually went back to game maker and made a game (space orphans) and I used pretty much the same syntax as java script. I also made my own functions in GML the same way it's done in javascript and it helped me organize my code in a much more functional and clear way.

    The bottom line is, you will learn from each language you delv into, there will be some learning curve when adopting a new language but you still take tons of learned goodness with you from your past languages.
     
    Last edited: Jun 14, 2012
  26. Endgame

    Endgame

    Joined:
    Dec 9, 2011
    Posts:
    61
    Having a basic grasp of java will get you started in c# no problem. I suggest that you stick to c# and if you want to learn something substantial then dive into algorithms and data structures, maybe roll your own A* or something. Good luck in whatever you choose.
     
  27. kingcharizard

    kingcharizard

    Joined:
    Jun 30, 2011
    Posts:
    1,137
    I looking into learning a language like c sharp alot.. and I found if you wanna develop games for a game company or make your own software its a must but if you want to develop games using a game engine not soo much
     
  28. Duskling

    Duskling

    Joined:
    Mar 15, 2011
    Posts:
    1,196
    I am looking into C++ and OpenGL ( for its mac capabilities ) or DirectX.

    Still not sure. I want to keep working with unity but also learning C++ would be fun and I think I would enjoy the challenge of making a simple 2D game engine or maybe a tiled level editor.
     
  29. n0mad

    n0mad

    Joined:
    Jan 27, 2009
    Posts:
    3,732
    Sorry to insist, but if anyone wants to work for a game company as a coder, it's not C#, it's C++.
    (at least that's what the jobboards articles say)
     
  30. lmbarns

    lmbarns

    Joined:
    Jul 14, 2011
    Posts:
    1,628
    Mostly true, you'll go farthest with what you're good at/most passionate about.

    But heck where I live there are jobs with Unity and way more with c# in particular though not necessarily game development programming jobs, but then again we have Microsoft here so there are lots of C# jobs with xna.

    These weren't really as prevalent a year+ ago but seems it's catching on with Unity jobs sprouting up:
    http://www.indeed.com/jobs?q=unity+3d&l=Seattle,+WA
    http://www.careerjet.com/unity-3d-jobs/seattle-23531.html

    Even Microsoft's listings for c/c++ engineers state under Bonus Qualifications: "Experience with game engines such as Unity and Unreal" http://www.microsoft-careers.com/key/unity-3d-developer-programmer-seattle-jobs.html

    I guess it depends what you want to do.
     
  31. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    Well C++ is close to the metal and a mile away from Java/C# in terms of memory management etc. It's a great language and a good challenge to learn.

    I guess it depends what games you want to write though - C++ gives you the best native performance but the cost to produce the game is high - there's a lot of manual work to do that, and hard issues around testing that just reduces significantly with things like C# and so it's going to be the big companies that are producing big high performance titles that are going to use C++.

    Given the native performance of C# these days - things will slowly move that way I reckon. If you want the job skills though, C++ is probably the way to go.

    If you want a job in any other programming industry - Java and C#
     
    Last edited: Jun 14, 2012
  32. Khyrid

    Khyrid

    Joined:
    Oct 8, 2010
    Posts:
    1,790
    Let me get this straight.

    C# > Javascipt because it can be used for other things not just unity.

    C++ > C# because it can be used for more video games than C#

    ...but it can't be used with Unity; a great program to make games with.

    So C# wins because it can be used for Unity and a few other things, so you can work in unity and still be open to other things.

    I say java script wins because you will have to go from C# to C++ anyway if you leave unity and stay in making video games and java script has more official support whilst working in unity than C#.
     
  33. whydoidoit

    whydoidoit

    Joined:
    Mar 12, 2012
    Posts:
    365
    Well the OP wants to learn something apart from Javascript right?

    The Javascript > C# question is more difficult - JS is much more tightly integrated with Unity than C#. C# is a more powerful and expressive language which makes it faster to write games with less code.

    I've used both.
     
  34. lmbarns

    lmbarns

    Joined:
    Jul 14, 2011
    Posts:
    1,628
    I'm curious why employers sometimes have a range of languages they allow, do they plan to cross train you or do they have all these different languages in their different projects?

    The school I'm currently attending requires 2 java courses and Perl, the last college I went to (11 years ago) had us do 2 visual C++ classes and COBOL (yea as/400 baby)

    The rest of the time I like C# and ecma 3-5 javascript. But after using Unity with C#, my java 1 class was cake. I was hoping cold fusion would take off once upon a time.
     
  35. Deleted User

    Deleted User

    Guest

    If I'm hiring, I expect any good programmer to be able to pick up a new language on their own. I wouldn't be inclined to hire anyone who expects training.

     
  36. npsf3000

    npsf3000

    Joined:
    Sep 19, 2010
    Posts:
    3,830
    LOL. The extra support US has in U3D is at most trivial.
     
  37. kingcharizard

    kingcharizard

    Joined:
    Jun 30, 2011
    Posts:
    1,137
    Yeah thats what i meant. I was in a rush when i posted earlier this is what my post was supposed to say

     
  38. npsf3000

    npsf3000

    Joined:
    Sep 19, 2010
    Posts:
    3,830
    Makes games for a living. In Unity. In C#.

    Someone please explain to me how you can use Unity... but think C++ is still a requisite for making a living in games?
     
  39. keithsoulasa

    keithsoulasa

    Joined:
    Feb 15, 2012
    Posts:
    2,126
    This all depends on how hardcore your team is .

    Some dev studios swear by Unity , some folks need to build their own .
     
  40. n0mad

    n0mad

    Joined:
    Jan 27, 2009
    Posts:
    3,732
    Of course I wish C# would be far more demanded in VG jobboards ;-)
     
  41. jedy

    jedy

    Joined:
    Aug 1, 2010
    Posts:
    579
    As of real language - C# > Java. End of Story. I'm a C# fan who said so ( still 2 years in Java ).

    Anyway - C++ is roughly the same thing. And by roughly I mean - you do the same stuff for any game, with the exception of memory management ( the biggie ) and a few other things. This comes with the appropriate reward also - you performance could get a hell lot faster with C++.

    The actual thing I needs special attention is not the tedious C++, and writing memory managers and file headers ( yuck! ), but something else.

    I've seen many Unity developers so used to unity that they actually forget many of the things that Unity does for them ( rendering, physics, everything ). So getting to know how those work in general will be of great use. Most of those ideas could be applied and will be useful even in Unity, besides the gain of knowing wtf is happening.

    PS : I'm a self taught student, too.
    PS1.5 : I'm just guessing you actual skill level ( based on that I wrote the whole thing ).
     
  42. echtolion

    echtolion

    Joined:
    Jun 16, 2011
    Posts:
    140
    Learn programming, not languages.
    Learn concepts, algorithms, data structures, etc

    Sure, it's okay to have a favorite language, but you should be able to pick up any language with similar programming paradigms fairly fast.

    There is no "real" language, the real language is what gets the job done. You don't get a magic programmer badge because you made the program in C with hand optimized assembly.

    Also, just for funsies, you should be able to use any mono 2.6(or is it 2.8?) compatible language with unity. I haven't tried it - so I may be wrong.

    If you're interested in learning more about the nitty gritty details of game making, there's directX/openGL bindings in nearly every language.
     
    Last edited: Jun 15, 2012
  43. Duskling

    Duskling

    Joined:
    Mar 15, 2011
    Posts:
    1,196
    Howdy.

    Thanks for all the input guys, this is great.

    I have started actually learning Java, which people will probably react strangely to. I have heard bad things everywhere about java but I love it and think I will stick with it for a while. Of course that's on the side of working with unity.

    I didn't choose C# because I have a macbook and I will be traveling alot so I wont be able to program C# on a macbook, not going to bootcamp it. C++ is doable on a macbook and I am interested in learning that, but I have read in many places that for a first nitty gritty language that C++ isn't a good choice, at least for starters.

    Things like " In C++ you would have to do 10 lines of code where in other languages you would have to do 2 lines"

    Thanks.

    On a side note, anybody here ever learned Brainfuck?
    Probably pretty useless but fun otherwise.
     
  44. npsf3000

    npsf3000

    Joined:
    Sep 19, 2010
    Posts:
    3,830
  45. echtolion

    echtolion

    Joined:
    Jun 16, 2011
    Posts:
    140
    This is not true, you can(should be able to?) run mono + monodevelop just fine on mac unless someone wants to correct me(I'm not a mac user)

    Also, java and C# are very similar because they're basically brothers.
     
    Last edited: Jun 15, 2012
  46. Duskling

    Duskling

    Joined:
    Mar 15, 2011
    Posts:
    1,196
    Well, C# is pretty much a microsoft thing, pretty sure there is no compatibility. And I would want to work with XNA, which would not work on a mac.
     
  47. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,203
  48. npsf3000

    npsf3000

    Joined:
    Sep 19, 2010
    Posts:
    3,830
    Says the guy using Unity. You know the engine that uses C# on Windows, Mac, Flash, NaCL, Wii, Xbox360, PS3, iOS, Android etc.

    Then how will choosing another language... say Java, help with this?
     
    Last edited: Jun 15, 2012
  49. echtolion

    echtolion

    Joined:
    Jun 16, 2011
    Posts:
    140
    C# is just a language, it has an implementation nearly everywhere thanks to mono.

    Also, there's a very good mono port of XNA http://monogame.codeplex.com/
     
  50. Khyrid

    Khyrid

    Joined:
    Oct 8, 2010
    Posts:
    1,790
    Enough small talk! List the top 10 reasons C# is better than Java.