Showing posts with label crystal towers 2. Show all posts
Showing posts with label crystal towers 2. Show all posts

Monday, October 29, 2007

Crystal Towers 2 - First Boss

Well, I have to say that I'm beginning to regret not buying a whole lot of furniture last Spring. But at least Boston's decisive win against Colorado in the World Series (which doesn't actually invite competition from more than one country) means that there won't be any massive crowds of people in red shirts during my commute home in the next while. It's almost enough to get you to start caring about baseball - I'm only vaguely aware that it's nice that a team that previously seemed to be totally useless have won twice in such quick succession.

For carefully thought out attention-getting reasons, I'm going to stop putting Crystal Towers 2 progress posts exclusively in its own journal and include them here under a tag instead (I'll backdate them when I shovel over the rest). To give the best impression of what the game looks like to date, I have hit a new low and posted a video on YouTube.

This video shows a weekend's work on the first boss of the game, which I finally sat down and wrote after weeks of not doing anything. Most of the graphics are yet to be drawn, but it shows what the general gameplay of it will be like, and I'm rather pleased with the result. Bosses are very difficult things to program, needing a complex attack pattern based on several different states and branches, but I think this is the most competent one that I've done yet. The only bit of this one I'm not totally happy with is the large length of time that it spends just sitting on the ceiling if you destroy all the bouncing bombs quickly, so I might have to think of something to do there.

You can also see two transparent areas on the left and right of the playfield, which restore the magic points you have available. Usually you restore your magic in-game by picking up white vials, but this situation needs something to allow you to rapidly get back to full magic and back to attacking again, but I don't want them to make it too easy (particularly as you can also use magic to heal yourself, and if you have an inexhaustible supply the boss becomes impossible to lose to). I could either disable curative spells or make them affect the boss as well so that there's a disadvantage to using them. I may replace the restoring fields with one "magic field" that floats from left to right, then reduce the hit points of the boss a bit to balance things out.

The eventual goal of the game is to find eight instruments and restore music to the Music Castle (an idea that I only noticed I'd stolen from Zelda well into making the game). The instrument carried by each boss is random, and as luck would have it, on that attempt I got the only one I hadn't drawn. The name of the instrument is chosen at random, too, which explains the strange names that appear at the end of the video.

Tuesday, October 2, 2007

Crystal Towers 2 - New Display

The only thing worse than not updating for months is pointing out that you haven't updated in months. I'm thinking of just merging all the posts in this back into my standard journal under a tag, actually, as they're so few and far between that it isn't really worth the bother of logging in and out to post in it!

Anyway. The thing that I'm really excited about at the moment (and you'll think this is pathetic) is the rearrangement of the counters and icons around the play area.


Before


After

It's amazing just how much a few blue boxes can bring the look of a game together and stop it looking like a load of counters plonked onto the playfield. The best bit is the score and health displays - they expand to give room to each counter as they need them! No one's ever going to notice, but it's the little things that do it...

After that I went on a transparency spree (even though I did think that it made it look a bit "Crystal Towers 2 Vista" at first) and did a fade-in/fade-out that I copied from FFXII for the pause menu as well instead of filling the screen with really quite ugly scanlines that I copied from Kingdom Hearts.

Monday, August 20, 2007

Crystal Towers 2 - Combo Display



Even though I set this thing up as a Plus account so I could use the Scrapbook, I've taken to storing images on my other webspace instead because it's so much easier than going through fifty different pages just to upload a picture and then find out where on earth the link is.

What you can see above is an early version of a combo display system, which shows the things you've hit during the time in the air. I've improved it a little since the screenshot was taken, with a counter at the top saying how long your string of enemies is. It looks great (if only slightly reminiscent of one of the Tony Hawk games), although I can see how some people might find it irritating to have it there constantly so I'll probably add an option to the main menu to allow you to turn it off.

The real point of it is to allow you to more easily identify what you're doing in the "Get a combo of X points/enemies" missions. With that in mind, the aim now is to fix it so that the result you actually get at least remotely resembles what's shown in the string - somehow I'm using a needlessly complicated formula for working the whole thing out, but I think I just about have it done in the latest iteration. What I really need to do is work out how to display the bonus given by hitting a spring, which is more torturous than you would have any right to expect.

