I only mentioned GUI's to differenciate them from sprites. I didn't mention rooms because since they are, for all intents and purposes, static. I just singled out those 3 items because they are drawn over top of the backgrounds. So what I meant to say was, neither Rooms nor GUI's need to change. Using the upper left corner is a programming standard, and I see no reason to change that.
As far as the get and set commands, yes, personal opinion, it just seems right to me, probably because I've been programming that way longer than I've used AGS. It's safer for the data, and keeps people from writing when they should have be reading. Makes them really think about what they are doing. You can't accidently type player.SetX().
It's mostly about being consistant, and organizing everything onto base Casses to making finding what you want a bit easier. If I type "player." a whole list of everything I can do with the player Class pops up. With this, if I type "Media." everythiing I can do with music and sound appears letting me know everything I can do with music and sound. "Screen." will show me everything I can do with the screen. Fading, rawdrawing, so on and so forth. To me, it becomes more intuitive, and all you really have to memorize is the main Parent Classes, you then don't have to memorize everything that falls underneath it. It's a starting point. A reference. The same is true for Set and Get commands. Typing in "player.Set" will give me everything I can set on the character, while "player.Get" will give me everything I can get from the character.
What serialization does, in essense, is take the Class state (the instanciated object, and all data marked for serialization in that object) and saves it, this can be compressed. Yes, it will perhaps make the saves bigger, but using this will also allow for saving room data for over 300 rooms, currently the only real work around for the 300 room state save limit, is to use a global variables, and to me it seems silly to use a global variable for something that should be kept local. As you should always keep variables at the lowest scope needed for that variable. But since I really don't know exactly what the current save algo does, it was more of "have you considered this?" type of suggestion.
Now that you mention the two paths to reference things (both global and using room variables) it may in fact, be better to make the internal vectors private. Honestly, accessing the pointers though the rooms was an after thought that I tacked on, when I realized that it would indeed allow two paths to access, and isn't really needed since characters and objects would be global anyway. So I pull back that statement. However, to answer your question Khris, it would either return cEgo, or Null if cEgo wasn't in the room.
Gilbot... I actually already use something like this. Currently I have 45 seperate sounds. In order to work around the whole not able to label sounds. When I put a new sound in my sound folder, I add the sound to an enum in my Util module so I don't have to figure out what sound is what, espeically the sounds that I use over and over, such as the doors opening, and the rimshot. Similar to this:
Code: ags
Scotch: Regarding Sound.Play(id) this is also viable. I was just thinking of a way to keep the current commands as is, and just organizing them under a larger parent class.
And finally KhrisMUC, honestly though, any suggestion that is ever made is because someone has a personal need for it. Nobody would ever suggest anything unless they personally thought they needed it (or the engine needs it). Suggestions are all about personal opinions. So I honestly don't see what is very different from what I put up, than from what anyone else typed up.
After all, this is "Just things as I see it" and anybody and everybody is entitled to love it, hate it, or find a way to improve it. Howver, if I never mentioned it, then none of the above could even happen.
And finally (phew), Out of everything up there, the items I think are the most vital are the vector based storage. And I'll admit that most of the suggestions are based off of ignorance of how CJ actually implemented the engine, only he knows for sure exactly how things are done now, so I can only guess. So maybe I should change it from SUGGESTION to HAVE YOU CONSIDERED but that goes back to typing more than needed
.
As far as the get and set commands, yes, personal opinion, it just seems right to me, probably because I've been programming that way longer than I've used AGS. It's safer for the data, and keeps people from writing when they should have be reading. Makes them really think about what they are doing. You can't accidently type player.SetX().
It's mostly about being consistant, and organizing everything onto base Casses to making finding what you want a bit easier. If I type "player." a whole list of everything I can do with the player Class pops up. With this, if I type "Media." everythiing I can do with music and sound appears letting me know everything I can do with music and sound. "Screen." will show me everything I can do with the screen. Fading, rawdrawing, so on and so forth. To me, it becomes more intuitive, and all you really have to memorize is the main Parent Classes, you then don't have to memorize everything that falls underneath it. It's a starting point. A reference. The same is true for Set and Get commands. Typing in "player.Set" will give me everything I can set on the character, while "player.Get" will give me everything I can get from the character.
What serialization does, in essense, is take the Class state (the instanciated object, and all data marked for serialization in that object) and saves it, this can be compressed. Yes, it will perhaps make the saves bigger, but using this will also allow for saving room data for over 300 rooms, currently the only real work around for the 300 room state save limit, is to use a global variables, and to me it seems silly to use a global variable for something that should be kept local. As you should always keep variables at the lowest scope needed for that variable. But since I really don't know exactly what the current save algo does, it was more of "have you considered this?" type of suggestion.
Now that you mention the two paths to reference things (both global and using room variables) it may in fact, be better to make the internal vectors private. Honestly, accessing the pointers though the rooms was an after thought that I tacked on, when I realized that it would indeed allow two paths to access, and isn't really needed since characters and objects would be global anyway. So I pull back that statement. However, to answer your question Khris, it would either return cEgo, or Null if cEgo wasn't in the room.
Gilbot... I actually already use something like this. Currently I have 45 seperate sounds. In order to work around the whole not able to label sounds. When I put a new sound in my sound folder, I add the sound to an enum in my Util module so I don't have to figure out what sound is what, espeically the sounds that I use over and over, such as the doors opening, and the rimshot. Similar to this:
enum Sound {
sAxeHit = 1,
sDoorOpen = 2,
sRimshot = 3,
sExplosion = 4,
sSplash = 5
};
Scotch: Regarding Sound.Play(id) this is also viable. I was just thinking of a way to keep the current commands as is, and just organizing them under a larger parent class.
And finally KhrisMUC, honestly though, any suggestion that is ever made is because someone has a personal need for it. Nobody would ever suggest anything unless they personally thought they needed it (or the engine needs it). Suggestions are all about personal opinions. So I honestly don't see what is very different from what I put up, than from what anyone else typed up.
After all, this is "Just things as I see it" and anybody and everybody is entitled to love it, hate it, or find a way to improve it. Howver, if I never mentioned it, then none of the above could even happen.
And finally (phew), Out of everything up there, the items I think are the most vital are the vector based storage. And I'll admit that most of the suggestions are based off of ignorance of how CJ actually implemented the engine, only he knows for sure exactly how things are done now, so I can only guess. So maybe I should change it from SUGGESTION to HAVE YOU CONSIDERED but that goes back to typing more than needed
