You can also follow this blog series for creating the game BYTEPATH in LOVE2D: https://github.com/adnzzzzZ/blog/issues/30
my goal is to teach some kids at my school how to code a real game (we did CS First but that was Scratch and Scratch isn’t real coding :P)
By “kids” are you referring to elementary, middle, or high schoolers? Depending on what they are willing to take on, I have a few other guides that may be fun:
There’s a little bit there for everyone. If they just want to make games and skip a lot of the cruft, they can always just download Unity and Blender and get right to it (and pick up C# along the way).
…I just want to teach some middle/high schoolers how to make a game. I chose Lua because it’s easy to pick up. 1-indexing sounds terrible to actual programmers, but these are just kids. I just want to give them ANYTHING better than Scratch.
Well, once they know how to make one game they may want to make more. Now you have a bunch of potential options for game #2 they can pursue, should they feel so inclined.
Maybe I’ll include that at the end of the workshop, as a sort of “congrats, you’ve finished a game project! you can make more professional games using these”.
However, for the purposes of the workshop, Lua is easiest. It’s logically sound to non-programmers (to a non-programmer, it’s hard to explain why the first item is 0 and not 1).
I always just tend to go with “You know how computers speak binary, which is just a bunch of ones and zeros? Well, they are also weird and start counting at 0 instead of 1. This will make more sense later on once we actually start programming things.”
But I also get your point of wanting to start simple with Lua, but making games like BYTEPATH is about as far as you can go with it until you start getting limited by how slow Lua is (hence why over half of those links use C++ or Java).
The question is, how do you actually explain zeroindexing to the kids?
the index isn’t an ordinal number. it’s the offset from the beginning. the first elements is 0 distance from the beginning.
“Alright kid, count off to 5”
“1. 2. 3. 4. 5.”
“I see you started with 1, computers start with 0 so let’s count off to 5 again but starting at 0”
“0. 1. 2. 3. 4. 5.”
“If you write down each of those numbers and count how many you have, you will notice you now have 6 numbers. So let’s do this one more time, but this time stop when you get to 4.”
“0. 1. 2. 3. 4.”
“Great, we are now starting at 0 and ended up with 5 numbers. This is how computers count to 5. An easy way to remember this is to compare this result, 0 1 2 3 4, with our first result, 1 2 3 4 5, which is just the same number subtracted by 1:”
1 - 1 = 0
2 - 1 = 1
3 - 1 = 2
4 - 1 = 3
5 - 1 = 4
“And voila! You can can now count like a computer, which is formally referred to as ‘zero-indexing’.”
Slow? Perdon? Have you seen pygame’s performance? Absolute TRASH. love2d is fast enough to make a playable platformer that is enjoyable to play.
I do not believe any of my examples used pygame. There is Python’s libtcod library for the Roguelike tutorial, but it is also a text-based game so does not have the usual performance hit that comes from making games in Python.
I was referring to the fact that you called LOVE slow when Python is the real slow one. LOVE2D uses LuaJIT (citation needed) so it runs fast enough to make a good program.
I was referring to LOVE2D being slow compared to using Java or C++, but I’d still standby the libtcod library for Python to easily be performant enough for any Rogeulike game you have in mind (again, it is only rendering ASCII and maybe some bitmaps).