A-Z - The first game I built
A-Z is a mobile game in which players spell words from the English dictionary. The game is available on itch.io. This is the first full game I've made (on my own as well). It took 73 hours over 2 months and 3 days.
I wrote some notes about the process. They are a bit cringey in retrospect, but I'm glad I did it.
Done and dusted (Retrospective)
The first game is done. It was a lot of work, which was enlightening in several respects, and thus, it was a good insight into a new field of programming I hadn't explored very deeply. Now I can say that I have shipped a game. Now - reflection mode!
On Building what you want to build
Over the last month I grew bored of the project and didn't want to work on it. At times I was rather negative. The idea is dumb, I told myself. It wasn't cool enough. Wasn't impactful enough, wasn't interesting etc etc. One might say I'm being too hard on myself, but now that time has passed on the project, I can more objectively say those statements are true. I wasn't making the game I wanted to make (I already have one or two of those ideas written down somewhere) and I'd rather make something else.
On one hand, I told myself at the time that it was necessary for me to pick a small project in which the express purpose would be to a) learn how to build a game in its entirety and b) publish something. I still think that is sort of true. But I spent 72 hours of my life on executing an idea I felt ambivalent about. I could have spent that time learning as I went on a project that I cared about more. Could I have known this before hand? Maybe. Maybe the feeling was lurking in me somewhere. But now that I'm typing this out, I do know some things and I'm documenting it here, tracking my time, etc, to save myself from making the same mistakes again in the future. I think to distill my point:
I love learning, but if I'm going to be publishing, I better be 100% interested in the thing I'm making itself. The downside of curiousity is that you can get pulled into executing something you care little about for the sake of learning something new.
The act of publishing is what raised the above examples of negative thinking. If I didn't publish, I could simply be satisfied with having learned quite a bit of something new - much of which can be applied in future projects. So why publish if it brings up these negative thoughts? There are a few reasons I think, most of which would need to be expressed after careful consideration in another place/post rather than here.
Mostly though, I need to undo the habit of not publishing. I know I want to publish bigger things someday and in order to do that, I think I have to start small. Not just games, but most artifacts I create. I'm not sure why this feels true, but it is.
("Publishing" is a vague term, but I generally associate it with putting an artifact in an easily accessible place; ie posting an .APK of the game on this wiki is not publishing. Posting it on itch.io / Google Play is. I conceded that this point could be argued. It's all opinion anyway.)
A timeline of the project
Anyway! I've created a timeline of the things I had to work through to create this game. On looking back, it was quite a bit of learning.
Original idea sketched into a sketchbook
Learning about Unity 3D Basics - opening it up, moving a cube around, etc.
Creating letter "A" in Blender & making it fall with gravity in Unity
Creating a full alphabet model in Blender
Learning how to split up 3D objects in Unity
Scripting the repeated falling of the letters as the whole alphabet
Find a plaintext dictionary and get it parsed in Unity
Narrowing the dictionary based on the letters the player has tapped
Building the UI
Building the end game state
Building the leaderboard
Adding silly voices
I'm proud of all that - especially the work around the dictionary, which showed me that working with threads didn't have to be immediately disastrous (although, in a larger proejct perhaps it would be). I had fun making music. I was particularly happy that I was able to include other people in the recording of silly voices. All in all, I do recognize that I'm getting closer to what I want: combining the hobbies and passions I've had the privilige to learn and work on, into a single artifact. I don't know if the next ocurrence of this phenomenon will take the shape of a game (maybe a play, maybe a short film, who knows), but I'm glad to have found something to work on that involved several fields.
That's it for now. I'm not sure I will jump into building the game I really wanted to build. It might be time to rest and let things sink in.
Building a leaderboard
I built a quick leaderboard but have not yet implemented it. It was a fun, quick task to work on. It's the simplest possible thing I could have created. I threw some functions in a Go file that exposes an endpoint that appends/reads to an in-memory leaderboard.
Coming back from the break I must admit that I wasn't the most thrilled with this game/idea. It was fun to build and a good way to get to know Unity, but it should be marked finished and set aside soon - publishing so that I may publisher faster and with more knowledge for the next game, should I choose to build one.
Many projects I work on lose steam as I approach publishing. I used to publish all the time, without second thought when I was younger. I understand this is normal (the former point on losing steam). Somewhere in my mind there is a quote that surmises perfectly this feeling, but suffice to say, I cannot remember it. It was some word that described how a project is never finished, never perfect and one other thing I can't remember. It's far back in the recesses of my mind, but I wish I could remember it right now.
[2020-12-18] So Naive!
Definitely not half-way there. I just learned a good lesson. Prototype on your target device as soon as you can. Especially when testing performance related code.
So, I just got A-Z compiling on Android - what a delight to see things running on a device. What's this?
The text is very tiny!
The UI is very tiny!
These colours look very different!
It seemed that looping through the dictionary was going exceptionally slow, but after poking around, I've some how fixed it. I'll chalk that up to probably mis-orienting some objects.
[2020-12-12] - Half way there?
Just a few quick notes on how things have been going. I think I'm about half way from done, which is probably an over-estimate, as seems normal with these kinds of projects.
I just did some silly voice recordings of myself speaking the alphabet. I haven't done any audio recording or editing for a long time. I forgot how much I enjoy actually working with sound. It was also fun to do a bit of python for processing the files.
The plan with sound is, at the least, to get 8 or so recordings of people speaking the alphabet, slice up the audio, and put it into the game to be triggered whenever a player taps on a letter. That's about it. I might play with creating foley sounds for when a letter falls through space, but I can see that being challenging to emulate the speed/drag changes of the letters and the pitch of the "whoosh" sound.
As for the aesthetic - I'm not satisfied with how things look as of now. I need to do the following:
Make the background less drab (although I generally avoid using colour due to a lack of confidence with it.)
I don't like the font, will have to change from source code pro to maybe Roboto mono, or something else.
I would really like to fix thet lettering so that the hard edges of letters are outlined and not simply the face and the back. I posted a question about this on the Blender stack exchange; not sure if I'll get any input (edit: it got forwarded to another post and marked duplicate, thought I have yet to test if it's the same problem.), or if it'll be something within my capacities with Blender.
I will admit that it's gotten pretty easy for this to balloon into a larger project than I assumed. I've spent just over 24 hours of time on it, which sort of makes me gulp a bit (although to be fair, a portion of that time has been learning my way around Unityº and C#).