About pvwradtke (twitter: @pvwradtke)

Computer scientist, C/C++ programmer, hobbyist game programmer.


Ludum Dare 34
Ludum Dare 32
Ludum Dare 29
Ludum Dare 27
Ludum Dare 26

pvwradtke's Trophies

pvwradtke's Archive

My entry to the LD34 compo: Gravity Flip

Posted by (twitter: @pvwradtke)
Sunday, December 13th, 2015 3:03 am

Hi everyone, here’s my entry to this Ludum Dare, a 2D puzzle game with two buttons and a rotating world: Gravity Flip. Controls are very simple, right to turn the world clockwise, left to turn it counter-clockwise. use these two motions to get a crystal bal to the target without breaking it. Simple and challenging! šŸ˜€


This version is an early alpha, with place holder graphics, no music or sounds, and lacking more levels (there are five for now). Please download the binary from the link below and let me know in the comments what you think. Or, if you prefer to, please send me a message at @pvwradtke.


I’ll work to add more levels, and better graphics. I’m very happy with progress so far, and if I can have some beta testers to let me know what they think this will be one of my best entries so far :). Anyway, I’m gonna catch some sleep. Thanks in advance to those who can play the game and share their thoughts!


Still untitled, with placeholder graphics, but working

Posted by (twitter: @pvwradtke)
Saturday, December 12th, 2015 1:59 am

Seems I’m off to a good start. My first version, still with placeholder graphics, but working! The map rotates in the screen, the level loader is there already and the geometry layer is there as well. Now, to make things work tomorrow early morning. Good luck for those staying up tonight.



Yeah, it looks plain. But I a programmer, not a designer, so please be gentle to me :).

Simple idea

Posted by (twitter: @pvwradtke)
Friday, December 11th, 2015 11:49 pm

OK, so I’m sticking with 2 buttons controls, along with some ideas I had during the theme voting a few days ago. I’m a bit surprised that I already know which game I’m doing at this time. Usually I’d still be brainstorming ideas, but, better like this. Maybe this time I’ll complete the game before the submission hour. Or I’ll get lazy, spend some time goofing around and program like crazy in the last few hours :).

Get ready to rotate everything with two buttons. Ready in 40 hourd from now (or so).

Traditional “I’m in post”

Posted by (twitter: @pvwradtke)
Thursday, December 10th, 2015 10:20 am

Well, I should be in again (assuming life doesn’t get in the way). As usual, I’ll use:

  • Chien2D (experimental v3), my trusty 10 year old game programming library šŸ˜‰
  • C++
  • Code::blocks + gCC + Mingw32 to cross compile Windows binaries
  • Gimp
  • Tiled
  • bfxr
  • Punk’o’matic
  • Audacity
  • The usual QA folks (my kids and close friends)
  • Linux, of course! :)

So, go ahead and vote on a programmer-mind friendly theme for this round ;).

I’m in again!

Posted by (twitter: @pvwradtke)
Thursday, August 20th, 2015 8:50 am

I’m in again (5th time already), and the one man army Chien Loco will be posting a new game sometime in Sunday :). As usual, tools will be:


  • C/C++
  • Code::Blocks
  • Gimp
  • Tiled
  • sfxr
  • Punk-O-Matic
  • Inkscape
  • Chien2D v3.0 Beta
  • SDL2
  • Chipmunk physics (not sure yet)

See you guys in the comments section later :D.

Mighty Magnetic Force – Post mortem & timelapse video

Posted by (twitter: @pvwradtke)
Saturday, April 25th, 2015 2:28 pm

Hello everybody, pretty busy week, so I’m getting to do my post mortem only today. This time my entry is Mighty Magnetic Force, an action/puzzle game where the players control a magnetic sphere that can attract/repel objects to destroy enemies. Below is my desktop timelapse for those crazy 48 hours to develop a game.

This is my 4th Ludum Dare game, though it’s the one I consider to be the best polished so far. To develop it, I’ve used:

  • C/C++ (though no C++ 11 this time)
  • SDL2
  • Chien2D v3.0 alpha (an educational game programming library I’m updating to SDL2 now)
  • gcc and friends
  • Code::Blocks
  • SFXR for sound effects
  • Punk-O-Matic for the music
  • Gimp
  • Inkscape
  • Audacity
  • Tiled
  • mingW32 to make the Windows binary

As usual, the game was developed on Linux (Mint this time) and cross-compiled to Windows. Surprisingly, the game was ready in time and I could do more or less everything that was planned. So, let’s see how this happened.

