Building an Adventure Game engine
When I was a child, most of the time I spent on the computer was for playing games. I can't remember how many DOS games I played but my favourite ones were those you had to point and click, talk to other characters, save as many items as you can and resolve puzzles to progress in the story. Later I learned this kind of games were called adventure games.
My top five is easy to list: Monkey Island, Monkey Island 2, Loom, Day of the Tentacle and Sam & Max Hit the Road. I used to complete them multiple times.
Sierra games were a little bit difficult for me at the time due to dead ends, deaths and text parsers. These were the perfect ingredients to a really frustrating experience. Those games had to wait until I got older and was able to complete the whole Larry saga and felt in love with Gabriel Knight. That was also the time I played other LucasArts games like The Dig, Indiana Jones and the Fate of Atlantis, Full Throttle or Grim Fandango, which looked too challenging when I was just a kid.
Of course, there's life beyond LucasArts and Sierra: Simon the Sorcerer, Broken Sword, Hollywood Monsters, The Lost Files of Sherlock Holmes...
I still have plenty of adventure games pending to be either played for the first time or completed: Sierra's Quest games, Toonstruck, The Last Express, Discworld...
The thing is: since I was a child and played LucasArts games I always wished to make an adventure game myself. Unfortunately, I had no clue about how to do it.
Time has passed and, against any odds, I still have the same feeling: I wish to make an adventure game. I still think I can do it. I've (officialy) been a software developer for 10 years now and I'm convinced that, even though a lot of things will be new for me, I will be able to read, test and figure out any solution to continue. Right...?
However, there's a different concern now: how much time will I spend on this project?
When you're kid, it looks like you have all the time in the world. Once you're an adult, it's like your perception of time changes, in addition to a whole pile of new responsibilities. Everybody's running and there's no time enough for doing everything you want or need to do.
It wasn't until recently, when I read a blog entry from Ron Gilbert: Death by Scrolling, where he talks about the process of developing and releasing his next game. I also remember his toots about RPGTBD, where he showed the progress of the game as it was being developed. Knowing about the process behind Death by Scrolling made me wonder: could I just try to make an adventure game just for the fun of it? Maybe I can start prototyping and see what happens? I keep telling to myself: Don't pay attention to the time it will take but enjoy the process of learning and advancing step by step.
Creating a game from scratch, or even worse, a game from scratch AND a game engine, is not a walk in the park. I know. I'm aware of it. But I feel like I want to try. To be honest, it's not the first time I want to try. 10 years ago I created a project in GitHub called diogenes. It was supposed to be my adventure game engine. I say "supposed" because I was not able to do much. My little experience as a software developer got me cold feet as soon as I had to face some decissions that looked so important at the moment: Should I use factory functions or classes? Should I use JavaScript prototypes to save memory when creating component instances? Should I maintain a master and develop branch? How will I manage the semantic versioning? Should I include the build in the Git project?
I felt stuck. It looked like any decission I'd take would be bad and would explode in my face during the following months. And the project looked so big that I couldn't anticipate all the possible bad scenarios. So I abandoned the project.
10 years later, with some perspective, I understand why I felt so overwhelmed. I focused on some subjects that I wouldn't pay so much attention to nowadays.
I still think it would be so cool to start by a game engine and I would feel really satisfied if I'm able to create a really short game with it eventually.
I might be wrong but, for this new attempt, these are the things I plan to do different:
- There's no deadline
- A lot of prototyping
- Go at my own pace
- Document advances in this blog from time to time
- Enjoy the ride
JavaScript is still the way to go. I restored the old GitHub project instead of creating a new one, as an homage to my 10 years ago self. Let's hope myself from 10 years in the future doesn't have to do this again.