Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

Grid Battle System for RPGMaker

Plugin that allows you to add "grid" battle mechanics to your RPG Maker MV project · By HimeWorks

Feature Requests Sticky

A topic by HimeWorks created Aug 05, 2020 Views: 1,464 Replies: 42
Viewing posts 1 to 20
Developer

Feel free to suggest features here.

Developer

Adding some sort of "timer" indicator for skills that are being "prepared".

https://www.reddit.com/r/RPGMaker/comments/i4e5wo/grid_battle_system_added_grid_functionality_to/g0i6ng5/

"One last mention on the telegraphing; say an enemy just cast "Fire" and there's a 10 second timer on it, would it be possible to make the square itself a timer indicator as well? I.e. perhaps have an outline of where the attack will be placed, and then it gradually fills in with the color red over the next 10 seconds."

Developer(+1)

"Large" monsters that take up multiple tiles on the grid, but is treated as a single target.

For example, a monster that takes up 3x3 on the grid. Targeting any part of the monster's area would inflict damage to it.

Developer

Running into the same tile as an enemy, performing an attack, and then the "loser" gets pushed out of the square.

Is it possible to have an x and y position offset for battlers via notetags in the future? (I don't know if is already planned)

For example, I use a bigger canvas for my actor sprites:

Also some enemies (like the RTP ones) might suffer the same issue, like the bats seen in your showcase videos:

Developer

Actor and enemy note-tags probably the simplest solution. I'll include it as a customization option. Thanks for the suggestion I hadn't thought of doing it that way.

(+1)

Since terrain-based states are planned, moves that change the terrain, like lighting a tile on fire?

Developer

I haven't tested it yet but I think we should be able to display custom "tile sprites".

Right now we do have tile sprites, if you think about how the highlighting is displayed, it's just a square. I change the opacity and the color as needed.

So if we added like a "burning sprite" to the tile, maybe it'll achieve that burning effect.

(1 edit)

Oh, I mean more in a functional way, changing the "terrain state" assigned to a tile. You sit in a flaming tile, you take damage. Or you can put it out, and its no longer "fire terrain"

Developer (2 edits)

I think a state would probably work. For example, you cast a fire spell on an empty tile and it adds a burn state.
And anyone that walks into it might automatically gain the burn state.

You could then have the sprite reflect the state that's applied. Not sure what happens if there's multiple states but probably something that devs would figure out for their game.

(2 edits)

I also really like this idea of being able to dynamically change the terrain state of a tile.  In terms of multiple states, I think if there's some way to designate a "priority" number of each state, then the highest priority state could always takes over.  Or even better, if you allow some kind of note-syntax or similar that allows someone to assign an "end result" state based on combinations of other states ("fire" + "ice" = "water").  It'd be nice if there was some built in support for making those a + b = c or a + c + d = w kinds of assignments.

Developer

"Battle direction" is something I'd like to implement. Add a bunch of methods to check if you're 

- facing towards
- facing away
- facing from side

Then you could have apply damage bonus based on direction. Won't be able to use the sideview sprites cause they're designed for left/right only though, might have to switch to map character sprites for that just to test.

(+1)

There should be an option to have characters face diagonally because battle sprites tend to look better at these angles. I think it looks good even though the grid is orthogonal rather than isometric. This is how Live A Live handled it and I thought it was interesting. Personally I think diagonal strafing in all 4 directions looks a lot less awkward than making 90-degree turns and walking in straight lines like in FFT, and it would look pretty stylish in a game with more sprite animation than Live A Live.

http://zsnsk.sakura.ne.jp/livealive/battle_system.html#rear-or-side-atk

Developer (1 edit) (+1)

Here's one that should be easier to do: using the current map as the battlefield.

Basically, take a screenshot of the map and use it as the battlefield. Use the map passage settings to determine whether a character can move to a certain tile or not. Then we can simulate on-map battles, even though it's a separate battle scene. Ideally you would have your battle sprites and map sprites be the same so that it's a smooth transition.

Not only can we use the map as the background, we can potentially load in events as well. Maybe there's some boulders on the ground, you would load that into the battlefield.

Perhaps you can destroy the boulders in battle and it would be reflected on the map?

Yes, in combination with the tiles having changeable "states" discussed above, this would do a great job of making the world feel like a dynamic place.

(+1)

Some features, not all of them are good, just a bunch of ideas :


-Being able to customize the range colour of each skill individually with notetags hex colour <rangecolor: #ffffff> same with AoE color etc, if not found, use default (exemple for white magic, black magic etc.)

-Unidirectional range display for some skills (notetag?) : if the game only use 2 grids system, maybe create a system that show attack range only on enemy grid and heal only on ally grid (and put the cursor by default on the "good grid"? (but for some games there is sometimes people who want to heal enemies and attack allies so I think this is not important)

-Tie movement to a gamevariable or MP or TP or add a new movement "bar or points" and as long as you have some movement points, you can move as many times you want in your turn (before using skill or after using skill) (But also adding teleport move type that does not use movement points but mana instead for example)

-Being able to switch places with an ally or enemy (and also why not applying a buff to it), or lift it then throw or teleport it from a to b point (2 selection in one turn)

-Setting traps in enemy camp or glyphs in ally camps, just moving on it inflicts damages or buffs then disappears OR effect apply only while standing on it

-Invisible state, if all allies are invisible, enemies will hit somewhere randomly hoping to hit. Also why not chameleon enemies (but their info must not show when cursor go on their cell)

-Aura states that affect positively/negatively ally or enemy standing next to you while you are standing next to

-Adding state that increase/decrease movement or skill range. (must create a notetag for skills not affected by boosted range or diminished range) (can't go lower than range:1 as a failsafe)

-Charm state that temporary put an enemy inside ally grid and will go back to enemy side when charm state vanish

-Funny AoE, like lines, rows, checkerboard or custom either using an other map or a custom formula either on a json file or read as a notetag inside a skill

(Example x0y0 only hit the center, creating a + AoE would be : something like

<AoE:x0y0,x1y0,x-1y0,x0y1,x0y-1;> (I don't think that's the best way of doing it but it gives full control over AoE)

-Tie AoE to ally or enemy grid and not user position (example a skill that only hits the corners of the enemy grid)

For a boss that hits extremely hard but only at a specific position (example near lava pits) that could bring an interesting mechanic

-Being able to resurrect a dead battler at the position the battler died OR at the emplacement of the resurrect skill?

-PvP over online (yes I know I'm dreaming, even a simple select team against someone who did the same would probably too complex?)


I got a ton of other ideas but that would made the post even harder to digest, so I'll stop there!


Developer

1. Hierarchical highlight colors make sense. Right now I pretty much just hardcoded some colors (0xFF0000 for "tile with battler", 0xFFFF00 for "empty tile", and "0xFFFFFF" for no highlight. Alpha is different as well.

2. For the attack range "only on enemy grid" in a 2 grid system, what would it be like? For example if my character is standing in the front row  on their own grid, and they wanted to use a melee attack that has range 1, would it only highlight one tile on the enemy side? Maybe the entire row? The concept of range has been kind of confusing to me for 2-grid system. In a 1-grid system it's pretty straightforward, but I'll need more ideas for how people want to use range for 2-grid (or multiple grid) systems

3. For custom points I'd probably leave it until later. Maybe just try to integrate it with an existing one (I assume one already exists...?)

4. What's interesting is the "any number of movements per turn". For example in most tactics games, you can "move" and "attack" in one turn. In some games, once you attack, you can't move, but there are other games where you can attack, and then also move if you haven't moved yet. And yet even more games, where you can move 2 steps (out of 4), perform an attack, and then move the remaining 2 steps to do a hit-and-run. Of course, this was reserved for certain types of characters like knights where it might make sense for them to be able to "attack while moving"

This reminds me of chrono cross system where everyone gets up to 7 points of "stamina" and each action takes up a certain number of stamina, and when they have no more stamina (or negative stamina), their turn is up until they recover some.

5. For switching places with enemy, we could probably do it like this (using the new movement formulas)

var posUser = a.getPosition();
var posTarget = b.getPosition();
b.moveTo(posUser)
a.moveTo(posTarget)

I'll have to try it out but the logic should make sense.

6. For lift and throw, we would basically want to be able to select two targets manually. I'm thinking of a solution where you could literally "Pick N targets", so let's say you wanted to create a teleport skill, you'd pick an actor first, and then you'd pick another space. Or that lift-and-throw skill, where you pick an actor to pick up, and then another space (which may or may not be empty) to throw to. I have an idea for this.

7. For bombs that trigger when someone moves on to it, having a general "trigger condition" would be useful to have.

8. Invisible state I'm not too sure how that might be implemented.

9. For aura states, we can probably try something like "at the end of action, check if anyone around the battler should have a new state added to them".  This way the aura is applied immediately after you move next to someone. We might also need to check if an aura-inherited state should be removed at the end of action, in case that person then moves away.

10. Range modifiers will function similar to traits: you can have actor range modifier, class range modifier, state range modifier, equip range modifier, etc. Having another trait that will nullify range modifier effects might also be useful to have.

11. I had also thought of some sort of mind control skill like charm. Actually putting them on the ally grid might need some thinking though. What if there's no space?

12. There will be a bunch of different ways to specify AOE, depending on what you need. Since there are so many different types of possible AOE, some options might be less suitable (eg: whole row/ whole column needs a math formula instead of direct tile designation)

13. AoE is mostly tied to scope. For a two grid system, "opponent" AOE would target the other grid, while "ally" AOE would target the user's grid. Having a "four corners" skill can just be some generic "opponent" scope with a custom AOE that specifies "four corners" or something. I'll have to think if we can use "all enemies" for this.

14. Reviving dead battlers at their position is probably built-in since battlers normally aren't removed from the battlefield and will remain at their location. Not sure what you mean by "emplacement of the resurrection skill" though. Like re-positioning the target to a particular tile?

15. PvP over online, actually that's one of my goals. But for the simple case, you'll probably just add "helpers" from other players/friends to assist you in battle. It's mostly a one-player game with social elements. Multiplayer has additional complexities that will need to be addressed.

Developer (1 edit)

As suggested above, we can have an "aura region" mechanic, where anyone around a certain battler or tile or something could obtain special buffs. We would need to check for any changes in positions, such as whether they move in or move out of an aura region, which may add or remove buffs as needed.

This "chicken matching" logic demonstrates the functionality behind it, where a chicken moves to another chicken and then lights up connected chickens. And if a chicken moves out of the connection, they lose their highlight.

Match 3 logic can be considered a vertical or horizontal area of effect. Auras might have other types of area of effecs like squares or diamonds or other shapes.

Is it possible to download this and also download multi grid system for patrons (even if not finished) for some testing?

Developer

I'll be putting up some stuff for second round of testing. Just finishing up some configuration input for multi grid and writing up instructions on usage

Noice! I'm waiting with great interest!

Developer (2 edits)

There's a request to make it so that in a two grid system, you can't target enemies "in the back" using melee weapons until the enemies "in the front" have been eliminated.

This sounds like a skill range thing but actually not really, because when the enemies in the front have been defeated, the melee attacks can suddenly reach the back. Perhaps this is a line-of-sight problem?

So for example, if someone's in front of you, it will block the enemies in the back. But in this case, "in front" involves checking an entire column instead of just the single tile in front of you.

It would be nice if this logic can be used even for the "basic" grid system, so that you must always target enemies in front.

Developer (1 edit)

Will be approaching this problem with a different solution.


Instead of having the chicken in the front "block" people in the back, we simply ask the chickens in the back if there's anyone "in front".

For a simple 2-grid setup like above, this is very simple: we just need to check if any enemies columns > target column.

However, the problem in general is we ASSUME what "front" and "back" means. Direction matters.

For simplicity, I will be adding a direction to the grid, so that the left grid is

3 2 1

While the right grid is

1 2 3

I'm not sure if this should affect tile designation though. For example, (1, 1) is normally in the top-left corner, but if we were to "flip" the grid horizontally, does that means (1, 1) is now  the top-right corner?

Something to consider. But let's think about more than just two grids. What if there are three grids? What if they are facing up and down? Perhaps it would be better to define "front" with respect to the direction of each battler?

Developer (1 edit)

We can ignore flipping the grids around if we have a way to determine the "position" of each grid.

__ G4 __
G1 G2 G3
__ G5 __

Consider this grid layout.  If you only consider G1 and G2 (which is our two grid layout), G1 is "left" of G2. Which means if a chicken is standing on G1, then the "front" most column is on the right, while the "backmost" column is on the left.

On the other hand, if the chicken was standing on G3, then the "front" most column is on the left, and the back most columns is on the right

We don't consider the diagonal cases for now, but I think this approach should be suitable for even 4-sided attacks shown above.

Developer

Actually with this grid approach, we can basically implement skill ranges for multi-grid setups.

You would just need a way to "connect" grids together, and then we'll know "distance" between different tiles on different grids.

For example, the right-most tile on G1 will be one tile away from the left-most tile on G2.

And why not 9 grids and using the numerical pad like fighting games notation (example soulcalibur notation) :

G7 G8 G9

G4 G5 G6

G1 G2 G3


It also opens diagonal ranges. The middle grid would be the Grid 5

Developer

Could be extended like that too. I just didn't want to bother with diagonals at this point lol

(+1)

Oh, also I was looking for tabletop rpg fantasy maps and I found something that MIGHT give you an idea for you grid system on this store page :

https://www.drivethrurpg.com/product/256706/City-Modular-MapTiles-COTBS

Near the middle of the page, there is an animation of a modular arena, on twitter you said something about shrinking arena so that might be interesting!

Something I'd like to see is, when it's working fully, be able to apply skill ranges to weapons.

Developer

Probably some note tag that will pull skill range based on current weapon.

So "attack" skill range is inherited from the weapon held instead of a fixed skill range or something.

Actually it would be quite similar to how the attack skill used the current weapon to decide the animation

* Feature to pre-place immovable objects in battle which  can be targeted and destroyed (rock, tree, treasure chest...)
* Summon immovable objects during battle, such as a minion that it will take certain preset actions (like how enemy pick its actions), or like a healing statue that heal allies within 3 tiles radius?

Developer

Hmm, I'll think about how the NPC objects will be created. Probably will all be treated as tile objects, some of them might perform skills, some of them just sit around doing nothing.

Now that 1.0 is out. I have been working on my list of features that I'd be interested in seeing.

  • get skill ranges working on two or more grids
  • an option to hide the grid(s)
  • able to place a "trap" on an empty square and have it give a desired effect
  • summons
  • switch out a character for another (current iterations struggle with placing the new character)
Developer

For grid hiding did you want it to apply to highlights as well? There's an option for hiding the grid outline.

Just got a chance to install 1.0 and noticed you can hide them. In general, I view it as a good idea to provide more options so hiding the highlights might be beneficial. Personally, I would design around using the highlights if I choose to hide the grid.

Developer

Ya, I'd like to hide the highlight at some point. Or provide alternatives. Right now there's really no alternative so if you just hide the highlights...how do people tell what the AoE is lol

Like The Gamer Brewery said, I would love to see the ability to have summons that you can add (and maybe even place if possible) to the grid. The grid system would definitely be a lot fun to use with actor summons (not to mention that would add more flexibility and fun in creating a battle system!) especially since to my knowledge in-battle summons doesn't seem to be an actual feature in RPGMaker's normal battle system.

Also do like the idea of having the "back" actor being unable to be targeted until the actor in "front" is cleared first. I know you already mentioned something along the lines of this up above but it would be cool to have it so that if the two columns are like this:

Front-Back
G1 G2
G3 G4
G5 G6
G7 G8

Then if an actor is put in row G1 the actor in G2 can't be targeted until the G1 actor is killed. But if G3 has no actor then the enemy can straight away attack G4's actor. So, basically, if there is no other actor in the "front" column of the grid then the "back" column that is horizontally aligned with that column is targetable. If there's an actor in the "front" column, however, than the the "back" column is targetable. 

Developer

I'll put together a battle summons plugin at some point. There will be three types of summons
1. actors - that you can control
2. enemies - that you must defeat
3. NPC battlers - basically anything else that might interact with battlers. Maybe some boulder in the middle of the road, or a tower that does AOE fire attack around it every turn so you should try to avoid it.

For the targeting rules, I'm planning to go with maybe a line-of-sight implementation, and then you could say

1. someone covers an entire column, which means you have to clear everything in one column first before you can make your way towards other columns. Maybe a tank that blocks all 4 rows.

2. they only cover their row, so maybe two have two tanks that each block 2 rows, and if you defeat one tank, you could then target the ones that are now exposed.

It will use the same concept as AOE region painting, and probably use the same shapes so you could basically re-use those AOE shapes for other purposes.

Developer

There was the idea on reddit about "Zone of Control" which is some effect that is applied on targets based on a user.

I think this could be done with states, as long as you remember which battler applied which state. The actual effects of the state would then be determined dynamically at runtime.

The working example was, your movement range decreases when you're inside another target's zone, and depending on your stats and their stats, it would affect how much the range decreases. If movement range was calculated at runtime, and can apply the state formula (where "b" is the target that has the state, and a is the "user" that applied the state) I think that should solve the problem and would be able to generalize to many different things.

Is there a way you could possibly expand the number of tiles on the grid, and/or make the ones already there scale to different resolutions?

How about a feature to have enemies also change their position

Is there an option to have enemys and players move?

Like that they can move freely accross the grid