What Worked

  • I could decide an idea pretty much early, after playing around with a few concepts.
  • Working the mechanics first, so I was able to move around the character in the scenery and shoot objects fast. This way I could focus on fixingĀ small issues.
  • Use place holder graphics, but decide the actual level data structure early. While I was working with a static, hard-coded level, it was using the level final data structure. When I did the level loader, I just had to fill in the memory with data.
  • Use a tool to design levels and configuration files to load them. I used Tiled to build the levels, which made it easy to do it visually.
  • Scale back some ideas, the original enemy was supposed to follow the player in what would be a level laid out as a simple maze. However, this becameĀ impossible to do in time, and replacing them for something easier to code was the right choice.
  • Develop standard code for multi-platform development (ANSI C/C++). Compiling it for Windows was just a matter of changing aĀ Makefile to use the mingW32 gcc, instead of the regular system tool.
  • Get people to play it early to spot issues. Some levels were simply too difficult, and I couldn’t see it in the editor. My kids spent about 30 minutes playing it, and it was enough to chase away most level design issues.

What Will Work Better the Next Time

  • I was doing the compo and refactoring Chien2D, a game programming library that I used to teach games programming, back when I was in academia. The original library used SDL1.2+ OpenGL, and my goal was to have it fully refactored and uptaded for SDL2.0 by the time of LD32. I knew that the compo was the best place to force myself and make improvements to portions of the code that weren’t great yet. But it actually gave me some headaches.
  • I had some issues with the SDL2 documentation. It was not so clear, at first, what was a rendering context, which seemed at first to be a backbuffer to draw. However, I quickly discovered it was only there to provide a way to draw to a window using the SDL2 accelerated video API (when there was texture artifactsĀ in my tiles). Once I realized I had to actually draw to a texture, everything went back in place.
  • As part of my refactoring, I didn’t had a good collision code, so I had to improvise. the original version was large, clunky and didn’t work well. It took me a while to write a good version, which was 15% of the code used in the buggy version. Well, less is more, so they say.
  • I was going to beĀ late, when I decided to scale back. and drop the “smart enemies” that could follow across a maze like place. If I had pursued this path, I don’t think the game would be done.

And That’s It!

So that’s my little story about making Mighty Magnetic Force for LD32. Hope you guys enjoy playing the game as much as I enjoyed making it. I’m pretty happy with the positive comments so far. Yes, there’s room for improvement and some ideas are really great to improve the gameĀ (thanks everyone!). I’m looking forward to the next compo in August and, until then, please stay with the official Mighty Magnetic Force gameplay video :).

Mighty Magnetic Force

Posted by (twitter: @pvwradtke)
Sunday, April 19th, 2015 8:51 pm

Wow, what a compo this time. Great theme, had a nice idea and, besides a few bugs and small blockers along the way, everything is fine. Feels great :D. And now, for Mighty Magnetic Force, my entry to this compo.

My submission page is here

You’ve been turned into an entity that generates a very strong magnetic field, and can manipulate some objects with that. Same color will repel objects, different colors will attract them. Use that to destroy enemies and clear all stages (yes, you CAN beat the game).


Controls are simple, use you gamepad left stick to move around, and the right stick to orientate the magnetic field. Oh, if you don have a gamepad, use the keyboard. Ccursor or WASD will move around, and the mouse will allow you to change the direction of the magnetic field. Or go to the nearest store and buy a gamepad ;).


Now, all you have to do is to play the game! Just follow the link to my submission page! And don’t forget to leave your comments, I really appreciate them :D.

Still untitled, bot working rather well :D

Posted by (twitter: @pvwradtke)
Sunday, April 19th, 2015 10:47 am

Hi folks, lots of progress since last night. The game works quite well, I can destroy enemies and it’s very close to completion. Besides doing a map loader, it’s still lacking winning conditions, but I’m pretty much excited with the prospects so far.

My untitled game, now with the weapons mechanics in place

Posted by (twitter: @pvwradtke)
Sunday, April 19th, 2015 12:34 am

Hi everybody, finally I’ve got around some issues I had while coding my game. Right now, I have the temporary player moving around and able to use the magnetic forces to attract and repel items according to the field polarity. The idea is to shoot those items as projectiles and destroy enemies (will add them tomorrow). Right now my main concern is that graphics won’t get much better than this, I wanted to make some sort of game with an human player generating a magnetic field, and attracting/repelling the items. However, it looks like the character will be a late addition if I want to have enemies and a goal in place :).

Progress on my compo entry

Posted by (twitter: @pvwradtke)
Saturday, April 18th, 2015 6:02 pm

Ok, so it took me a long time to figure out two silly bugs that were halting my development. Hoped to have a playable version by now, but I guess having collision and player controls in place is already good enough. Let’s hope I can complete everything else in time for tomorrow. Below, a video of my collision code working.The idea is a twin stick shooter were the player can use a magnetic field to attract/repel certain objects to destroy enemies, while watching out for not being hit himself. Still untitled :).


