Gem Warrior: Part 2 (of Some Indeterminate Number)
Much progress has been made on Gem Warrior since last I posted, and I’ve learned a bunch about Ruby and how to properly structure a game. I’ve also come to a fairly good stopping point where people can start to actually beta test the game and I can get much needed feedback outside of the echo chamber of my own head.
The Overview
Here’s a bird’s-eye view of the major changes over the last month or so, straight out of my git log:
-
Game Logo
- It may not change gameplay, but every game needs a neat logo, right?
-
End Boss
- This update was huge! It meant Gem Warrior had become a real game with an objective and a win state.
-
Special Abilities
- Not as huge as the last one, but still a nice addition: special abilities. RPGs usually have levels you gain through experience, but they also need abilities you learn besides just stat increases. “Rocking vision” was my first stab at it.
-
Wordnik API for Randomness
- There is a lot of text in this text adventure, and it’d be great if there was some variety here and there that I didn’t need to write. Enter Wordnik. It’s optional, because it takes up network bandwidth and can slow the game down a bit, but I want to expand it eventually.
-
YAML
- Another major structural change to the game was moving all of the data for locations from code to data files. I saw it done in another Ruby text adventure online, and it seemed to make sense to separate the two things.
-
Z Axis
- The map now has more than one level!
-
Arena
- Need to beat up a bunch of monsters for money and experience? You can now.
-
Sound
- Using my other RubyGem feep, I added some basic sound in the game. I’m not sure I’ll keep using it, because the threading of it into the game causes pauses, but it’s nice to have for fun.
-
Player Name Generation
- I spent a fair amount of time porting a public domain JavaScript implementation of a name-generating Markov Chain algorithm to Ruby so I could use it to make random names.
-
Stats
- How long did you play the game? More statistics on various aspects of your play session were added soon after.
-
Merchant
- Rats in holes can sell items, right?
-
Puzzle
- Adventure games have gotta have at least one puzzle, right?
-
Main Menu
- Proper games have main menus, so I had to add one.
-
Intro Letter
- A bit of world-building to get you going.
All of this has been equal parts exciting and frustrating to figure out, but that’s programming for you. Unfortunately, I learned recently that installing the gem and running it on a system has a loading bug, so you can’t play it unless you download the source and run it directly. As soon as I can figure that out, I can open this up to others in a more official capacity. Early attempts at making portable binaries for Mac/Win/Linux, so you don’t even have to have Ruby or RubyGems installed, have proved unsuccessful, but it may have something to do with the gem installation bug.
Overall, I’m pleased with how much I’ve been able to figure out. I can’t wait for others to try it out!