Eclipsed
Eclipsed
3-D Real-time strategy set on the surface of a few moons in the Solar System.
Requires pygame, pyOpenGL, and numpy. Yeah it's a pain, but I really needed the 3D for this one.
Awards
Scores
Ratings (show detail)
Overall: 4.3
Fun: 4
Production: 4.6
Innovation: 4.2
Files
File | Uploader | Date |
---|---|---|
eclipsed-v3.tgz
Post-PyWeek version |
Cosmologicon | 2013/10/11 20:41 |
eclipsed-v2.tgz
— final
minor lose condition bugfix + readme update |
Cosmologicon | 2013/09/08 21:18 |
screenshot-20130907125533.png
screenshot |
Cosmologicon | 2013/09/08 00:26 |
eclipsed-v1.tgz
— final
First final version |
Cosmologicon | 2013/09/08 00:01 |
Diary Entries
Moons Galore!
Unfortunately, the greatest Moon-based game possible has already been created. I only hope that the perfection that is Moons Galore! can give us all some inspiration:
http://www.youtube.com/watch?v=ZkpqqPR83Ts
http://www.youtube.com/watch?v=ZkpqqPR83Ts
Eclipsed - entry submitted
My game is submitted!
It requires pygame, pyopengl, and numpy. (If you're on Ubuntu check out this post I made for installing tons of dependencies at once - some good info in the responses too.) I haven't used pyopengl since PyWeek 10, but the gameplay this time really called for 3D so I went for it.
Other than that, I don't have much to say. Just making this post so that people with bug reports have a place for them. Enjoy!
It requires pygame, pyopengl, and numpy. (If you're on Ubuntu check out this post I made for installing tons of dependencies at once - some good info in the responses too.) I haven't used pyopengl since PyWeek 10, but the gameplay this time really called for 3D so I went for it.
Other than that, I don't have much to say. Just making this post so that people with bug reports have a place for them. Enjoy!
Eclipsed - gameplay footage
I managed to make a gameplay video by modifying an old script of mine. Check it out on YouTube, if you want to see what the game looks like:
http://www.youtube.com/watch?v=TLvELC7wXGo
http://www.youtube.com/watch?v=TLvELC7wXGo
Eclipsed - postmortem and response to comments
I uploaded a few pages from my notebook here, if you want to see what it's like.
Feeling
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.
Gameplay
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
intuitive interface
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.
Balancing
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.
Other stuff
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.
The Future
I'll probably upload a version with the graphical bug fixed, and I may try to make a Windows port. I think the game has potential for further development, but I'm not going to work on it right now. I'm in the middle of learning webGL so there's a possibility of a JavaScript port in the future. If anyone else wants to take a crack at it, go ahead. :)
Thanks richard for another great PyWeek, and congratulations to everyone who submitted a game. See you next time!
Feeling
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.
Gameplay
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
intuitive interface
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.
Balancing
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.
Other stuff
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.
The Future
I'll probably upload a version with the graphical bug fixed, and I may try to make a Windows port. I think the game has potential for further development, but I'm not going to work on it right now. I'm in the middle of learning webGL so there's a possibility of a JavaScript port in the future. If anyone else wants to take a crack at it, go ahead. :)
Thanks richard for another great PyWeek, and congratulations to everyone who submitted a game. See you next time!
Eclipsed - post-PyWeek version uploaded
I uploaded version 3 of Eclipsed, which you can download here. The only changes from the PyWeek version are:
- graphical depth clipping bug fixed
- final cutscene added
- ability to set window resolution added to in-game options
- for Linux users, a process for recording gameplay videos