Announcement

Collapse
No announcement yet.

Tactical Battle System, is it possible?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Tactical Battle System, is it possible?

    I was just thinking, has anyone ever made a succesful tactical battle system in rpgm2? (alla FF Tactics)

    Using duplicate events and some kind of recursive function or repeating branches, I bet you could create a nice way to show things like walking range and attack range.

    Also Attack ranges would not be to difficult if you were to use a system like how Nash does in his ACBS to calculate where the attack would be placed.

    I suppose where something like this would get difficult is when checking for what you cannot do.

    For the cursur you could simply make that the main character and have everyone else be events.

    If there are any threads on the topic I would be most interested. Also if anyone thinks this can be done, lets here it.


    TBS is coming shortly... I finally got off my lazy self and contacted Datel, so new Max Drive software is coming thus allowing me to release my TBS.

    #2
    Re: Tactical Battle System, is it possible?

    Yes, it is possible.
    No, it is not feasible.

    Theoretically, you could make a Tactical battle system, but I gave up trying long ago. It's very close to impossible...
    Final Exams are not a good time to attempt to get back into a site. ^_^;

    Comment


      #3
      Re: Tactical Battle System, is it possible?

      Here's the link to one persons tactical battle system on RPG Maker 2:

      Vicious' Tactics Combat System

      There are step by step instructions but good luck understanding any of it. The main problem is movement. Mainly up and down movement and blocked areas.

      You could try making a simple battle system on a flat empty area, but it probably wouldn't be very fun to play.




      The Crown of Order demo is here.

      Comment


        #4
        Re: Tactical Battle System, is it possible?

        I took a look at the TBS link. Although some of stuff made sense and he had a few scripts that were good, I think this could be made better and I have a few ideas as to how to do it.

        Up and down movement would be difficult, but checking whether or not your outside a boundry would not be difficult, as simple condition checks could be used.

        As for something blocking you, you would have to make the object an event, and when the check movement script is run have a variable on the event (i think event number and tempvariables would do the trick) and if the two numbers are not equal (which would be true all the time) then have it so that that position is not an option for movement.

        When you duplicate the event that shows where you can move (using some kind of graphic) have it check that spot and make it so that the move graphic does not display there. Also in the duplicate event, you could set the eventnumber to 1 for example, and when you move your character (since movement would be done through the main character) check to see if the event and chacter are equal, and if the event number equals 1, if not then the character cannot move there.

        (For recognizing what event you are on, you could simply set the duplicate events content script to equal and have a simple, "event info load" command execute)

        Also using an ACBS fighting system, without automatic movement, would take care of the damage aspect, however what you would have to do is have all of the attacking actions go through the main character who would be invisible and simply move with the event.

        If you used the enter map trick, you could run certain scripts automatically and not have to paste scripts on every single map.

        If you think this stuff would simple not work, then let me know. If you have any ideas to contribute, I am more than interested.
        Last edited by madcopper; 06-18-2008, 11:00 PM.


        TBS is coming shortly... I finally got off my lazy self and contacted Datel, so new Max Drive software is coming thus allowing me to release my TBS.

        Comment


          #5
          Re: Tactical Battle System, is it possible?

          I have made a movement script!

          Ok in my last post I said you could use the main character to guide the event along, this is still used.

          What happends is you choose a spot where you want to move (assuming you can) and it saves the partys data.

          then run this script:

          Ok Here is how this works. Create the four content scripts below. Then Create another script, an Action Script that turns both Bypass objects and Bypass Characters on. Create an event, call it what you want, put the action script in and set the event start to equal.

          Edit: I have a better Script and how to restrict the movement.

          This is how you would restrict the movement. This only allows you to move a maximum of 4 space in any way you please (except diagonally). As you man notice there is no bypass objects for the main character which means it cannot climb cliffs, or go into trees or whatever.

          Moving and using the main character to select a space to move.

          Script Name = CharMove
          Content Script

          Game Info Load
          Event Info Load
          Move North-South = 0
          Move East-West = 0
          #CharMove

          Repeat Xpress = off

          Button Press Constant Wait

          (this is for the camera direction being north. a custom camera system would have to account for the other directions. Also if the main character bumps into a wall, I will have to add a few commands that won’t keep adding/subtracting to the variables)

          Sort Button press

          If 0
          Move Character North 1 space
          Move North-South = Move North-South - 1
          If 1
          Move Character South 1 Space
          Move North-South = Move North-South + 1
          If 2
          Move Character West 1 Space
          Move East-West = Move East-West -1
          If 3
          Move Character East 1 Space
          Move East-West = Move East-West +1
          If 7
          Temp8 = Move North-South
          Temp9 = Move East-West
          Condition Move North-South <= -1
          Move North-South = Move North-South *-1
          End

          Condition Move East-West <= -1
          Move East-West = Move East-West +-1
          End

          CharMove = Move North-South + Move East-West

          Condition CharMove <=4
          Xpress = on
          End
          Condition CharMove >=5
          Message “Outside of range”
          End
          Move North-South = Temp8
          Move East-West = Temp9
          End
          Call Script [MoveEvent]

          Ok here is the script that allows you to move the event to where the main character is.

          Script Name: MoveEvent
          Content Script

          Variables:

          MoveX
          MoveY
          Total Move
          EVX1
          EVY1
          EVX2
          EVY2

          #Moving Event to Main Character#

          Event info load
          Game info load

          Var: MoveX = PartyX - EventX
          Var: MoveY = ParytY – EventY
          TempX = MoveX
          TempY = MoveY

          Condition MoveX <= -1
          TempX = MoveX * -1
          End

          Condition MoveY <= -1
          TempY = MoveY * -1
          End

          Var: Total Move = TempX + TempY
          TempX = MoveX
          TempY = MoveY

          Repeat Total move >= 1
          Script Call [MoveX]
          Script Call [MoveY]
          end
          Flag SameX off
          Flag SameY off
          (these are used in the MoveX and MoveY scripts that call on repeat functions and must be turned off in the end)

          Script Name: MoveX
          Content

          Repeat SameX off

          Same X Off
          Event Info Load
          EVX1 = Event X
          EVX2 = Event X

          (This set of conditions may not be neccesary but I'd keep it in anyway)
          Condition Move X = 0
          Condition MoveY ≠ 0
          Condition Same Y = On
          Total Move ≠ 0

          Temp X = Party X – EVX1

          Condition Temp X = 0
          Event Move E 1 space
          MoveX = +1
          Event Info Load
          EVX2 = Event X
          Condition EVX1 = EVX2
          Event Move W 1 Space
          MoveX = -1
          End
          End

          Condition Temp X >= 1
          Event Move E 1 space
          MoveX = +1
          Event Info Load
          EVX2 = Event X
          Condition EVX1 = EVX2
          Event Move W 1 Space
          MoveX = -1
          End
          End

          Condition Temp X <= -1
          Event Move W 1 space
          MoveX = -1
          Event Info Load
          EVX2 = Event X
          Condition EVX1 = EVX2
          Event Move E 1 Space
          MoveX = +1
          End
          End

          Same X = On
          Total move = Total Move +1
          End
          End
          End
          End

          Condition Same X = off
          Condition MoveX >= 1
          Event move E 1 Step
          Event Info Load
          EVX2 = Event X
          Condition EVX1 ≠ EVX2
          MoveX = MoveX – 1
          Total Move = Total Move – 1
          Condition MoveX = 0
          Same X = On
          End
          End
          End
          End

          Condition Same X = off
          Condition MoveX <= -1
          Event move W 1 Step
          Event Info Load
          EVX2 = Event X
          Condition EVX1 ≠ EVX2
          MoveX = MoveX + 1
          Total Move = Total Move – 1
          Condition MoveX = 0
          Same X = On
          End
          End
          End
          End

          Condition EVX1 = EVX2
          SameX On
          End

          End Repeat

          Script Name: MoveY
          Content Script

          Repeat Same Y off

          Same Y Off
          Event info load
          EVY1 = Event Y
          EVY2 = Event Y

          Condition Move Y = 0
          Condition MoveX ≠ 0
          Condition Same X = On
          Total Move ≠ 0

          Temp Y = Party Y – EVY1

          Condition Temp Y = 0
          Event Move N 1 space
          MoveY = +1
          Event Info Load
          EVY2 = Event Y
          Condition EVY1 = EVY2
          Event Move S 1 Space
          MoveY = -1
          End
          End

          Condition Temp Y >= 1
          Event Move S 1 space
          MoveY = -1
          Event Info Load
          EVY2 = Event Y
          Condition EVY1 = EVY2
          Event Move N 1 Space
          MoveY = +1
          End
          End

          Condition Temp Y <= -1
          Event Move N 1 space
          MoveY = +1
          Event Info Load
          EVY2 = Event Y
          Condition EVY1 = EVY2
          Event Move S 1 Space
          MoveY = -1
          End
          End

          Same Y = On
          Total move = Total Move +1
          End
          End
          End
          End

          Condition Same Y = off
          Condition MoveY >= 1
          Event move S 1 Step
          Event Info Load
          EVY2 = Event Y
          Condition EVY1 ≠ EVY2
          Total Move = Total Move – 1
          MoveY = MoveY – 1
          Condition MoveY = 0
          Same Y = On
          End
          End
          End
          End

          Condition Same Y = off
          Condition MoveY <= -1
          Event move N 1 Step
          Event Info Load
          EVY2 = Event Y
          Condition EVY1 ≠ EVY2
          Total Move = Total Move – 1
          MoveY = MoveY + 1
          Condition MoveY = 0
          Same Y = On
          End
          End
          End
          End
          Condition EVY1 = EVY2
          Same Y On
          End

          End

          Put the script CharMove into the content slot of the event and place it where you want to.

          Ill talk more about this in another post
          Last edited by madcopper; 06-20-2008, 03:21 AM. Reason: New Movement Script, changed a wrong variable value


          TBS is coming shortly... I finally got off my lazy self and contacted Datel, so new Max Drive software is coming thus allowing me to release my TBS.

          Comment


            #6
            Re: Tactical Battle System, is it possible?

            ... have it check that spot and make it so that the move graphic does not display there.
            I remember Vespuleth spend a huge amount of time trying to find a solution to that problem. This is a case of easier said then done.

            Because of the limit of how many events you can place on a map, there is a real limitation to what you can do with a tactical system. You need to keep testing different things until you can get them to work. One of the reasons Vespuleth stopped working on his tactical game is because it took so much time to test every new change to make sure it didn't interfere with any thing else.

            Your scripts look fine, but until you can try then out in a tactical battle map, it's hard to say what might happen. I think Vespuleth tried something like this first and gave up on the idea because it doesn't work in practice. However, if you can get it to work then more power to you.




            The Crown of Order demo is here.

            Comment


              #7
              Re: Tactical Battle System, is it possible?

              So the movement scripts in the last post keep repeating until the total amount of steps are taken. This allows you to change the range of the movement to whatever you want. Also this solves both the problems of bumping into objects as well as moving onto high cliffs, simply because since you are moving with the main character in a normal fashion, you wont be able to get to a cliff that is to high or occupy the same space as an object.

              The script works perfectly if you manually walk into the event. However I havent tried to automate it and that may be the biggest down fall, because Im pretty sure if you use any kind of movement commands then it ignores events.

              But I might me able to get around that.

              As for automating the movement of the main character to an event, I would use a similar script as the one in my last post that would load the data of the event in question and move accordingly.

              As for displaying where you can and cannot go, well that might still be tough But I think if I still use some kind of duplicating events that I can do it. Either that simply make a VFX that stays on the event.

              Also I had some success in the attacking part. Using an ACBS (Nash's in this case) I was able to successfully damage an enemy, however after attacking the event was over and no more action were able to happen. Again I have some ideas on how to get around this but I'm not at home at the moment so you know.

              I would also have to construct an AI and a system for deciding who would go next, this would be the hardest part of the whole system.

              Give me the weekend and I should be able to make some decent progress on the beast of a side project.
              Last edited by madcopper; 06-19-2008, 11:37 PM. Reason: Adding some


              TBS is coming shortly... I finally got off my lazy self and contacted Datel, so new Max Drive software is coming thus allowing me to release my TBS.

              Comment


                #8
                Re: Tactical Battle System, is it possible?

                Ok for anyone who cares, I have made a movement system for the TBS that works perfectly. It first checks the agility of each event and sorts it from highest to lowest. Who ever has the highest agility goes first, and so on and so forth.

                I made a script that brings the main character to the new event by using a script similar to the one I made above.

                Once the main character gets to the event it can choose from a set of options, right now I only have move completed.

                When you select move, I made a grid out of the ripple visual effect (several of them combined) that shows the area in which you can move. It does not show height difference but given what I'm trying to do I think this can be forgiven for now.

                You now have control over the main character. You move the main character around the grid freely, by pass objects is on so you can move through both objects and onto different heights. When you hit the X button to decide where you want to go it calls a script that checks a few conditions. If the height difference is greater that 2 whole square or less than 3 (or what ever you want) then the event cannot move there. Also if the characters coordinates are equal to another events coordinates then it cannot move there.

                As for objects that you placed on the field, (not attacking characters or enemies) I have two solutions. First Off in the dungeon editor when you are making the map, in the spots that you want to have objects, you could create blocks 3 high so that if a character tried to select that space it would be to high. Another solution would be create X and Y variables for each of the objects, and place them as events and when you hit the X button to select a spot, it would deny you.

                Thinking back to playing FF Tactics, there were not that many objects in the fields.


                TBS is coming shortly... I finally got off my lazy self and contacted Datel, so new Max Drive software is coming thus allowing me to release my TBS.

                Comment


                  #9
                  Re: Tactical Battle System, is it possible?

                  Looks like you're off to a good start. Keep working on it. I'd love to see if you can get it to work.

                  You mention hight, but what about depth? Can characters move up and down? Will there be advantages to being higher then your opponent? Just curious how complex you plan to make this game.




                  The Crown of Order demo is here.

                  Comment


                    #10
                    Edit: I made a demo place and now i see what you mean by height. Like if I was next to a bridge and you could move above or below a bridge. To solve this problem what I did was make a script that checks if the event and party Z coordinate are equal. If they are not equal, then it moves the event height to the party height. It works great. Also I added your idea about height advantage, thanks for the input. When you go to attack an opponent it runs a check on the Z coordinate, if the event that is being attacked is above, below or equal, it changes the random percentage of attack success. I haven't done this yet but I plan on incorporating a direction check as well, so if you are behind the enemy you are more likely to damage it.

                    Also using the idea of a "range of damage" from Nash's ACBS I am currently working on a magic system and item system, I should have them done by the night.

                    End Edit


                    Actually I have a basic combat system working and I plan on releasing a video today of the entire system (at least what I have so far).

                    As for moving up and down, im pretty sure that is the same thing as changing the height of the event. Like if the event was on flat ground and next to it was a block that was 1 whole block area higher, then the character can move up with perfect ease. But lets say the block next to you was 2 whole blocks higher, then you would not be able to move there. You could have the max height related to a variable of the event that could change depending on the class, like the Dragoon (I think) in FFT, so it could move like 8 blocks high. But this has to be done in Dungeon editor because if you use an object it will pass right through it.

                    What my problem currently is not moving there, its showing height differences in the movement grid because it is just a VFX. Using duplicate events would be really hard actually, but I will try and make something.

                    As for advantages to being higher then your opponent, the way I currently have the attacking system set up, it would be extremely easy to do this. When you attack in my system, it performs a height difference check. So using that It would be very easy to insert a height advantage system. Like lets say you are higher then your opponent, your attack will hit 100% of the time. If your even with your opponent you will hit 90% of the time. If you are lower then your opponent you hit 80% of the time. How I would do this is simply with random variables.

                    The only thing I haven't worked on yet is AI. I'm really dreading this because it's simply not going to be easy at all.

                    Like I said though I'll be releasing a video today on what I have now demonstrating movement and a simple attack.
                    Last edited by madcopper; 06-22-2008, 11:55 AM. Reason: Realization! And then some.


                    TBS is coming shortly... I finally got off my lazy self and contacted Datel, so new Max Drive software is coming thus allowing me to release my TBS.

                    Comment


                      #11
                      Re: Tactical Battle System, is it possible?

                      I've decided to release the video a bit later as I still want to work out a few kinks in the system

                      That being said, my entire TBS works as of now. You can move, which checks to see if you try to move to high or on another character. You can do a basic melee attack (I only have one animation ATM but its easy to add others). Also I have worked out the magic system and I have created a simple Fire, Lightening, and Ice effects. The magic attacks anyone who is within one space, any direction, of where you select the attack to be. I have it so magic can hurt the person who cast it, I want to keep it this way as I believe it is a bit more realistic.

                      Also in the magic system if you wanted the magic of different characters to be different, this is really easy because when you select magic, it uses sort scripts to determine magic strength and display options. When you select the magic you want it changes a variable called MAGICdisplay. If the magic is successful a repeating script is called in which it finds which number of MAGICdisplay you selected and displays that effect. Also if the magic is successful then it changes a variable of magic strength.

                      I will use a similar system for weapons, skills, items, ect..

                      Also I will need to create a magic resistance check, as well as defense check, agility check,and other checks.

                      I still haven't even begun the AI, actually I might submit it here and see if someone else would like to take a crack at it. I will have to make more then one set of AI though, one for a pure attacker, one for a mage, one for whatever else I can think of.

                      Once I get all this stuff done I will be making a stats display as well.

                      Also once i get this done I plan on writing all the scripts out and making a guide, but that will have to wait.
                      Last edited by madcopper; 06-22-2008, 12:12 PM. Reason: Misinformation


                      TBS is coming shortly... I finally got off my lazy self and contacted Datel, so new Max Drive software is coming thus allowing me to release my TBS.

                      Comment


                        #12
                        Re: Tactical Battle System, is it possible?

                        An AI system shouldn't be too hard. It's just a matter of giving the enemy a set goal. Things like attack the closest enemy, attack the enemy that did the most damage since the character's last turn, or attack the last enemy who casts a spell. Then just check for movement. If the character can't reach his target, pick the next available target. Final Fantasy XII has many examples of AI scripts in it's gambit system. The hard part is the time it takes to write the script and make sure it works.

                        Another thing I though about is arrows. In Tactics Ogre, the higher up you were the farther you could fire an arrow. There were a few maps there the enemy stood on tall walls at the back of the map and could hit just about anyone on the field. Just something to think about.

                        That reminds me. You need to show the range of weapon attacks as well as movement. With Hand-to-Hand weapons this isn't a problem, but any thing with range has to have a way to select a target.

                        In the arrow example above, arrows normally have a range of about 8 but you could still target enemies outside the range (with a reduced chance to hit - however height increased your chance to hit). The area you could target was highlighted but you were not forced to stay within that area (unlike movement).




                        The Crown of Order demo is here.

                        Comment


                          #13
                          Re: Tactical Battle System, is it possible?

                          DW as usual your comments are both helpful and inspiring.

                          I really like your idea for AI, I hadnt thought about it that way. Checking for these things will be as simple as flipping a switch or setting a variable. The only hard part might be when moving the event up and down. Like lets say a person cast magic who was on a bridge above the enemy and the enemy recognizes this. Also lets say the bridge was too high for a single jump and the enemy would have to go around the bridge to get to the character.

                          It seems the only thing you could so in this situation is have the enemy switch targets or perhaps create events at the base of the bridge with its own coordinates that the enemy can go to and then switch back to targeting the character. If you have better ideas please let me know.

                          As for the arrows thing, that actually would be quite easy. What would have to happen is when you went to attack a z coordinate check would be done. Lets say if your height is 1 block high (I use this as a base height) then your attack range is 4 blocks. If your 2 blocks high its 6 spaces, 3 blocks 8 spaces, ect. The way I have my select spot script set up it that when you move in a certain direction it either adds or subtracts a variable (North/South is one variable and East/West is another). If the sum of the absolute value of those two variables is less than or equal to the number of spaces allowed then the action will be preformed. So by doing the height check you could set the max range variable to be whatever, then an distance display would appear depending on the range.

                          I guess that last sentence sort of answers the range question. Yes I have made a graphical display for magic which shows the range that a spell can be cast in. Using that it would be easy to replicate for ranged weapons. You could also do the same thing with items, like the chemist in FFT or for skills, summons, ect.

                          I like your last idea as well. Again the way I have the system set up, this would be extrely easy. ATM I have range check condition that says if you move outside the alloted range. Instead of having an error message I could simply alter the attack% success to be reduced by a certain amount as well as taking into account the height advantage.

                          Also today I plan on working on resistance scripts for physical and magic damage as well as making proper damage scripts for them as well. (currently it just subtracts the same variable after each attack.)

                          DW I have only really played FFT and FFTA but it has been awile. You seem to know a little more about tactical RPGs and if you have anything else you think should be included, please let me know.

                          Edit: You know i just thought of something. I currently have it set so that when an events HP <= 0 the event is temporarily removed. I cannot do this. I'm going to have to have it where the event simply lies down and that its space cannot be occupied by another member. I could add it where if you dont revive it after so many turns, then it disapears from the battle field (you dont lose the character for good, just for the rest of the battle)
                          Last edited by madcopper; 06-22-2008, 10:14 PM.


                          TBS is coming shortly... I finally got off my lazy self and contacted Datel, so new Max Drive software is coming thus allowing me to release my TBS.

                          Comment


                            #14
                            Re: Tactical Battle System, is it possible?

                            Yes, I've played a few tactical games. Mainly Final Fantasy Tactics and Tactics Ogre which are the two biggest series. In case you don't know, Tactics ogre started the whole Tactical battle craze - Square took the idea and made it better (or at least different). There are other tactics games but they aren't as good as either of these.

                            One of the biggest differences is that in Tactics ogre your units are disposable. When a character dies on the field it's gone for good. However, It's easy to go to the adventures guild and hire replacements after the battle. There were some rare hirers that were hard to replace. It was often better to restart the battle then to try to find a replacement for these characters.

                            FFT created the idea of keeping the dead characters on the field and allowing you to save them. In doing so, they also added a lot of unique characters that you couldn't afford to lose. The two games play very different because of this.




                            The Crown of Order demo is here.

                            Comment


                              #15
                              Re: Tactical Battle System, is it possible?

                              You make a good point, but I don't think I'll be making an actual game with this, so I'll leave that up to the people who will.

                              I have a few more updates though.

                              I have finished the damage system, including attacks and defenses for both melee and physical. This includes using the actual party member data so you can still adventure in a normal fashion and change weapons outside of combat.

                              I also added an info display that shows when your character is equal to an event and it shows the event selected name, its HP, Max HP, MP, and Max MP. Also when damage is done it displays how much damage is done to the event.

                              I didn't have time to add ranged weapons, skills, or items yet (or a revive skill) but I will get to it. Also I have not yet started the AI but I will be doing this tomorrow.

                              Once I get those things done, the rest is polish. After that I will release a demo battle, compile the scripts, and also release a guide.


                              TBS is coming shortly... I finally got off my lazy self and contacted Datel, so new Max Drive software is coming thus allowing me to release my TBS.

                              Comment

                              Working...
                              X