Monthly Archives: July 2006

Version 286

Updates:

  • Implemented particle effects for the various types of attacks and abilities. I decided that sprites simply weren’t enough; these animated effects are much better.
  • Title music continues to play during character name entry.
  • Battle log now has proper word wrap.
  • Encrypted the data files. It’s a very simple encryption, and any programmer will be able to figure it out. I was going for something quick and simple – my goal is to prevent the casual user from editing “game01.sav” or “chests.dat” or “bosses.dat” in Notepad.
  • Player names 2-4 can show up in dialogue and cut scenes now.
  • Bosses and NPC’s have shadows on the overworld.
  • Weather continues to move during attacks. This was a tough one.
  • Antidote item cures poison for one character.
  • Maps now have room for 30 door tiles instead of 20. This is important because most doors will be 2-4 tiles wide.
  • Fixed water darkening at night to allow curved boundaries between grass and water.
  • Got rid of brief weather glitch when loading saved games.
  • Cut scenes can take place at night now, when I specify it. I also put in an option to have cut scenes take place at the current gameplay time, but I haven’t tested that yet.
  • Changed tile sprites to one big array. This makes the code much cleaner and easier to work with. I ran some tests to see exactly how many tiles I can practically store in memory, and I found that there is essentially no limit. I ran the game with 2,000 tiles loaded into memory, and I think it used up an extra 10 megs of ram. No big deal. We actually have graphics for about 50 tiles so far.
  • Changed the way foreground works. Now you can walk behind large multi-tile objects like trees. However, I had to sacrifice a previous feature to get this to work – now you can’t walk behind -small- objects like NPC’s. I’m okay with that. It was buggy anyway.
  • Made the rest of the fake solid tiles. Basically, these are tiles that look like a neighboring tile, which you can normally walk on – but for these ones, you can’t walk on them. I’m using these in combination with layered effect foreground tiles to put objects on any possible background. This way, the same NPC can stand on grass, carpet, or whatever. There are four fake tiles – one that looks like the neighbor to the left, one that looks like the neighbor below… you get the idea. These are very useful for map making.
  • Optimized the “darkened” function some more. This small function (about 20 lines of code) is the most important routine in the game. It is used to draw almost every pixel you see in the overworld. Lets do some quick math. The screen is 16×12 tiles in size, and each tile is 40×40 pixels. I’m aiming for 30 frames per second. So if the “darkened” function is used to draw each pixel you see, then it is used 16×12x40×40x30 = 9,216,000 times per second. As you can see, those 20 lines of code have to be as efficient as possible. I’ve almost got it the way I want. I’ll make a separate post about this soon, because I find it very interesting.

To do:

  • Take away setup option for “slow PC.” There’s no need to cripple functionality to get it to run smoother when it already runs good enough on my 900mhz.
  • Night sounds.
  • Rain sounds.
  • Desert shouldn’t have rain or clouds, but should have night and night sounds.
  • View world map.
  • Help feature from title screen.
  • Lightning.
  • Encrypt the graphics.
  • Optimize more. This will always be on the to do list. I like going back and forth between adding new features to the game and optimizing old features. It keeps the old code from getting messy as new things get added in.
  • Make battle damage more visible. I’m going to make a new font for this. It will be easy, because the font will only need numbers.
  • Make battle log more visible. This is all about the timing.
  • Test cut scene “run at current game time” feature.
  • Make a walkable invisible block. This is going to be used behind things. Why draw a tile of grass if it’s just going to be covered up by a tree anyway? It’s more efficient to have an invisible block there.
  • Investigate Error 11 that sometimes happens upon exiting the game.
  • Get weather & night check out of the “darkened” function to speed things up approximately 1 fps.
  • Optimize darkenedhalf, darkenedwater, and any other functions (grayscalemap, darkenedmap, etc.) the way I optimized “darkened”.
  • Allow longer enemy names. Right now, I think 8 or 9 characters is the limit.
  • Fix circle particle effects by using circles as sprites.
  • Use different sounds for different “bashes”. There are 20 different types (ice, fire, slime, and so on), and it would be cool if each sounded different. Or, at the very least, there could be around 10 different sounds that get used (small ice and big ice can sound the same, etc.).
  • Change character sprites to arrays.
  • Change enemies to arrays.
  • Add another foreground layer to allow trees in front of trees. Hopefully this won’t slow things down too much.

Known bugs:

  • Screen blip after viewing map. Since I’m going to change the way the map works (it’s going to become a world map instead of local map), I’ll worry about this one then.
  • Sometimes there’s a loud environmental sound when viewing shop hours, menus, etc.
  • When loading a game near a door, the trail placement is buggy. I guess it puts the trail at the default start position for the map? I’ll look into this, but it’s not a big deal.
  • After choosing all player attacks, there’s a quick screen glitch.
  • The typesomething function is buggy. When asked to enter a player’s name, it often yells at you immediately as if you pushed enter without typing anything. Probably a simple fix.

