Textgaem: Post 1

26 08 2008

This is going to be an exercise in making a game where wildly unexpected things happen on a fairly regular basis in a way that is actually fun to play rather than punishingly arbitrary.

There is a Bestiary, populated by an XML file, which contains all types of monsters, all possible modifiers, all abilities, items, what have you. Monsters are constructed by somewhat-randomly mashing these together, and then you are unleashed in a somewhat-randomly constructed dungeon with them.

The dungeon is going to be separated by floors which will be clustered by various dungeon archetypes. You’ll be in a mummy’s tomb, then you’ll be in a zombie-infested shopping mall, then you’ll be in a medieval castle. The source material for all of these will also be sourced from the XML, so adding content once the algorithms are all in place is going to be pretty close to “fast as you can type it”. That’s the goal, anyway.

I’m also planning on having some kind of scoring algorithm in place during the dungeon population phase that will prevent absurdly unfair things from spawning. A monster will get randomly generated, and its “score” will be compared somehow to the player’s level, and if it’s too lopsided there will be a large chance that it will be discarded. Details on this will be forthcoming.


DEBUG: Created a zombie with fireball
DEBUG: giving the zombie 'ennui' and 'boners ahoy' abilities
DEBUG: performing 5 actions from ability repertoire
The zombie is really disinterested. It sighs.
The zombie is really disinterested. It sighs.
The zombie launches a fireball past your head.
The zombie yells 'BONERS AHOY'. Perhaps you can tell him why.
The zombie launches a fireball past your head.


14 08 2008

Two weeks ago I hit a problem with the physics engine I’m using. There’s an IgnoresGravity property for each physics body, which I set for platforms. As it happens, the moment I turn on IgnoresGravity for a platform, Stick Ninja himself will also ignore gravity. Oh GOOD!

I wrestled with that for a little while on my laptop up in Mt Shasta, away from the hustle and bustle of Internet, but found that lack of in-code documentation for this thing was making me do a lot of guess work that I really did not feel like doing.

Now I am back in Seattle, to find that my desktop’s HD exploded and is no longer bootable. The often delightful Spinrite was unable to get it working again after a 30 hour run (can’t fault it for not trying, certainly), so now I’m waiting on Newegg to deliver some goods. My laptop currently has approximately 5 minutes of battery juice remaining, and its charger resides at the lost and found of a hotel in Walnut Creek, waiting for the manager to drop it off at the post office. I am updating this from school.

So I am really pissed off at Stick Ninja right now and I kind of want to throw all the code I have out the frigging window. Rather than do that, I am going to stick exclusively to design work for a while until I no longer wish death upon it.

I have also kicked off a little side project with Overkill which is a sort of text adventure roguelike that is going to be as randomly generated as we can possibly make it. I’ll start posting updates on that as well.

Interplanetary Travel

17 07 2008

I’m using planets as a larger style zone divider. Older Metroid and Castlevania games have one large connected world (or castle), with a bunch of loosely defined zones within them. This worked well for Metroid, because the transitions between these areas were fairly subtle. They connected in ways that allowed you to believe that they were all part of the same planet. Castlevania’s zones worked because they all maintained the gothic castle vibe.

Later versions of these games started to have the zones become much more discrete. Metroid Fusion and Portrait of Ruin featured hub worlds that connected to smaller, (mostly) self-contained levels within them. The upcoming Order of Ecclesia has, from my understanding, an overworld map that connects twenty locations.

I have decided to use different planets for a couple of reasons.

First, I want to be able to play on riffs and variations of themes within a single planet. On Dyce 36, I want to mash up a slummy dystopian view of a futuristic society with a clean, glossy, sterile and white view of the same, in close proximity. By sticking these contrasting sorts of areas together in a single logical space, they will hopefully be connected in the player’s mind more tightly than they would be if they also shared that logical space with a dinosaur theme park built inside a volcanic crater and a snowy mountain populated by death metal yetis.

Second, I want a metaphor for fast travel that allows people to quickly revisit areas that they’ve been to before without hoofing it around. Castlevania has warp rooms, which eased the pain of backtracking somewhat, but Metroid leaves little recourse for a player who wants to travel long distances. I also wanted a metaphor that would allow me to avoid save rooms. This second point is what I wanted to talk about in this post. Please forgive me for taking four paragraphs to get around to it.

