My first video game

I have completed my first video game and I feel quite satisfied about the result.

First, let me tell you why I decided to start making games. I’m a person that has many creative interests, I like making music, I like drawing, I like coding. I have a college degree in computer science, and I have worked as a programmer for a few years, and never stopped even though it isn’t my job anymore, so coding feels quite natural to me, almost like speaking a second language. But for music and drawing, it is really hard for me to actually sit down and just do it. So a few years ago, I came to the realization that I need a concrete project to get going, I can’t just work on something without a goal. As a gamer myself, it became quite obvious that making a game could be a great way of combining my three favorites things into a single project.

In the last few years, I read a lot and watched many videos on the subject. I also started many projects, most of them ending up being abandoned before being completed. So I decided that I should give myself a realistic goal, which is to make a small and relatively simple game, but to completely finish it and to make it available on the internet for other people to try.

The game is called “It’s raining words”, and as you may guess, words are falling from the sky like rain. This is a typing game, so the goal is to type the words before they reach the bottom of the screen and disappear. The game is quite minimalist in itself, there is no story or progression, it is really meant to be played casually. This allowed me to keep the scope small enough to make it possible to complete the project in a relatively short time.

It took about a year to make, in-between my “real” job and other life stuff, but I managed to do it. It has been an interesting experience, and quite different from what I had so far with my other incomplete games. The main reason for this is that when you make something just for yourself, without caring about making it a usable product, many things are avoided. Quality of life features and other kinds of polishing may not feel missed when you know exactly how to use that tool that you made, but for anyone else, such incompleteness is not enough.

So in order to make a product that I could show to people, I had to do stuff that I barely did on my previous projects. I needed to test the game more, to make sure that there was as less bugs as possible in the final product, so that people don’t get frustrated by a game that is not able to do what it promises. It is quite an unnatural thing to do, because nobody wants to fail, and making your own program crash, is a fail, so you instinctively avoid doing things that could make the game crash. So it becomes a battle with your own mind in trying to accept your failings in order to make progress.

I also added accessibility features, such as making a clean interface that could be navigated through with both the keyboard and mouse. I also included features to remove superfluous moving objects, to make the text bigger, to slow down the gameplay, to change the color of the text and background, etc. These kind of features are often neglected for such small projects, especially when the developers don’t suffer from disabilities themselves, but I tried to add as much as was reasonably possible. I wasn’t much aware of this subject until 1-2 years ago when I started watching videos about game development and I was quite impressed by how people with various disabilities manage to find ways to play games despite their limitations. And all of this is made much easier when developers take the time to add a few relevant settings in their game. So while I may not need these features myself, I still put some energy into it in hope that it can make a difference for someone.

Even though I consider myself an artist, I don’t have much patience when trying to make things pretty. But to make a product that looked interesting to others, I had to make an effort. Because as a consumer of video games myself, I know that the first impression is very important. Such good impression is obtained by having nice graphics and colors, and also by making the product easy to use. So I made a consistent theme for the whole game with controls of similar sizes and similar colors. I made sure that the text presented was as simple and short as possible to not overwhelm the players. I had to make sure that the game was the easiest possible to get into and to understand. It wasn’t that easy, since I’m the kind of person that often give more details than needed. But I think I managed to do it well, considering the wall of text that initially was the “How to play” menu.

I decided on making the game free, the main reason being that since it is my very first game, and a very small one, I couldn’t justify it to myself to charge money for it. I consider this game as a gateway toward something bigger, a tangible proof that I can progress in this field. Even if only a few people play it, or even if only a few people like it, my goal has been achieved. It is the confirmation that I can do it again, maybe even make something bigger and better.

At the time of writing this, I didn’t receive much feedback about the actual game, and I don’t know if I will get any later either. But I don’t really feel a need for such validation, because I did the best I could with this project. To me, it is like a finished painting, it did for me what it had to, I expressed what I wanted to express, so it doesn’t matter if anyone connects with it, because I did. So, mission accomplished, and now I can start another project (I already did).

You can access the game’s page on itch.io through the link below.

It’s Raining Words by KrocKMakesGames

New page

Just a short message to announce that I added a new page to the website. Which is basically a word play image of how we pronounce “Mario Bros” in Quebec.

I also noticed that it has been more than a whole year since I last posted something here, so I will try to come back more often in the coming weeks and months.

Don’t rely on motivation

