Sunday, February 21, 2010

Why yes, I have been working on this thing.

Gonna go ahead and say Rouge is up to version 0.1.1
Think I'll release the damn thing when I feel I can do so without having to qualify a bunch of stuff. This is independent of how nice an audience I can find for it; I'm still going to want to say "hey yeah you should ignore these parts they're not very good and this part'll be better later on and I'm planning on doing X in a later version and I really don't have the infrastructure for Y yet but I'm working on it and..." because I have grandiose plans for it and its current shadow of things to come is, frankly, kind of embarrassing.


Speaking of plans, let's talk for a quick bit about the least-substantial part of the game design process that I let myself do a bit too often: talking about Great Ideas. You can spot one of these the instant someone says "hey you know what would be awesome in a game?" or "I think one of these days I'll make a game where..."
These types of ideas are pretty much less substantial than a glass of water to a starving man. The more time you spend tooting your own horn pontificating about how awesome the idea is, the less time you spend actually doing anything with it. An idea on its own is nothing. It's very hard to get people excited about this cool idea you had. For fun, I think I'll call this Peter Molyneux Syndrome.

Anyway, time to go against what I just got done saying and tell you all about this kickass idea I've got in my head (where are you going?).

When I design stuff like this in my head, whether it be games, stories, movies, or whateverelse, I like to think of the very last scene way, way in advance. This lets me set things up ahead of time that I'd like to have in place by the time I get there.
For example, Rouge.
The battle-forged hero races up yet another flight of stairs in this ruby tower. The evil archmage sits on his throne atop the nearly-empty hundredth floor, awaiting his arrival. As the hero climbs, the background music fades through progressively-heavier remixes of Chrono Trigger's Undersea Palace. When he reaches the top of the tower, the music cuts out briefly; silence washes over him for a brief moment before the ultimate battle begins.

...
YES I just used the word "ultimate" properly.
YES I'm going to use Undersea Palace for my final dungeon; I freaking love that song

Anyway
What this does is necessitate a couple features. I'll need to be able to play music in the game (yes, a roguelike with music. Deal). I'm going to need a way to generate several different kinds of level, as having EVERY level be a rubycolored towershape would be a little too obvious. I'm going to WANT to give the player a way to get out of a dungeon extra-quick, because that's starting to get ridiculous in terms of tediousness.
That's... actually about all that it implies I'll have to code, other than the obvious (magic needs to exist, I need to have stairs, etc.). I just think it's a Cool Idea.

More Cool Ideas:
  • Multi-tile enemies. A dragon could be a three-tile-by-three-tile "D". (this is probably going to be a complete bitch to code)
  • The ability to, occasionally, if you're fast enough, dodge projectiles and/or spells. (easily doable with [actually implied by] the scheduling system I've got)
  • Overall world map stored separately from individual character savefiles. When making a new character, the option to generate a new world or keep the old comes up. The overall shape of the map, locations of dungeons and towns will be kept. This'll provide an option for consistency from game to game, while still keeping things fresh by having dungeons generated randomly. (no, I'm not even close to having a world map, or even towns)

... I should probably not post these things without proofreading at three in the god-damned morning?

2 comments:

  1. I know absolutely nothing about coding and what not, but for making the three-tile D, what you should probably do is make your own three ascii characters that make up a d when vertically aligned, and then group their movement. Probably just give one tile's movement x=the result of your movement algorithm, and the other tiles' movement equal to the first tile's x. I don't know about how fast those sorts of relays will happen in the environment or whatever you're coding with, so I don't know if that would make part of the dragon noticeably move ahead of itself or not.

    The interesting thing to me is that you basically have three places where you can hit the dragon, which would, in my idea, be not a large enemy but more like a coordinated swarm, but you want it to act and feel like just one large enemy, so how you would do damage and death of the dragon could get tricky. However, what you could probably do is the same thing with the movement, set the hit points of one tile equal to the battle algorithm, and the other tiles equal to whatever the other tile is currently at.

    The problem with this is that if you don't know which end of the dragon you're supposed to hit, you could spend hours attacking the wrong tile, and the tile's HP variable staying at 50 the whole time, because the correct tile has never been attacked. I'm sure there's a pretty simple workaround for this involving less than signs or something, with all the tiles dependent on each other's variables, unless one variable is larger than another one, in which case every tile goes with the lowest number (to stop from hitting a tile, making the HP variable go from 50 to 48, only to have it immediately cycle back up to 50 because the two other tiles are at 50), but it's frankly to late for me to use logic.

    Also, I like the world map idea, but will it be that your only choices are keep the previous game's map or generate a new one, or will the world maps not just be stored separately, but have a separate save file system? So, say you have an overworld map that you really like, but you want to switch things up a bit, but you plan to come back to your old favorite, will that possible?

    And once again, let me stress that I'm speaking from a background based solely on hanging out around people like you and some programming in basic on my TI-83/84 in junior year math class.

    Good times. I made a program that would generate a random letter in a random part of the screen until the screen was filled up. I had to type out a 6 line thing for each letter, in BASIC. What I wouldn't have given for a copy/paste ability...

    ReplyDelete
  2. Ahh TI-BASIC, that takes me back...

    Anyway, I've already got image stretching down. So what I can do is just say "give me a supersized 'D' and put it at the right spot". So I can have this threebythree D be just a single Enemy in the game, which GREATLY simplifies the logic. That said, it's still gonna be a bitch to do, because I'll have to do collision detection on it for several things.

    Actually... An idea for how to do this without killing myself comes to mind, but I don't know how well I can explain it.
    Well, I'm going to anyway, just so I don't forget :P

    When I move a Character currently, I see if I can move them and then do so. Moving them entails setting the Character on the tile they're currently on to a NULL value, updating their position, then setting the new tile's Character to be the Character that just moved.
    What I can do for multi-tile Characters is have a function to set all the tiles they're currently on to some Character. Use that function to NULL out the tiles they're currently on, see if they can move and if so move them, set the tiles they're on now to themselves.

    I'm not going to apologize if that doesn't make any damn sense; that un-bitch-ifies things significantly.

    It's completely doable to have multiple World-saves. The options'll be: a) use last map b) make new map c) use other existing map
    That order? Who knows.

    ReplyDelete