In Stick Ninja, your ship acts as sort of a hub. There’s a large room that has holographic representations of every planet that you have access to, and from here you can set your ship to travel to the planet of your choice. Once you’re in orbit, you can beam yourself down. Planets have several waypoint markers that you’ll run into as you’re exploring, and each time you find one, it gets added to a list of beamable locations from your ship. You can beam back UP to your ship from any location, but you can only beam back down to waypoints. When you die, you’re beamed up. Simple as that.

Something I didn’t like about the discrete areas of recent Castleroid games is that there were very few “Oh COOL” moments when you found a path connecting two areas that you didn’t know about. There are very few of those moments because there rarely ARE paths connecting these areas. Metroid Fusion had one or two that I can think of, where you were climbing around in an air duct in one area and came out in a joining one, but it was rare. Nowhere to be seen was Super Metroid’s awesome big glass pipe that could be destroyed from the inside to give limited early access to the water zone. So I think this planet system needs to have a few twists.

Something I thought of, which I may or may not decide to use: maybe there is an existing network of teleportation devices on the planets that can take you to areas on OTHER planets that are not otherwise reachable. The catch to this being that since you are being teleported to another planet, your ship is still in orbit around the one you just came from. This means that you’re out of range. You can’t beam up, you can’t upload waypoint coordinates, and when you die you’re toast. This is not a developed idea yet, obviously.

The Katana

10 07 2008

SN begins the game with his trusty katana. It’s a very deadly up close against squishier opponents, but obviously has some shortcomings when facing an armored foe toting a machine gun.

Successive well-timed katana combo hits will keep an enemy frozen in place. The timing for the continued combo hits will get trickier the longer your chain is, and occasionally something unexpected might happen: maybe you’ll disarm your opponent, maybe you’ll dishead your opponent. Maybe you’ll suddenly spin around and roundhouse him off a cliff. Maybe you’ll swipe with a wakizashi and get a killer finishing blow. As your katana combo increases, the likelihood of a beneficial event occurring will increase as well. I think I’m going to make these more or less random.

Perhaps you are wondering why you would ever use a katana in a game where you can have a rocket launcher. I’m glad you asked! While I find physical pummelings very satisfying in video games, a good argument could be made that I will be giving the player a weapon that is quickly obsoleted by even the most rudimentary of firearms. However, the katana is going to be a very important method of terrain traversal: you use it to wall jump.

Much like Super Metroid, Stick Ninja contains the ability to jump onto a wall and then use that to jump even higher. However, in Stick Ninja, this is achieved by stabbing your katana into the wall while you are mid-jump. You can then push off of it and pull it out behind you as you jump. The off-the-wall jumps aren’t going to allow you to jump as high as a regular jump, but you can jump a bit further as a trade-off.

One of the first buildings you enter on Dyce 36 is going to train this behavior, and I intend to keep it in use throughout.

Physics integration: getting somewhere

7 07 2008

I am approaching a place where I have Physics2d.net integrated with Carot in a coherent sort of way that will allow me to begin bouncing around environments.

It has a feature that allows you to create vertices from a bitmapped sprite, which at first seemed like a pretty awesome idea, but then I realized that, since we are dealing with a rather sparse stick man for a main character, situations would arise where you would land one foot on a platform, rock backwards and then find yourself stuck with a girter wedged in your stick crotch. It also occurred to me that players would probably be less than pleased if a bullet struck their bandana and it was treated as a collision. And then I realized that I was going to have to have a vertex set for every frame of animation if I went that route. So for now I’m opting for hit rectangles on sprites, unless I can talk myself back into it.

Platforms, however, seem like they would be a good fit for sprite-based vertices. I could have all manner of wacky shaped slopes and whatnot and it will handle it. I’ll experiment with that when I’ve got something boring like jumping in place on a single platform working.

New Blog.

24 06 2008

The original Stick Ninja blog is still available.

Why move this?

Well, a few reasons:

  1. stickninja.blogspot.com is taken.
  2. It is summer now. After failing miserably at the simple task of posting one meager update per week as per the Gruedorf Challenge rules due to my schoolings and such, I have decided to take the summer largely off with the intention of working on Stick Ninja, Cabedge, and now Pulser. With this clean start, and since I have moved away from a lot of the things I posted on the old blog, I am just starting afresh. Is afresh a word?
  3. This theme is awesome.

So join me, my friends, as we re-embark on a troubled journey of a young aspiring game designer who is making things up as he goes and hoping against hope that it turns out playable.