Motivation is helpful when it is there, but it is too unpredictable and easily lost. Every night before going to bed, I am motivated about what I will achieve tomorrow, and the next morning, I barely achieve a quarter of what I was excited about the night before. Most of my motivation is there when I have something else to do, but once it is time to actually do it, I don’t care enough anymore.

Motivation is so easy to lose, one thing can go slightly off track and it is done, we won’t be able to rely on it for the next few days. So should we wait until it comes back to continue progressing on our projects? Not at all, we have to do it the hard way, discipline ourselves to do what we have to do, no matter how we feel.

This may be a bit too extreme, because there will be cases where taking a break is the right thing to do, for example if we are sick or if we had a particularly exhausting day at work. But a gloomy day should not be a reason to slack off on our project unless the weather is actually a hindrance to its progression, but there is probably something that we can work on indoors anyway too.

Discipline is necessary to accomplish pretty much anything that is worth it. And the bad news is that it is hard to do, it requires that we kick our own ass to get going. It requires a strong will and self-control.

But even if most of it has to be forced upon ourselves, there are some tricks that I found that could help ease the work.

Planning and organization
Careful planning is a good way to make it easier for us to get going on some work. Defining what has to be done and the steps to do it will make the work a lot more structured and straightforward, which will in return make it less hard to focus and work, because we will clearly know the path to follow. Organizing our work by separating it by type of tasks may also be a good thing to do, I will come back to this later in the article.

Short and productive sessions
We can sometimes get the impression that to progress on something, we have to spend many consecutive hours working on it. But it is not required, unless you are actually able to do so, of course. I found out that for some tasks, mostly those which I am not experienced at, are counter-productive to work on for extended sessions. The reason for this is that at some point I get stuck on a problem and stop progressing. The solution for this is to try completing a single step at a time, and then analyze if we still are progressing, it not, we stop there, and come back later, our rested mind will be better at solving the problem.

The right task for the right moment
Depending on how we feel at a particular moment, we may not be in our best shape to execute certain types of tasks. A way of making sure that we still progress in such times is to work on tasks that fit better with our current mood. This is where the organization that I talked about earlier comes handy, if we organized our work correctly, we can just choose the appropriate task and get to work. For example, on a day where we feel less creative, working on some more “robotic” work (data entry, calculations, measurements, etc) could still have us extract some productivity out of ourselves.

Rewards
Implementing a system of work-reward for ourselves could also facilitate the introduction of work discipline in our life. It consists of setting achievable goals, from which we will get a reward of our choice upon completing. The logic is that instead of working just to “get-things-done”, we also work to get something concrete in return.

Deadlines
Deadlines could also be used, perhaps in combination with a reward, but I personally wouldn’t set deadlines as rigid as the ones we see in an actual work environment, it would be more like a target that we should aim to meet, rather than an additional source of stress.

These few tricks can certainly help, but they will not do the work in our place, we still have to create space in our life for our projects and we have to put in the work. But the hard part is to start and make it a habit, and then it will become easier and maybe fun at some point.

Zim is awesome

Zim is an application that allows us to manage desktop Wikis. What is a desktop Wiki? It is pretty much the same thing as the ones that we can find on the internet, which is a knowledge base about various subjects (think of Wikipedia, but many other exist for various subjects). The main difference between the two, is that the Wiki made with Zim is not necessarily meant to be made publicly available on the internet.

It may not seem obvious at first glance, but it can be adapted to various needs. Zim provides us with a basic text editor, where we can write information and use most text formatting features that would be available in a web page such as headings, links, lists, checkboxes, images, etc. This allows for structuring information effectively in a page, but Zim also includes the concept of “notebook”, which is a collection of pages that are all related to the main subject. So for example, if I were to read a technical book about computer programming, I could create a notebook called “Programming”, and inside it I would create one page for each concept or subject included in the book so that I can write useful information that I may need later.

Naturally, it is possible to create as many notebooks as we want/need, and open the appropriate one when the need comes. We are free to build our notebooks however we want, there is no predefined structure that we need to learn and follow. So if we prefer putting all the information in a single page, we can do so, but if we prefer categorizing everything in its own small page, using section titles, lists and images, it is also possible. This freedom makes Zim a versatile tool that we can adapt to our needs. I personally use it to keep track of the tasks I have to do on some of my projects and also as a notebook for taking notes when I learn new things. The editor also saves automatically every few seconds by default so you won’t lose hours of work when some random power outage happens.

For more information, visit the official website: https://zim-wiki.org/

Achieving things

