Search Unity

5 things to know before learning Unity (requesting critique!)

Discussion in 'Getting Started' started by beef_erikson_studios, Aug 28, 2018.

  1. beef_erikson_studios

    beef_erikson_studios

    Joined:
    Jul 4, 2017
    Posts:
    5
  2. Ceciphar

    Ceciphar

    Joined:
    Jan 21, 2017
    Posts:
    51
    nice read!
     
    beef_erikson_studios likes this.
  3. mgear

    mgear

    Joined:
    Aug 3, 2010
    Posts:
    9,435
    random things :

    would be nice to have some images in the post,
    and code snippets would look nicer from vs screenshots too (if medium doesnt have some code formatting)

    about c#, i'd say its probably easier (or at least more fun) to learn c# with unity api though,
    can easily create 3d objects, move them, play sounds etc. with few simple lines of code,
    and then keep learning more c# features when needed.. (of course both ways are fine, what ever suits the person)
    (and with visual scripting being so popular too, i've seen developers who work solely on that without knowing how to do unity c# code, so that would be one extra option there)

    post title, bit click-bait'ly (but i guess its expected these days), none of those are really hard must's (imo).
     
  4. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    21,178
    To be honest I don't see any value in it whatsoever. It's a clickbait article too because while it says it covers five different things the reality is it doesn't cover five completely different topics. It's all basically focused around programming which is only one aspect of game development.

    For starters, while the language is definitely more extensive than a tutorial is capable of covering the reality is you don't need the majority of the language. I started programming back in 1995 and I can't think of any case where I've used the majority of a language's features.

    Second, or rather fourth since the actual second and third entries are just repeats of the first, the section on algorithms is mostly just providing a definition and a very vague explanation when you could have just said that an algorithm "is the process of breaking a complex problem down into simple steps that you can follow to solve a problem".

    Finally, and literally this time since it is the fifth entry, we get to an interesting one and it's not that it's bad advice but it's advice that is contrary to the way the industry is starting to go. Unity has a new framework for achieving "performance by default" and part of that is leaving behind the concept of object oriented programming.

    Unity's ECS (Entity Component System) framework is a data-oriented approach where the code and data are separate from each other. You can read up on the core concepts behind this approach at the links below.

    Essentially the focus is on achieving very high performance including the ability to very easily multi-thread your games (previously this was a very difficult process both because it's a complex topic and because Unity's non-ECS API is not thread-safe) as well as maximizing code reuse beyond what can be achieved with OOP.

    https://en.wikipedia.org/wiki/Data-oriented_design
    https://en.wikipedia.org/wiki/Entity–component–system

    Below are the official tutorials for Unity ECS.

    https://unity3d.com/learn/tutorials...tion-entity-component-system-and-c-job-system
     
    Last edited: Aug 29, 2018
  5. beef_erikson_studios

    beef_erikson_studios

    Joined:
    Jul 4, 2017
    Posts:
    5

    Thank you for your bluntness and fair critique. I agree with most of what you said (although I still stick by 'you should learn the language before the engine'. While you can accomplish a lot with the basics, learning and (most importantly) writing clean code is beyond the scope of any tutorial I've ever seen.)

    I'll be revisiting and revising this article based on some of what you've said and clarify on other points.

    Thanks for taking the time to put in your two cents (as well as the ECS links. I will definitely look at that closely before revision of my writing.
     
  6. beef_erikson_studios

    beef_erikson_studios

    Joined:
    Jul 4, 2017
    Posts:
    5
    Thank you, after receiving valuable critique here I will be re-writing my article in its entirety. Many good points were brought up and I see that revision is necessary in order for it to be truly of use to folks.

    I appreciate the time you took to write up your thoughts; I'll be keeping them in mind when I revisit/edit said article!
     
  7. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    I highly suggest anyone not learn C# first, but just dive into Unity because Unity is probably the most forgiving way to learn how, with an abundance of youtube videos, tutorials, resources.

    Unity is a safe, managed, almost bullet proof environment for people to get invested in an exciting way (games!). The alternative is harder.

    You could of course just tell people to get a book, visual studio, a compiler and mess with their heads as they follow completely irrelevant bad advice for game development before trying Unity. Wait... you did.
     
    Ryiah and beef_erikson_studios like this.
  8. beef_erikson_studios

    beef_erikson_studios

    Joined:
    Jul 4, 2017
    Posts:
    5
    Different strokes for different folks I suppose.

    Personally I found it FAR easier to work with unity once I understood how the core language works. I tried Unity long ago, got overwhelmed because I had no clue about programming, learned the language and came back equipped with said knowledge. I had a much easier time using the engine to its fullest and understanding all the terminology that came with it.

    (EDIT: After some thought, I'm going to add in hippo's advice to my article when I revise. Some people very well may find it easier to start with the engine. I'm not one of them but that doesn't make it unsound advice.)
     
    Last edited: Sep 12, 2018
  9. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    21,178
    One annoying problem with learning the language first is that you come back to the game engine only to discover that the way they implemented everything is a bit odd compared to the way the language normally encourages you to do it.

    For the most part the annoyances tend to center around MonoBehaviour. Initializing the data in the object has to be done through the Start() method and can't be done through a constructor, adding the component to a GameObject has to be done with AddComponent instead of the 'new' keyword, and so on.

    None of these are a big deal but depending on how much time you spent becoming a programmer may affect how hard it is for you to adjust to them. I had spent considerable time programming and working with C# before coming to Unity so the adjustment wasn't hard, but I don't know how it will affect a new developer.
     
    Last edited: Sep 13, 2018
    beef_erikson_studios likes this.
  10. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    I am of course biased - I started programming in 82 because I wanted to make games, so I kind of only know programming in a gaming context. For what it's worth I guess having the goal is very important. If you code some C# to get a character to respond, that's something that makes people leap for more. Not sold on hello world, so much.

    Maybe if someone told you that you had to do calculator stuff and database examples before being allowed to download Unity you'd have been put off... :D
     
    beef_erikson_studios likes this.
  11. beef_erikson_studios

    beef_erikson_studios

    Joined:
    Jul 4, 2017
    Posts:
    5
    I'm very thankful for all the feedback here. Thank you to everyone that has participated.

    I definitely see my article is lacking in many places and will post my future revision here; the community has been great in giving me (much needed... I'm a solo dev) advice and it's nice to see other people's perspectives / backgrounds come into play. I'll be considering all of this and it's already given me a fair amount of insight.

    Thank you folks, I owe a round of beer when I hit it rich ;)
     
  12. Joe-Censored

    Joe-Censored

    Joined:
    Mar 26, 2013
    Posts:
    11,847
    Items 2 through 5 are all subsets of item 1. Unity is also trying to make item 5 less important with ECS.
     
  13. BIGTIMEMASTER

    BIGTIMEMASTER

    Joined:
    Jun 1, 2017
    Posts:
    5,181
    When I first got started with Unity, I thought I would learn programming (I later switched to 3d art.)

    I tried to follow the Unity tutorials, but was just flat out lost. Nothing made a lick of sense. So I figured it would help if I had a basic understanding of how computers and computer languages worked. I did some basic c# 101 tutorials from microsoft and after spending a few days with that, then I was able to return to the unity tutorials and actually understand enough to be able to use them in a meaningful way.

    Unity has a lot of great free learning content available, but honestly I don't think its very good. I mean, it's free so who can complain, but if I was going to get serious about learning to program, I'd try to find a legit, structured, and exhaustive resource. I think the Unity learn stuff if only useful for people who have some basic competency with computer science already, as they just briefly skim over engine features but don't really get into the meat of whats going on.

    Same thing with other tools as well. There is so many videos about hwo to sculpt this and that in zbrush. People come out of universities with bachelor of art degrees, and yet they clearly don't understand the basics of how 3d models work in a game engine. They make some decent looking art, sure, but they don't understand how the tools they are using work, and so they have to go back and learn all this to be viable for a job.

    So, yeah, I agree a bit with the OP in that, if you don't know jack about programming -- its probably easier to spend some time learning just in very general terms how computer languages work in the first place. In my case, this was a necessity. So, to the raw beginner, I wouldn't say "learn to program first." I would say, "constantly evaluate your learning methods. If you feel stuck, attack from a different angle. Use your own judgement."
     
    Last edited: Sep 14, 2018