10 minutes a day challenge results: Unnamed Cat Game

I made a challenge with myself to work on my meaningful work for at least 10 minutes a day. I have an update that I'd like to share.

I decided to play around with TIC-80 and see how far I could get on making a simple game with it. I wanted to play with using the mouse with TIC-80 in the hopes that I could use that for future projects. I figured I'd start with something small: a point-and-click game. The idea I had was something based off of real-life: trying to find a cat in a bed. In this game you click on the "mounds" to determine if the cat is hidden under that mound or if it's just an empty space. If you're successful you'll see a cat emerge from the mound to greet you.

Controls: Click on the mounds with either a mouse or a touch-screen device.

When you "win" you can restart by either reloading the browser or hitting CTRL-R.

Unnamed Cat Game

(I'm also releasing the cat.tic and cat.lua.)

There's more that could be done with this game (menus, difficulty, scoring, etc.) and some bugs that need fixing (the guesses are way off, probably because of how I'm tracking them) but I've decided that I'm done for now. I've taken this project as far as I want to go. There's a few reasons for that:

  1. Lua is an interesting language, but it's also a frustrating language. The documentation is purposefully obtuse, showing examples that are wrong in order to show you a "correct" solution that is also not quite what you had in mind. One instance I recall was an example of how to create an object in Lua. The documentation has an example that shows how to "cleanly" make an object. Of course it's also wrong, in the sense that it doesn't create objects with their own unique local but multiple objects pointing to the same data. The obvious answer is to make a local instance of o, but apparently one needs to learn this fact through the fires of Stack Overflow and not from the documentation itself. Also it's unconscionable that this is the fourth iteration of this book and it still contains this newbie bear-trap. I found one answer on Stack Overflow that chastised the newbie for not understanding what they're doing wrong. Perhaps they'd have a better shot at understanding if the author of the documentation tossed a few more words onto their word-hoard to show the difference.

  2. TIC-80 is a "fantasy console" which means it has artificially-imposed limitations on what it can and can't do. As I mentioned in my last post on game collecting I've been focusing more on the Atari 400/800 series (as well as the Atari ST, 2600, and 7800). I'm finding myself drawn more towards understanding these platforms. Initially I wanted to make a game where anyone could enjoy it on whatever platform they desired, but there are ways of making emulators available in the browser. So I'm itching to try my skills on real consoles with actual limitations.

  3. I'm not having fun with this anymore. There's enough rough edges that I encountered in programming this that made it less than fun. Lua's tables are incredibly powerful but also incredibly limiting in how they're used. I know most of this is my unfamiliarity with the language but most times I can adapt my knowledge to make something work with little difficulty. Lua felt like it was fighting me each step of the way to conform to what it's world-view is. That's not necessarily a bad thing (I don't find its world-view offensive at all) but when I'm wishing for something like a Scheme to work around the limitations of the language then it means it's time to set it aside and let it percolate a bit. I had the same frustrations with JavaScript that I've gotten over, but I still am not racing to write JavaScript any time soon.

It's not my intention to say that Lua or TIC-80 are bad in any way (they're both used by lots of folks to amazing effects), I'm saying that my headspace is such that it's not what I need right now. I'm grateful for the experience as it's taught me a lot about my own programming desires and how to stick with discomfort. I'm still going to keep at the 10 minutes a day challenge to see how far I can get, but it'll be with the Atari 400/800 series. I might even re-implement the Unnamed Cat Game under there to see if I can do it over there. But for now this is where this landed and I'm OK with that. I got to where I wanted to go and I have more data about myself and my working habits. I'll write those up when the challenge is complete.