- Joined
- Aug 14, 2012
- Messages
- 400
- Reaction score
- 306
- First Language
- English
- Primarily Uses
- RMMZ
JABS - J's Action Battle System
J / JE / Jragyn
v3.2.1
J / JE / Jragyn
v3.2.1
Introduction
Using this engine will enable you, the RM dev, to create a game where battles take place in real-time on the map between the player (with their allies if they wish) and the enemy. Interactions between enemies are by-design expected to be fast paced, no more than 5-10 seconds at most, allowing for development of zelda-like games from the SNES era.
This was largely inspired by Blizzard's ABS (BlizzABS / BABS, for XP) and Moghunter's ABS (XAS / Chrono Engine, for XP+/MV).
Features
- JABS stands for J's Action Battle System. (Clever, huh?)
- Enemy battlers can be created via events w/ specific comments.
- Enemy battlers will follow their configured AI (that you decide with comments).
- Enemies can have default parameters to reduce the overhead for enemy creation.
- Ally battlers will follow their designated AI mode (changeable via menu and tags).
- Ally AI is a separate plugin and can be disabled if a solo game is desired.
- Ally AI can be toggled with switches and by enabling/disabling followers via event command.
- An aggro system that works for both enemies and allies(if used).
- Aggro is based on damage dealt (all kinds), and is configurable.
- Tags are used on skills to allow for creation of things like aggro-generating or reduction.
- Tags are used on states to enable aggro multipliers (positive or negative) or aggro locks.
- Basic 8-directional movement (doesn't support 8-dir character sheets though).
- The demo has DOES have an adapter plugin that enables Cyclone-Movement to grant pseudo pixel movement as well.
- Crude animation support.
- Animation as in, changing of the character sheet to something else for a short duration to give the illusion of animation.
- I am no sprite artist and opted against commissioning folks for assets just for testing this functionality, so it may be kinda glitchy. When I get my hands on the type of assets I'm looking for, I will revisit this.
This comes with a bundle of plugins that are designed as "extensions" of JABS:It is important to note that these plugins may not be flawless!
They were built by me and for me, but I figure folks may want a bit more detail about them here.
Most all the plugins should have usage details in the plugin description.
Use with caution!
- AllyAi: enables allies/followers to fight alongside the player.
- InputManager: a plugin that translates button/key input to JABS actions.
- This is effectively a sample for how to build your own input mappers for JABS should you want to change your input layout or what have you.
- Diagonals: enables 8-directions for actions (such as a fireball).
The "Diagonals" plugin may get removed when a more complete integration with Cyclone-Movement is built.
- CycloneAdapter: a plugin that fixes some of the quirks with how Cyclone-Movement works in the context of JABS. This should be disabled if not using Cyclone-Movement.
If you find that the game feels non-performant, it may be a result of too many enemies/allies on the map that are all trying to calculate proper move routes. Pixel movement is expensive when combined with constant calculation of where to go. As such, if you find that it is causing lag, consider reducing the number of enemies/allies on a single map, consider reducing the number of steps per tile (in the Cyclone-Movement plugin parameters), and/or disable the pixel movement altogether (along with the CycloneAdapter plugin).
JABS by itself still supports 8-directional movement for enemies/allies/actions via the Diagonals plugin above.
- Speed: enables the ability to set custom move speeds across the database and/or for events.
- Timing: enables cooldown reduction and the like.
- Charge: enables charging a skill one or many times to release and perform a different skill.
- DangerIndicator: enables little icons that show up near enemy battlers that indicate how dangerous they are to the player based on magic formulas.
HUD: enables a display of various useful information, broken into four parts starting with the manager as the main J-HUD.
- Party Frame: enables the display of various player and party information like hp/mp and such.
- Target Frame: enables the display of various enemy information like hp/mp and other notes of interest.
- Input Frame: enables the display of the currently equipped skill slots, such as for the mainhand or combat skills.
CMS: a custom menu system that slightly modifies parts of the main menu that gives greater detail selectively supporting the "more data" feature.
- Equip: a modification of the equip scene to reveal changes and allow access to "more data".
- Status: a modification of the status screen to give insight into all standard parameters (base/ex/sp) and some custom parameters for JABS.
- Skill: a modification of the skill scene to show more JABS-related data.
- Log: a log window that reflects various things that have happened, such as gaining experience or being afflicted with a state.
This also comes with a slew of other plugins that were designed to work with JABS, but not necessarily as an extension, just compatible:
- DropControl: enables greater control of drop count, drop rates, and so on.
- SDP: enables custom stat growth by spending points (earned by defeating enemies) towards collections of stats called "panels".
- JAFTING: a crafting system driven by plugin parameters.
- Refinement: an extension of the JAFTING system that allows dynamic creation of equipment.
- LevelMaster: enables giving enemies levels, scales exp/gold rewards, scales damage, all based on level differences.
- Escriptions: formerly known as "Event Descriptions"; enables icon/text descriptions to be available over events with event comment commands.
- SkillExtend: enables skills to give other skills various features (mostly in the context of JABS parameters).
- Proficiency: enables skills to have proficiency based on use, and to potentially give rewards such as learning new skills.
- TextPops: enables popups on the map for text, such as damage popups.
- Elementalistics: enables greater control over elements, including allowing absorbing elements, having multiple elements, etc.
- CriticalFactors: enables greater control over critical hits, including critical damage reductions, multipliers, chances, etc.
- NaturalGrowth: enables temporary or permanent stat growth from various things in the database, such as equipment or states.
- Difficulty: a custom difficulty system that modifies enemy parameters and rewards based on the chosen difficulty.
- MessageTextCodes: adds a few new text codes for use throughout RMMZ, such as weapon or armor references.
- OneTimeItemBoost: enables permanent flat/percent stat growth on the first time an item was used.
- PassiveSkills: enables learned skills to also passively grant the effects of one or more states.
Screenshots
How to Use
Due to the nature of new battle systems, it would be best to download the demo which showcases its features.
Fortunately, you can just use the demo as a base and build from there.
Additionally, this engine was built with using a controller in mind. Though the keyboard does work, I'd strongly recommend using a controller to play any game created using this engine. A variety of controllers I'm sure will work, though I used this controller for development.
Plugin Commands / Script Calls

From top to bottom (in plugin command screenshot):
- Enable JABS = turns on the ABS.
- Disable JABS = turns off the ABS (most base code I've tweaked will revert to normal while JABS is turned off).
- Force-assign a JABS skill = manually assigns a skill to one of the L1/R1 (3-0) slots, and locks that slot.
- Unlock a single JABS skill slot = unlocks a slot from being force-assigned, allowing the player to reassign skills to the skill slot.
- Unlock all JABS skill slots = unlocks all slots (for those who force-assigned multiple slots).
- Cycle to next leader = party cycles to the next member of the party (if they are alive).
- Disable Party Rotation = prevents the player from being able to rotate the party with the party cycle button. This does not prevent the player from changing the party formation or anything like that, though.
- Enable Party Rotation = re-enables the player's ability to party cycle (if disabled from above).
- Refresh JABS Menu = refreshes the JABS quick menu. This is probably only useful for developers who are manipulating the items in the menu for one reason or another (like adding/removing commands to/from it).
There are additional plugin commands in other various plugins residing in this demo.
Please refer to their respective plugins for additional details about what they are capable of.
Demo
A demo showcasing the primary functionalities can be found at the download link below.
Download
- JABS Demo (in the form of "chef adventure")
- See the plugin help/description in RMMZ for details.
It is strongly encouraged to review the documentation inside of the plugin help for details about basic usages and various note tags.
I do need to place a disclaimer on that demo, as presently, the sample project used to showcase JABS does use profanity and crudeness, and would likely be rated M by the ESRB or whatever due to using profanity more than 0 times.
If you run the demo and there is no sound, hit F6 or disable theJ-SystemUtilities
plugin.
If you run the demo and it auto-starts a new game, you can quit to title from the full menu and load a game from there, or to disable that feature just disable theJ-SystemUtilities
plugin.
Final Note
I deliberately left all code open for the public to view and edit as they see fit (please be kind and give credit where credit is due!). If you're savvy enough to tweak the code, I'd wager that you can also probably submit a pull request against my github repo if you want to contribute! If you do and your pull request is merged in, I'll add your name to the credits below! Hurray for open-source!
If you have questions about the code, I'd be happy to explain most anything you'd see in the J-ABS.js file (or any of my plugins).
Thank you, and happy RM-ing!
Before releasing to the public, this project has undergone many transformations through its iterations. Those with sharper eyes may recognize these assets! This project initially started as many do: I downloaded VisuStella and co.'s sample starter project and got to work. As a result, there are a few artifacts I didn't think twice about, most namely the tilesets and some of the sprites.
- The tilesets and some characters/faces are not mine, they were from VisuStella and co., so... thank you for making even other devs lives like my own easier to just pick up and get started doing actual content creation! Additionally, there are various other plugins within the sample project linked above that don't belong to me and weren't written by me. See their respective plugin help sections for additional details on credits etc.
- I believe it was Avy's work that created the icons in the iconset. It is a bit patchwork-ey because I wanted more things, but still, credit is due where credit is due. Additionally, it was Frankenstein'd with a huge number of other icons I acquired that probably aren't friendly about redistribution, so stay honest and don't use them!
- The characters/faces that are named with the pattern: "chara_*" are just characters I made using the built-in character generator. You are free to use them if you want, but know that with a little bit of time you could probably make your own! (and a bit of paint.net efforts)
- Moghunter and Blizzard provided inspiration and indirect guidance via their patterns in-code. When I was a lost lamb, unsure how to tackle a particular problem, their code showed me a means to do it myself. Though there isn't really any direct copy-paste (obviously due to engine differences and stuff), there is surely a distinct familiarity in-pattern on how my architecture was for JABS was shaped. Thank you, folks.
- My lovely lady who has had to tolerate theweeks if not months years of time dedicated to writing and refining this engine for the public to use (and myself!). She has had to listen to me rant and rave about why the sprites aren't doing what I tell them, but I don't actually think she knows what a sprite is, but she listened anyway <3. She deserves credit, too.
- The tilesets and some characters/faces are not mine, they were from VisuStella and co., so... thank you for making even other devs lives like my own easier to just pick up and get started doing actual content creation! Additionally, there are various other plugins within the sample project linked above that don't belong to me and weren't written by me. See their respective plugin help sections for additional details on credits etc.
- I believe it was Avy's work that created the icons in the iconset. It is a bit patchwork-ey because I wanted more things, but still, credit is due where credit is due. Additionally, it was Frankenstein'd with a huge number of other icons I acquired that probably aren't friendly about redistribution, so stay honest and don't use them!
- The characters/faces that are named with the pattern: "chara_*" are just characters I made using the built-in character generator. You are free to use them if you want, but know that with a little bit of time you could probably make your own! (and a bit of paint.net efforts)
- Moghunter and Blizzard provided inspiration and indirect guidance via their patterns in-code. When I was a lost lamb, unsure how to tackle a particular problem, their code showed me a means to do it myself. Though there isn't really any direct copy-paste (obviously due to engine differences and stuff), there is surely a distinct familiarity in-pattern on how my architecture was for JABS was shaped. Thank you, folks.
- My lovely lady who has had to tolerate the
FAQs
tldr;
Feel free to use it in your commercial projects.
Feel free to extend it to fit your needs.
Don't claim you wrote JABS.
My high-level "terms" in greater detail as of this writing:
Understandably, I ask for a few things in return:
- if you opt to extend JABS in some way in-code, I'd love to review your additions to see if they should be added as a proper extension or built into the core engine!
- if you actually produce a project (understand my general skepticism since most don't actually complete projects), I'd love a copy to see what kind of ideas you were able to come up with using my engine!
- I know you would never, but to stay explicit about this, please refrain from claiming you wrote JABS.
Things you should be aware of regarding your desire to do commercial project things:
- I have a lot of things that keep me busy (work mostly- I'm a software engineer by day), and it is very unlikely that I would be able to support your project if you encounter bugs outside of the normal avenues of ... this forum- aka, I reply when I pop on here.
- Compounding on the point above, the engine is not flawless; while I've been able to complete numerous hours of bug-free content, I would be a fool to claim this is a bug-free project. I'm certain there are yet bugs to be discovered in the edge cases I hadn't thought of.
Things to keep in the back of your mind:
- JABS as a core engine is roughly 30k lines all by itself, and combined with all the other plugins, it reaches upwards of 80k lines of code. That is a lot of code! I would strongly recommend some experimentation to discover your target performance, if it is even possible within your spec target.
- JABS is designed exclusively to work with a controller. Though the keyboard compatibility is left in there as a "back-up plan" of sorts, why would you want to torture yourself like that?. If you do not intend to use this for PC deployment, you may want to reconsider using JABS.
- All the extra "J-*" plugins in the demo project were also authored by me, and are fully compatible with JABS (see their respective plugins for usage/implementation details if you are interested in them).
I wrote a lot, but of course, feel free to ask any further questions ya might have. I'll get back to this when I'm available
--JE
The project that contains JABS doubles as my test bed for all plugins I make. Some of them are simple (like J-Hud), while others are more complex (like J-JAFTING). I encourage you reach out to me to discuss them if you can't find anything about them anywhere as I just might've forgotten release them publicly, or I may have opted against it for other reasons.
If you encountered a bug/defect, post a screenshot of the console (if possible) along with as much detail as you can gather that you believe is related to the problem. I'm a professional developer by day, but definitely no QA! I'd be happy to fix any defects related to my code, or try my best to add compatibility to play nice with other plugins assuming their code is open as well (like f0mor's plugins, visustella plugins are a bit more difficult to deal with due to the code being obfuscated and you may need to have them reach out to me so we can talk about how to solve it).
Last edited: