About Kwrky (twitter: @kwrky)


Ludum Dare 29
Ludum Dare 27
Ludum Dare 26
Ludum Dare 25

Kwrky's Trophies

I Quoted You!
Awarded by ocmu
on December 13, 2013
The "Most legit award a person ever gave themselves" Award
Awarded by mohammad
on December 14, 2012
I cannot figure out how to upload a profile pic so I gave myself a trophy instead Trophy
Awarded by Kwrky
on December 14, 2012

Kwrky's Archive

Packaging your game

Posted by (twitter: @kwrky)
Tuesday, April 29th, 2014 4:30 am

This is something that so many people get wrong that I felt I had to make a semi-angry post about this.
I am reviewing games for LD at the moment, and SO MANY of them are a pain in the ass to install, or just straight up don’t work!
As I review each game, as I encounter problems I am going to post then below.


2) Your game shouldn’t default to full screen.
If you do this, I hate you. Particularly if your game can’t be windowed AND you didn’t put sufficient tutorials in the game so I can’t figure out what to do without alt-tabbing.

3) No I will not compile your game from source.
If you seriously want me to do this, you better supply the compiler, compile script and libraries in your download.

4) Please tell me what to do. Roughly is fine. Just a hint …

5) For standalone players, your zip file better not have 3 or 4 nested directories just to get to your game.

More to come as I encounter them…


Posted by (twitter: @kwrky)
Sunday, August 25th, 2013 9:09 pm

Woohoo! Got in and (just about) finished a dinky little tower defense game.

I love doing Ludum Dare, and each time I get better and better. Intro, tutorial, game, ending: this time I got a lot done, and I feel really proud of that.
However the downside is that the core mechanics are “loose” and I don’t quite achieve what I set out to do.

My thinking was that tower defense games are essentially boring. I wanted to do 2 things.

– Create a meaningful time constrained period what your choices matter (10 seconds)
– Create a spectacle that you watch and enjoy as your actions are played out

The bones of both are there, but not quite developed to the extent that I envisaged.
Please play my little slice of Ludum Dare and give me your honest feedback!

You can find it:

I’m in

Posted by (twitter: @kwrky)
Thursday, August 22nd, 2013 1:58 am

3rd #LD48 and so far I’ve gotten better each one. Let’s see if we can keep that trajectory :3

This time will be first one using Unity, probably with the NGUI plugin, and also maybe 2D Toolkit.

Have an idea of what I want make basically irrespective of the theme, and so will just shoehorn the theme in there somehow!

Success and some comments

Posted by (twitter: @kwrky)
Monday, April 29th, 2013 2:34 am

Got it in and submitted!

So far I’ve had some nice comments from everyone, and I am thankful for that.

One particular point people seem to like is the transitions between levels.

For those who haven’t played it, the level is defined by blocks of either 64×64 or 32×32 size, and during a level transition these all fly into the middle of the screen. They are then re-allocated behind the scenes (the green and black tile that make the games logo never get deleted), and explode out into the new level configuration.

This effect is actually extremely simple to do, and for impact to code is well worth your time, so I thought I’d go into how I did it.

For each drawn object in your game, construct their position call something like as follows

#Reset the visual position
self.player.vX = self.cPan * 480 + ((1 – self.cPan) * self.player.rX)
self.player.vY = self.cPan * 352 + ((1 – self.cPan) * self.player.rY)
This is Python, but you could use C# or whatever you like syntatically. What is happening above is we have a global variable “cPan” which is applied to a fixed x coordinate (the centre of the screen) and then the inverse (1 – cPan) applied to the players rX variable (that is “real x”, vX being “visual X”). Separating out the draw and position coords means you can do funky effects isolated from logic. Particular doing it like this allows you to do things like jitter with one or two lines of added code.

So now we have this transformation applied every frame, we can see our drawn position will smoothly animate from the centre of the screen (480, 352) when cPan is 1, to the objects real position when cPan is 0.

I added the following section in my global state update function:

#Visual processing, animations, fades, pans etc
if abs(self.cPan – self.cPanT) < 0.01:
self.cPan = self.cPanT
self.cPan = self.cPan + ((self.cPanT – self.cPan) * 0.1)

Our variable cPanT (cPan Target) is compared to the current value of cPan. If the difference is less than 0.01 set them equal to each other. This provides a nice “snap” effect at the end of the move, and also prevents 1 pixel jittering from making it look messy. If the difference is larger than 0.01, we move cPan towards cPanT by 10% of the difference. Because of this use of percentage, when the distance is large it moves quickly, when it is small it moves slowly, giving us our nice explosion effect.

Lastly, I added a command to my internal scripting system as follows

if action[0] == “CPAN”:
self.cPanT = float(action[1])
if self.cPanT == 0:
elif self.cPanT == 1:

The system works by queueing events programmed into the game logic object, and then processing them. Events are a command in the [0]’th array position followed by some arguments. In this case we can have either “CPAN 0” or “CPAN 1”. The script sets the cPanT variable, plays the funky sound effect, and removes the command.

Here’s what my script looks like for the level transition:

(100, “WAIT”),
(0, “CPAN 1”),
(150, “WAIT”),
(0, “CPAN 0”),
(100, “WAIT”),

100 = 1 second. 0 = execute this instantly. It’s pretty readable, but it sets the system non-interactive so your commands are ignored, waits a second (you just won, thats your “victory savoring” time), zooms everything into the centre of the screen, waits again, spawns the new level (I should probably reverse these!), zooms out in the new configuration, gives you another second to look at the level before it starts, and then sets the game interactive again.

Cool transitions in a total of 6 lines of code!


Posted by (twitter: @kwrky)
Sunday, December 16th, 2012 6:11 pm


It is done.

The writing got noticeable worse as I tried to cram in more events. Eventually I wasn’t able to complete even half of the ideas, but IT IS DONE.

My first Ludum Dare resulted in a game, meeting some really cool fellow LDers and a desire to learn how to draw.

Congratulations to the finishers, and congratulations to those who didn’t give up =D

Time for sleep … or maybe … maybe tweak the game a little more …


Posted by (twitter: @kwrky)
Saturday, December 15th, 2012 3:07 pm

Leaps and bounds.

The objective was to get all game logic in place by day 1 so day 2 could be spent on fun things like drawing pictures of Minotaurs.

And that has been achieved! Unfortunately a little over 4 hours later than planned… Well…

Here is the latest screen shot. Still doesn’t look that great but you can see our beloved host asking a tough one while the audience looks on…


Progress 1

Posted by (twitter: @kwrky)
Saturday, December 15th, 2012 4:09 am

Here is the “main game screen”. It’s tough to tell what’s going on as my game doesn’t lend itself to screen shots just yet, however over the next 8 hours I’m hoping to be able to show sometime MUCH much move evocative.

Hope everyone is doing well!



Posted by (twitter: @kwrky)
Friday, December 14th, 2012 9:19 pm

So what did you do when you heard the theme?

I had a shower. And then I put on my thinking shorts and got down to brainstorming.

I’ve been thinking for about 2 hours now and I’ve got a concept that I like, however it

a) Doesn’t use any of my basecode, and

b) Is extremely content heavy (sound, graphics, other)

c) No Zombies =C

It sounds risky, but as it’s mechanically so simply I’ll effective be polishing within a few hours of the protoptype… so it comes down to … how much do I trust myself to be able to draw pictures. Relying on your weakest point doesn’t sound like a recipe for success, but this competition is for trying new things…

Good luck all!


Posted by (twitter: @kwrky)
Thursday, December 13th, 2012 12:38 am

I’ve always wanted to make games but never got anything done since I was 11 when I made a bitching text adventure (including some graphical stuff, in QBasic!)

This is me trying to jump start what has always been my dream but took me another 19 years to figure it out. I plan to make something simple and fun, and if I can manage those two I’ll be happy =D

1.Python, Pygame, I’ll try my┬ábest to not make python a required install :S
2. GIMP, Audacity
3.Aptana and Bitbucket

No photos of my desk as it’s covered in a bunch of trash…

[cache: storing page]