Not trying to discourage you, I've just experimented with this before. To create the VS mode you will need to create a rounds system, using script and branching.
The first stage is a 'dummy' stage that just sets some script vars, it's not noticed in game, only a spilt second of black screen that happens when the screen is already black. It clears the vars for a new game and sets what we need for the VS mode scripts, for example the wins/losses and rounds counter.
for example
Code:
spawn empty
@script
void main()
{
setindexedvar("Round", 0); // Current Round
setindexedvar("iWins", 0); //Player total wins
setindexedvar("iLoss", 0); //Player total losses
setindexedvar("iWon", 0); //Player current fight, rounds won
setindexedvar("iLost", 0); //Player current fights, rounds lost
setindexedvar("CLost", 0); //Enemy rounds lost
setindexedvar("CWon", 0); //Enemy rounds won
setindexedvar("inVS", 1); //flag for whether player is in VS screen or not. (handles 1p vs cpu or 1p vs 2p in vs screen)
}
@end_script
coords 128 240
at 0
This is a linear example, each branch is a stage and opponent. The opponent and/or stage can also be randomized with script, you could essentially have one stage that handles everything with script. You can also do fun things like play music based on what round it is, force players/enemies into certain animations (intros/taunts/dialogues) based on the current round or the current opponent. Change the stage palette in the second round or whatever you wanted.
set VS_MODE
file data/levels/DUMMY.TXT
branch zero
z 192 242
file data/levels/FIGHT1.TXT
file data/levels/INTER.TXT
branch one
z 230 238
file data/levels/FIGHT2.TXT
file data/levels/INTER.TXT
branch two
z 190 242
file data/levels/FIGHT3.TXT
file data/levels/INTER.TXT
The INTER.TXT is the VS screen, where you see the two portraits. example RYU Vs KEN. The portrait is simply a FOLLOW animation in the chars/enemies. The vs mode screen is just one empty stage that forces them to those animations, it runs like a bonus stage, so when the timer runs out the next stage loads. You hide the healthbars/timer etc. using panels.
You will also need branches for VICTORY, GAME OVER, ENDINGS, CONTINUE etc.
EDIT: (I kinda lied, in my game the DUMMY is actually a copy of the VS screen, but it clears all are vars for a NEW GAME, whereas the VS SCREEN is just resetting some counters for the next battle. But you could do it differently.)
Other script is handled in the players/enemies. So when they die they check the round number etc. and act accordingly. Then the rest is just logic to jump to the right branch. You just have to track the player and enemies current wins/losses for each fight. So in a standard game, 2 wins = victory etc. You will also have to add more logic if you want to handle 'TIME OVER' 'DOUBLE KO' etc.
Sorry for the rough explanation, I can't give entire examples, what I made was crude and just a test. I planned to move scripts into onspawn/ondeath scripts etc. instead of directly scripting into each level and character. Everything could be entirely scripted, but I was still using text objects and panels, cause it's just easier. :
It was just an experiment I never finished thou. My intention was a very basic vs mode for an 8bit NES style game (like the vs mode/mode B in some old NES games) , it just had to have rounds, wins/losses, VS matchup screen etc. I also wanted to avoid using multiple copies of stages. So I made it so it only needs one .txt for each stage like this. I'm sure others could do better with script, but it might be enough for what you wanted.