The bug I encountered last week was a deep one. Somehow, the game would move the player and AI objects when they are supposed to be stationary, and it appeared to be associated with the UI’s button objects I was using. I say “appeared” because I really don’t know what the source of the problem is. I spent a whole work night trying various ideas to figure out what was wrong, where the problem lay, or whether I could somehow ignore it. Sadly, every effort to try to thwart the bug, or even just figure out what was causing it, failed. To this day, I still don’t know why my game was behaving the way it was.
So what do you do when you encounter a nasty superbug like that? The only solution I found, the one that worked, was to try to work around it.
Since I knew that, whatever the source of the bug was, it was affecting the controller objects, I created separate objects representing the borders of the player and the AI. These would be the objects the silos interacted with. It was a small additional complication, but well worth it. Chances are that bug is still moving the player and AI controllers around on the screen, but those objects are invisible and their coordinates have no effect on gameplay, so the player will never notice. In truth, this was not the solution I wanted. I wanted to identify and kill the bug and learn from it. I can’t always have things go the way I want them to, though, so I guess I learned a different lesson: how to avoid a problem you can’t fix.
With that nasty bug out of the way, I could move on in my development. Up until this point, buttons behaved in a very basic way: you click on them and they do stuff. They didn’t really feel like buttons, though; they were just areas on the screen that did stuff when clicked. Real buttons have a certain feel to them that, when added, a player will immediately recognize as an improvement. When your mouse hovers over them, they change color. When you click them, they either do what you want immediately or they stay highlighted when there is more that needs to be done, such as more input needed. Buttons will often darken when they are not supposed to be clicked. A button can function without these features, but you would never want to leave them out. These visual cues help the player interact with the game. They tell the player what he can or can’t do, or what more needs to be done. In fact, they invite the player to use the button.
This functionality was easy to add, and I can’t understate the difference it made. The spy buttons saw the biggest improvement. A spy witha mission assigned to it will go grey, but will still highlight when the mouse passes over it; after all, a mission can be changed. A spy, when clicked, will stay highlighted until a mission is selected, and if the mission selected is the “investigate” mission, even that button will remain highlighted until an area of belief is chosen. These little visual cues help guide the player and tell him what needs to be done. And there is a satisfying feeling when all the spies are grey: the player then knows he can proceed to the next turn, whereas otherwise he might wonder if he missed a spy.
When that was completed, I felt like I had the game in a state where others could play it and give feedback. Up until this point I have been working in isolation, which may be necessary in the beginning but must not persist. One thing big game companies have working in their favor is lots of minds to offer different ideas and input on a game. Without that feedback, there will be things that a developer will miss in his design or bugs. He may also get too close to his game, and like a mother with her child, will refuse to see its flaws. Outside input is the only way to get feedback from different perspectives that might catch something I missed. Remember, good art is rarely made in isolation.
Before I released my game, I added an extremely basic menu system that allowed the player to choose which country to play, and added functionality to the menu button that would basically give the player the ability to start over without restarting the game. This is not the end of the menu system, but at this point in time it is good enough. Then I compiled my game and released it on the GameMaker Community (GMC) forums (you can play it here). I compiled the game to the Windows format, even though I want the game to be an HTML5 game in the end; my thinking is that I want to work out HTML5 issues later, and for now worry about getting the elements I want in the game added. Furthermore, I don’t know how I could let people test the game in HTML5 without actually publishing it on Game Jolt or itch.io or somewhere else. Those issues can wait.
In order to release the game (in alpha), I had to give people some instructions on how to play. After all, there is no in-game tutorial (yet), and since the game has been designed from the ground up, there’s no basic intuition on where to start since there is no other game like it. I wrote a whole tutorial section complete with pictures and gifs to try to give people an understanding on how to play the game. When the game is complete, the in-game tutorial will basically be a slideshow with images or animations combined with text. This may not be the best way to teach people how to play: for example, an interactive tutorial may be better, but that may be beyond my present abilities (or desire, since I’m starting to tire of this project and want to move on to something else, like perhaps actually playing games for a while rather than making them).
So far, only one person has played my game and given feedback (he felt that the report text is too small and that the probability of success for “investigate” missions should be increased; both of these suggestions I will likely implement). Admittedly, I’m reluctant to start promoting my game to that big wide world out there before it’s complete, one reason being that actual development is three weeks ahead of these blog posts (although I think only a couple people ever read these). With that said, I want feedback from more than one person! Hopefully that will change, though, and I will get feedback from a couple more.
I can begin to see the end in sight. The troubling thing is I’m nearing the point where I may be stretching my abilities to the breaking point, namely when working with shaders and surfaces, which are presently an enigma to me. But I am thinking that my game will be completed and released in July, which is an exciting prospect. Let’s see where this adventure goes!