Hi JYinc!
Different people are going to say different things I think, so be sure to think critically and research and experiment to find out what you think is true.
Knowing C or C++ is absolutely not required for making a game with LOVE, it requires knowledge of only Lua.
Knowing algorithms and data structures also aren't necessary for getting started at making games with LOVE.
I'd suggest to make simple things with whatever you know at the time. If you only know how to draw a circle, draw a circle. If you only know how to make a circle move to the right of the screen, make that.
Then, when the need arises, learn what you need to learn. Want the circle to jump to where the mouse is but you don't know how to get the mouse position in LOVE? Then look that up. Want the circle to slowly move to the mouse position when you click? Then you'll need to learn some basic trigonometry.
You might find that you can create some cool stuff with only knowing a few things, experiment and have fun!
You can "learn what you need as you need it" for everything: Lua, LOVE, programming techniques, mathematics, algorithms, data structures, etc.
You may then get to a stage where you think "well, I'm comfortable with the basics of LOVE now, I kind of get the basic idea, now I want to read the entire wiki and learn everything that LOVE can do", then you can do that. You may want to learn more about Lua or mathematics or whatever it is that you think you could benefit from. But, unless you're inspired by this, you can learn things as you go.
Note that, in my opinion, the quality of learning resources for game programming generally aren't as good as you might hope. I say this to encourage you to not be afraid of trying things out for yourself and learning that way, and also to not be discouraged if you find some tutorials confusing or not that helpful, it's normal.
Also a thought to think about: the best games aren't necessary made by the most knowledgeable programmers or have the "best code".
I'd advise not getting too caught up on writing "good code", you'll know what works and what doesn't with experience and thought, and it's an easy thing to fall intro the trap of obsessing about things like this while ignoring more important things, like making games! One bit of advice that you might find helpful though is to find ways not to have duplicate values/functionality in your code (you can see how I handle this in my tutorials I link to below).
Learning a little bit of the grammar of Lua and a little bit of the LOVE API will help you get started. I don't know what Lua tutorial to recommend, I'm sure there are lots, I would recommend making lots of little programs and experimenting to get comfortable with the writing and reading the language. Note that there's some features of Lua which you really don't need to know to get started, like metatables and coroutines.
For getting started, I would suggest checking out
Sheepolution's tutorial,
noooway's tutorial, and
some tutorials that I made (I'm probably missing some good tutorials!). Don't worry too much if you don't understand everything right away in a tutorial, just get what you can get out of it and try researching Lua/LOVE things which come up that you're not sure of. With my tutorials I didn't even try to explain things, because I figure that by reading the code and seeing what changes, you'll come up with a better explanation yourself than anything I could have written, which would probably be confusing.
This may be a silly idea but if it sounds reasonable to you, I'd suggest taking a simple game from one of those tutorials, and after getting to the stage where you've gone through the tutorial and you understand what every line does (which could take a while!), you could start with a blank file and try to recreate the game from scratch without looking at the tutorial's code (at least unless you get stuck
). The reason I suggest this is that some of getting comfortable with programming is just getting comfortable with typing, memorising Lua's syntax (grammar) and LOVE's API, reading error messages and correcting errors (tip: learn to use a debugger!), and building up your code step by step. You'll notice in the tutorials above that it starts off with a little bit of code which you can run, then adds another little bit of code which you can run, and so on, building it up in small steps. I recommend this!
I suggest learning to use a debugger, because then you can see how your program is working while it's running. Otherwise you'll be "in the dark" about how your program is running, you'll hit run and it'll just go and you might not be able to figure out what's going on.
After a bit of experience, when you come to program something you might find yourself asking yourself things like:
- How will I draw the graphics using what LOVE provides?
- What variables/tables do I need to store the data I need for things in the game?
- How will this data change?
- What mathematics and algorithms will this require, does it need something I don't know yet?
A common piece of advice is, especially if you have a plan on a huge game you want to make, instead of going ahead and start trying to make it as soon as you're getting started learning about all this stuff, try making lots of small games and experiments, because as you get comfortable with simple things you'll be able to get more comfortable with more complicated things. I think this is good advice!
So, I think you'll find out for yourself what is true, with experience. Do you really have to learn this thing or that thing to make games? Start making some games and find out for yourself.