What are the most important things to learn to make a half-decent game? That is, in terms of both things to script (e.g Block movement, GUI) and how to script them (e.g CFrame and ClickDetector).
What overall topics should I focus on learning?
1 answer
You need to be good with Lua. Look up the Guides at the top of each Scripting Helpers page, look through the tutorials on the Roblox Wiki -- and they have plenty on other aspects of Roblox, too.
You would benefit from consider what makes a game good. One source I recommend for tips is Extra Credits (YouTube channel) (they have non-game related content as well, but consider looking through some of their gaming related playlists). However, so long as you've played games or know what you want to make, this isn't critical.
An important thing to do will be to experiment. Experiment as you learn Lua, experiment with things in Roblox you haven't seen before, experiment with different game designs, etc.
Other things that can be of benefit:
- Learn how to write code well. You might want to learn about Object Oriented Programming (OOP) and principles of good OOP design (ex look up SOLID). Also, there's this nice free online book, Clean Code, which can give you lots of guidelines on how to write code cleanly. This is most important when you are making a large project, however, and is of no use to you until you've got a very good handle on Lua.
- Plan out your game before you start making it
- Learn how to test code (ex look up Test Driven Development -- you don't have to do it that way, but testing at least some of your code can be beneficial). No matter how you do it, you must test what you make to make sure both that it works and that it is fun.
This discussion is preserved as it was. New answers, comments, and votes are closed.

11 comments
If you want to learn those things go search up "PeasFactory" on Youtube.
Videos are all two years old, some things work, some things don't.
What things do not "work" anymore? Please tell me so that I can help ...
One thing I'm struggling to find is how to access a player location, by the looks of it you used to be able to do: game.Players.Character.HumanoidRootPart.Position to get a players position, however now you cannot use character.
Nvm, I've worked out a different way of getting the character position, thanks anyway. :)
Watch the videos , take my advice ...
It may be 2 or 5 years ago , but the basics will never really change
That's not how to get the position, its: "game.Players.PLAYERUSERNAMEHERE.Character.HumanoidRootPart.Position" eg: "game.Players.JackMills.Character.HumanoidRootPart.Position" or even: "game.Players.LocalPlayer.Character.HumanoidRootPart.Position"
Tried all three, none worked.
You might need to wait for the character to load in before accessing it. Wait for the character to load in by doing 'char = game.Players.JackMills.CharacterAdded:wait()'
For the psoition: you have to either print the value or assign it to a variable, like this: print(game.Players.LocalPlayer.Character.HumanoidRootPart.Position)