So I read (the past tense version) this book some half a decade ago. It’s called Seven Habits of Highly Effective People and I’ve been practicing the wisdom contained in those pages ever since. It came at the right time for me, enabling me to focus and develop my mental fortitude when my mind was lost, drifting in the open seas. The first ( of seven ) habit can be summarised as ‘Be proactive’ and that alone set me on a very different path. Being proactive of mind coupled with the third habit of ‘Putting first things first’ has made me distinctively different to my former self. It also opened my eyes to the chronic, mass illusion of the phrase ‘sorry, but I don’t have time for …’. It is because of these habits that I’ve been able to get as far as I have doing a full-time job, being a busy father of two and putting hours after hours every day into Castle of the Winds for the last two years.

However.

The second habit, Begin with the end in mind is about clearly defining your scope and knowing why you are doing something. Scope is one of those things that can easily make or break a project. In this case, it is one of those things that I should have defined more clearly at the outset. Or perhaps in the time it’s taken to get to this point, my goals have changed.

  • When I started cotwelm ( 2017 ), it was because I was using a language/framework that had it’s flaws ( React/Javascript ) and I wanted to try something which I thought would fix those flaws.
  • When I started cotwmtor ( 2016 ), it was because I wanted to learn MeteorJS and make a game. MeteorJS would allow both backend and frontend to be done in js and it was a framework that came with many standard libraries making the whole setup very easy.
  • When I started cotwjs ( 2014 ), it was because I wanted to learn typescript/javascript and what fun way to learn a language than to make a game in it. I picked cotw because it inspired me to get into computers in the 90s.

My primary goals had actually been achieved. It’s just that remaking the game wasn’t one of them.

Sorry…

I had learned so much about building games ( ai, pathfinding, dungeon generation, inventory management, viewports, maps, game loop, fov ), about javascript (es5/6, closure, callbacks, promises) and now about functional programming (ADTs, purity, maps, pipes, Maybe, generators). What I realised is that my childhood fascination with RPGs do not extend to creating intricate storylines and fiddling with monster stats.

  • The Pit where monsters are ranked by auto-combat in a round robin style was because I didn’t want to make arbitrary stats and experience levels.
  • I wasn’t interested in making up item stats or storyline. But spent a disproportionate amount of time rewriting the inventory system and dungeon generator over and over again.
  • Learning about A* pathfinding and adapting it to a particular style of dungeons was really exciting but when it came to ‘remaking’ various details of the game content, it got repetitive and boring.

The crux of it is that I had fulfilled my primary goal of learning before I had fulfilled my secondary goal of remaking the game and setting an arbitrary deadline of getting it finished in 2017 made it more stressful. Working on the game without conviction was hard, but maintaining that level of effort meant it used up all the time when I wasn’t sleeping, working or babysitting ( the wife would disagree with the terminology used here ). That was much harder when all I had at the end of the effort was a imperfect recreation of a great game. By now, the learning curve was plateauing and one really needs strong reasons to keep going to achieve the final bit. This is why it is so crucial to begin with the end in mind. Understand why you do what you do will give you a much better chance of getting it done and done well.

Now, I play a bit of games, watch movies occasionally, read a book at times and have started playing the piano. I’m not sure what I want to do next but I don’t think I’ll revisit this particular remake in the near future…

For my next project, I think I need to seriously look at the scope of work before starting on it.