Trees and particle effects

Rhonda started working on trees today, and they look great.  She already has one big tree finished with a tile-able trunk so it can be any height.  It will be relatively easy to use some of this tree’s tiles for smaller and bigger trees, too.

Meanwhile, I’ve been working on particle effects for attacks.  I decided that the actual attack frame – the slash, bash, whatever – should be animated. Since it’s not practical for me to do that with animated sprites for every attack type, I figured particle effects were the way to go. I’ve completed 12 different animations.  Each one is a burst of energy lasting 1/2 a second: bash, fire, ice, water, slime, dark magic, mystify, explosion, electricity, slash, whip, and tornado.

I haven’t actually put these into the game yet, mind you.  I’ve got my work cut out for me.  I also want to redo the way I’m storing sprites to make it more efficient.  I know exactly what to do, but it won’t be easy.  I should probably use this as an excuse to test my memory limits.  I really need to see how many tiles I can do. Rhonda made about 40 today!

Little by little

It feels like I’ve spent a lot of time on the game recently, but with little visible progress.  I guess it’s because I’ve finished the main skeleton of the game already, and now I’m just fleshing it out.  Making an enemy pounce at the player is minor in the grand scheme of things, but takes just as much effort as some of the major things I’ve already done.  Oh well.

So, I guess everything left to do is minor.  Of course, I’m still just talking about finishing the game engine – there will be many months of making music, maps, stories, and so on.  Rhonda worked on some graphics tonight, and Jason is pretty far on the enemy graphics.  I’m always excited to add in new graphics.  I have a feeling that Rhonda will still have a lot of work to do on the overworld graphics when I finish the game engine, so I’ll find myself waiting for her to catch up.  I predict that I’ll be using that time to work on the game music and planning!

Version 267

Updates:

  • Fixed overworld & battle sky. It now gets darkened appropriately as night sets in.
  • Fixed overworld water. It darkens better now. However, I’ll have to work on it some more, because this new method won’t let me have curved boundaries between water and land.
  • Implemented poison. The wizard has earned abilities Remedy and Remedy-All, and I’m also going to make an Antidote item.
  • Bosses are fully functional.
  • There can now be 20 door tiles per map instead of 10. I might add even more, but I’ll have to make sure it doesn’t slow down things
  • Players and enemies now have different attack effects. So far, there are run&slash, run&bash, pounce&bash, fireball, slime, arrow, and multi-arrow. The projectiles aim appropriately, and I really like the pounce.

To do:

  • Night sounds.
  • Rain sounds.
  • Special map type for desert which doesn’t have rain, clouds, or night sounds.
  • Different ability effects: boomerang, blast, etc.
  • Could improve the way it looks when items are used during battle: cure potions, etc.
  • World map.
  • Help screen from the title menu.
  • Chain to setup from title menu?
  • Lightning during heavy rain storms.
  • Title music should continue playing during character name entry.
  • Make a boat for cut scenes!
  • Tweak battle log word wrap.
  • Can environmental sounds be checked every second instead of every frame?
  • Encrypt data files.
  • Get player names 2-4 into cut scenes and dialogue.
  • Bosses should have shadows on the overworld.
  • NPC’s should have shadows.
  • Weather should continue to move during attacks.
  • Antidote item.
  • Make battle log and damage amounts more readable.

Known bugs:

  • Screen blip after viewing map.
  • Loud environmental sound sometimes when viewing shop hours, menus, etc.
  • Character trail is buggy when loading a game with the player near a door/entrance.
  • Screen blip after choosing all player attacks in battle.

Attack improvements

I don’t have any screenshots to share just yet, but I’ve been improving the battle cycle.  In previous versions, all attacks looked the same – run and slash.  I’m making the attacks more varied, little by little.

Right now I’m planning for four different styles of attack:  run and slash, run and bash, pounce and bash, and projectile.  There will be several different projectile sprites; a fireball will create a blast of fire when it hits the player, and an icicle will turn the player into a block of ice for half a second.

Those four styles of attack will allow me to do plenty of attacks/weapons.  Run and slash could include swords, axes, claws, and talons.  Run and bash will include punch, bash, crush, and club.  Pounce and bash will include pounce, divebomb, and jump kick.  Projectiles will have different sprites for fire, ice, poison/acid, throwing stars, arrows, etc.

In addition, I would like to have a fifth style of attack: the special attack.  Special attacks would include earned abilities and magic spells, and would be the most visually exciting attacks in the game.  However, I have to completely finish the four basic styles of attack before I can get to this.

