I have the alpha version of our character editor developed. I've had it built for quite some time, but due to my code-plan on how I will program the entire game, some minor yet important changes needed to be made! With all of this work on building a lightweight, flexible, and powerful scripting engine that could work for any project, I needed to remove data from our character definition structures so that it would stay flexible with the game. For example, the character editor allowed the game designer(s) to equip an initial set of weapons and equipment to any characters unrelated to the game player's party members.
This would have been just fine, however, we are adding different difficulty game modes to our game which will ultimately define not only which levels all characters (whether they be enemies or other NPCs), but also determine which pieces of weapons and other equipment can be found in battle. I could have easily just given the editor a slot where the players can set the weapons and equipment and items to drop (their drop rates as well) within the character definition editor, however, this would be inflexible since the difficulty modes are determined within the scripting system's variable accounting mechanism.
If we deicde to add or remove more difficulty modes over time, then I would have to go in and modify the characters' character definition code. Even if no changes were made, we would have to keep track of more data members: 1 set of equipment data per difficult mode which will add up in memory as more characters are added to a map at once. We expect there to be as many as 256 characters existing in a single map at once! All of this is handled within a scene rendering system, but still, that is a lot of scripts being processed at once.
We have striven to make this game seem somewhat like Diablo II in terms of gameplay. We want plenty of fresh and exciting gameplay and a deep, compelling story to keep the players playing --even after the end of the game has been reached. There are some differences between Diablo II and the Forsaken Realm (our game). For example, all characters will be given a spawn time in which the game will revive and reset characters and their data after a certain amount of time. This is so that the player is constantly fighting characters in all areas unlike Diablo II where they do not respawn unless the game is restarted. This is important since the players will need to travel through many hub-like areas a great deal. The pacing will also be different from the Diablo games since the player will almost always have multiple character in their party fighting alongside them.
Also, the player will not be fighting off any 20-something enemies at once by him or herself as seen in Diablo II! That would be spactacular, and thrilling with all of the special effects we are adding, but this is just simply too hardware intensive. We will have more like 12 or 16 characters onscreen at once, and usually 4 of those 12 to 16 onscreen characters will be the player and the NPCs the main character travels with.
Now, since there will be more people fighting with the player's character and less enemies to fight at a time, it is necessary to change the pacing. Our enemies need to be much more powerful than the enemies seen in Diablo II. Think more along the lines of Final Fantasy XII's pacing in which there are many occurrances where the player is fighting off 3 or 4 characters at a time with up to 4 other NPCs aiding them, but the battle is still tough!
We need intellegent characters in this game! Diablo II had some interesting AI worth noting, but our AI system resembles something somewhat partcial to the Gambit system seen in Final Fantasy XII. I had similiar ideas on how to do AI like this before Final Fanbasy XII came out in late October, 2006, but their system from what I have seen, looks very robust!
I am hoping that this new take on the situation will help reduce memory consumption, and improve performance.
No comments:
Post a Comment