Good to Go!

Posted by (twitter: @pvwradtke)
Friday, April 17th, 2015 9:42 pm

Just started setting up my GitHub repository, ideas were flowing today after a small developer block and I should have something up and running in time for tomorrow night. Nice!

My unconventional weapon has polarities and can either attract or repel things. Hope to share it with you guys in a short time :).

I’m In

Posted by (twitter: @pvwradtke)
Thursday, April 16th, 2015 8:11 am

Hi folks, I’m in for the 4th time, hoping to improve a little bit from the other entries. I’ll use this time:

  • Code::Blocks
  • gcc/g++
  • Gimp
  • Sfxr
  • Audacity
  • Otomata (maybe)
  • Punk-o-matic (if the idea fits)
  • Linux
  • MinGW for cross compiling Windows binaries.

As the base code, I’m struggling between the base code used for my last entry (Fish Goes Fishing), or Chien2D, a lib for games I did sometime ago and I’m moving towards SDL2. The SDL2 port is not exactly public, but I may end up getting the early alpha into git Hub just to fit in the rules. After all, nothing is better to push a game library than making a game with it :).

Crossing fingers for an awesome theme that I can get a cool idea quickly tomorrow night :).

Fish Goes Fishing – Time lapse + Post Mortem

Posted by (twitter: @pvwradtke)
Sunday, May 18th, 2014 5:22 pm

Hi folks, it’s my 3rd Ludum Dare, but I guess it’s my very first post mortem, for my LD 29 entry, Fish Goes Fishing (click here if you’re still to play it). So, with no further delay, my time lapse video, followed by the post mortem itself.

The Idea

When I first saw the them i was like “blergh”. I won’t deny it, I’m more an old school C/C++ programmer than a designer, and”beneath the surface” only ringed an underwater game to me. And that’s what I did, a game where you’re fish, constantly hungry, struggling to survive by eating other fishes and avoid being eaten by the fish you can’t eat at all. At first, I wanted to have a fisherman passing by a boat, which could mean an instant death in case the fish was caught, but this idea was scrapped along the way, as time was getting shorter. I also planned to have two gauges, one with the hunger factor (fish dies if maxed out), and another with an energy usage factor, that would be depleted when the fish moved, but would recover when the fish would rest. With that in mind and a very rough sketch on paper, I started my 3rd Ludum Dare.

The Code Base

Doing a full game in 48 hours is already challenging, leave it alone doing the full code to make the magic happen. Since I did Ludum Dare 26 I’m building a basic code framework over SFML. To bootstrap Fish Goes fishing, I had the menu system ready, plus a character hierarchy and controller code in place. This time I added character animation and very simple animated particles (the bubbles, plants and anemones). Maybe for the next Ludum Dare I’ll have tile map support with some physics library in place (Chipmunk, maybe).


  1. Mockup graphics: I wanted to have a sense of how things would play together as soon as possible. Both in sense of gameplay and how they’d look together on screen. For that I made characters that were simple rectangles to get myself going soon. This allowed me to focus on what I had to do first (the code) and to scale the time I’d spent to polish those resources later.
  2. Do a game that your library or code base makes it easy for you: while we can have very complex ideas, it’s not useful if we can’t make them happen. It’s OK if we need to code something specific for the game, but getting it up from scratch is a hard task. use a library or framework if you can. If you’re old school and is starting out with a library like SFML or SDL, try to make a game that uses the libraries basic resources, and then, for the next time, you may improve upon that code base. I’ve been doing that for a while and it’s working well.
  3. Generalize first, specialize later:when developing the game, I focused on creating the basic characters, and the other character were built upon those previous elements, by adding more states and changing animation frames.
  4. Prioritize efforts: a game is much more a sum of parts, rather than only one individual aspect alone. Something I did was to question what’s required from here to get a build that plays like a game, even if we need to balance things to make the game more challenging. I was about 26 hours into the jam and the fish could eat other fishes, which was a good milestone.
  5. Using well the right tools: I’m no musician, as I’m no graphics artist. But I can overcome those limitations (a bit, at least). Music and sound can always be generated by automated tools. For SFX, I used bfrx, and for musics I used Otomata. These can save a lot of time and effort, and give some mood to the game. Just for the record, I’ve also used in the past Punk-O-Matic, and I’ve also seen other procedural music generator apps that allow me to export files to MP3. As for graphics, Gimp is more than enough for pixel artist making, and also has very easy to use too to rotate layers that I used to make the scuba diver animation.
  6. Not being afraid to scale back: the earliest we see something is too big for the original deadline, we need to remove it ad minimize impact. This goes well with number 2 above, and I had two occasions were this was important:
    1. Missing fisherman:I thought about the fisher man, but this character would have a moving part for the line and required a special hierarchy. To avoid expending too much time with this guy, I decided to drop it before I couldn’t finish the game. While it was hard, and a hit on my original idea, I fully understand it was for the best (as I’d complete the final build close to the deadline).
    2. Gauges mechanics didn’t work out:the idea to have two bars to control both how hungry and tired the fish was seemed awesome. Once I tried it out, it wasn’t working out as expected. To solve that, I change it to a single bar, which would go down faster when the fish was swimming, and slower when it was idle. Also, it was simpler for people to understand the game.
  7. Life can get in the way: working at home to do a Ludum Dare and still having the regular responsibilities of a regular weekend is a tricky challenge. In my case, that meant shopping for groceries, taking kids to swimming classes or doing a BBQ for the family. This may manifest differently to each person (going to school, doing a report, whatever), the fact is that life is still there and we should be prepared to accommodate other activities rather than just doing the game. In other words, try not to procrastinate, as this time will be missing later ;).
  8. Pressure can make simple mistakes become nightmares: when I was doing the Windows build (I only use Linux), i made a Makefile to cross compile the binary. And it wasn’t working at first. I had my entry in place, I had the source code uploaded, and it wasn’t before 5 minutes of the final deadline that I had my Windows binary after I found a small typo in the name of a file. Was under normal stress, I would have noticed and laughed this off, in the submission hour I couldn’t even see what was right or wrong anymore. Try to avoid the pressure of a ticking clock at all costs.
  9. Oh, you may get sick as well: while normal life may get in the way, and I’m used to it by now, I wasn’t quite ready to deal with illness. I had food poisoning Sunday, and the last three hours were not fun to get over the final tasks. Had it happened earlier, I think I’d have retired from the compo. As most of the hard work was already in place I decided to push forward.


