Eclipsed - postmortem and response to commentsI uploaded a few pages from my notebook here, if you want to see what it's like.
Unsurprisingly, with this game, the "feeling" came first and the gameplay followed. I started with a specific experience in my mind: the surface of a small world covered with activity, with machines bustling and whizzing about. I thought, "how can I make this experience happen?"
The most obvious example is the satellites. There's no benefit to the gameplay for the satellites to be visible. You can more easily keep track of how many you have by reading the HUD. During the game you pretty much ignore them. But it was important to show them, because it created the feeling I wanted to evoke. The idea of connections between structures also came about this way, because building a web encasing the surface helped achieve the feeling I wanted.
I got really lucky with one simple trick: the building animation. I originally had structures appear by growing up out of the surface and twisting, but so many of them are radially symmetric that the twisting didn't add anything and it didn't look as good as I'd hoped. Instead, they now appear piece by piece. This is achieved when I call glDrawArrays. When I pass the number of polys to draw, I simply multiply it by a number that increases from 0 to 1 during the first second. It wound up taking about two minutes to implement.
This feeling is close to an idea I had a couple of years ago. For a short time in 2011 I tried to learn Flash. I eventually decided to go with HTML5 instead, but the Flash game I started on was an RTS where you covered the surface of a small world. Basically the same feeling, just 2D and a bit more cartoonish. Here's a concept sketch, and apparently the early prototype I made is still online. If you play that for a minute you'll see a couple ideas that made it into this game.
I feel like I did a good job capturing the feeling I had in mind. The only minor things is I would have liked a couple more structures to have moving parts.
So that worked. What about the gameplay? Was it fun? Was the strategy interesting? Was the challenge level right? This is where feedback is going to be the most helpful. Let's see....
Short and not much of a challenge to finish
I wasn't really able to work out how to progress through the game
the ramp up in difficulty to the last level is a bit steep
The game is relatively easy to get into.
It's complex and hard to master
The levels introduce the concepts effectively
marred only by how confusing it can initially be to play
the first levels were not challenging because there was no threat
I couldn't really get very far
I just couldn't quite get to it because it wasn't very clear what to do
Huh. That's.... inconsistent. Ha, just kidding, at first I didn't understand how there was such mixed feedback, but actually it makes sense in context. First, a lot of people who had trouble figuring things out were dealing with a pretty severe graphical glitch, which cyhawk brought to my attention and jerith provided a one-line fix for. I should be able to provide a fix version shortly, so these people can check it out if they want to. For others, I think I see what they're saying. The game probably is too challenging in some ways and not challenging enough in others.
I decided not to spend time on an interactive tutorial, instead just adding information to the Help menu. If I'd had more time, a tutorial would have addressed some of these concerns. Also I didn't decide on the number of levels until very late. I think 6-8 shorter levels would have been better than the 4 that are there. That would have allowed for a little more gradual difficulty curve, but of course would have required more playtesting.
Going into the last day, I had most structures implemented but I didn't have level objectives or any balancing done. I had two problems. First, there were too many things to introduce to the player all at once. That's easily solved, I'll unlock new structures each level. I just need to choose the objectives so that they can be completed without some of the structures. Second, I worried that it would be boring if the first 5-10 minutes of every level were the same. This was solved by increasing the resource availability with each level, so that earlier structures became less important or obsolete.
Early on, I planned to use a balancing cheat that I learned from recent resource-gathering games like Candy Box, A Dark Room, and Cookie Clicker. This is to make the amount of resources increase exponentially as you progress through the game. I call this a cheat because it masks mistakes in balancing. If your resources increase linearly and you accidentally double the price of an item, you double how long it takes to achieve it. If your resources increase exponentially, however, you only add a constant amount of time that's relatively small. This works best if you have several resource types; you can trade many of one resource for a few of another, keeping numbers from growing astronomically.
Anyway, I wound up not using this cheat, at least not to the extent that I planned. The fact that I had so many resources probably did hide some mistakes, though. I didn't see anyone complain that the game dragged on or got monotonous, so while I definitely could have spent more time testing strategies, I think this was good enough for PyWeek.
For this game, the music, sound, and story were "other stuff".
I usually use Kevin MacLeod for music. I still highly recommend him, but his music has appeared in so many PyWeek games I was hoping for something new. I happened across a website by some German musicians this time and their music fit my needs really well. They seem really prolific, so I hope to use their stuff in the future. The only things are, I think their early stuff is not as good of quality as their recent stuff, and they don't have downloads available so I had to rip the oggs from their YouTube videos.
I like writing engaging stories for games, but it didn't happen this time. The story was more or less thrown together during the last day. My original idea was activating ancient alien artifacts, but that's the same story as my last PyWeek entry so I wanted something different. The story I used was fine, but I didn't really have a chance to edit it or tie it into the gameplay. Like I never renamed "artifact" to something more appropriate. At least I got a game title with a double meaning out of it: the game was nameless until about an hour before the deadline.
Thanks richard for another great PyWeek, and congratulations to everyone who submitted a game. See you next time!