December 14th-17th 2012 :: Theme: You are the Villain

Back to Browse Entries


by shinD - 48 Hour Compo Entry

Goatstar is a reverse bullet hell shmup, where you play the boss and face against the absolutely most terrible bullet hell players the world has known. That is to say, the AI is kinda bad, but it makes up for it with infinite lives. Rack up kills until you die!

Written in python with pyglet. I was so rusty... need to code more, need time to code more. So terrible.

Usual tools, sfxr, renoise, NI massive & damage, notepad++

It's python, so in theory it should work on any platform by running via source as long as you have pyglet installed. I haven't tested it, sorry about that.

Downloads and Links




singpolyma says ...
Dec 16, 2012 @ 11:22pm

On Ubuntu 12.10. I had to install python-pyglet of course, but then I still get:

$ python
Traceback (most recent call last):
File "", line 2, in <module>
from world import World
File "/tmp/shinD-goatstar-ld25-src/", line 1, in <module>
from npc import NPC
File "/tmp/shinD-goatstar-ld25-src/", line 4, in <module>
class NPC:
File "/tmp/shinD-goatstar-ld25-src/", line 5, in NPC
ship = pyglet.resource.image("othership.png")
File "/usr/lib/pymodules/python2.7/pyglet/", line 492, in image
identity = self._cached_images[name] = self._alloc_image(name)
File "/usr/lib/pymodules/python2.7/pyglet/", line 437, in _alloc_image
img = pyglet.image.load(name, file=file)
File "/usr/lib/pymodules/python2.7/pyglet/image/", line 194, in load
raise first_exception
pyglet.image.codecs.ImageDecodeException: Unable to load: othership.png

shinD says ...
Dec 17, 2012 @ 12:52am

Alright, good to know. I'll see if I can do something about that.

fishbrain says ...
Dec 17, 2012 @ 6:51pm

I love the literal interpretation of the theme! ...The 16 bit bad guy is superb, and really enjoyed this retro experience!

soupy says ...
Dec 18, 2012 @ 12:56am

Intro was so cool, but controls did not work for me :( I could move but not shoot. I'm running Windows 7 on an HP Pavillion g4, if that helps.

timtipgames says ...
Dec 19, 2012 @ 5:35pm

Same for me here. Couldn't shoot. I'm on a german keyboard layout (y and z are swapped) but that shouldn't be the reason I am unable to shoot at all right? I mean I think I shot twice, but It felt really undeterministic and it could just have been an random event ;) I'll revisit to see if you were able to find the reason for this.

Aslai says ...
Dec 19, 2012 @ 6:02pm

Well I do agree that the shooting mechanism isn't very straightforward. You have to hold down a key and wait for about a second before you start firing. Also, it would be less game breaking if weapons went on cooldown after using them too much. C is just OP.

Dec 19, 2012 @ 6:09pm

Couldn't get it to load. WinXP

gameXcore says ...
Dec 19, 2012 @ 6:31pm

So far the best reverse-shmup I've come across while rating, however would have been much better without the input lag & some sort of recoil when I was hit.

h.attila says ...
Dec 19, 2012 @ 8:10pm

I got this when I tried to start (on Windows 8 x64):
Traceback (most recent call last):
File "_ctypes/callbacks.c", line 313, in 'calling callback function'
File "pyglet\window\win32\__init__.pyc", line 849, in _wnd_proc
File "pyglet\window\win32\__init__.pyc", line 918, in _event_key
File "pyglet\window\__init__.pyc", line 1219, in dispatch_event
File "pyglet\event.pyc", line 349, in dispatch_event
File "", line 37, in on_key_press
File "world.pyc", line 26, in __init__
File "pyglet\resource.pyc", line 587, in media
File "pyglet\media\__init__.pyc", line 1386, in load
File "pyglet\media\riff.pyc", line 202, in __init__ AVbin is required to decode compressed me

someone says ...
Dec 19, 2012 @ 8:27pm

Interesting. Good interpretation of the theme.
I got the same error as singpolyma on openSUSE 12.1 but the windows binary worked in Wine.
The intro feels seems a bit long, and some kind of score would be good.

Maple says ...
Dec 19, 2012 @ 8:34pm

This is pretty good. Love the whole intro thing, makes me feel like a real boss! I would have liked a little more room for movement, but bosses don't usually get that, do they? Nice game, and nice graphics.

dansludumdare says ...
Dec 19, 2012 @ 10:17pm

I like it. The robot vowel guy in the music was funny too.

I found my C gun was by far the most effective.

BipolarMike says ...
Dec 20, 2012 @ 1:50am

It was neat to play the boss, wish there was more of this one!

JFlegle says ...
Dec 20, 2012 @ 2:19am

Love the graphics and music. This game makes me feel like a giant battleship and I like it.

Dec 20, 2012 @ 4:08am

It was fun to play the boss and glad that someone else, besides me, made a shmup! The use of theme was also nice. And while you admit the ai is lacking I think with some more polish this could be something great.

shinD says ...
Dec 20, 2012 @ 2:00pm

Yes, you have to hold the fire keys to shoot - something I realized later is not really the optimal solution! (the whole input handling is a bit thrown together and bad) Dev blindness, I know how it works, so it didn't occur to me to clarify that.

I tried looking into the imagedecodeexception, but on Ubuntu 12.10 it loads just fine for me, so dunno what's up with that. Weird. I'll keep looking.

Thanks for the comments, I'll see if I can whip up a post-compo version with some improvements!

BrothersT says ...
Dec 22, 2012 @ 1:34am

Preety good. Got a bit samey after a while. I think if the player had better control over the direction of the bullets it would be more fun :) There should be a way to skip the intro too I think.

ceronman says ...
Dec 23, 2012 @ 5:20pm

Very nice game. I wanted a bit more controls over the attacks, but the game is fun.

zenmumbler says ...
Dec 31, 2012 @ 12:33am

Couldn't get it to work on Mac OS X 10.8 (even when I inserted the 1.2alpha of pyglet needed, no window appears) but worked on WinXP.

Good atmosphere through the visuals, music and scene buildup but then it's basically Z FTW. I like the ship graphic and the music is great.

Like others, I too thought controls were broken until I read the comment that they start after a timeout, which is very true to how these bosses operate, they don't just fire all kinds of attacks randomly but it would merit a mention somewhere that this is the case.

You must sign in to comment.

IMPORTANT NOTE: If you want to place in the final results, you NEED votes. The easiest way to get votes is by rating other games. Judging lasts for 3 weeks following the end of Ludum Dare. For best effect, rate 20 games as soon as possible. Rating more games is encouraged.


REMEMBER: The “Theme” category is only for the main theme (You are the Villain). Don’t penalize for not using Goats.

TEAMS: Teams entering the Jam should pick a single representative to submit your game, or create a team specific account you can share. We currently do not support Team Voting, but sharing an account and together playing and rating games is acceptable.

NOT LOGGED IN?: If you get a message about not being logged in, even though you are, it’s because your web browser cached the non-logged in page. You can fix this by either refreshing your cache or clearing your cache. CTRL+F5 in many browsers. Chrome is a bit more work. Press F12 to enable Developer Mode, then you can right click on the refresh button and select “Empty Cache and Hard Reload”. This option is unavailable if you are not in Developer Mode.

We’ve identified the problem, and should have the page caching bugs fixed for next Ludum Dare.

PORTS: Ports to other platforms can be done after the deadline. That said, the sooner you finish your port, the sooner people can play your game, improving your chances of placing in the final results. For best results, provide a Web version of your game, or a Windows version with no dependencies. Also be sure to rate about 20 games to improve your visibility.

MY GAME DOESN’T SHOW UP: If you can’t find your game, it’s usually because the URL to your downloads are missing ‘http://‘. Fix your URLs ( and you will show up.

MY GAME CRASHES, IS UNBEATABLE, OR I MADE A TYPO: We allow you to fix crash or win condition bugs after the deadline (in a sense, like “porting” to support more players). We also allow “typo” bugs. I.e. A true that should have been a false, a word that should have been a different word, very tiny changes that you would have caught if you had more sleep. We leave this open to interpretation, but generally speaking your game should be identical to the game you submitted. No new features, just things you messed up last minute. Typos.

[cache: storing page]