Art is Art and Water is Water

March 31, 2011

March Game: Pipecraft

Filed under: Month Games — foone @ 11:35 pm

Pipe Mania?
For my March game I made a sort of Pipe Mania inspired game, using CraftyJS, a very neat library I sorely underutilized in this game. It uses a component-based design which I had some problems with early on, so I basically just wrote around it (because I was low on time) rather than figuring out how I should really use it. I’m hoping to correct that for my next CraftyJS game. I also made use of CoffeeScript, which is an excellent language that’s really just a sanity wrapper on JS. It fixes some JS misfeatures and changes the syntax to something that’s more like Python/Ruby. It compiles JS pretty directly, though for-loops end up looking pretty weird.

I also used some of my Tasari sprites, which is a series of unfinished RTS games I worked on from around 1998-2002. (These sprites are so old they were originally drawn for a Visual Basic 5 game!). Tasari 1 was a VB RTS, Tasari 2 lasted about 20 minutes and was a C++ translation of Tasari 1, and Tasari 3 was a fully 3D mess that got nowhere because I didn’t understand model formats, so I just hardcoded all the models into the source. It was deeply ugly.

As for the gameplay itself, it’s pretty simple Pipe Mania with some tweaks in strange directions: You place randomly selected straight/90-degree turn/crossover pieces, and if you replace an existing piece there is a time penalty. You have a time limit, and one of the ways I tweaked it was adding a “sink” tile. Instead of having to create a series of pipes that will survive for Xty seconds/Xty tiles, you have to connect from start to finish within the time limit + travel time of the water/electricity/flooz. It also has levels (A whole 3 of them, including a tutorial level!) instead of just being a blank grid with increasingly difficult time limits.

I’m not sure if it’s the different library, the fact I know JS better now, the lack of multiplayer, or the calming influence of CoffeeScript, but unlike my last JS game I don’t feel like pulling my hair out. (My last JS game was last March, which shows you how much I hated it: It took me a whole year to get back into JS)

PS: I called it “Pipecraft” because I’d developed it in my CraftyJS demo folder, which I’d just named “craft”. Since I’ve played too much Minecraft and based it on Pipe Mania, Pipecraft it is.

Advertisements

February 28, 2011

February Game ZapRogue

Filed under: Month Games — foone @ 10:54 pm

ZapRogue

My february game is ZapRogue, which isn’t really a roguelike at all.
I was playing with some sample code from the Roguelike Wiki
and built it into a monster-hunting game, since my original ideas failed to work thanks to issues with curses and 256 color support. Oh well.

You move with the numpad (make sure numlock is off!) and you press Z to shoot LASERBEAMS! which fly in the direction you last moved.
Enemies are randomly placed and have random ranges of activation (so sniping them from afar won’t always work). The level should be randomized, but I ran out of time, so it’s static.

(I did do and release a January game I just haven’t taken the time to write it up yet)

December 24, 2010

December Game: Dec3

Filed under: Month Games — foone @ 2:52 am

Klotski

I got a very late start on this one because I was planning to do the reddit games jam, then I had a bunch of homework to finish. Then I was going to do Ludum Dare, and I wasn’t feeling well. So I built a simple prototype-ish version of Klotski. I’m thinking of making one for Android when I have more time, so this was a nice prototype to flesh out some of the algorithms in Python before I have to deal with the TERROR of Java games dev.

And hurray! This means I’ve done a full year of monthly games with no failures (although technically that was true last month too): All of 2010!
My new goal is going to be to make AND RELEASE a game each month. (Either the new game or one of the backlog)

Here’s to 2011 being an awesome year of gamemaking!

December 1, 2010

November Game: Nomo

Filed under: Month Games — foone @ 12:15 am

Nomo

For my November game, I implemented a Nonogram puzzle (also known as Gridders, Paint-Doku, or Crosspix). I called it “Nomo” as “Nomograms” is a funnier name than “Nonograms”.
I developed it for my new touchscreen laptop, so it has a non-keyboard interface. I even coded part of it on the laptop while riding in a long car journey, which was fun as I had no docs.
Codewise, I’m still using the new framework I made for Mahjong Solitaire, with some minor fixes to handle resizing. I added a neat handler-stack system which nicely handles the switch between the list of puzzles and the puzzle itself. I added it in the last ten minutes of November, so I’m surprised I got it finished in time (“Hmmm, ten minutes to go… I know, I’ll recode half the event handling/drawing!”).

For puzzle sources I had intended to make a simple editor, but instead I just ran some regexes against a GameFAQS guide so I could import the puzzles from Nintendo’s Picross DS. I stuck the puzzles in a SQLite database, which I’ve not done yet for a game. It’s a good idea, it gives me pretty powerful data management for very little work. This would help support things like recording which puzzles are won/unlocked, but I didn’t get around to implementing that.

November 1, 2010

Game Inventory

Filed under: Month Games — foone @ 8:47 am
Month 2009 2010 2011
Jan microgue Slam!
Feb PyCross ZapRogue
Mar jsTanks Pipecraft
Apr scramble/pank
May Journey To The Surface
Jun X/Y
Jul Match3 Oshi
Aug MultiTank Space Resistance
Sep FAILED Coin Op
Oct Dark Stars Mahjong Solitaire
Nov FAILED Nomo
Dec Sokoban Dec3

October 30, 2010

October Game: Mahjong Solitaire

Filed under: Month Games — foone @ 11:31 am

