Postmortem: The Strange Sine Orbs

Another Pyweek over and plenty of games to play. Congratulations to everyone who finished. :)

Time for my usual postmortem. Beware, this is a huge post - this is basically all the diary entries I was supposed to write combined. It's probably a good idea to play The Strange Sine Orbs before you read this so you get the context, too, but it's not necessary.

Like I wrote in my previous post, I was away until Tuesday morning and that was when I got to know the theme. I usually end up spending too much time trying to find a good idea seed, and this Pyweek was no exception. In fact, it was probably the Pyweek in which I felt the worst creative block (possibly due to the theme). I only settled on something on Wednesday evening, but, actually, I didn't like the idea much.

My original idea was to make a game where a character is controlled by the mouse and another character is elastically attached to the first one, and the player would have to navigate some skill/puzzle levels. I had a few puzzles in mind using this simple mechanic - I think you can work out some nice levels if you add bouncing walls and such. 

But I didn't really like this idea. The core of the idea was a bit too "boring" (in the sense that, not that it wouldn't be fun, but I like to experiment with different things). The elasticity was the only part related to the theme, which I thought was a bit vague. I was relying too much on the level design, but there was still a lot of work to do on levels and I would only be able to implement core stuff and a few sloppy levels at most. So, Friday night, I decided to stop implementing it, go to sleep, and wake up very early in the next morning with a fresh mind to see if I could come up with something else easy to implement, even if it's just a bad game to submit. I had the whole Saturday free for Pyweek, so I figured I could work something out. I had my hopes down to the point of thinking I would have nothing to submit, but I've been frustrated more than a few times before in Pyweek and I knew I just had to keep trying, even if just for the sake of trying.

Saturday morning, woke up very early, had breakfast and started thinking of ideas. I spent around one hour and a half trying to come up with "one day" ideas until I had a seed of the idea for The Strange Sine Orbs. At first, it was just the following mechanic concept: "objects that either go straight or in a sine wave, and that's the only control the player has". (Actually, that mechanic came from the idea of forcing cars to wobble and causing them to crash in Burnout style, but I decided that would be way too complicated, especially for a one day game.) That mechanic is pretty easy to implement, so, since by then I was very tired of thinking, I decided to go with it and see what happens. This was something that pleased me much more than the previous idea, because it's something more unusual that I could experiment with and toy around with.

At first, I didn't have much faith in this idea. I had it implemented and had some (white rectangle) baddies moving in the opposite direction and tried to make my bullets hit them. It was awful. There was absolutely no control. I couldn't hit the baddies because it was hard to know where the bullet would go. I was already invested in the idea even though I was almost sure it wouldn't come out good, so I decided to figure out a way to give control to the player. Given some time to think, I went with the three following ideas:
  • Path prediction. At first I felt this would take away the challenge of the player trying to predict his movement, but this turned out to be good, since the sine wave with accelerating amplitude was too hard to predict anyway, and the game is still quite challenging with the prediction.  
  • Stationary objects. With the path prediction, you know for sure you're hitting that object.
  • Quick decceleration, so you can "aim" easier from the wobble mode to the straight mode. 
These three things worked out surprisingly well (it actually took quite some time to tweak everything well enough to make them click - for quite a while I thought I was being crazy trying to put in things that didn't fit well). With stationary objects came the idea that the orb had to grab some "charges" before it reached to right side of the screen, and you had to destroy the baddies that moved to the left. Sort of like a battle between two unseen opponents. (I'd write a bit more about the design, but this post is already too long.)

One of the hardest parts was to figure out some "theme" to go on top of the mechanic. I had the mechanic, but finding an excuse for it was hard. I ended up not having much of a "theme"; I decided to just draw whatever popped in my mind and go with it. I think it turned out ok, though I know I will get a low Production score because of it. That's ok, given the time I had for it.

I'm not sure about the balancing, though. I didn't have much time to get someone else to playtest it, so I decided to submit it the way it was (playtested only by me). It might be a bit harder than I think because I was already used to the controls when I tested it, but I hope not. But I felt it wasn't hard to win, so that should balance it out.

I like the fact that some interesting strategies emerged. For example, if you let the enemy pass, you can have it wobble to the end so you can get it back at the beginning and try to block it again. Aiming at the enemy from wobble mode to straight mode is also a neat strategy. I also like that a clear distinction between attack and defense emerged: attack would be wobble a lot and try to get a lot of charges; defense would be to aim at the enemies by adjusting the position with small wobbles.

Taking everything into account, I'm quite satisfied with my performance in this Pyweek. This turned out to be an interesting one for me. In the end, I think my persistence paid off. The gameplay is a bit unusual and the game felt fun at least for me. The only thing I worry about is that the sloppy graphics and the initial apparent complexity/strangeness will scare some people off. I suppose I don't know how it feels to play the final version of the game for the first time.

Lessons learned:
  • As always, be persistent. Learn how to deal with your frustrations. It may not work, but there's a chance you'll surprise yourself, and that chance is worth it.
  • This is the third time I waste the rest of the week pursuing complicated objectives, then stop Friday and do a game in a day (others were Pyweek 7 and 8). I guess that if you aim for an idea that you can implement in a day, it'll be much easier. Maybe you should pretend this is Pyday and not Pyweek and start from there, so your goals are kept simple, and, more importantly, you stick with an idea that you're sure it's easy and quick to implement. A lot of problems come from thinking you can implement something and then finding out that it's not as easy as it sounds. Making a game in a day forces you to think: can I really implement this in less than a day? (On the other hand, I have to admit that sometimes aiming high and then failing hard is also quite thrilling. That's why I will probably never learn from this lesson. :P)
  • If you're trying to design something unusual, design iteratively. Design, implement, play, repeat. This way you can see what's not working right and tweak it. In my case, it was the lack of control for the wobbly mechanic. I ended up adding control features and then iteratively fine-tuning it into a reasonable game.

Anyway, as usual, I enjoy feedback a lot and you don't need to wait until you rate the games to comment. :) Please comment if you managed to use some strategy different from the ones I mentioned. If anyone wants to discuss the design of the game, I'd be happy to. If you didn't like the game, I'd be also interested to hear - since I was the only playtester, I have no idea if it's fun for others.

Well, sorry for the huge post, and thanks for reading all this and thanks for playing my game if you already did. Thanks to Richard for hosting yet another Pyweek. I'm looking forward to play your games. :)

(log in to comment)


One of the hardest parts was to figure out some "theme" to go on top of the mechanic.

With things like this, I think it's fine to just leave it completely abstract. Not every game needs to have a cheesy back story, and I think some would even be better without one.