Since I first started learning to program with both LOVE and Lua about six months ago for the FIRST time - ever, I feel as if I can add some valuable input as to what it feels like to be a beginner. A lot of the info that Santos gave was pretty helpful advice. You have to learn some VERY basic things in lua before you can even begin to make anything in LOVE.
Some pretty big problems I came across when I was starting:
1. Where to begin programming a game?
This is pretty straight forward, how do you even start on an idea you have for a game if there are lots of components involved? (dealing with AI, movement, collision, etc. etc.) The short solution. Pick something and start, or at least that's what I did. The long solution would be to plan it out, make a prototype possibly, and have an idea of how everything will work, and then pick an appropriate place to start. It's hard to do the long solution if you have never made anything before.
2. zipping folders and renaming them to a .love file on windows 7
This was a pain in the butt for a week. I couldn't find a video to show me how to do this correctly. Finally after much googling I found some misc. computer article talking about how to change some settings on windows 7 to be able to rename files. (in the meantime, I learned lua)
3. Most of the games made on the forums are beyond a beginners ability to learn from and comprehend
Sorry if this is harsh LOVE2D community, but take this as a compliment. There are a lot of talented programmers here. Trying to grasp what they are coding when starting out was nigh impossible. I could really only understand bits and pieces and reading a lot of their code made me feel confused compared to how simple the LOVE2D tutorials were.
4. DEBUGGING!!!
I just found this out about 2 months ago that LOVE2D had a console (just like the lua exe) that you enable with love.config and set it to true!!! I felt like I struggled for my first four months in vain! Before I knew this, I was practically guessing and editing random things hoping to find the problem in my code when things went wrong. I also used love.graphics.print() to see the state of my globals and variables which was a big hassle.
5. Understanding what local/global are and how they are used
The concept was a little confusing at first, and often at times I wondered if I was using local variables in the right place.
6. Input/output & changing the game state
Learning how to use the keyboards and input to actually do stuff and where to store the game state variables.
7. Making sure everything is where it belongs
At the start I remember, I tried to stick EVERYTHING into love.load(). lol. Good times. There were other mistakes similar to that one. (putting dt, outside of love.update and a lot of others)
8. Converting learned knowledge from lua to LOVE and using it
It took me a while to understand that everything you can do with lua, you can do with LOVE. And that LOVE is basically: lua + a_bunch_of_other_functions() + drawing_graphics_and_playing_sounds() combined into one.
9. Self-confidence
I would say for the first month or so, I couldn't stop asking for help on understanding things. I was so lost and confused... It took me a while before I went off and explored stuff on my own. I know I may have gotten on some peoples nerves on the IRC when I first started, because the most basic things about love and lua I was pestering them about. Now I try to think of it as a
who-wants-to-be-a-millionaire lifeline. You should really only be asking for help if you've made enough progress on something that is worth people's time and should do so sparingly. (similar to the show where you only get to use that lifeline once!)
10. Programming Vocabulary
This is a big communication barrier when learning if you don't know what things are called. Later on when you try to read more advanced tutorials or other people's code, they will be using certain terms to reference/explain things and if you don't know what they are talking about then you will be in the dark. (I still don't have a lot of the lingo down, but I get by with the amount I know...
)
So ta-dah! That is Codex's list of important hurdles to overcome as a lua & LOVE noob. Some parts were very frustrating, especially when you so desperately want to see the result of what you're making, but never give up and eventually you will succeed! There are still a lot of things I don't know, but I feel as if I've learned enough to get by for now making the games I want. Of course, the more you the learn the easier it is to accomplish your goals. (or so it appears)
Also I would definitely recommend that use the lua prompt and do
these tutorials. Yes, I'm aware some people have already referenced them, but they have been invaluable as a tool to really understand lua for me. (more so than pil, although pil is pretty damn good too!) I'd say that you should go through and do all the introductory topics, and follow the commands on your lua prompt. (feel free to play with it too!) Then once you get the introductory topics done with and you feel like you have fully grasped/understood them try some of the other topics. In fact,
this is the order, I recommend you learn/read through.
Some useful demos that are fairly small and easy to understand that were made by people on IRC when I was first learning are below.
Ball Test -
Press enter to resume/pause motion with balls. One ball bounces when it hits the edge of the screen while the other teleports to the opposite axis.
Chat System -
Press enter to switch chatbox from true/false. You can chat in the chatbox when it is true. When the chatbox is switching off, the text is erased. (you can erase it with backspace too!)
Coin Demo -
Just showing how to use a table and images with love.draw(). Nothing else to it.
Rotated Square Generator -
Press enter to spawn squares that are moving and rotating in different speeds and directions.
TechnoCat Tables -
Again just showing how to use tables for some stuff.
Kudos to TechnoCat, MauriceG, and another person on IRC (I can't remember his name) for making those .love files or helping me make them. I hope looking through those simple demos helps!