I’ve been playing with HTML5 recently, and pretty impressed with what it can do. I’ve been making games in things like GameMaker and Unity for years, but always felt that, for all the tools that come out of their respective boxes, both systems can have some pretty impressive limitations.
That’s not fair. It’s not that they’re limited. It’s that they’re uninformative. You can have several games under your belt made through either system and still be totally clueless about really simple mechanics. Until recently i had to admit i had no real idea how movement mechanics work, or even colliders, even though i’ve being using both for years.
That was the problem. I had been using them. I hadn’t been making them. In fact there was a lot of functions and techniques and general practices that i had just ‘been using’, but very few i had actually made. And hey, i have this blog, why not use it to chart my course of learning some real basic stuff that i should have learnt years ago. If i’ve screwed up learning these basics, then i bet there are other script kiddies out there who have made the same blunder, so if any of this is a help to you, i’m more than happy to help correct your course a little bit.
If you’re used to Unity or Gamemaker or even Construct 3, then you may have gone through your game making journey using less code than you thought. It’s great that it’s possible to make games without using a single line of code, but it become should become clear pretty early on that code is vital to get what you want. Even if you are spending most of your days in the code mines, you may still find yourself copying and pasting most of your work and then tweaking the bits you may need to tweak until it works. One of my own personal sins is stealing the code from youtube videos or github repositories, and then just hitting it until it works the way i want it to.
Don’t get me wrong. There’s nothing wrong with borrowing code and adjusting it to make it work with the system you’re creating. It can help with a lot of problem solving and critical thinking skills that are vital for becoming a programmer. But one thing you don’t tend to get from a lot of tutorials is the actual knowledge behind them. For me, i know it’s more a case of ‘that’s the answer i need, copy and paste it into my work’ with little chance of the required knowledge actually sticking in my brain. I may have learned something, but it was more how to find the answer, rather than how to build the answer.
Working in HTML5 helps a lot with this. HTML5 is capable of running 2D and 3D games, but you have little to none of the tools that come packaged with something like Unity. You get a few helpful draw and animate style functions to get the canvas working, but that’s it. Everything else – colliders, triggers, animation cycles – you’ll have to build these yourself, and that’s great. Finally, you get to figure out all those things that ‘just work’ for yourself.
On top of this, HTML5 is already for you to use. If you have a web browser, you already have it. You just need a notepad application of some sort. I recommend Sublime Text. It has code autocomplete, tabs for different files and an easy browse system, as well as tons of other nifty features that i really need to learn at some point.
What’s the advantage of all this?
I mean, why bother right? If programs like Unity just allow you to Add Component > 2D Box Collider, then why bother learning how to build one yourself? It’s not like we need to know literally everything that a computer does.
First of all, some of us like to learn stuff we’re never going to use.
Second of all, it can be important to learn how a tool you’re always using works, because maybe that tool isn’t always going to work for every situation you need it for. Maybe it’s useful to know how that tool works so you can recreate a minor variant. Unity’s colliders are very robust, but there’s a few outside the box situations that might call for you creating a collider of your own.
Finally, there’s going to be a day where you want to create a game that doesn’t rely on something like Unity. Maybe you want to go back to basics and create something in Pico8. Maybe you want to publish a game and not have to give Unity a share of the profits. Maybe you figure it’s time to start using Godot. Suddenly, things work differently in the different system, and you’re thrown for a loop that this other language seems to insist you know how to create an animation loop. It’s better to be prepared for that sooner rather than as you fumble through the program trying to find the ‘do it for me’ button.
Let’s get started
So i hope some of this is useful for someone somewhere. Leave a note in the comments if there’s something you want me to cover, or just let me know what you think of it all so far.