I have updated my annual list with 3 games!
This year’s winners are a pair of deceptively simple but frustratingly difficult games, QWOP and GIRP. Plus I added an extra one to 2010 for fun. Click below to see these reviews and more:
I was playing some old SNES games on emulator and decided to make a new desktop wallpaper, inspired by the SomethingAwful thread of 2003 (yikes, that was a long time ago). The idea was that, with computer monitors being so high resolution, you could fit a lot more on screen than a Super NES on NTSC TV’s 480 lines, or whatever it was. That is, you could fit an entire game level. However, 8 years ago, I didn’t have an HD 1080p monitor… now I do. Last last weekend, I made a new one:
This wallpaper contains the complete Super Mario World level, Forest of Illusion Ghost House. Stitching together screenshots from the game takes a lot of time. Fortunately, Stefan Mahrla already did most of the mapping work. I rearranged and edited the little things, like replacing labels with original sprites and adding extra space for the taskbar. Notice that even at 1080p resolution, the image is scaled down from the original size of 2816×1584! Click below to download.
Moving to WordPress for CMS/blog software instead of editing my own HTML. Let’s see if I pay more attention to it now. I just wasn’t updating the old way, not for lack of content, but because of a laziness threshold that needed to be surpassed whenever manually updating things.
I thought it’d be painful to port over my old content, but so far that’s not the case. I can backdate things without touching the database. I’m also trying to restrain myself from hacking the code to bits, like I did with the IMmerge website. Embrace the built-in features… *deep breath*
I have to say, the dynamically PHP-generated pages load noticeably slower than static HTML. Maybe it’s the server.
I have named the 2010 WTF game of the year. It includes cars and zombies.
(This article was originally posted here.)
Continuity is a new Flash game that I was playing recently. It combines platforming and puzzle in a novel way – your character must jump from platform to platform collecting keys to open a door, but must do so inside mini-levels (squares). The macro-game is essentially an 8-puzzle (8 pieces in a 3×3 square grid), where you shift the puzzle pieces using the one empty space, such that your character can succeed in the mini-levels.
This game is perfectly solvable through logic and working backwards, though for some of the harder levels you need to keep a long memory of steps. In short, I became bored and impatient of solving the puzzles in my head, and decided after ~30 levels, it’d be more interesting to automate it by writing a solver.
I also took this opportunity to get familiar with Python, a language well known for its fast prototyping and easy learning curve. I have only worked in Python once, during a 4-month internship 4 years ago, but otherwise, my main skills are in C and Java. However the syntax required to write good algorithms and data structures in these “classic” languages can get quite long and annoying. So I coded up a Python script to solve the final two levels.
The rest of this post details how to develop the solution. The solution is relatively simple because we can just treat each exit in a square as a point in a directed graph, where each edge in the graph A->B specifies that point B is reachable from point A, and then apply a search algorithm through the graph. I chose Dijkstra’s shortest path algorithm, which runs fast and finds the best (shortest) solution. However, my program did require a lot of manual data entering to specify the paths/exits in each puzzle piece, so it wasn’t fully automatic. Perhaps Python has some magic that could automate this :). Lastly, I skipped solving the 8-puzzle, since it’s not necessary.