Intermediate Scripting Tutorials

Feel free to correct me if you dissagree, but something I’ve been noticing recently is that people who aren’t already familiar with Javascript, on a whole, tend to find the learning curve extremely steep for Unity. I mean, the whole WYSIWYG thing is great, I learnt that in less than a day (there are some great tutorials out there for that), but it’s always the scripting that’s a pain in the arse at the end of the day. Something else I noticed is that although there some good scripting tutorials for absolute beginners, after learning the basics the content seems to suddenly skyrocket to a point which just goes straight over my head. Course, it might just be because I’m thick or something, but judging by other user’s comments I suspect that it might be because the guys who are writing the tutorials tend to already be experts, and because it comes as second nature to them it makes it a real challenge to explain it to others, simply because you’re not automatically aware of what the reader already knows.

Now here’s the thing (I’m making no guarantees of course), but does anyone thing it’d be worth my time, as a new user, to write down everything I learn as I go along in the form of a tutorial? I figured that the plus side would be that it would (theoretically) end up being everything a new user would need in order to understand using Unity, because it was all of the stuff I needed to learn Unity. Also it would be in simple language that even I can understand. The downsides however would be that, because I’m still learning, I would likely go ahead and recommend things which weren’t necessarily the easiest or best way of doing something, and also progress would be very slow (as I could only write the thing at the speed that I learn it all).

Anyhoo, it’s just a suggestion, but I figured it’d be nice to give something back to the community. Any thoughts or suggestions?

I actually think this is quite a good idea, with the following two notes:

1)You’ll need to have a thick skin yourself and be open to suggestions. If this is the case, you’ll do the community even MORE good, because in addition to what you provide for help to some directly, you’ll indirectly be helping many others by listening to suggestions on how you could have done things differently.

  1. It will help to expose how beginners/intermediate users approach things, and this will in turn help people write better tutorials. It’s hard to know what a beginner needs to learn, it’s even harder to know what an “intermediate” user needs to learn, for two reasons that I can think of:
    a) As you advance to “intermediate” (whatever that is defined as) the number of specific possibilities increases with the obvious increase in complexity of what people are looking to do. Leading me to say that what intermediate users need to learn is more “general” logic/thinking/planning skills, and that is much harder to teach anyone.
    b) The inability to clearly define what “intermediate” truly means, makes it difficult to determine where to start, and where to go, with a tutorial/instruction.

I say you go for it. I’ve seen this type of thing before in other programs, sometimes it’s excellent and comprehensive, other times it dies out way too fast, hopefully yours will be of the former type, which essentially requires that you stick with it through thick and thin. :smile:

Those are some good points, for #1 I see what you mean, but like you say, by trying to remain objective and accepting of constructive criticism I think it could go well. Perhaps I could put them up in parts using the forum so that people such as yourself could critically appraise them prior to giving each one the go-ahead? The other benefit of that would be that I could learn some new, or easier ways of doing things so it should theoretically be a win-win scenario.

As for #2 I must say I hadn’t thought of it that way. I guess that even if my tutorials are a flop, at least other people can look at my mistakes and use that. Also, it may well be the case that instead of it being the quality of tutorials out there than inhibits learning progress it is instead the transition from following instructions to free-thinking, so to speak. Combined with the ambiguity of ‘intermediate’, how about if I cover all bases and start from scratch (absolute beginner level)? This way it could smooth the transition without excluding anybody.

But yeah, thanks for the well thought out feedback, it much appreciated!

I have a general comment.

The learning curve for scripting in Unity isn’t extreme.

It’s the learning curve for learning to program at all that may seem extreme. This doesn’t have much to do with Unity.

Introductory scripting tutorials may seem cool at first, but all you really end up doing is just learning a few commands and how to implement those commands. But you don’t really get to delve very deep into the concepts of programming.

Look at programming as a set of tools. Your goal is to build a house. Unity provides all the raw materials you need to build the house. They even give you some preconstructed parts.

With your set of tools you dive into the tutorials. Hmm… this one teaches you how to use a hammer. Awesome. Now this other one teaches you how to use a screwdriver. Cool. Etc… Through these tutorials you’ve built a chair, computer desk, and a book shelf.

Now you know how to use a bunch of the main tools.

Next step… build a house? Probably not.

Will more tutorials on how to use the tools help? I suppose a little. Build a shack?

But then when you build your house it will probably just look like a bigger version of that shack.

What you need to do is study some architecture and construction. Then you’ll be able to more easily and effectively create a plan on how to build that house.

You still have the same set of tools. You still are using them in a similar way. But now you know WHY you are doing what you’re doing.

So what I’m trying to say is, learn programming concepts. Once you get the concepts down, then the higher level stuff will be easier. If you don’t get the concepts down, you could do all the tutorials in the world, but once you get to something you haven’t done before you’ll be stuck.

Forgive me for this digression, but id just like to say that this is perfectly normal and to be expected. Unity Tech. clearly states that their product uses C#, JS and Boo for scripting, instead of a proprietary language. Hoping that Unity docs will teach you one of these common programming languages would be silly. So if someone is having a hard time with scripting because of his lack of fluency with the language he uses, he should be going back to basics instead of complaining about the docs :wink:

