Thursday, August 28, 2008

The competition, she heats

First: I am totally glad that suddenly there's lots of terrifying Gruedorf content that is awesome and intimidating (deferred lighting! 3D engine releases! SpriteWright!) I'm still going to beat all of you, but I like an honorable victory, yo.

Second: Let's look at last week's goals.

- Finish the enemy spawn code/add all combat zones.

Done, at least for the desert map, except for some weird treasure-chest side branches. It occurred to me at some point while doing this that it's silly to have a desert map that functions as a maze, since the point of a desert is that it's featureless and terrifying. In Chapter II you get to actually go further into the desert at some point and I'll make a more open-ended non-linear desert map because I really don't want to change this canyon-like thing at present.

Finish all of the enemy AI/stats for the desert enemies plus the jail guards. These can and should be tweaked later but every enemy should be at least playable.

Not totally done. All but one of the regular desert enemies are playable--that one won't take really much work to set up; I'm just not into scrabbling around in the AI files right now. The town guards aren't done, but they don't really have a lot of AI: they're supposed to be horrible enemies that you want to avoid fighting because they'll probably kill you, so really all they need is an unfair HP/ATK/DEF rating and the ability to summon reinforcements when they're alone. Coding the ability to summon reinforcements will be horrible so I may, um, defer that for a while.

- Add a generalized chest function, make chest/jar tiles and put some treasures in the game.