Mahjong layout
Pretty simple game this time. I got a new laptop which has a touchscreen, and discovered how well Mahjong Solitaire works on a touchscreen.
I’m still using my framework from the last two games, but I had to modify it a good deal to handle only redrawing the screen on updates, instead of constantly.

(I kinda rushed the end of this one in order to have time to play the new Minecraft update)

October 1, 2010

September Game: Coin Op

Filed under: Month Games — foone @ 9:48 am

Coin Op screenshot: Space ships and bullets
I was working on this right up to midnight on September 30th, but here it is: A coin-op shmup using tyrian sprites!

Code-wise, this one is very similar to Space Resistance, my august game. (Though I didn’t get as crazy with dumping invisible “thinker” objects into the draw queue this time). Nothing horribly special here, though I did have a neat idea for a color-shifting scrolling background (The current one is always that color, though it does scroll) that I never got a chance to implement. I did make use of the new PyGame microframework that I developed last month, and it worked beautifully. A few tweaks at the beginning and it stayed out of my way and provided some handy bits like easy screen scaling (The above screenshot is from running at 2X scale, and during development I was playing at 3X scale) and all the standard PyGame setup crap that never changes (at least for 2D games. OpenGL is trickier).

Gameplay-wise, it’s a pretty straightforward shmup. Enemies have Dark Stars-style random movement and shooting, your weapon repeats as long as you hold it down, and enemies randomly drop powerup crystals on death. Powerups upgrade your weapon so it shoots more bullets at once, and once you hit level 5 enemies start dropping coins which can be collected for a bunch of points. You’ve got one hit point, but if you have a powerup you’ll lose it instead of dying.

The enemy count starts at 10 and goes up for every stage beaten (all enemies onscreen defeated) or every minute that passes. Each stage is a random assortment of 4 enemy types (I planned to have it start with the easy ones and increase the proportions of stronger ones as stages go on, but ran out of time). There’s no boss or end, it’s just a survival game (it gets hard, fast!), aiming for highest score.

The real gimmick of the game is that it actually is a coin-operated arcade game. I bought a coin acceptor off ebay, stuck in a plastic box, and hooked up a microcontroller to the coin-accepted switch. This is the result. It communicates with the game over USB-serial, and the game won’t let you play until you pay 25-cents. If you want to get far, you need to shovel in quarters since it’s (sort of) a 1-hit-kill game and you have as many lives as you’ve paid in quarters.

Finally, the weirdest thing about the boringly named Coin Op: It has sound! (OK, maybe that’s only weird for foone-games) I created a bunch of 8-bit sound effects with the awesome sfxr project and dropped them in. (I see that playing sound with PyGame is surprisingly easy, now that I’ve finally tried it)

August 29, 2010

August Game: Space Resistance

Filed under: Month Games — foone @ 10:49 pm

Space ships and resistor color codes
I made an edutainment game for resistor color codes. For each level, you have an enemy ship firing at you (the speed of the torpedo increases as the levels go on), and you have to match the color code to the number. If you pick the wrong number, there’s a delay before you can fire again. Pick the right number, and you get some points and warp off to fight another enemy. (I’m taking an electronics class and I need to learn this, so this will hopefully help me drill color codes)

I also worked on an RPG, and by “worked” I mean I did some sprite edits and made a basic level editor.

August 15, 2010

August game – planning

Filed under: Month Games — foone @ 12:10 pm

I’ve not started on my game yet, I’ve a bunch of ideas and haven’t picked one yet.

  1. I created a bunch of particle textures in the GIMP using this tutorial, so I might make a particle system in OpenGL and a space combat game to use it with.
  2. I want to make a trading game. Different locations sell and buy different goods at different prices, so you travel between them trading. I might do this as an IRC game if I can figure out how to make time work. (Annoyingly, this won’t work with my current IRC Game framework)
  3. I’ve still got my half-finished Drakon code, which’d be nice to finish.
  4. And I’ve got the Gem Miner roguelike code and map renderer.
  5. The third Reddit Game Jam is ongoing, but I’m skipping this one as the theme is laaame.
  6. I might make an RPG with these graphics. I bugged a friend to draw me one more tile, so I’ll be doing that either this month or next.
  7. I ordered a coin-acceptor off ebay, so I might make a coin-op game. Almost certainly a shmup.

July 31, 2010

July Game: Oshi

Filed under: Month Games — foone @ 3:58 pm

A board of pieces

For my July game, I made a version of the board game Oshi. It’s a simple, chess-like game, with very simple rules:

Pieces marked N can move up to N spaces, can push up to N pieces while moving, and are worth N points (when pushed off the board)

You start with the above set of pieces, take turns moving, and the only other rule is that you can’t move a piece back to where it was at the end of the last turn. Simple, but the pushing turned out to be tricky when implemented, especially because I have pre-move hints about what you can do and I forgot the middle rule when first implementing the game. I implemented it as hot-seat multiplayer and instantaneous movement, but with a little more time it wouldn’t be too hard to add networked play and smooth tile sliding.

This was an annoying month, for the opposite of the usual reason: I had too many game ideas. This was actually the third game I started working on, and made two attempts at it.
I first worked on a roguelike clone of the Android game Gem Miner, then dropped that for a version of the board game Drakon, then started Oshi as an IRC game before restarting it as the PyGame game I finally finished. (At 5pm on the last day of the month, natch)

I took the time to save off my first cleanup of my template code, so hopefully that’ll slightly help in future months. My code was really old and messy (globals!), so this might help a little for next time.

Older Posts »

Blog at WordPress.com.