That's the second Walnut Creek level, by the way. There are now six levels in all, but I never bothered doing the graphics for one of them and it looks like Tron.

Tuesday, August 14, 2007

Crystal Towers 2 - NVO Conversion Done

Surprisingly, the conversion to NVO has been going faster than I expected - after doing the saves I got started on the game's data files. Virtually everything is stored in comma-separated value files now rather than INIs, and they can easily be changed over to encrypted files by changing a couple of global events when the time comes. I've started writing a save game editor as well, so that saves aren't absolutely unmodifiable by me if I need to test them again. The only thing I'm worried about is the synth list, which works well enough for the most part but I'm fairly sure that it can't remove blank entries correctly (they can be set to 0, but can't be actually deleted from the file and will still show up in the count). Still, that can be dealt with later on as they only affect one frame.

The only things now remaining in unencryptable files are the list of players (which I'm not too bothered about because there's nothing to be gained from modifying it) and the little INI file that tells the game who the last player was, which just isn't worth converting over because deleting it will do absolutely nothing. The change was a good thing in the end because it allowed me to go over things again and correct them if I'd done them slightly stupidly at first. Little things like the synth items relying on their direction to decide what type they were instead of storing it in a real value, and so on. And now that the conversion's done, I've been experimenting with allowing score sheets to be uploaded through a mildly insane conversion algorithm I put together - I'll link to one once I've got the page neatened up.

And with that out the way, I've finally got down to doing some planning of the way that the player will take through the game, when to introduce certain elements and what will be offered as rewards for completing each level. The OpenCalc file (or whatever it's called) has been growing larger by the day, and it's got to the point now where I would have no idea what I was doing if I didn't have a record of it all, so I have to be careful to keep the changes in the game in line with what I have in the plan.

I downloaded TFM Maker the other day, by the way, as recommended to me by Nim in the Clickteam chatroom - I'm trying to go for an authentically Genesis sound for the music, and even adding the drum samples from the Sonic games has brought an incredible mood to it. (Trouble is they're very quiet and I have to double up the channels because ModFusion doesn't understand VST effects...)

There sometimes seems like there's so much to do that doesn't visually progress the game in any way. But this time, things are definitely going ahead - I think I'm fairly safe to add a few new levels before the testers get their hands on this new one.

Thursday, August 9, 2007

Crystal Towers 2 - NVO, XML, CSV, other TLAs

To deal with the requirement of unmodifiable saves for the online aspect of the game, I've finally got down to converting the entire save system from INIs into using the Named Variable Object. This is probably the single biggest refinement I've put into the game, but it's going surprisingly fast - the level progress loading and saving is completely finished, and even the pause menu is about halfway done. The records of picked up items needs some work, as I'm going to have to decide on a way to make sure that I can keep track of what rewards are on offer for each level.

The great advantage of using the NVO is that, in combination with global "functions" called using fastloops, I can switch easily between human-readable saves (handy for testing) and obfuscated ones (for the release). Eventually, the level data will also have to be converted to NVO rather than INI so that it can't be modified either, but if I write a fastloop to do each of them, then I can switch them all over (pulling them through a conversion tool, probably) and just change the events to point to .CT2 files instead of the .CSV that I'm using for the plaintext saves. (I did try XML at first, but the Named Variable Object seems to have huge problems loading those up reliably).

In doing this, I'm consolidating the four very obvious plaintext files (items, progress, spells, synth) into one combined save file for each player. Items and Progress are easy to do - in fact, I've no idea why I decided that these should be separate files in the first place - but the real challenge is keeping track of lists in a format that only allows keys and values. I've done this for spells in a way that is dangerously close to pointer arithmetic, with an index value being added to the key name depending on where I'm reading from.

That's fine for things like spell lists, where you put things in and never, ever take them out, but the Synth list is going to need some extra thought. For removal, I'll probably have to hack in a fastloop like what they teach you when you're beginning to learn about arrays - take one out, copy the rest down one place, obliterate the one at the end.

So I have to try and not be disappointed that all this work is going to lead me eventually to being in exactly the same place that I was before - because after things like this are done, I'll eventually get to level-building. (There's another one on the way.)