Planning and random ideas

The game is progressing nicely, and I’ll put a public demo on here soon.  I might wait until I have the intro story and real first map.  Or, I’ll just wait until there are some new graphics (trees, in particular) to create a decent sample map.

I’ve done some basic planning for the story and world.  I decided that the game will be linear for the first four maps or so – this will give you some time to build up your party of four characters and get used to the game.  Once you have all four characters, you’ll have access to essentially the entire world and the game wil get less linear.

Anyway, what I have so far basically goes like this:  you start in a forest, with instructions to visit the temple in the mountains to the north.  Along the way you stop in a town (gain one character), save a girl from a monster (gain another character), and meet a man who lives in the mountains (gain another character).  In the temple, you have a vision which reveals your main objectives for the game.  It may involve searching for magic artifacts, but later on you’ll find out that it was just a test.  From this point on, you can go just about anywhere.

There will also be various good deeds you can do throughout the game.  Most of these will take place in towns, since that’s where most of the people hang out.  It might be something as simple as giving GP to a homeless person, or it might be tougher like finding a missing child.  In each instance, you won’t get any sort of reward – but your karma will help you out later in the game.  There might also be “evil deeds” you can do to lower your karma, which would result in a different outcome later in the game.  The important thing is that you <em>won’t</em> have any sort of “karma meter” to indicate your progress.  I don’t want the character to think they’re getting rewarded for these good deeds.

The game might have hidden treasure chests for the completist player to search for.  They’ll be disguised as a bush or a boulder, but you’ll find something hidden within them.  People in towns might give you hints so you’ll know where to search for these.  Or better yet, there might be an item/artifact that helps you locate them.

I’m trying to think of ways to give the game more replay value.  That’s difficult to do with a RPG.  I could have hidden areas, as well as chests.  There could be entire hidden towns.  When you finish the game, it will tell you the percentage of secrets you found.  That way, you’ll want to go back and find the rest (maybe).  Another way to enhance replay value would be to make critical decisions for your character to make.  You could decide to be good or evil, for example.  That way, you might want to play the game again to see what happens if you make the other choice.

I might eventually throw in some mini-games to make the game more fun.  These would be located in an in-game casino of some sort, where you gamble for GP.  In FFL2, there was one scene where you got to participate in a dragon race.  You had to rent a dragon to ride on; more GP would get you a faster dragon.  The “race” itself wasn’t a mini-game per se, but it was a nice break from the standard gameplay.  Now that I think about it, Chrono Trigger had a race scene, too – and Windwaker was full of mini-games.  Maybe I’ll do some sort of olympics that you could participate in, which would include a bunch of mini-games.  If I don’t want to do a casino or olympics, I could even just put an arcade in one of the towns.  Or I could put a drinking game in one of the pubs!

Version 243

Updates:

  • The player’s name can show up in dialogue and cut scenes.
  • Improved the party trail. It’s not perfect, but I might accept its imperfections rather than rewrite the whole game.
  • Music loops in cut scenes.
  • Sounds play in cut scenes.
  • Optional night time in cut scenes. I haven’t done weather, and I probably won’t. The way I see it, most of the cut scenes will take place indoors anyway.
  • Optional grayscale in cut scenes. This is for flashbacks. To make it even better, I have the option of having a character appear in color while the rest of the scene is in grayscale. That way, our main character can revisit her past.
  • Abilities menu shows brief description of your characters’ abilities.
  • Got rid of “controls” menu. Options like that are done in the separate setup program.

To do:

  • Should environment sounds be updated every second instead of every frame?
  • Battle log needs better word wrap.
  • Night sounds: crickets, owls, and the occasional wolf. This will only happen on certain maps (grassland, forest, etc.)
  • Rain sounds.
  • This is interesting, but I think some maps should have day/night transitions, but no weather. In particular, I’m thinking about deserts. Even if a storm is scheduled to take place, it shouldn’t happen in certain parts of the world.
  • Lightning. I’m actually thinking about having the lightning bolt char the ground or start a fire wherever it strikes on the map, but that might be a bit much.
  • I’m thinking about possibly implementing a world map. It would show how all the local maps link together to create an entire world. I might even show the world map on a 3d globe, to enhance the feeling that this is a large expanse of land. It would be cool to combine the world map and local map into one menu option, with a zoom in/out feature. Of course, this is all extra stuff that I don’t really need to add.
  • Work on sky / battle backgrounds / etc.
  • The title music should continue during character name entry.
  • Bosses. These will be programmed similar to treasure chests, oddly enough. This is because they are both examples of tiles that 1) aren’t on every map, 2) block your way and 3) change after being encountered.
  • Need room for more doors per map.
  • Players and enemies will be able to get poisoned during battle.