Ok. I have not been idle, though I have not been writing a lot of code yet. This project is complicated, and as such deserves a little bit of design discussion. So, There is a list of things we need to do to realize the completion. Probably more than I list here only because I haven't thought of them yet, but the idea is straight-forward.
There are several elements to this project.
1. The Game itself.
2. The Character.
3. The Battles.
4. The Items.
5. The Skills.
6. The Statistics.
7. The Maps.
8. The Special Effects.
9. The Graphical User Interface.
10. The Physics. maybe.
11. The Common types and functions for all of these.
n. Whatever else that can be thought of.
Breaking each part down further reveals certain aspects of it that need to be developed. Think of each part as a separate entity or object that is and does one specific thing. I will break down the Character first to show you what I have in mind. You see as I break it down further and further it starts looking like the straight code that I write to make it into what I want it to be.
2. The Character
a. The Raw Data (variables) that stores the information.
i. a Character type
1. type tCharacter
Name$ as string
SkillsID as integer
ImageID as integer
SpriteID as integer
ModelID as integer
StatisicsID as integer
SoundID as integer
endtype
ii. a global array to hold all the characters.
1. dim chr_Characters(0) as tCharacter
iii. a function that initializes these things.
b. The Rendering of a character.
i. a function to render a character's image at a location
ii. a function to render the character's face at a location
iii. [whatever else you can think of really...]
c. The Creation of a character.
i. a function to add an entry into the array
d. The Destruction or Removal of a character.
i. a function to remove an entry from the array
e. Saving characters to disc.
i. a function to write a file that saves all the data
f. Loading characters.
i. a function that loads the data from a file
g. Accessing and returning values for a character.
i. this is pretty simple as you just use the array itself
EDIT: I changed my mind for theis next block, but didnt want to delete it altogether:
For now lets [b]NOT[/b] think about our character as we would like it to be in our game, because we can always add to this when we build the game, without redefining everything. Think of it instead as a base element, the smallest part before it can no longer be called a character. You might be wondering: 'how will a character have skills or statistics then?' That's a good question, because it wouldn't be much of a character without those things. So here is the proposed plan: We include an ID to an array of data that holds the characters Skills in the definition of a character, but do no more than that within the Character system. Why? because the character system doesn't handle all the plethora skills that there can be, let the game handle that, or maybe the modular and expandable SkillSet system itself.
So in the game we need to initialize the character system by calling the chr_initialize() function.
Then in the game we add the characters we want. Give them their stats and BAM no need to worry about how to create or delete one.
If we are unhappy with the skills we have, or want to add a skill into the game later, the skill system should have the functionality to do that. Then its just a matter of implementing it into the game. This would be especially useful to anyone remaking the the game, using the core functionality already written. All I'm doing is creating an RPG creator, to create our own RPG; leaving it open-ended to support all the brilliant ideas you guys can come up with in the game design stage. Right now we need to be in the game development stage, where we plan and scheme and then we can move on to world domina... i uh mean game design.
EDIT:
Ok so keeping the Skill separate from the character definition is proving to be a greater pain than including it, due to the limitations with DBPro, mainly the inability to have an array in a UDT. So the character system will include a system for handling skills and Stats, and that will be better... Though it does go against what I said previously.
This means that skills have to have hard-coded slots in the character definition. Unless anyone else can come up with a convenient way to dynamically add and remove skills from a character, I will do this and make say, 12 skill slots.