Geeks Who Shower



Minimalist RPG - Day 5
posted May 12, 2008 by eedok
We're coming into the home stretch, today I didn't put a massive amount of time towards the project, but I did finish up the ending screen and marked the safe room, but still am looking to a way to alert the player to rest when they need to recharge that's not too obtrusive. My brother finished the end credits song, so there's a song at the end of this game inspired by portal and you have to burn the rope, he's telling me that he could probably get some more music done by the deadline, so we'll see how that goes.

The majority of the work that I did today was put into the installer, so now the game has a windows installer that requires pretty much 0 knowledge from the end user, and adds start menu entries, along with an uninstaller for when people are tired of the game. I also tested the game in Ubuntu, and it works perfectly fine as long as pygame is installed.

I've also put a bit of thought on to how this game will be distributed. I was originally thinking freeware, but some recent talk on piracy got me thinking, why not release this under the honor system, provide the download link for the game, as well as the pay now button, to see how many people will pay even when they can go through the whole game for free. Worst case scenario it's an interesting experiment, best case scenario, I may not have to worry about half a month of hosting :p.

Summary metrics once again, new tools:
  • NSIS - it was the first installer that came to mind, and it's my first time using an installer, generally pretty easy to work with, and it gets the job done

Current code count:
  • convert.py - 19 lines
  • underwe42.py - 308 lines
  • ego.py - 81 lines
  • view_layout.py - 14 lines
  • underwe42.nsi - 167 lines
  • Total - 589 lines

Current assets:
  • 12 images - boss, icon, floor tile, wall tile, grass tile, safe tile, goblin, ogre, player, intro background, gameover background, ending background
  • 5 sounds effects - walk, enemy alert, enemy death, player death, boss alert
  • 1 song - ending credits

Goals for Tomorrow:
  • Find way to alert player to restore health
  • Actually get the distribution page ready
  • Add in additional music
  • Spread the word

As always here's your up to date progress on the project.
< Day 4 | Final Day >




Minimalist RPG - Day 4
posted May 11, 2008 by eedok
Today was mostly spent making up the lost time from yesterday, so a lot got done.

The first thing I did was got the wandering enemies to work, but I noticed that the aggravation radius of resting was much too wide with the addition of enemies, so I had to reduce it. I then noticed there was a lot of dead space in the map, so I wrote a tool to plot out the enemy positions and their relative strength so I could see where the dead space was, so I added a bunch more enemies and adjusted the number of enemies needed for a level up from 2 to 3. This reduced the dead space, but there were times where the new wandering enemies would bring too much pain, and there was no possible way to win in this situation, so made the starting room a safe room, where enemies wouldn't go, to give the player a place to run away to if the action gets too hot. I also noticed that as the game went on, it started to get far too easy, so I changed the resting rules, to make it cap out lower so the higher level guys had a higher chance to kill you. Talking with David of wowyoureugly.com he suggested that you should be able to rest at any time, just to make the enemies take action without needing to move, so I ended up implementing that into the game as well. Needless to say the game feels pretty balanced now, and there's been no complaints about the length of the game(it's rather short, but this kind of game isn't very in depth so it shouldn't be outstaying it's welcome).

Next I added sounds to the game, to make the sounds I fired up audacity, then do an impression of what I want the sound to sound like, then afterwards edit it so it sounds like what it should sound like. For a fun fact, the sounds for the enemies and the player dying are both based on the same sound, they're just warped to sound different. I added a sound for pretty much everything I could think of, then added an option in game to stop the sounds for if they ever get annoying(which I ended up just binding to the s key). There's still no music though, but I'm so musically deficient I'm enlisting the help of my brother for that front, so I'm hoping he does well.

At this stage and still having some time left in the day I tried tracing my hand drawings to see what the game would look like with a more pixel art feel, the result was this:

I took a quick poll on the forums I was logged in to at the time, and this new style seemed to be more appealing than the old style, so I redid all the artwork, touched it up a bit, and added a new graphic for the original enemies, and used the touched up old graphic for the art of the new wandering enemies, the new in game screen shot looks like this:

I then started working on polishing up the intro and game over screens, so they look a bit nicer than just the black text on a white box:

I also tried to do a code review, but doing one alone is rather tedious, and I wasn't catching anything, so it was prematurely killed. Anyways on to the summary!
Tool update:
  • Audacity - used to make all the sound effects in the game with the microphone on my webcam

Code count:
  • convert.py - 15 lines
  • underwe42.py - 299 lines
  • ego.py - 81 lines
  • view_layout.py - 14 lines
  • Total - 409 lines

Current Assets:
  • 10 images - boss, icon, floor tile, wall tile, grass tile, goblin, ogre, player, intro background, gameover background
  • 5 sounds - walk, enemy alert, enemy death, player death, boss alert

Goals for Tomorrow:
  • Pretty up victory screen
  • Come up with a way to mark the safe area
  • Add a rest alert message when the player power is low
  • Prepare the distribution page

As always I've uploaded my progress so far. See you tomorrow!
< Day 3 | Day 5 >


Minimalist RPG - Day 3
posted May 10, 2008 by eedok
Well today being my fiance's commencement, I didn't get near the amount of time I wanted to into the project (I think only got in just over an hour), so the only things I got done were fixing the overlapping monster bug, I then adjusted resting to have a wider area of aggravation, then added a simple intro, and ending screen. The game could technically be called complete now, but it can really use a lot of polish, some balancing, and some feedback mechanisms(mainly sound as currently the game is silent).

