Search Unity

how do you "actually" learn Unity?

Discussion in 'Getting Started' started by transporter_gate_studios, May 31, 2021.

  1. transporter_gate_studios

    transporter_gate_studios

    Joined:
    Oct 17, 2016
    Posts:
    219
    I've been using Unity for many years now and i have some decent knowledge. Enough to get some things done without any help. I have to say, as much as I like Unity and the power it brings, it was a very painful experience. I started by reading much of the general documentation and going to the API side when it was necessary. Honestly, I was lost and just stumbling around not even know what I was looking for. I posted questions in the forums only to get no answers. Most of what I learned was by accident and I find that to be such a waste of time for something that is literally known already by some individuals. Imagine not knowing how to drive a car and going to the library to find a book on it and the only book on it had a single page that read: first, get in the car, then put it gear, then drive it by pushing the pedal. What pedal? what's a gear? how do i get in the car? how hard do i push the pedal? I guess what I'm wondering is... I see people on these forums that seem to understand the very elemental lines of code that operate the engine and understand it very well. They mention things that are not in the documentation or in videos or even in forums, and these are not Unity employees. I'm just like, how? how and where did these people start and how did they ever get to this point of understanding it this well. I have many issues with my games and I'd much rather learn the how everything works rather than post on a forum begging someone who knows for help. its just seems like this is not how game development is supposed to go. It has to more organized than this? is it really this chaotic for everyone? if it is, then I need to learn to pace myself and expect long periods of inability to move forward where I can go back to painting or making music for a while. to be honest it is stressing me out and maybe my ideas of making a game are not really feasible purely because it just cannot be learned quickly enough. Compound that with the face that it is constantly changing. For that reason, I've decided to never upgrade. Anyway, I feel kinda alone in this. just needed to say it.
     
  2. I'm sorry that you feel this way, but these forums are here for you. And if you use it well, you can find some community as well. But more importantly, try to find a local Unity group near your home. There are tons and tons of meetups, Unity-organized events, etc. I know, during the pandemic, it is extra hard, it is on everyone. But (hopefully) we're going out of the pandemic era, so we can go back to meet people in the flesh.
    Well, IDK, we in the coding section try to answer every questions, even the most blatantly basic ones (in theory to use Unity, basic C# knowledge is a must, if someone stumbles in with severe lack of C# syntax knowledge, then we send them away with some lectures and tutorials to practice). I just glanced through your questions in your history, mostly graphical ones about shaders and whatnot, which I'm not that familiar with. At least not on the level where I can confidently give out recommendations or adice.
    Well, when you learn how to drive, first you go to the library (or book store) and buy a book about traffic rules and you read it through until you know inside and out. At most places they don't allow you to get behind the wheel even for just learning capacity if you haven't taken the test.
    If you're serious about game development, it's expected to learn most of it either on your own or in organized education / classes. And most of it (the basic concepts) aren't Unity-specific. When you get to Unity, it is expected to be familiar with the concepts at least on beginner level. So you should know what pedal is what and which one hit to break.
    Sorry to say this, but I think (based on your post here) you're doing it wrong. You either bite too huge to swallow or you have other organizational problems. (Usually the first one)
    If you learn what you're doing, don't do it in huge projects. I mean it in the complexity sense. For example (example, it's not your case): if you don't know how to move characters properly, you shouldn't start to make a parkour game. You should start with flappy bird to practice movement, then some tetris close, then some pac-man, then some basic tactical games, then some basic shooter, maybe? The idea is to learn the skills gradually. From starting zero, you can't expect to have AAA-level polished game systems in your first project.
    But same with everything. I have almost zero clue how to write shaders properly despite the fact that I'm programming for 35 years or so in various languages, including assembly on multiple long dead and very much alive CPUs.
    I don't start to write a Microsplat myself, I would be doomed to failed on the very first second. I make dumb shaders on various occasions for various purposes and trying to pick up the pace. I will get there when the whole thing clicks and I will be able to write better stuff.

    On the other hand, do not be afraid to ask for help. If you can communicate your problem clearly and concisely, on most forum topics, you will meet people, who will love to help with concrete code, guidance or at least turning you in the right direction and give you some reading material, depending on the nature of the question and depth of the topic.

    And sometimes it may not looks like it, but no one (NO ONE!) is expert in every topic of Unity, believe me. And frankly, it is quite impossible to be one. You can aim for to be mediocre in everything and maybe better in a small handful of tasks. So don't hold on to false expectations. There is a reason why game development in the era of modern computers and video cards is mostly team work. I mean it's not impossible to be a solo dev, I am one myself, but don't think that you can outpace the teams with that many man-hour they can invest versus yours. You know.

    Sorry for the long answer, hope this helps a bit and keep it up, ask questions, if you work for it, it will click! Or form a team with similar people and learn together. That helps a lot. Although you need to work with actual people. :D
     
  3. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    21,183
    While I understand this mentality as I tend to lean towards it myself the truth of the matter is it's simply not realistic unless you don't mind spending weeks on topics that could have been solved in days if not hours by just asking for assistance.

    Unity's documentation is great for the basics but in my experience in the places where it is most needed it is often very limited if it exists at all. In fact I'm currently working in an area of Unity that has zero documentation and due to being behind NDAs the restricted forums are the only way to learn and understand these topics.

    While I could do all of the above without the aid of the forums given sufficient time there is no way I would be able to do so and hit the milestones assigned to me. So I would have to choose between my pride and personal desires and being a professional making money.
     
    Last edited: May 31, 2021
  4. stain2319

    stain2319

    Joined:
    Mar 2, 2020
    Posts:
    417
    As a solo (hobbyist) dev I totally hear where OP is coming from. At times I have felt like I had to reinvent the wheel, because every game has certain "wheels" but somehow you can't find good solid information on how to build wheels.

    One thing that has helped me to some extent is to simply accept that you can't do it all. As just one person you can't possibly do all the art, all the coding, etc so you will have to rely on purchased assets and you'll also probably be following some tutorials to get some functionality that you don't really even understand, you'll just stumble along and make it work and you might never really understand why... And that is perfectly ok.

    I think of it like being a mechanic and these are your tools. You don't need to know the inner workings of a ratchet in order to use one. You don't need to understand how a hammer is forged in order to use it to drive nails. You don't need to know how the internal combustion engine works in order to drive a car.

    Thinking of it this way has helped me feel a bit less intimidated. You will never "know it all" but you can get some things done and get help from others for the rest.
     
  5. transporter_gate_studios

    transporter_gate_studios

    Joined:
    Oct 17, 2016
    Posts:
    219
  6. transporter_gate_studios

    transporter_gate_studios

    Joined:
    Oct 17, 2016
    Posts:
    219
    It does help yes
     
  7. JoeStrout

    JoeStrout

    Joined:
    Jan 14, 2011
    Posts:
    9,859


    (Sorry I don't have anything more useful to add, but the above responses have covered everything I wanted to say... except this. It needed to be said.)
     
  8. HarryVoyager

    HarryVoyager

    Joined:
    May 19, 2021
    Posts:
    4
    The challenge is to study and practice the right things. :)

    Just because a programmer is brilliant and writes code that no-one else has been able to does not mean they have ever learned things like how to document how their code works, or even how to compile it if you are not them.

    That's my personal fear. Just because I've re-invented the wheel, doesn't mean its not also, on fire and covered in spikes. There was that one Matlab analysis script I wrote entirely using eval statements...
     
  9. JoeStrout

    JoeStrout

    Joined:
    Jan 14, 2011
    Posts:
    9,859
    That's a good analogy, and a perfectly reasonable concern.

    Unfortunately I don't know of any shortcut — you pick these things up through experience. Along the way you read the docs and ask lots of questions, but it sounds like you're already doing that.

    I guess if you're really worried about spiky flaming wheels, you could occasionally post (or describe) your code and ask whether there is a better/easier way to do it.
     
  10. Very much this. Or you can contribute/start/maintain open source projects. Working with other developers, putting your work up for review helps a lot. They will tell you if something is wrong.
     
  11. Joe-Censored

    Joe-Censored

    Joined:
    Mar 26, 2013
    Posts:
    11,847
    Learn from failure, and learn by doing. Nothing wrong with asking for help, but try on your own first. There's also nothing wrong with finding your own solution, then asking the community if there's better ideas.
     
  12. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,928
    As others have mentioned, many people confuse learning Unity with learning game development, which are two entirely different things.

    For a seasoned developer coming to Unity, it can take 2-6 months to learn Unity, as it's just a tool. However learning game development is a lifelong process, one that takes many years and that you never really complete. There's always room to dig deeper.

    There’s people in this forum that have been developing games for decades in other engines/environments (I'm not one of them). It’s not fair or that healthy tbh to compare yourself to them. It just takes a ton of time and continued effort to get to that point. Even when you put the time and the effort, you'll most likely end up being an "expert" in some specific area: graphics, physics, animation, audio, etc. Takes a lot to master more than one area, and it is impossible to master them all.

    This being said: believe it or not, Unity (and Godot, Unreal, name your engine) makes the experience heaps easier. *cranky grandpa voice* ....in the old days you had to learn one graphics API: OpenGL or DirectX, and do most of the low-level stuff yourself: setup a viewport, load your textures, do your glyph rendering, keep your matrix stack, parse your .obj files, etc. I remember spending hours coding just to draw a frigging triangle to the screen.

    So game devving is not easy, is not fast, but it's a lot better than it used to be. Simply be patient, and practice, practice, practice! Make different kinds of games/apps, put yourself out of your comfort zone, and just give it time.
     
    Last edited: Jun 10, 2021
  13. stain2319

    stain2319

    Joined:
    Mar 2, 2020
    Posts:
    417
    This is a very good point. When I first dabbled in game development 30 years ago, you literally had to write your own DrawPixel() functions!
     
  14. transporter_gate_studios

    transporter_gate_studios

    Joined:
    Oct 17, 2016
    Posts:
    219
    That's interesting how its evolved. I wish i would have pushed my self harder years ago to try to learn but it was way more intimidating. The first time i thought of making my own game, the only thing i could find was an old system called dark basic. it would be cool to find some kind of general gamedev course online and learn from that. I could benefit from some further C sharp too. Also, trig would help with shaders.
     
  15. Raise your hand if you wrote assembly code to tap into the IRQ of the cathode-ray-tube's trace signal so you can interlace the bitmap mode so you can use more colors on C64! :)
    Or so you can change characters in memory so you can fake a 3D object animating on the screen like cube or pyramid.
     
    pm007, Joe-Censored and arkano22 like this.
  16. arkano22

    arkano22

    Joined:
    Sep 20, 2012
    Posts:
    1,928
    That sounds awesome! I've written assembly, but apparently for the wrong reasons lol: we were forced to write for the motorola 68k at university. I was not interested in it, found it hard to enjoy.

    I used DarkBasic too. My first contact with programming was Yabasic, a Basic interpreter that came with a PlayStation 2 demo cd. Those were good times :)

    Nostalgia aside, I think the single best investment you can make when it comes to game development is learn vector/matrix algebra. It's at the core of everything: game logic, physics, animation, lighting, shaders, geometry, etc. Coupled with decent programming skills, it can take you far in pretty much any technical area, using any engine.

    At some point, you'll start to be ahead of engine documentation and design decisions: "It makes most sense for the engine to do it this way....right? sure enough!" or "I'd bet this setting must be around here...and there it is!". Sometimes that saves a lot of time, sometimes you make the wrong assumptions and it is a humble reminder to rtfm. :rolleyes:
     
    Last edited: Jun 10, 2021
    Lurking-Ninja likes this.
  17. Joe-Censored

    Joe-Censored

    Joined:
    Mar 26, 2013
    Posts:
    11,847
    Sounds like fun.

    The hackiest game dev thing I did back around that era was write a primitive first person 3D raycasting engine for ANSI graphics, for use as a BBS door program. I got it as far as rendering mazes, but my early teenage self apparently miscalculated the frame rate of a small window I should have been able to reach with the modems of the time. Instead of measuring frames per second I was measuring seconds per frame. Oops! :p And that project died :)