Done! Only two irritating things with this: some of the maps (blackmoss) don't have the chest tiles in their .vsp and I don't want to add it until I overhaul the entire VSP and map (sometime after the game's playable.) Also it's a drag to have to manually test/reset the chests on mapinit--it'll be fine once it's done; it's just a boring task to set up.

- Block out the jail map. If time, put in the link to the cave map after.

Didn't do this at all. Probably next week's project is just to build quickie versions of these maps.

- Do some drafts of the story elements in the jail map--these are probably going to be the trickiest to write since a lot has to happen fairly quickly and without too much exposition. If time just draft the whole rest of the release--I think there are only like two or three story sequences after the jail stuff, plus some little lines here and there.

A lot of this is done; the story now takes you up to the requisite Unwinnable Boss Fight. After that it's just some quickie scenes in the cave, the Winnable Boss Fight, and the ending. I'm going to save writing the ending until everything else is coded and working reasonably well just so I have something plot-wise to look forward to.

Pics or it didn't happen, eh? OKAY:


I revised the equip menu a little and added an overlayer and underlayer for all menus. This will make it easy to make all of the menus cooler and visually distinct, possibly with little item icons etc. Right now I just have these done. There's now a third accessory slot to give you slightly more customizability, since I want the game to be full of weird accessory items that do all sorts of zany things. The equip menu has major bugs but sort of works some of the time.


A treasure chest, with a bandage inside! Bandage is actually a piece of armor, which I should, um, make clearer somehow.


The BP system is mostly done, although not really tested. The last major feature to implement is the "storage" ability, where you can auto-allocate BP to any of your stats: the code is there, but it doesn't actually do anything yet. Basically it's like with every experience level, you get five to whatever stat increases, and you buy them as you progress toward the next level. Once you run out of increases you have to accomplish some kind of ridiculous task to gain your level: in this one I think it'll just be like (1) kicking some guy's ass and maybe (2) solving a quickie block puzzle in the cave area. I can see obvious problems with this system but hopefully limiting the number of stat increases you can get in this way will resolve a lot of them.

Eventually (like, Chapter II and beyond) it'd be cool to have different guilds that you can join that allow you to increase the growth rate of certain stats. Right now all of the code is there to manage the growth rate of stats by rank, so characters are basically differentiated by their starting rank: Chocolate has a high speed/evade and psi/will growth rate, but a low atk/def growth rate, whereas Cass has a high atk/def but sucks at everything else. The idea is that characters can individually go through retarded guild initiations later on to increase their growth rates forever. Plus it's totally cool to force a character to join the merchant's guild and shit. This will allow me to, um, pad chapters where there isn't a lot going on in terms of actual plot.



Here's an enemy, spawning perfectly on the map! Awesome! (Note the new, better sand tile.)


Here's that enemy trying to kill you! Note the two new pieces of art: the battle background by me and the enemy art by Xerxes Verdammt. There are two other pieces of enemy art in-game right now that I'm not going to show you, but they're rad.


Now that the enemy spawn code is in the game it's possible to face randomly-determined, horribly overwhelming odds. This actually isn't as bad as it looks just because at this point I've abused the BP system and exploited the bug in the equip menu that lets you equip the same stuff over and over for stat increases every time. (This is hopefully the last of the placeholder enemy art to get rid of.)


This, however, is totally horrible (Loping Legs just wails on you), and these jokers killed me like that. That's how I found out about the huge bug that crashes your computer 25% of the time when you lose a battle!

Now that I have battles to play around with I'm learning about how not to design enemies. I talked with the guy who made this (you should really play that; probably the best independent RPG currently out there if you likes your jrpgs) about balancing stats/money/etc. He gave me really good advice (set up a global "exchange rate" between literally every stat/status condition in the game, and make sure you obey it exactly) that I totally haven't implemented yet because I'm not sure exactly how some of the later-game abilities are going to work. But here's a pro-tip: if you increase an enemy's HP, don't also increase their attack stat unless you want to ramp up the difficulty a lot. (Especially if you're working with stupidly small numbers like me: Chocolate's starting ATK value is 3 right now.)

Also: I started work on the save/load function. Currently it saves the current version number of the game. And I registered a domain name, currently it just points to the RPGCreations home page, which is the former name of the game company I'm in, etc. etc. Since we're changing our name I'm changing the site name. It'll come in handy for hosting this game, as well as setting up like--an actual portfolio so that I can find some kind of decent-paying work. If I have to I'll just go back to the bookstore for a while, but I'd like to avoid that since it's a long cold subway ride into Manhattan every day.

(Oh yeah, um, I quit my job also since it was driving me insane. If any of you like--know someone who's looking for a tech writer for contract work, hook me up, yo: jwthornton aaaat gmail dot com.)

I want to say there's something else I've done but I can't remember, so it's probably not important. Next week, the goal is just to work on tiles, make maps, and finish story up to the end of the game so that I can get a mostly-working prototype to Longe and the music can get finished up.

I pushed the version number up to .34 -- at .4, all of the battle commands are in and working. That's going to be a bigger jump than I thought because right now I handle status effects very stupidly, and I'm going to need to change the way that functions altogether. If I get the basic prototype of the game done then I'll start finally hammering at that.

I think that testing at least can happen by October. That makes something like 4 months of dev time, start to finish, for chapter I. I believe it!

Oh yeah, and I'm also working on another project. This one should be done like--next week, since I have a lot of free time, and I can upload it to verge-rpg and be done with it. It is something that I think is needed and something that everyone will like. Here's the best screenshot ever:


Thursday, August 21, 2008

I have always thought in the back of my mind, cheese and onions

Do I have to spell it out? Not a great week--most of the work I've been getting done lately happens in the day or two after Gruedorf posts when I'm still freshly embarrassed about not having much done. It's a good way of guaranteeing something to post, but not a good way of say actually finishing this first release.

Anyway, here are shots:


New title sequence. Not totally done yet, but features the "crawl" effect and a weird cinema bars effect. Coded some camera scroll functions as well and added them to the story sequences throughout, so they're closer to their final form. Still needs work, in particular a "cinema text" function using a larger, whiter font, plus a credits function. But it's better than the previous method of just throwing up an arbitrary .pcx and a systems menu, and sort of gives the game more personality.


Enemy spawn code is so close I can taste it. Currently it works, enemies stalk you (which is frightening, once during tests I ended up letting two of them chase me all over the map), and battle only gets initiated once by a given enemy before the enemy gets de-allocated. I started designing some enemy spawn groups and testing the map to make sure you can't see spawn points before the enemies actually spawn, as well. I don't want to put the code in to test the different spawn/despawn areas before two big things happen with this:

(1) Find a better way of entering/exiting "enemy zones." Right now these are literally just lines of zones that call a function when you step on them, which causes problems if you just dance around on the zone border without actually letting the enemies show up on screen and things. Pretty easy to solve with a global variable--I just want to avoid having to make up a gazillion different function names for every map with enemies on it, like "loadCombatZone1" or something. But I doubt I'll actually be able to avoid this.

(2) Fix weird, horrible array problems. I know this involves off by one bugs (allocating multiple enemies to the same index for some reason, skipping indexes in what should be a block of entity slots) but I haven't taken the time to track it down. It's just something stupid with my math/program flow and then it'll work perfectly and our long national nightmare will be over.

Also, for what it's worth, I laid out all of the desert map obstructions and did a couple of new tiles which will get revised like crazy eventually. But it looks a little bit less totally awful now. I also finally, finally linked up all of the Tack interiors to the exteriors.

When the spawn code works, it makes the game significantly more interesting to play, and gives me at least a little bit of a feel for how annoying/enjoyable leveling and gold-earning is going to be so I can start tweaking that a little bit.

Mapped out the jail map as well in notebooks. That's going to be a headache to build just because it leans really heavily on the map spells system, which currently works but which gives the player much more freedom than he/she would normally get in these games. The map has to be designed to make it possible to get through all of the required puzzles without leveling up your map spells at all, but so that you have to level up to make some chests accessible and to avoid certain fights. My rough draft works well in principle but it's going to require a bunch of testing and tweaking as far as the actual tile-by-tile layout goes.

I also need to make one critical change to the way the map spells work: a generalized effect for entities, and a check for entity locations when the code confirms whether or not you've hit a hotspot. This'll make things easier for future releases when some of the map spells get more entity-specific, as well as make it possible to do things like trip randomly spawned enemies for combat advantage or to duck by certain areas.

The to-do list as far as systems for the first release go:

- Enemy spawning
- BP manager
- Level-up function
- Map spells/prayers in combat
- Map spells work on entities

That should be it, and it's less work than it sounds like (I um hope.) The only fly in the ointment I can see would be weird issues with rendering layers when coding the bp manager and the battle map spells.

Goals for next week:
- Finish the damned enemy spawn code. Put all of the enemy spawn zones in.
- Finish all of the enemy AI/stats for the desert enemies plus the jail guards. These can and should be tweaked later but every enemy should be at least playable.
- Add a generalized chest function, make chest/jar tiles and put some treasures in the game. The item code is all done; this is just a matter of changing some tiles and setting some flags (and doing it in a generalized way so I don't have nightmares about this crap.)
- Block out the jail map. If time, put in the link to the cave map after.
- Do some drafts of the story elements in the jail map--these are probably going to be the trickiest to write since a lot has to happen fairly quickly and without too much exposition. If time just draft the whole rest of the release--I think there are only like two or three story sequences after the jail stuff, plus some little lines here and there.

Should be reasonable for next week. Discipline must be achieved in all of this nonsense.

Thursday, August 14, 2008


Not a great week but not as stupid as last week. Doesn't show up in the shots that much, but still:


New story sequence, the last major one in town. Still not finished by any means


This is the meat of the update (not the totally shitty hill tiles): the enemy spawn code. Basically this is Earthbound's system of throwing a set range of randomly generated enemies at you when you reach certain zones on the map, then erasing/reloading that enemy spawn when you backtrack to ensure a continuous, brutal population of beasts for murder.

Currently it does not ensure a continuous, brutal population of beasts for murder. Currently it spawns three to four random enemies once. When they're dead it takes three to four random townspeople and changes all of their code to enemy code, so you can imagine the citizens of Tack turning into giant rats and attacking you when you try to buy potions and stuff.

Yet it is getting so close! Finish this, finish stat growth, finish the game. I'm no longer worried about future programming tasks so much as I'm worried about art, which is great.

Thursday, August 7, 2008

Relax, Said The Night Man, We Are Programmed To Receive

Moving took two full days; unpacking two more. We had to move a probably dead man's belongings out of the new apartment (chess pieces and roaches under one of his chairs, mysterious gold coins in his dresser which was split in two like an axe had done something terrible.) Still haven't fully unpacked and then had to fly out to Los Altos where I'll be for a week or so more. I guess Grue lives around here, according to back Gruedorf entries? I can understand why his gruedorf updates have become alarmingly infrequent, his former bark so much worse than his current bite. The California life is soft, the air easy, killing. The twin stenches of death and jacarandas float upon the air and motivation is hard to come by to say the least.

So I didn't get that much done this week, no. Furious about this but I've got to get caught up at work. I managed to find old copies of the two corrupted maps and sort of rebuild them to the point I want them to be at.


Putting that stupid mountain in place again counts for pretty much all of my gruedorf hour to begin with. (Query: is there a hotkey for changing tiles? If so, what? If not, why not?) I also did some other mountain tiles as "borders", mostly on the desert map. They aren't in any screen shots because they look horrible and embarrassing so far. Added some frames to unfinished sprites, fiddled around with tile layouts, wrote some code for Secret Of Mana style map-switching (where you run off of the current map, cameratracking = 0, while it fades out.) It's all a bunch of stupid stuff like this that needs to get done eventually, dusting and shining instead of just cleaning out the damn closet. Admittedly I had "waste of a good week" written on my old todo.txt file for the game this week, but I'm still behind on my current plans and basically things is low. More coding needs to happen so I can actually finish up the game systems and feel comfortable with just going full-out onto content.

In short, this update is valid (over one hour/week of gamez work), and yet it is deeply no good. Better one next week when I get used to this restful poison, maybe when I'm actually caught up at work.