Seeing as how the update was small today I'll just list the code summary:
  • convert.py - 15 lines
  • underwe42.py - 191 lines
  • ego.py - 121 lines
  • total - 327 lines

So I'm going to have to carry over some goals I made yesterday to today for the work I do tomorrow, making my current goals for tomorrow:
  • Add in wandering enemies
  • Hack at keyboard bug
  • Code review
  • Create and Add in Sound Effects

once again I've uploaded my progress up to today.
< Day 2 | Day 4 >


Minimalist RPG - Day 2
posted May 09, 2008 by eedok
Okay day 2 on this project. I got further than what I was expecting to today, the first even of today was I ditched flex, I got frustrated trying to implement a scrolling system, so I went back to my good friend pygame that has yet to let me down, which kind of sucks as this isn't going to be a web game, but I read on Digg today that a Javascript implementation of Processing has been released, so if there's time at the end of the project, I may try porting it to this implementation of Processing.

So development wise, level and enemy loading done, and then worked on the level interaction, then after that got the player <-> enemy interaction working, along with some simplistic AI with a test level. Since my tester wasn't ready yet, I decided to work on the graphics, and decided to go for a hand drawn style of artwork, which ended up looking like this:

Also as you may have noticed my brother and I came up for a name for the game and a theme. I've implemented a game over screen as well, but still no intro or ending screens. Getting it playable early did help a bit, as currently the game is ridiculously easy, as the enemies only attack when aggravated the game persists of aggravated as much as you can take, then resting up until your health is full, then repeating. Talking with brandonman of herges games he came up with the idea of having an AI that'll wander around the castle, rather than AI that just pursues when aggravated, so I think I'll be adding that tomorrow. Bugs seem to be few, the only ones that really showed up so far is the monsters sometimes occupy the same space, so sometimes they cannot be seen, so you die unexpectedly and the keyboard key repeat is sometimes off, but that may be an issue with the library, so I'll have to look into it.

So Tool update:
  • Adobe Flex - was removed as the flash display model wasn't optimal to with for my current knowledge and skill set
  • The GIMP - used it to darken my artwork as when I scanned it, it came out very lightly(I darkened it by adding a black layer over top and setting the mode of the layer to overlay).
  • EedokGameObject - it's kind of my mini engine, I made it for use in contests and it was first used in Cheese Run. It's pretty much a run of the mill basic boilerplate code that all my games use, nothing fancy or very optimized. I did modify it for this project though, to use an event driven loop, rather than one that tries to go 60 fps, since there's no animation in this game.

Code count:
  • convert.py - 15 lines
  • underwe42.py - 159 lines
  • ego.py - 121 lines
  • total - 295 lines

Current assets:
  • 6 images - walkable tile, non-walkable tile, player sprite, enemy sprite, boss sprite, icon

So here's my goals for tomorrow:
  • Fix overlapping monster bug
  • Add in wandering monsters
  • Add in a filler winning screen
  • Add in a filler intro screen
  • Hack away at keyboard repeat bug
  • Code Review

for anyone wonder I've uploaded my progress so far(requires pygame to play, and for now I know only works on windows).

So my next update should be at the same bat time, and the same bat place.
< Day 1 | Day 3 >


Minimalist RPG - Day 1
posted May 08, 2008 by eedok
Well reading Tales of the Rampant Coyote, I came across a post where he talks about a minimalist RPG, inspired by hackenslash I decided I'm going to try my hand at building this RPG in one week (I may need more time than 40 hours as I'm not quite as experienced as Jay).

Tools I've used so far:
  • Adobe Flex SDK - I want the final product to be playable in a browser, and the free products that come to mind are java applets, silverlight, and flex. Java applets are slow for most people and a lot of people have conflicting virtual machines, silverlight doesn't seem to have a noticeable install base yet, so I'm sticking with flex, plus I have flex experience doing reports at my last day job
  • Microsoft Paint - so I can throw together filler graphics, and using it design levels
  • Python - For any quick scripts, like turning a bitmap into a usable level
  • Pygame - I just use it for image manipulation as it's what I'm familiar with
  • Notepad++ - my editor of choice

Day 1 report
Today was mostly spent designing this game, the design I've settled on is the RPG is going to consist of a single attribute being power, you can kill monsters with a lower power than you, but if their power is greater you die. You gain more power by killing the monsters. The controls for the game are going to be arrows to move, and space to rest(to regenerate power). The game is going to take place in a single level that won't be random where the goal is to kill the end monster.
Development wise, I've just laid out the level, and threw in some filler monsters. I designed the level in paint, and just used a converter to convert the level to a csv, and added the monsters by another csv of their power and location. I haven't done any coding yet, so hopefully by the end of tomorrow I'll have a playable prototype(with filler graphics, no intro/end screen, and no sound), so I can start getting feedback as quick as possible.

Wish me luck and I'll keep you guys updated tomorrow.

EDIT: I guess I'll post the source to the level converter which takes a bitmap and converts it to csv of 1's and 0's based on if the pixel is black or not:

import pygame



image = pygame.image.load("level.bmp")

f = file("level.txt","w")

w,h = image.get_size()

for y in range(0,h):

    for x in range(0,w):

        if image.get_at((x,y)) == (0,0,0,255):

            f.write("1")

        else:

            f.write("0")

        if x!=w-1:

            f.write(",")

    f.write("
")

f.close()


Day 2 >


<< Newer Entries Older Entries >>