How can I improve my programming skills?

These past few months I’ve been really improving my lua programming skills, but now I’m kind of stuck. I wanna increase my skills even more to make these really nice games I wanna make but I’m not sure where to go from here. If anyone could help push me in the right direction I’d really appreciate it!

12 Likes

The best way is to just choose something to make and try to make it. You can also find tutorials on making different things and try to make it while you watch. The more stuff you program/make the better you’ll become at it. I should add that you don’t want to just keep making the same things over and over again. You’ll learn more by making different things.

11 Likes

Alright, thanks for the reply! I’ll take your advice

1 Like

The best way that I learned was watching some scripting tutorial videos!

1 Like

Improving your Lua programming can be a bit like learning math. Early in your math journey, it’s great to memorize the times tables, for example. Reviewing those tables all the time can make you more efficient at multiplying numbers, but you aren’t going to learn calculus from doing that alone. At some point you have to venture into areas you know little to nothing about and start accumulating new knowledge and skills. Learning the language of “Lua for Roblox” is a bit like memorizing times tables. It’s a step along the path. Learning to program games, though, requires you to start writing programs that solve the kinds of problems devs face when making games. That leads you to two general options: 1) follow lessons from people who have already done it or 2) start trying to make a game and see what problems come up. If you’re like most everyone else, you’ll do some of each.

Often, when someone says they are stuck at some point in their learning journey, it’s because they’ve run out of tutorials to do that feel interesting or challenging, but they don’t feel like they know enough to apply what they’ve already learned. For me, that’s when I know it’s time to start applying what I know and face the consequences. The problems I run into while setting off on my own usually kick off additional rounds of tutorials and such, but the new material I cover is then geared toward helping me achieve specific objectives rather than the accumulation of general knowledge that I may or may not ever get around to using.

Almost any game you write is going to involve challenges that you haven’t faced before, so there isn’t really going to be a point where you are guaranteed to know everything you need to know for every situation. If you’re without a path forward, try just making a game. Pretty quickly, you’ll find a whole new list of topics to review/explore.

7 Likes

Very informative answer, thank you! I’ve actually made a small game and I’ve learned to make decent small games, but now I’m just trying to expand and become a more advanced developer and create games that can be considered high quality.

2 Likes

Oh nice! Making high quality games is a different task than writing high quality code. In other words, it’s possible to have great code in an otherwise meh game. High quality code is going to follow consistent conventions and will utilize quality algorithms. It’ll be documented in a way that’s relatively easy for another programmer to understand, and it will be designed in a way that makes it easy to maintain and extend. Importantly, it will work as intended, and will have some testing methodology (e.g. unit and integration testing) backing it up so that edge cases will have been considered and addressed and components will play nice together. It’ll follow common coding patterns, and so on. Much of that isn’t Roblox-centric; it’s more comp sci. That’s a bit of a rabbit hole of its own (algorithms is a big field), but many of the resources on those kinds of topics aren’t geared toward a specific programming language. If you aren’t going for a comp sci degree, then picking up bits and pieces of that stuff as you go in order to improve incrementally from project to project is a perfectly fine way to go.

A high-quality game can be achieved without first-rate programming, IMO. Anecdotally, there are likely a great many “successful” games that have a code base that isn’t…ideal. A workable approach moving forward might be to focus on making sure your code adheres to a style guide (Roblox Lua Style guide) and explore enough of that comp sci stuff to give you a general understanding of paradigms like OOP, some common search and graph algorithms, a handful of patterns that can be useful for games (c++ - What are some programming design patterns that are useful in game development? - Game Development Stack Exchange), and then pick up more ideas as you run into issues with whatever you’re working on. Being able to identify “quality” is a step along the way toward achieving it.