Every time I go through a jam or Ludum Dare I learn something, and I also enjoy the challenge to come up with something even if the theme is not the one I’d liked the best (like this time). I may try jamming with friends some time, as soon as we can match our schedules, but until then, I can get into the compo by myself and have some fun :).

Fish Goes Fishing – My Entry to LD29

Posted by (twitter: @pvwradtke)
Monday, April 28th, 2014 5:41 am

Well, after I recovered from last night’s rush to deliver the game (seriously, last minute build issues are though), here’s my entry to LD29: Fish Goes Fishing. You control a very hungry fish, who needs to constantly eat to stay alive. EatĀ other fishes, keep track of your life and don’t let the dangerous Red Fish get you. Maybe last minute build are not so hard as this fish’s life, so go on and check it out at http://www.ludumdare.com/compo/ludum-dare-29/?action=preview&uid=3728.


Fish Goes Fishing

Chien Loco is in (hopefully for real this time)

Posted by (twitter: @pvwradtke)
Friday, April 18th, 2014 7:40 am

After Minimum Friction on Ludum Dare 26, and 10 Seconds Warning on Ludum Dare 27, I’m back for more programming fun. hopefully real life won’ t get in the way and I’ll make it as expected. My tools of the trade:

  • Arch Linux
  • g++ and Netbeans
  • Gimp
  • SFML 2
  • The menu, splash, joystick and credits code I used for 10 Seconds Warning.
  • Audacity, sfxr, Otomata and Punk-o-matic. Or whatever I can use to make sounds and irritate people.
  • Mingw32 to cross compile my game for Windows.
  • An Epson scanner if I ever feel the need to scan something into bits.

As usual, I’ll try to get a beta out by Saturday, but most likely will do a final build 5 minutes before the final deadline on Sunday. LOL!

Chien Loco is in for the 3rd time in a row

Posted by (twitter: @pvwradtke)
Monday, December 9th, 2013 8:16 pm

After Minimum Friction on Ludum Dare 26, and 10 Seconds Warning on Ludum Dare 27, I’m back for more programming fun. As the last time I’ll use:

  • Linux (Ubuntu 12.04)
  • g++ and Netbeans
  • Gimp
  • SFML 2
  • The menu, splash and credits code I used for Minimum Friction.
  • The joystick code from 10 Seconds Warning.
  • Audacity, sfxr, Otomata and Punk-o-matic.
  • Mingw32 to cross compile my game for Windows.
  • An Epson scanner if I ever feel the need to scan something into bits.

Let’s see if I can finally get a Beta out by Saturday in the afternoon (maybe 3rd time is a charm). The only thing I’m sure is that I’ll have lots of fun again :).

[cache: storing page]