A feeling that I often get about my projects and ambitions, is that I don’t have what it takes to be able to complete them in a way that would feel satisfying, that would reflect how I see them in my mind. For example, even though I love playing musical instruments, I have a hard time creating new music, because I know that I’m not good at it. Most of my previous attempts at composition have failed at some point, so I have barely completed any song by myself. I used an artistic activity as example, but it can apply to anything that needs skills.

For me, what it does, is that it prevents me from practicing my art, or practicing whatever activity or hobby that I’m interested in. Because I think that I will not be satisfied by the result. The effect of this is that I waste previous time that I could have used to perfect my art, which would slowly but surely make me better at it, making it more and more satisfying.

Normally, I would talk about tricks that I found that can help, but it seems to me that in this case, it is more of a journey in accepting our inability, and the impossibility, of achieving perfection. It doesn’t mean that we have to accept mediocrity either, but rather accept that doing our best on something is better than doing nothing at all. We have to start appreciating the process as much as the result.

Nonetheless, there are still a few things that we can do to smooth out the process. But it will require clear goals, and discipline. Knowing our goals is important, because it is what will guide us toward choosing the appropriate methods to reach them. If we want to get better at something, we have to take it seriously, and this means that we have to discipline ourselves to practice it effectively, because just doodling around will get us nowhere (or get us there really slowly). We have to define the methods that will make us improve. Again, this depends on what goals we have set, becoming a professional musician would require a wider array of skills than playing in an 80’s rock music cover band.

Setting a structure is important to create an environment where measurable progress will happen. We still have to keep the fun in though, so practicing scales for 3 hours each days may be good for memorization, but it will throw the fun out of the window quite quickly. So while defining a clear structure is important, it must be done in a way that will make it realistically feasible, or else we won’t last long enough to see positive results.

And it doesn’t take long to see improvements, especially if we are beginners, and seeing improvement will give us some motivation to go further. We just have to make sure that we don’t only rely on motivation to achieve stuff because it doesn’t last, discipline is the key to progress.

Half chores half creation

I came to a sad realization the other day, that my bad time management was in part caused by bad chore management. What I mean by that is that I always felt like I had too many responsibilities to take care of, like cleaning, working, fixing stuff and learning before having fun creating.

Even though I have tons of project ideas, I also have tons of chore ideas. There is always something to clean, to fix or to set up, there is no end to it. And as a “responsible” human, I want to take care of those chores, but the problem is that I’m never finished with them, because it never ends.

It doesn’t matter whether I make the dishes everyday or once a week, I will have dirty dishes to clean sooner or later anyway. I’m not the best at cleaning, and I probably don’t do it as much as I should either, but there is always something to clean in some way, dishes, clothes, sink, toilet, bath, desk, etc. The trash, recycling and compost bins are always full, there is always expired food lying in the fridge, etc.

Also, as someone who loves to learn new things, I always have something new to read about and as soon as I finish learning on a new subject, there’s already another one that I want to learn about. So much that I don’t even put what I learn into practice but mostly learn just for the sake of it.

And when I’m tired of doing chores and reading/learning, I’m also too tired to start creating so I play video games or watch anime instead. So in the end, I’m just cleaning, reading and learning stuff but rarely doing any creative work.

Most of the time, even if I know that I won’t be doing any chores for the rest of the day, I still can’t allow myself to create much, because in my head, I still know that I have some “work” left to do… and just end up wasting my time watching Youtube videos instead… trying to push away the moment when I need to do chores again.

So, just like I have to limit how much videos games I play and how much anime I watch, I decided to limit how much, or for how long, that I will work on chores and other similar tasks, and do creative stuff with the remaining time.

For example, on a weekend day (or any day that I’m off from the job), I split the day in three parts, the morning, the afternoon, and the evening. I decided to do “productive work” in the morning, so that I can get it out of the way in first. During that time I try to complete most of the tasks and chores like cleaning, reading, shopping, coding, etc. The other reason for doing it in the morning is that I can then have the satisfaction of being productive so the switch to the fun stuff is easier.

Then, in the afternoon, I start doing creative work, playing music, drawing, writing, etc. Those who have read my past articles will probably know about my attention deficit and the fact that I generally alternate between two or three tasks at one. But in this particular case, I decided to try doing a single creative activity for at least one or two hours straight, and up to now, it has been working well for me. The reason why I decided to not apply my own multi-task principle is to allow myself to really dig deeper in my creativity without interruption. And I must say that it really helped me focusing and forgetting about everything else, which I didn’t even believe that it was possible for me anymore.

