After working on this game this Summer, I can finally release the early version of my game. There isn’t much meat to the game yet, and there are still pesky bugs to sort out, but I am largely finished with the foundation of the game from which to build upon and I hope to update the game in the future. In the meantime, the beta version shows what the general gameplay looks like: how you can talk to the other characters and how you can have random encounters with enemies. Like Reid Hoffman says, “If you’re not embarrassed by the first version of your product, you’ve launched too late.”
During the time spent making this game, I learned many things about what it means to “build a game from zero.”
Although I did use a multimedia library, I didn’t use a game engine to create my game, like most game developers would (hence the title of my column). This was a conscious decision that I made when I was deciding how to create my game, though I’ve dabbled with different game engines in the past such as Unity, Ren’py, RPG Maker, and so on. However, when working with some of these engines (most notably the latter two), a lot of the game was hidden from me. I didn’t actually know what was going on in the game because the game engine did everything for me.
This was why I decided that I would try to create a game from scratch, and see how each and every little thing is done. I still remember when I first started creating this game, staying up for at least three to four hours at night just trying to get my text box to work correctly. You might wonder what takes so long to make a simple box with text inside of it? It was much more complex than I had imagined. How do I want to trigger the text box? How do I transfer text into the text box? How do I make the text pop up letter by letter instead of just appearing at once? How do I ensure that the text doesn’t go off the screen? There were many problems I ran into JUST by making some text show up. But once I was able to make it work, I understood how it worked inside and out. You could point to any feature of the text box and I would be able to answer where in the code I put that in.
Starting from “zero” gave me granular control of everything in my game. Everything from damage calculation to the user interface to moving an image had to be explicitly programmed. I know exactly what is going on in the game because I have to. I inevitably ran into many problems, but it felt much more rewarding when something finally worked. However, it is obviously a lot more work, and as a novice, it sometimes took me too long to fix obvious problems. But as a result, I learned a lot from this project. Maybe reinventing the wheel isn’t so bad after all.
Another big lesson that was reinforced in me by making this game was the idea that I had to focus on the essentials. There’s a saying that “perfect is the enemy of good.” If one spends too much time perfecting some part of a project, they’ll never get anything done. Sometimes, you have to put your foot down and say, “That’s good enough for now, I’ll work on something else.” That’s something I really struggled with when I was making this game. I sometimes spent too much time on minor details or refactored code (restructured code) when it wasn’t necessary.
After this project, I have much more respect for game developers. I feel like I definitely didn’t anticipate the amount of work that goes into creating a full game. Trying to create a RPG didn’t help in that aspect either, but I love RPGs and I don’t regret it at all. Below is the link to the first release of my game. Future releases will be uploaded to the same link so come back to check in once in awhile!
(Note: The release is only available for Mac. The Windows version will be added later.)
Thank you to Sunset Media Wave and everybody reading this!