I’ve been scripting for about a month now. I’m familiar and able to create simplistic things(sound players, obstacles, basic simulators, camera positioning, etc)
I want to know, what should I practice? I ask this because I do not script every day, there are some days where I just don’t do it because I simply can’t think of something to do.
Also, how do I know how ‘good’ I am at scripting? At what point of knowledge is someone considered an intermediate scripter?
You could start with something simple but very rewarding and make an “Audio Visualizer” that positions the camera still and does an effect that mimics the given sound’s PlaybackLoudness property which simulates it’s loudness.
Make sure to include a GUI that can control the intensity of the effect, The volume of the sound, The sound’s pitch and make sure to include an option to choose your own music from the roblox’s sound library.
As for how to tell/know when you’re good at scripting, I would give myself an idea and then try to replicate it, If I could replicate these ideas consecutively such as scripting guns, audio visualizers, main menus etc I would consider myself good.
My grandpa passed away recently, but one of his most favorite sayings was: I’m not better than anyone, But I’m as good as anyone, So do not get discouraged when you see someone with more superior knowledge than you, Use that as a way to rise yourself up.
Edit: I thought I’d go ahead and post this here to give you a basic idea of what I’m suggesting.
Wow, this seems like a challenge. Maybe I’m overthinking it. Anyway, I appreciate you for taking the time for responding! I’m sorry to hear about your grandpa, he sounds like he was a great inspiration and a good person.
A fairly good challenge that even seasoned scripters have trouble with is creating a projectile system that handles network lag and hit verification to ensure the shooter isn’t cheating (or make it harder for them to cheat)
Another good challenge is to create a zombie AI using state machines, learning state machines in general will help you out a lot with your future games and projects. And if you find that interesting and want to go even a step further with a challenge would be to learn about GOAP: Goal Oriented Action Planning for a Smarter AI | Envato Tuts+
There’s also another fun challenge of making a character be able to walk on any surface (or angle, including upside down) without falling off, as well as being able to have custom localized gravity so they can fall off if you want them to.
You can try starting to work on a simple project that you find fun to work on, and get more experience along the way, for example, a tycoon combined with a shooter, but not a trashy button tycoon, a sandbox tycoon, with guns.
You can then expand on that idea, with questions like:
Where will it be placed ?
What style will it have ?
Will it be a FPS ?
Will it be a production tycoon or a building tycoon ?
As long as you find it fun to develop, you will start working on it more, thus gaining more experience, as practice is the best way to gain experience. And at the end, you could also be proud of your creation.
An idea is a seed, and a game is a plant, and the vegetables are the rewards the developer got for watering it and taking care of it. If the plant fails, you see why it failed, and you remember to not do that to the next seed you plant.
I’ll link one of my recent responses as a reference
I believe there are some posts that provide some challenges/tests for you to evaluate yourself thoroughly, however it really depends on how you master concepts that Roblox revolves around.
TL;DR: The landscape is vast, and the journey is so long it appears infinite. Instead of asking how far you are on the road, ask yourself if this is a road you enjoy traveling, because if you’re after greatness, it’s a much longer journey than you think. (I’m still on the road and I still don’t see the end)
This is the tricky thing about programming. On the one hand, languages, APIs, hardware, and frameworks change yearly now, but most concepts and practices we use as programmers haven’t changed since they were invented in the 1950s and 1960s.
Because of that, it depends on what you mean by “good.” If you’re talking about being “good” in the current state of Roblox scripting, then you’re comparing yourself to something that will change in months. I recently worked with a Roblox scripter who considered himself “advanced,” but he failed to keep up with the latest changes and wrote code that had no chance of working. Since he wasn’t constantly reading Roblox changes and had only worked in Roblox Lua as a programmer, his “goodness” had become stale quite fast.
On the other hand, if you mean “good” in terms of overall programming ability across many languages, that’s something that transcends the current state of Roblox and will serve you no matter which platform or language you use, but it also takes years of learning the fundamentals of programming. Most people don’t have the diligence to learn and practice all of the important parts of programming on their own, which is why school/universities are not obsolete (yet). I wouldn’t be half the programmer I am now without university.
As a professional programmer who interviewed at game studios, I can tell you that a real game studio doesn’t consider someone an intermediate scripter until they’ve worked on a few small/medium projects in Javascript for about 2 years. (Javascript is the gold standard, not Lua) I remember having 1 year of experience in Javascript, and I was (correctly) considered a newb at a studio. I had programmed what I’d thought were impressive/cool things, but in terms of understanding what goes on under the hood, I had no concept of how deep the rabbit hole goes…
You can make a realistic submarine script that is connected with rudders and water tanks that fills up. If you can do csg or 3D modeling, make a simple submarine and make it work realistic.
You can make a gun script.
You can make a house with furniture and make it fully working.
You can make an arcade game such as hill climb racing and Extreme Roadtrip 2.
One big thing that no one has mentioned so far is round based games. They can teach you:
Client server mechanics (showing what the round is on the client)
Coroutines (for doing stuff without stopping the clock)
Module scripts (for handing off tasks to other scripts)
To create a round based game:
Find a BASIC game that you like (e.g. simulator, obby, fighting)
Make a version of the game that can be completed in a relatively short amount of time (i.e. not 2048 stage mega obby)
Create the environment for you game and the lobby.
Script the rounds on server. Don’t forget to include randomization!
Create and script a UI on mobile to display the round stats (time remaining, what part of the round, modifiers, etc.)
Play test your game and adjust the length of the different rounds. This is important to make sure that the game is difficult, but not impossible. In addition, it can make sure players don’t get bored between rounds.
Add the finishing touches. Things you can add include:
Music
Currency
Power ups
Etc.
Publish, get feedback, and repeat steps 6-7.
Whenever you feel ready, release the game and see how it does.
The great thing about this is that you can learn all these concepts, AND have a finished product and experience using them in a practical application.
That is a question you can answer yourself, what can you not do? What do you need to know to accomplish it? Ask yourself these questions if you are lost. Another option would be to make a game and see if you are able to make one. Chances are you are missing some elements and along the path of development you can find out what you need to know.
You can’t always rely on other people to tell you what to learn / practise. It really is dependent on you and what you want to learn. If you wanna test your skills, make a complex game or practice algorithms. The thing about these questions is that they are broad. There are many things you can learn you just have to find out what, I can like suggest a couple things that may be helpful but I can’t provide a full answer due to the lack of understanding at where you are currently positioned at in terms of depth of the language.