I'm wondering this because I've been trying to learn how to script using the wiki tutorials, but I'm not getting anywhere. I know how to make basic loops and change brick properties, but that's about it. I don't know anything about all these new methods and functions and instances and other vaguely explained things. I feel like there's a huge wealth of tutorials and information locked away somewhere that only certain people have access to because I don't get how people can become experts just by copying code from the wiki tutorials, which kind of explains how to code but only provides specific examples and no real advice on how to learn new code, and magically becoming good at coding. I've taken two years of programming in Java at my high school and the way we learned things was very structured, whereas the wiki goes from 0-100 so fast that it makes my head spin. The most frustrating part is that I know what I want to do when I code, but I don't know how to do it. I'm having this same problem with Java: now that it's near the end of the year and we don't have anything new to learn, we're assigned a final coding project to work on that will be turned in the last week of school. I know about loops, basic object-oriented programming, inheritance, abstracts and interfaces, and arrays and arraylists (in Java), but I want to program a game that involves 2D shapes and I can't find any good tutorials on YouTube or online. When my teacher would teach us new things about programming, she would ask us how we would approach a task WITHOUT code, then, once we made a logical progression of steps, she would tell us how to do it in code, but she would carefully explain each line of code, and she never introduced a whole lot of new code all at once, every new program would build off of what was previously learned and would use a little bit of the new stuff that we needed to learn. Trying to learn everything from scratch with little to no guidance seems ridiculous, considering how many expert programmers there are on Roblox, and telling someone to learn something when they have nothing to build off of is a very inefficient way to learn. When I try to dissect a model and interpret the script, I feel like scientists of old who were trying to decipher the laws of the universe. It took many scientists a lifetime to make some of the discoveries that we take for granted, and if they had started from absolute scratch (refusing to learn and build off of the ideas of previous scientists), they would have to rediscover math and science on their own, and they would not have gotten very far at all. I feel like i'm starting from scratch since I have little to no knowledge about Roblox lua, but instead of refusing to learn form others, I can't find others to learn from. Please tell me how you learned to script because it seems to me that, outside of educational institutions, no one really cares to teach or explain how to do anything, really. I apologize if I sound rude or angry, but I want to know the exact process of how I can efficiently approach the task of learning Roblox lua. If there's some ultimate secret resource on the wiki or YouTube or some other place that I don't know about, I want to know about it because all this knowledge on scripting has to exist somewhere or else no one would be able to script properly. I know that learning scripting shouldn't be easy and that it is a time-consuming process, but learning with little to no structure is ridiculous, the kind of thing that only expert researchers or scientists who are trying to discover brand new things should do.
We, homo sapiens, are all quite unique, especially in how we think and learn. I've studied programming as a youngster and now at university, and I remember some of what it felt like to begin scripting long ago - frustration when things didn't work for a long time and then exhilaration when they did. Perhaps, in hindsight, I can offer some structure.
First, I'll comment on some of your observations:
"no one really cares to teach or explain how to do anything"
It is often the case with technical concepts that those who know how to manipulate them proficiently are not very apt at explaining them. Albert Einstein himself said:
"If you can't explain it simply, you don't understand it well enough."
Explaining things is always a good exercise, but it takes time and effort, and engineers just want results. Many programmers on ROBLOX are happy learning something well enough to be good at using it, but don't practice explaining. Thankfully, we have a community here of people who do just that: try to explain things.
Journalists are often people who have a special talent for explaining rich ideas in a simple way, and many scientific institutions have special departments for publishing public resources to explain intricate research. There are many knowledgeable programmers on ROBLOX, but many are driven by an insatiable creativity that can't be interrupted to answer small questions on websites like this. There is a somewhat secluded group called RBXDev, which is managed officially by ROBLOX themselves and requires an application form to get in, but that is where the deep technical discussion on cutting edge updates takes place.
There are a handful of people actively writing tutorials (the blog posts on this site), producing video content on YouTube, and answering questions on forums (here and on the ROBLOX forums). I agree, though, that often they aren't actually good at explaining things. This is partly because you and I come from different programming backgrounds, and there's no way to write an article that appeals perfectly to everyone.
I understand your frustration about things not being explained, but I say these things just to highlight that explaining things is actually quite difficult and time consuming!
I can't say for sure, but there are some abstractions (ways of thinking about things) which have really helped me to understand how to learn programming more effectively.
I'm going to suggest 4 different compartments to think about on your scripting journey which I think would have helped me a lot.
The language is Lua. You need to know what it can do and how to write it. I would set aside some time to read the official Lua 5.1 Reference Manual. It tells you everything there is to know about the language.
There's also a tutorial-like book online for free called Programming in Lua.
These are good reference materials, which means that you can look up a specific concept in them if you forget some of the details (which I often do). You already know about loops and a bit about objects, and you probably know about other control structures like conditionals (if this then that) - these are all parts of the language.
Data structures are ways to store and retrieve information in a program. You'll be familiar with arrays from Java - an ordered list of things accessed by numbers (where they are in the array). Data structures are distinct from language because any data structure that you can imagine (there are a lot of them!) can be implemented (written) in Lua. Lua, the language, provides ways for programmers to make more interesting ones. You'll learn all about tables in the Lua programming book and reference manual - they are an essential ingredient in any script.
There is a chapter in the Programming in Lua book about data structures.
Algorithms are well-defined steps which take some input data and generate some output. You don't need to focus on this specifically, because you will be thinking about algorithms automatically once you get into the flow of programming. How do I choose 5 random players from the players connected to a server? How do I find the nearest zombie to a player? How do I find the top 3 players in a round? Etc.. all these questions are asking how to calculate something based on some data.
Lots of people ask questions on this forum like "How do I clone a monster in front of a player when they click a button?" or "How do I award a player points when a timer runs out?" But these aren't about algorithms, they are about the ROBLOX programming interface - aghem, that is, the actions and data which ROBLOX provide to us.
I mention algorithms as a separate category because often the best programmers are not the ones who know everything about the language, but they can put what they do know together to make efficient and robust algorithms. For example, I can write excellent algorithms for searching lists, sorting lists, generating terrain, and making many games without ever using metatables or closures (advanced features of Lua).
API means Application Programming Interface. This means everything that ROBLOX has added as extras to Lua which you can use in your scripts. Most of the ROBLOX wiki is about the ROBLOX API, rather than about Lua itself (though there are some basic tutorials). I think the reason why it seems to go from 0-100 in difficulty is that they don't often explain the language before explaining how ROBLOX fits on top of it.
I know how to make basic loops and change brick properties, but that's about it.
This is a brilliant start. Honestly. You've understood one of the fundamental aspects of the ROBLOX API: properties.
Every ROBLOX object has properties, and you can find all of those properties by looking at the page for an object on the ROBLOX wiki. For example, have a look at Accessory, ParticleEmitter, and Part. Can you see all the properties on each of these? The trick to effectively learning and mastering programming in ROBLOX, once you know the basics of Lua, is to know how to read these API pages. These pages tell you almost everything you would need to know. With the more complicated objects (like Welds, CFrame, and BodyMovers) there are specific tutorials to elaborate on them.
As well as properties, each object has some functions and some events. Functions are actions which the object will do when they are triggered. Events provide a way to detect when special things happen in the ROBLOX game engine. For example, Touched
is an event on every Part
object which happens whenever something touches that Part
. ROBLOX provides a way to connect your own code to these events so that you can make things happen when specific changes happen in the ROBLOX world. Once you understand properties, functions, and events, the whole ROBLOX API is opened up to you.
I know I've waffled a bit here - long answers aren't very common on this forum. Your heartfelt story struck a chord with me, and this is the best advice I could come up with. As I said in the beginning, being good at scripting doesn't make it easy to explain it to others, and we all learn in different ways. I read programming books when I was younger and that really helped.
Knowing that the language is separate from the ROBLOX API is the key distinction for me. When I know what I want to do, like when I already have an algorithm and a data structure in my head, but I don't know how to do it, then I look in two places: I either look at the Official ROBLOX API or the Lua Reference manual. Together, they answer all my questions about what the language does and what things ROBLOX provides, then the rest (data and algorithms) is up to your own imagination and design!
Wow, I had the same question now I'm gonna use the resources mentioned thx also great explanations.
The way I would start learning 'ROBLOX LUA' is by taking a look at this free online book: Here.
Now keep in mind roblox tutorials don't really teach you how make a game like jailbreak.
So when you learn to script they are going to teach you for example (Loops):
local WaitTime = 3
for i = x, y, z do
wait(WaitTime) print ("This is a for loop")
end
Tutorials on the roblox wiki, and stuff like that aren't going to say: "Hey B0000000000IIIIIIIZZZZZ! Today roblox is going to show u how to make handcuffs in roblox studio" - Builderman!
Roblox ain't goin' to show you how to script (Lets not forget building) in that aspect.
Roblox tutorial(s) (such as the wiki) is going to show you things like:
print ('Test')
or
local Buildermen = "Builderman"
if true then print(Buildermen)
end
That should be the way most ppl learn.
Then later on when they want to make a game they aren't going to code:
local IwantToMakeAGame = true
if IwantToMakeAGame then Make a game like BloxBurg end
They are going to use what they have learned, to build stacks of code, weather it be efficient, or not efficient.
Hope this helps ;)