What I cannot create, I do not understand

Richard Feynman
  • Blog
  • Part I

    I think it's obvious that one of my dreams is to create a game and publish it. So you would say that the logical next step for me would be to choose an engine and get to work on the idea. Well, in my case, I don't want to brainlessly start using a bunch of tools and libraries without having at least a basic understanding of what they do or how they work. Since I've never had a formal education in game development, I've always had this craving to understand all the tools, formulas, and algorithms that make a game what it is. So I've always had these questions about how a character knew that a sprite was supposed to be a wall and how the animation changed from running to idle. As you can see, game development for me is not about the end product but really about every step of the way, from drawing to detecting collisions, interactions with the game environment, and more. So my first step was to find an engine that would help me not only make a game but also understand the basic concepts. I quickly realized later that an engine per se would not be of much help in my case, so I started to look for something that would not provide me with all the tools from the get-go but would push me to make my own. Ladies and gentlemen, Frameworks. A framework is a collection of (usually) lower-level libraries and helpers that take care of graphics, sounds, etc. There is nothing game-related about a framework except that it's usually optimized or designed to do things that are common in games. OMG, that is exactly what I needed. Two seconds later [in a french accent], I accidentally found LÖVE, which uses Lua, one of my favorite scripting languages.

    Part II ʟᴇᴀʀɴɪɴɢ.

    So, I fell in LÖVE. See what I did there? [ʷᵉ ˢⁱⁿᶜᵉʳᵉˡʸ ᵃᵖᵒˡᵒᵍⁱᶻᵉ, ᵗʰᵉ ᵃᵘᵗʰᵒʳ ᵒᶠ ᵗʰᵉˢᵉ ᵖᵒˢᵗˢ ⁱˢ ᶜʳⁱⁿᵍᵉ] Anyway, I started playing with the framework with no real objective, just to draw things and move them. After approximately 4 months of coding useless stuff, I decided to actually start learning game development basics. And here is where I might be different than the rest: I don't really learn by watching YouTube videos or courses. I like to discover things by myself and read blogs/forums and search for stuff. When I make the effort to search for something, it automatically sticks in my brain. So now I needed a starting point. What about other peoples' code ? What if I took an already existing library that deals with a topic like (Animation, Collisions, shaders etc...) and disassembled it and then rewrote it in a different language ? Well, that's exactly what I did. I looked up Love libraries and I found a repo that has the most well known ones. After that, I looked up a scripting language that compiles or transpiles to Lua, and I found Moonscript. Well, now that I have all the tools, I got to work and started reading other people's source code like books, and before rewriting a function, I looked the concept up to understand the math and theory behind it. (I will explain this method extensively in future blog posts.)