I do think users should have a solid understanding of how to program before using Unity. The API in Unity is huge enough as it is without trying to learn two things at once. This was me when first learning Unity:

::write line of code::
::look up stuff in docs::
::write another line of code::
::look up stuff in docs::
::write another line of code::
::look up stuff in docs::
etc.

I did learn Javascript (or rather, Unity’s version, which is quite different) while learning Unity, but that’s just syntax and is pretty trivial if you already know how to program. (And I still have to look stuff up in the Unity docs occasionally…)

–Eric

@WinningGuy - That’s a fair point. I guess I was lazy in choosing my words, but what I was trying to say is that, although I realise scripting is made easier by Unity, and that the learning curve for scripting in Unity is accordingly low, there are a lot of people out there who have never scripted before and want to use Unity basically as a learning tool. Those are the people I was thinking about as, like you said, it’s learning to program at all that seems extreme, but for them that’s just what they’re trying to do.

As for the tools and furniture analogy, my thinking is that the best way to learn to build a house is to start with tools, then furniture, then a room, then a shack, then a house, at each step repeating the exposure to it until you have good tool usage, then good furniture, then a good room and so on before moving to the next level. Obviously the first time round the house is going to look pretty shoddy anyway, but my thinking is that perhaps a tutorial that helps walk you through more than simple tool usage could still be useful. Personally I would have thought that learning this way is quite a good method of gaining overall understanding of game development, but being new to all this I honestly don’t know for certain.

What do you reckon might be the best way of learning these general concepts?

@KaelisAsur - I’m sorta glad that it’s normal to struggle at this point, it makes me feel a bit less like I’m just incompetent :smile: But please don’t get me wrong, I’m not saying there’s anything wrong with the existing Unity documentation, in fact it’s very good. I know that asking Unity to teach me how to use Javascript is a bit like asking UT to teach me 3D modelling or animation, or musical composition for soundtracks and so on. It’s just not their responsibility to do so, but what I was suggesting is that because it’s not their responsibility it might be useful for me to try and help out people with a tutorial. Kind of for people who just want to make a few games for a laugh instead of a career (in which case they’d probably have studied programming properly in University).

Thanks for the comments guys!

@Eric5h5 - Haha, again it’s good to know that even you were once where I am now XD

Of course, although I never expected there to be an easy road to learning how to make games with Unity, perhaps the only way to learn from this point is simply by slogging through reference material and trying things one line at a time. Maybe because I found it so easy to learn the early stuff with the help of tutorials I just assumed they’d help more than they really would for the next stage in learning too? Aw well. Can’t have everything I guess…

This is always a tough line to walk. We want to provide as much material is possible but we (a) can’t do it all, and (b) still have a long way to go. The toughest part is deciding how much time/resources do we spend teaching basic scripting concepts versus Unity/3D/game specific concepts. Sure, folks coming to Unity often will need help with scripting basics but we’re not here specifically to teach you the basics of JavaScript or C#, so instead we’ve focused on a “now that you have some base level of knowledge, now what?” sort of approach. As time goes on we do plan on expanding the range of what we have to offer, shoot, our Resources area has lots more stuff than it did a year ago, but in the end we’ll never be able to do it all. Hopefully we cover enough to keep you and any future noobs hooked, learning and improving!

If you have specific suggestions you want us to consider then do not hesitate to toss those our way:

http://feedback.unity3d.com

Features, docs, improvements, whatever… use your voice. :slight_smile:

Oh, and rock on!

Personally, I feel that the general focus on UnityScript for beginners is a mistake. Not on Unity’s part mind you, but on the part of the learner.

If you are already familiar with Javascript, then UnityScript will feel very comfortable. You just have to learn the API, which is enough in itself.

If you are familiar with pretty much any object oriented language then UnityScript will seem somewhat comfortable. You’ll be able to read the tutorials and jump in.

I think that when Unity is giving advice to brand new programmers, or making really simple, “how to program” style tutorials, they should use C# or Boo.

The reason I say that is because the beginner could search 3rd party resources and find basic examples that they will be able to translate into use in Unity. They could go into Google and type “learing C# programming”, “c# programming tutorials”, “learning Boo programming”, “Boo programmin tutorials”. BAM! A ton of info, that if studied, will be useful.

If they look up advice on “learning Javascript” they’ll be hit with a TON of info… but hardly any of it is applicable to Unity. After weeks of spending time and energy on Javascript tutorials they’ll still be left lost. Then they’ll wonder why Unity doesn’t have better tutorials for beginners.

@HiggyB - I get what you mean, it’s almost like asking the guy who built your piano to teach you how to read music. You need to know that in order to use the piano to it’s fullest, but it’s not up to them to teach it. At the same time it’s in the piano maker’s best interests to have many people knowing how to use them. Almost a catch 22… Anyway, for what it’s worth I think that the documentation on use of Unity itself is actually very good. I’ve found a lot of stuff, and the program’s layout is pretty logical. On top of that, as this thread demonstrates, I’ve found Unity Forum users to be friendly and helpful, so really I’ve got nothing to whine about. Thanks for the link though, if I come up with anything a bit more concrete I’ll be sure to post it there.

