Preserved forum archive. This topic stores the original first post and locally mirrored RPG Maker Web attachments when available. It is posted by the BMMPlay archive account, not by the original creator.
Original Source
- Original title: Another attempt at multiple battle systems
- Original author: Tsukihime
- Original date: August 13, 2012
- Source thread: https://forums.rpgmakerweb.com/threads/another-attempt-at-multiple-battle-systems.4032/
- Source forum path: Game Development Engines > Ruby Game System (RGSS) Scripts > RGSSx Script Support
Summary
Didn't like my first one. It changed too many things. Here's my new design. Looks something like this: http://dl.dropbox.com/u/23043573/RPG%20Maker/RMVXA%20Scripts/PluginBattleSystem.txt The idea is to abstract away the BattleManager and let it decide which battle manager to actually use.
Archived First Post
Didn't like my first one. It changed too many things.
Here's my new design.
Looks something like this: http://dl.dropbox.com/u/23043573/RPG%20Maker/RMVXA%20Scripts/PluginBattleSystem.txt
The idea is to abstract away the BattleManager and let it decide which battle manager to actually use.
Because you should *always* setup the battle manager before you actually use it, I decided to put it there
Now I will introduce a battle manager interface. It's more like an abstract class
This class will define all of the default BattleManager methods, and will be treated as your default battle system.
You can inherit from this class to define your own battle managers,
Then, everytime you say
It will in theory take your method call and your arguments, and pass them down to the appropriate battle manager. But I'm not sure how that would work.
Scene_Battle will still be the same thing, except you can define new battle scenes that inherit from Scene_Battle if needed.
Each battle system will come with their own scene and their own set of windows, all inheriting from the default windows. There will be no aliasing or overriding.
Rather than saying
I decided to change it to
Which would choose the actual scene battle to use, and then let the engine do the rest of the work.
Any thoughts on the design?
Note that this should in theory support any battle system, because all the battle manager does is determine which battle system to use. If you're using an ABS system, well, it just has to initialize the ABS battle manager and then off it goes.
Sprites and windows are handled by the battle scene, so that is isolated to their own systems.
You shouldn't really have any conflicting attributes in the Game_ objects because your system shouldn't depend on the actors' values; instead, they should be deciding what to do based on the values.
The only real problem I see is that most people prefer to alias and override, which does not work with this plugin battle system. All battle systems will need to be re-written to use subclassing, so if you need your own Spriteset_Battle, just inherit from the default, if you need a new window, just inherit it. If you need a new scene, just make one.
There are only two calls required to make the system work properly
And the first one is already provided.
Here's my new design.
Looks something like this: http://dl.dropbox.com/u/23043573/RPG%20Maker/RMVXA%20Scripts/PluginBattleSystem.txt
The idea is to abstract away the BattleManager and let it decide which battle manager to actually use.
Because you should *always* setup the battle manager before you actually use it, I decided to put it there
Code:
module BattleManager
def self.setup_battle_manager
bs = Tsuki::PBS::Battle_Managers[$game_system.battle_system]
@battleManager = Object.const_get(bs).new
end
def self.setup(troop_id, can_escape = true, can_lose = false)
setup_battle_manager
@battleManager.setup(troop_id, can_escape, can_lose)
end
end
Code:
class IBattleManager
def setup(...)
# the actual setup
end
end
You can inherit from this class to define your own battle managers,
Code:
class MyBattleManager < IBattleManager
def setup(...)
super
#now do some more things
end
end
Code:
BattleManager.do_something(arg1, arg2, ...)
Scene_Battle will still be the same thing, except you can define new battle scenes that inherit from Scene_Battle if needed.
Code:
class My_Scene_Battle < Scene_Battle
end
Rather than saying
Code:
SceneManager.call(Scene_Battle)
Code:
SceneManager.call_battle_scene
Any thoughts on the design?
Note that this should in theory support any battle system, because all the battle manager does is determine which battle system to use. If you're using an ABS system, well, it just has to initialize the ABS battle manager and then off it goes.
Sprites and windows are handled by the battle scene, so that is isolated to their own systems.
You shouldn't really have any conflicting attributes in the Game_ objects because your system shouldn't depend on the actors' values; instead, they should be deciding what to do based on the values.
The only real problem I see is that most people prefer to alias and override, which does not work with this plugin battle system. All battle systems will need to be re-written to use subclassing, so if you need your own Spriteset_Battle, just inherit from the default, if you need a new window, just inherit it. If you need a new scene, just make one.
There are only two calls required to make the system work properly
Code:
BattleManager.setup(...)
SceneManager.call_battle_scene
Downloads / Referenced Files
Log in to download
Log in, then follow the RPG Maker Developers Group to see these download links.
Log in to downloadCreator Claims / Removal
If you are the original creator and want this listing reassigned, edited, or removed, join BMMPlay and contact the moderators with proof that matches the original RPG Maker Web profile, linked GitHub, itch.io page, or another public creator identity.
Replies (0)
No replies yet.
0
replies
1
view
Topic Summary
Loading summary...