Until you’ve stumbled onto a game idea that is a hit waiting to happen, you probably have time to experiment with how much or how little you want to deal with when it comes to personal programming style and conventions. Maybe check out the idea of unit tests, because you’ll want to make sure your game’s core mechanics work as advertised and are fairly fool proof (generally a must-have for a “quality” game). Beyond that, the quality of the game will involve more than just the programming. It could be a team effort (code, game design, assets and anim, graphics, music, etc). A key tactic is to evaluate what you’ve produced (at the end or periodically throughout production) and decide what needs to be done better the next time. Then invest in the effort to figure out how to do it better.

As with most things, it isn’t possible to “pre-improve” on all the things you’ll need to be good at to achieve a quality game. I imagine there are very few programmers who come to Roblox game development having had no experience in games but possessing an advanced degree in programming for games. Try setting your sights higher than you have been for the next game and build upward from here (better than decent and/or bigger than small). Try starting with the code base from one of your prev games (how easy is it to follow, modify, adapt?). You aren’t likely to gain all the skills and knowledge needed to make quality games until you’ve missed that mark enough times to know what it takes, first-hand. Setting more and harder challenges for yourself is one way to go about it.

8 Likes

Thanks for the great reply. I think this will help me a lot, after reading I definitely have more of an idea of what I wanna try to do.

1 Like

I have a lot of good tips for you.

1st: Be inspired of other people’s creations. Try to be amazed on what kind of cool script behaviors other game devs can do and try to figure out what kind of instances or script functions is being used, it is always fun to figure things out.

2nd. I suggest you to watch AlvinBlox. He is a youtuber who is an excellent game Lua scripter that is happy to teach you ALL sorts of MAJOR functions, instances use, and so forth!

3rd. Don’t stress your failures. Look we all know that it SUCKS to have a failed code attempt, but as AlvinBlox said: “Never give up.” Use the bugs you get to learn your mistakes and if necessary, use the DevForum like here to search the problems you’re having, there are upon thousands of potential game developers not seen much on the Roblox platform itself that would strive to help out beginners with issues.

4 Likes

Excellent motivation on game development @Astr0Derp, I totally agree that making high-quality games is about being inspired by ideas, critical thinking, and letting your imagination flow for you.

4 Likes

I think this is really helpful, definitely motivating me to actually try and make things that I thought I may not be capable of making.

As others have already said similar things, however, I honestly feel like it depends on how you interpret learning. Would this be visual learning, such as looking at code or watching tutorials, or are you a practical learner who prefers to write something to actually learn something?

Personally, I’m a practical learner, so I can’t really learn by watching tutorials. However, you just have to try several things. And here’s another thing, as I said, I’m a practical learner, so I tend to look at games I enjoy playing and write up pseudocode algorithms to list a set of rules if I wanted to make something from them. For example, I’ve made a combat system. I wrote a basic algorithm that told me in a few steps what the system would consist of and what I would need to. This assists me in programming as I follow a set of rules, so I don’t get side tracked or get lost. If I do make a mistake, it’s just trial and error. Going off topic a little, I also find learning OOP languages to be useful. For example, while lua isn’t exactly an OOP language, I still get to carry knowledge over from stuff like Python, etc.- You could also do this to improve your knowledge generally of programming languages, not limited to Lua. Anyways, back on topic, at the end of the day, it’s up to you. As I stated above, it all depends on what kind of learner you are.

As others and I have stated just above, the more you create things, the more knowledge of that area you get. For example, as I said, I made a combat system. Now, if I was working on a project or getting commissioned to make a sword system, I already have knowledge of setting up a combat framework, so I would already know where to go from there. Hope this helps.

3 Likes

Always make sure your code is organized! It will be easier to spot errors when play testing, and its just appealing to the eyes overall.
Here’s some organized code that I made:

-- [ Variables ]
-- Last updated 1/18/21
-- Script >

local blahblahblah = script.Parent

-- [ Script Assignments ]
-- Script <

blahblahblah.Text = "yes"
1 Like

Thanks for the reply. I think I can relate to you on the practical learner thing. I’ve noticed that I learn a lot faster and better when I apply it and when I actually write the code. My only issue sometimes though, is not knowing how to apply something I wanna learn if that makes any sense.