Wolfie, I think writing an as-you-learn tutorial is a great idea. At the very least, it’ll help organize your own thoughts on Unity and is a way to give back to the community - if people find it helpful, that’s great, if they have suggestions, even better, if they don’t like it, hey, it’s not like you’re charging them.

At least that’s my rationale - I’m doing something similar on http://www.technicat.com/games/unity.html - there are gaping holes (so you can tell which areas I’m not familiar with) and it’s partly obsolete every time there’s a new Unity release, but for my own sake I like to try organizing what I know (and what I think) about a topic in one place, and publishing it forces me to spend at least some time updating it.

If you go ahead with a tutorial, be sure to add it to the Unity tutorial reddit list - Reddit - Dive into anything Another way to go is blog what you learn in a “developer diary” format - there are many Unity user blogs and another reddit list - Reddit - Dive into anything

Ya you understand exactly what is the problem. Those who created Unity think it is SO easy to learn. But you are right, they can’t really place themselves into beginners shoes. That is the problem with ALL books and tutorials. Here is a new tutorial, ya right. No one really explain how to find your way into feeding ourselve digging into the scripting reference. The biggest joke in my oppinion is that Unity is presented as so easy to learn UnityScript cause it is called JavaScript. And many have read book on JavaScript tell in forum, that it din’t help them at all. Somehow it is not fair to not tell in the “Blazing fast .NET-based JavaScript and C#, with rich libraries and great documentation. Read more” or " Flexible and Easy". Well it is so easy that the forum is full of question on scripting. They should be honest somewhere and say to user in those add: Knowing C#/Python is a requirement (I expluded JS cause it have not much to do with UnityScript, where not much documentation for beginner can be found). cause without that you can only dose some primitives, trails, particles. I am not sure if they know how many beginner there is here. It is a good investment, cause if the noobs can master Unity, there is a better chance they will get the pro.

Because Unity itself IS easy to learn. Ive been able to do simple games after a week of learning Unity. If thats not easy, i dont know whats easy.

What are you complaining about is general programming, not Unity.

I honestly have no idea whats the problem. In fact everytime someone is saying that the docs are not good enough im shake my head in disbelief, since theyre one of the best among game engines, and ive seen my fair share.

It is? Huh, i didnt know that. Do you mind providing a reference?

Please show me a game engine forum where there are no questions about scripting/programming…

But thats really obvious. If its clearly stated that Unity uses C#/dialect of JS/Boo for scripting, then of course youll need to know at least one of those to script. Maybe im missing something but to me thats a no-brainer…

That’s not an honest requirement, because I didn’t know C# or Python before using Unity (or Javascript, neither web Javascript nor Unity’s version). I did, however, have programming experience with other languages.

In fact Unity is easy to learn. Nowhere does it say it’s a programming-free engine; it’s quite up-front about needing scripting to use it.

–Eric

Good for you if you find it easy. I have no OOPOBJECT ORIENTED PROGRAMMING experience, that is why it is hard. But I do have Linear prog. ex. but it have nothing to do with OOP.

It seems to me that its kinda obvious that you are going to have to program stuff when using a game engine.

Your idea is very good though, hopefully it will be helpful to the community!

I’ll have to second this statement.

It’s pretty obvious that you do need to know some programming. It states that it uses UnityScript, C#, and Boo. But if you’re familiar with programming, you could pick up these languages fairly quickly.

I don’t recall anywhere where they state that you don’t need to know programming at all. In fact, every time someone has asked that question on the forums they are told by many people that you do need to program.

It’s like if I said that basketball was an easy game to learn. Then someone came by and was upset because I didn’t teach them how to walk.

That’s why we’re here on the forums, that’s why we talk with users everywhere we go, that’s why we continue to involve newer users on our betas and not just experienced veterans, etc. We definitely realize that it’s hard, possibly impossible, for us to ever go back to original “new user” points of view and so we do a lot to try and keep ourselves on track. Not sure if you’re on a bashing attempt here or what, but know that we try hard to balance things out. :slight_smile:

Wrong. :slight_smile: There is nothing that requires C#/Python for you to use Unity, at all, period, end of discussion. There are tons of people doing all JavaScript/UnityScript development just fine. I’m just not sure on where you’re coming from with that so if you have any specifics to share then I’m all ears. You’re calling us out as dishonest and I take issue personal issue with that as we try very hard to be up-front and honest in our marketing and promotion as well as in our dealings with developers.

@HiggyB

I am just calling to tell that pub should mention that knowing C#/Python/JavaScript is required, like XNA/C4 dose respectivly. It would make things clear for the beginner. I am sure that Unity is easy to program when you have those basic knowledge, if everyone write so.

My background as programmer is Linear programming like Basic, not OOP, if you want to know. What is your programming background HiggyB?