A Scripter's Existencial Doubts

Started by DrakoShade, January 12, 2010, 08:48:33 am

Previous topic - Next topic

DrakoShade

A few questions have come to mind as I've read through the way RMXP is scripted, and I was wondering what the rest of you guys might think about them.

First:  Items, Weapons, Armors, and States are loaded as databases, and those applied to a battler are simply an array of ID numbers which point to where in $data_items, $data_weapons, etc. the scripts should look for information.  I find this to be incredibly limiting.  The question comes in this:  how much benefit could be gained by instancing these per application?  For example, what if that sword Arches had equipped was an instance of its own instead of a pointer to the database, allowing it alone to be modified without changing ALL swords with its ID number?  What if that Poison status effect could be stacked, and each copy of it on the enemy could be told on application who put it there (thus allowing the damage ticks to drain toward the actor, or generate Hate)?

What would be the overall gain vs. cost ratio, when you factor in what could be done with it against how difficult it would be to re-engineer, how much more load you put on RAM and processor, etc?  Would it be worth it?

Second:  Again, a question of gain vs. cost.  I've hammered what appears to be a workable method for adding variables to items in the data structure after it's been loaded.  Unfortunately, it requires splitting two methods in Scene_Title to add a Load_Database method, which can then be modified to add in other things between the load and the initialization of Game Objects.  It also requires running a loop for each type of object to be added:  want to add 2 stats to all battlers?  $data_actors and $data_enemies both need a .each do now.  Worse, after setting defaults with that loop, you have to go back and set individual ones that you don't want at that default with a scripted-in database.

It could work, but it would require a lot of effort, and it would be pretty hefty on the game's loading time and (probably worst of all) it would be quite incompatible with a lot of scripts.  Is it worth it to modify the database in this way, or should changes just be made to the Game Objects themselves?

Third:  Enemies could (using the above method) be redesigned to scale with level in much the same way that actors do, with tables defining their stats at every level (most likely populated with default equations, like the Actors' standard 50+5*level).  They could even be given inventories from which their drops are loaded, but to which they would have access in combat as well.  It could be rather cool if that Soldier didn't drop a Potion because he used it in round 4.  Is the coolness factor worth the pain?

(Here, insert a break in the train of thought, which today is sponsored by Amtrac.)

When it comes right down to it, making RMXP behave in the way I think would be cool would be a lot of work, and would break a ton of scripts because it would be a redesign of some major portions of the system.  As I am unlikely to ever complete my own game (I just enjoy tinkering with the system), is there really a point to building such a bulky system from the ground up despite knowing that users would then be forced to choose between my creation and virtually every CBS, CMS, and half the side-systems out there?

Should I do it anyway and release it when I'm done, even if nobody's likely to pick my work over everything else available?

winkio

First:  Yes, this can be done without any adverse game-time effects, but it would require much more scripting.

Second:  I'm not sure I quite understand, but if you are talking about adding new variables to objects at runtime, then that is not good.  All variables should be setup at load time.

Third:  idk, maybe a good idea, maybe not.

Originality ftw.  Go for it.

Blizzard

Ok, this is the problem. There are dynamic and static data in a game. Static data is the predefined stuff. That is not a limitation, it's a coding concept: static data and dynamic data. If you want to make the data classes dynamic, there are lots of script that allow that (i.e. creating completely new items, weapons, etc.). But then that data isn't static anymore. In fact, games that use that kind of system don't consider that data static at all. The base is generated or predefined upon start of the game, but the player himself creates new data that acts as static data.
Even if you just use modifies versions of of static data, you need some basic static data which you can work with. As I said, there are games who do exactly what you say, they create Game_Weapon instances (which is supposed to be dynamic data) and stuff like that.

Next thing. New stats can be added through a script with manually defining the values for each actor. You can either do a case-when branch depending on IDs, or you can iterate through all of it and add it manually, etc. The point is that RMXP wasn't intended that you do every possible thing with it. In fact the makers were probably quite lazy in that area and simply added generic stuff. Do you think Enterbrain thought that RMXP would become such a huge script support and vast amount of scripts created? No, they didn't. They limited RMVX by not allowing external DLLs, that's what they did. What we actually do with RMXP and its script is quite a perversion compared to the original intention. If you want to make "real" games, leave RMXP be.

Third: There's a script for that and it's quite simple. That's why RMXP has scripting capabilities: So you can make your own stuff.

In the end it all depends on you. Do you need that stuff in your game? Do you want that stuff in your game? Are you willing to spend some time on figuring out that stuff and coding if there are no scripts already available? If yes, then go ahead. If I had second thoughts about useful and interesting features I added in my game, it wouldn't be as much-sided and fun to play as it is. Remember, it all depends on how you want your game to be. I didn't want level based enemies in my game. I didn't want a weapon creation system in my game. I didn't want custom actors in my game. So I didn't add that stuff.

And remember, RMXP isn't meant to have all possible systems implemented or something like that. If you had ever worked with a "real" game engine, you would know that RMXP is quite limited, that it's good that it's that limited and that it's limited for a reason.
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

tSwitch

Everything that you mentioned is a niche script.

RMXP was developed to create a base, default RPG right out of the box.
If you want anything more than that, it's time to become or hire a scripter.

All of that can be done, it just has to be made.


FCF3a A+ C- D H- M P+ R T W- Z- Sf RLCT a cmn+++ d++ e++ f h+++ iw+++ j+ p sf+
Follow my project: MBlok | Find me on: tSwitch.us | Twitter | Tumblr

DrakoShade

Meh.  In the long run, I really just enjoy the challenges of modifying the system to see how far I can flex it without shattering everything.  As I said before, I highly doubt I'll ever finish a game myself.  I should probably keep my scripting focus to things that can be applied harmoniously by people who are actually making serious efforts at a game, now that I think about it.  My self-variables script might see use in somebody's game, and I don't even particularly care if they bother to put my name in the credits with that one, just so long as it finds a user who can do something spiffy with it.  A complete re-working of the system would be incredibly unlikely to be used by anybody but me, and thus becomes empty effort.

Blizzard

January 13, 2010, 10:37:00 am #5 Last Edit: January 13, 2010, 10:39:19 am by Blizzard
Don't be so hard on yourself. :) You can finish your game. You just need to stay determined. My game took 4 years and I didn't work constantly on it, but I finished it. :D
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

legacyblade

Yah, there's nothing wrong with completely revamping your game. It makes the game so much cooler if it's different than all the other RMXP games out there. If nothing else, just figure out what features you want your game to have, how you want them to work, and revamp the system to include these features. (that's what I'm doing, but I'm using lots of blizzard's scripts, modified by me though). It all comes down to what you want your game to be. If you WANT another cookie cutter that only uses the default RMXP features and no innovative event systems, then go ahead and make it. If you want to revamp the whole system, DO IT!! Even if it takes a long time, make a game YOU want.

fugibo

This thread has nothing to do with existentialism.

That said, look at RGSS as an introduction to programming. It's Ruby with a very easy-to-use (albeit seriously underpowered) graphics API.

DrakoShade

It's not a question of existentialism.  It's a question of existence.

tSwitch

Quote from: Longfellow on January 13, 2010, 05:40:25 pm
This thread has nothing to do with existentialism.


You're entirely right.
it's too bad, Existentialism is a great philosophy.



FCF3a A+ C- D H- M P+ R T W- Z- Sf RLCT a cmn+++ d++ e++ f h+++ iw+++ j+ p sf+
Follow my project: MBlok | Find me on: tSwitch.us | Twitter | Tumblr