The evening is left opened for random activities, so it really ends up being a mix of reading stuff, playing games and watching videos. I think that if I managed to do what I had to do in the two previous parts, then I can take it easy in the evening and just be unstructured, because my day has not been wasted.

So if you struggle with allowing yourself to create over doing chores and other tasks, try this and see if it works for you.

Solve simple problems

Here is a simple trick to get things done: Solve simple problems.

What does it mean concretely?

It means that it is easier to complete 100 small tasks rather than a single big task. If we were to build a house, a single big task would be to “build the house”. It can seem pretty daunting, but if we divide the task into many smaller tasks: Build the foundation, build the walls, build the roof, install windows and doors, do the plumbing, do the electricity, etc. It already feels more manageable. In some cases, some tasks can also be made simpler, installing the electric wiring is still a big task in itself, so it could be divided in smaller tasks, like linking the control panel to the actual power source, then wiring each individual room.

The problem with “building a house” as a task, is that it is a big black box, it doesn’t tell us what we need to achieve in order to build a house, it only tells us the end result. How can I start working on a project, if I don’t know where to start, and what to do? This is precisely what this decomposition is about, it forces us to think about the project, and define what it entails to. Having a task such as “install a window” already seems like something more manageable and easier to get into than “building a whole house”. It is easier to conceive, to plan and to execute, while also making possible the estimation of costs and time required.

So, the first thing to do once we are ready to start a new project, is to decompose it into smaller projects/tasks that are manageable individually. It forces us to get more intimate with the project by defining the actions that are to be taken in order to advance. This is also a way to trick our brain into getting a clearer vision of the amount of work and thus making the project seem less like a mountain. It will also help being more productive, because we will have a clear path to follow.

Finding our passion

For many years now, it has been my belief that creative people that found their craft, would not need discipline to practice it, that motivation would come easily. This belief forced me into thinking that if I am not having fun practicing a creative activity, it must not be something that I was meant to do.

This was until recently when I starting working on a personal programming project, that I felt that I was having fun doing it, and that it was easy to find motivation to get started, a feeling that I rarely have normally. So I understood that it may actually be my passion, or one of them at least. But the most important realization came just after, when I remembered how it started.

Many years ago, I went to college to learn computer programming, without much more thought other than knowing that I liked computers in general. I had no prior programming experience before entering the computer science program. And I wasn’t that good at it, thanks to a good friend I managed to get through some difficult courses but it was hard and painful, I did not understand what I was doing and I wasn’t having much fun either. But I persevered through it and managed to get my degree. I worked full-time in the field for a few years. I stopped working in that field after that for many reasons, although none of them are related to my love for computer programming, so I will not elaborate on it here.

So the point of this is that I found a discipline that I love doing (computer programming), but to my surprise, it didn’t happen like in a fairy tail, where I would have known right from the beginning that it was something that I would love doing for many years to come. Learning it didn’t feel natural and it wasn’t easy at all. Many times I wondered if I made the right choice or if I should quit and try something else.

But I’m glad that I stuck with it until the end, because now that it has become a part of me, it is as easy as riding a bike (not that programming is always easy though). We could say that it was a happy coincidence that I found something that I loved even if it took years to develop, or we could say that I already knew it subconsciously. Even though I knew nothing about programming, I had interest in computers long before studying about them. So it wasn’t a random choice, it was based on the things that I already liked. But something that I realized many years later is that I had indeed done some programming before going to college. I learned some HTML and Visual Basic in high school, and I even made a few modifications to a Nintendo 64 game with a GameShark (a device that allows to hack into a game’s code). Although I didn’t link all those experiences together when I chose to study computer science, it surely influenced my choice in some way or another.

What it means for you, the reader (and me for my other interests), is that we already know what we like and what catches our attention/interest. So we know where to look to find the activities that we care about, but we may be fooled by the idea that our passion(s) will flow naturally and easily even at the beginner stage, which is unlikely. The learning process takes time and will probably not be as fun as we want it to be, but surely somewhere down the line, we will come to a point where it will actually flow relatively easily and finally be fun.

Reward-based efficiency

As the title implies, expecting a reward can be a good incentive to increase efficiency, some companies do it to get better productivity from their employees in exchange of some advantages. But I’m not here to talk about getting employees more productive, I’m here to make ourselves more efficient in general. Because we have projects, tasks, and many things that we need and want done, but can’t seem to actually complete.

So why not use that trick on ourselves? Because just the fact of having some side projects that we care deeply about may not be enough to squeeze some work out of ourselves after a long day/week at our “real” job. We have to find ways to motivate ourselves to put that effort. This is especially true if the outcome is vague. I may want to create a specific piece of art, but what will be the outcome? It will most likely not make me rich and famous just by itself, it won’t make me that much of a better or happier person either (maybe a little more I hope). So I can’t rely on the possible outcome to get motivation.

Which is why I could treat myself to a reward for progressing and completing the project, by getting myself a tangible result. The reward itself can be anything, as long as we want it enough to try to get it. It could be a dinner in a fancy restaurant, some product that we want to buy or even something like getting a massage session or whatever, as long as we consider it valuable enough compared to the effort that we have to provide.

My treat for doing my day to day tasks is to allow myself to play video games. For example, during the weekend, I will define a set of things that I want to achieve on each day, then if I manage to complete them, I will then have the rest of the day to play some games (or do some more tasks if I feel like it). So during the day, my eagerness to play games will fuel my motivation to do my not-so-fun tasks.

It can be done at different levels too, I gave a daily example, but it could very well be applied on a weekly or monthly basis, or some other time interval that may fit better with a particular project. We should just make sure to have a reward of comparable value to the amount of work that is to be invested. Taking my previous example, if I only treat myself to a gaming evening for a whole month of work, the reward will not feel as much of a reward compared to the amount of work required to get there. A camping weekend or a visit to the spa may be more enticing.

One thing that is important to do though, is to clearly define what has to be accomplished in order for the task(s)/project(s) to be considered completed. Because in many cases, especially for bigger projects, the end may not be a fixed state. In such cases, it would be a good strategy to combine small periodic goals and rewards with a bigger one at the end of the whole project, so that we get small victories along the way to keep our motivation.

Progressing in our projects

Progressing on our projects can sometimes be hard, especially on bigger ones. Here are a few tricks I found to help me move forward.

The first thing to do, is to define the general idea of what we want as a final result. Depending on the size of the project, it can be as simple as a few sentences, to many pages for bigger projects. As example, we will take this very article, so my general idea would be that I want to tell readers about tricks to help them progress in their personal projects.

Once we have defined what we want to do, we need to define the tasks that need to be done. For example, if we take this actual article, the tasks would be something like:

  • Define the general idea
  • Write paragraphs
    • Introduction
    • Define the general idea
    • Divide the work into small tasks
    • Estimate the duration of tasks
    • Do the work
    • Conclusion
  • Translate to french
  • Reread and correction
  • Upload to website
  • Reread and correction

Again, depending on the size of the project, there can be very few or a lot of tasks. As a general rule though, each task should represent a single concept that can be accomplished fairly easily (even a complex task can be divided into multiple simple tasks). In some cases, a task could also be redivided into many other sub-tasks.

Now that we have a set of small tasks, it is quite easy to estimate how much time each task will require. Assigning a duration to each task facilitates the actual scheduling of the work in our already busy schedule. For example, if I take the task of translating my article in french, I would say that it would take about 30 minutes. This is an estimation, it just needs to be precise enough so that it can be realistic, I personally round by quarter hours, so a 5 minutes task is rounded to 15 minutes. It is preferable to over-estimate, so that most of the time, the tasks will take less time, which is a lot more motivating than exceeding.

At this point, we know exactly what we have to do, and how much time it takes to do it each parts. All that is left is to actually do the work, there is no magic trick here, we have to kick our butts. But if we have correctly done the previous steps, working is now a lot easier, because our planning gives us a clear path to follow. Continuing with my example, this is the part where I would be writing the article, obviously.

An important thing to note is that our project is very likely to change in some ways along its implementation. So the ideas, tasks and durations that we have defined will inevitably be affected. We have to keep in mind that everything we defined by following the previous steps is not a contract that we have to follow perfectly. If something changes, whatever it is, all we have to do is to adjust our plan, and we are good to go. Again with my article example, while writing it, I could feel that I would be more at ease expressing myself about the subject in french first, and then to translate it to english. All I have to do is to modify my planning to replace “Translate to french” by “Translate to english” and maybe adjust the duration to one hour instead of 30 minutes if I feel like I will need to do more research for appropriate translations. And then I’ll continue writing, but in french.

Progressing in our projects is all about laying a solid foundation, by defining what the project is actually about, to ease its execution, instead of just stumbling at each step trying to make unstructured progress.