In Progress Street Fighter: Initial Impact

The project is currently under development.

maxman

Well-known member
I decided I'm going to share what my new project is like here. It's a Street Fighter project in a 1vs1 mode like the classic Street Fighter 2. I know it's very difficult to handle or bring the fighting mechanics to OpenBOR but this is an intriguing project of mine which I really like/want to work on. The goal is to make it as a fighting genre like you see Platformers, Shooters, RPGs, and some stuff that exist and are beyond Beat Em Ups.

Note: There are a lot of stuff that need to be filled for the fighting mechanics in this engine such as pain reactions (standing and crouching), regular face-off (fighters facing each other), life bar depletion, VS mode, Arcade Mode, select screen grid, etc. There are some of the stuff I finished but for now, let me show you the basic fighting mechanics.


I will not be providing Super moves, but later in the future update, I will if I make the mechanics better.

I will come back to show more.
 
Last edited:
Yes!! You know how much I like your project!
I'm glad to see you started talking about it!
 
Sweet news ! I hope you'll do great. ^^
How's it hanging ? There's many of our colleagues here that have worked on a OpenBOR fighting game before. Out of curiosity, did you wrote to them, in order that they could teach you or send you scripts made for this kind of gameplay ?
 
Nice work maxman :D

One thing I could suggest is to create scripted camera which moves based on both fighters position. Technically, this camera points at center x coords of both fighter.
 
@NED: Thanks. I'm glad you like it. I know you're not very good with scripts, especially for your World Arena (pro-wrestling) project, which I look forward to see you back there if you have time. Hope my progress can inspire or motivate you to go back to your wrestling work.

@Sylvain Regnier: Thanks for the nice words. Yes and no. So far, the progress is going well, though I take breaks a lot.

@Bloodbane: Thanks, Bloodbane. I'm always having trouble with the camera system. Looks like it could be set with globalvars and/or entityvars.

Dhalsim's downward glide:
3-1-16-11-37-09-PM.gif


Projectile collision test:
3-24-16-9-24-23-AM.gif


This may be too early to show this, but:
Pushback to screen:
4-10-16-11-30-47-AM.gif

Recently I receive a very strange comment saying "promosm". Somebody hacked my Google/Youtube account and uploaded some Rust and Fortnite hack videos a month ago before that strange comment on Youtube came on. I already deleted those two videos that are not mine. Should I delete or report that comment if I want to ignore it? I don't feel interested in "promosm". What can I do? I just reported it. I should've deleted it.
 
Last edited:
This all looks really nice @maxman, except one thing: The HUD.

I say this because if you take the time to code vs. mechanics with OpenBOR, why not also take advantage of the things OpenBOR offers natively that other engines don't? Namely, 3+ players and the option of Z axis movement. As is, your design is strictly limited to a single plane one on one vs. match. Even if you don't intend to do more than that now, why not leave yourself the option to later?

I would make the icons, life, and mp bars small enough to fit on same vertical line so I could then put a third and fourth along the bottom of screen. I'd also consider making certain stages that allow Z axis movement. You could do a lot with this mechanically (example: Moves like Tatsumaki or Shinku Hadouken having a big Z axis hit box while something like a Shoryuken has to be lined up just right).

It's only a suggestion though, this is your project.

DC
 
Last edited:
Oh... Mea culpa for the ugly looking gifs on the health part, DC. That's not how it exactly looks like from the in-game I have when it looks like a 2-to-3-line health bar. You can examine at the horizontal lines of the health bar in the attachment. The first one is a 2-pixel high yellow color (rgbcolor(255,234,41)) while the last ones are 1 pixel high as life bar. (Yes, it's drawbox.) I have red bar which reduces down to the health bar like SF3. I haven't put MP bars yet, which I will work on it for Super moves in the future.

I got the HUD and lifebar designs from Street Fighter Essence Lifebar (from Mugen) but I made an icon change myself. I will change the icon setup for characters.

SFE000.png


3+ players sounds like a good idea for Tag/Team/Tournament modes (ala KOF, Tekken, SSF2, etc.), as well as 2v2 system and the HUD change/switch for 3-4 players, but for now, I stick to 2 players. As for the Z axis movement, I'm saving that for a special moment for another 1vs1 project of mine which I'll do in the future, but I'll think about it. If it's something like Final Fight and Tekken 3-5's own Tekken Force mode (as well as Campaign mode from Tekken 6), maybe but that'd be a very cool addition to see. I like the Tekken 3 version of Tekken Force mode best, but I'm not gonna press double up/down for dodging like Tekken unless I can enable players to walk around in z area instead of just pressing up for jump. You just gave me a great idea on coding the player's zmin and zmax for those stages, but I don't know how I can get to that.

I plan to remove icons for players and enemies from showing because the enemy icon usually disappears after the enemy dies. Later, I will put back icons if enemy icons can remain showing without disappearing.

Thanks for the suggestion, DC. I can make some changes.

Punch and Kick Throw Tests:

Tests for VS screen, pain reactions, and floor parallax:

Floor Parallax improvement:

Zangief slam test(s):
 

Attachments

  • My Mod - 0678.png
    My Mod - 0678.png
    39.3 KB · Views: 7
Last edited:
I'm not sure the Z axis would be needed. why not as an alternate game mode to unlock or something.
(Particularly because Fighting games have not a big depth, but for other reasons too)

This is looking very good!
I liked your tests with Zangief. Usually grapplers are my stuff :)
 
Hi maxman have you been here long? I want to try your resource mods
but to be honest I don't know what the title is?

Isn't it a bit complicated to make a fighting game with openbor?
 
Hi maxman have you been here long? I want to try your resource mods
but to be honest I don't know what the title is?

Isn't it a bit complicated to make a fighting game with openbor?
Hi friend. I'm going to make you honest. openbor isn't just an engine, it's a universe of code where you create your own world and build it (with a bit of effort) however you want. I have several ideas that are much more than native beatem ups. So get to work :). create your world and let us know. . .. sorry heheh that's what happens when I'm in my world 😅
 
Hi maxman have you been here long? I want to try your resource mods
but to be honest I don't know what the title is?

Isn't it a bit complicated to make a fighting game with openbor?
Hi machok. I don't know what you mean, but I don't recall uploading any of my stuff in the resources/download section here but the old version of PalApply. Since the forum format change started a year ago, I don't have anything I uploaded.

If it's very sophisticated depending on how you want to implement the true vs system mechanics seen in other fighting games, that's gonna be complicated to do. You can use a block animation with a block button like Mortal Kombat which is easy to do. (I think you can come up with whatever possible way on how you want to implement your gameplay style.) You must learn scripts in order to be able to code a good vs game. It's very time-consuming to do it.

I'm not sure the Z axis would be needed. why not as an alternate game mode to unlock or something.
(Particularly because Fighting games have not a big depth, but for other reasons too)

This is looking very good!
I liked your tests with Zangief. Usually grapplers are my stuff :)
Of course, there is a possibility that there will be a game mode which allows z axis and is good for unlocking, but the problem is what buttons to press, especially the jump button for jumping in side scrolling mode. It does sound like an interesting idea, but this idea gives me a lot of thought on how and what to implement it, despite being an exact 1v1 system. If SF 6 has open world mode, I can add z axis for the open world or Beat Em Up mode. Sounds tough but it's possible to pull it off.

Yeah. There are some slam stuff I need to make tweaks of.
Looks great Maxman! 😎
Thanks man. Haven't seen you in a while. How you been?

Character select screen grid:

Opponent Substitute/Replacement:

Win Count and Continue Tests:
 
Hi machok. I don't know what you mean, but I don't recall uploading any of my stuff in the resources/download section here but the old version of PalApply. Since the forum format change started a year ago, I don't have anything I uploaded.

If it's very sophisticated depending on how you want to implement the true vs system mechanics seen in other fighting games, that's gonna be complicated to do. You can use a block animation with a block button like Mortal Kombat which is easy to do. (I think you can come up with whatever possible way on how you want to implement your gameplay style.) You must learn scripts in order to be able to code a good vs game. It's very time-consuming to do it.


Of course, there is a possibility that there will be a game mode which allows z axis and is good for unlocking, but the problem is what buttons to press, especially the jump button for jumping in side scrolling mode. It does sound like an interesting idea, but this idea gives me a lot of thought on how and what to implement it, despite being an exact 1v1 system. If SF 6 has open world mode, I can add z axis for the open world or Beat Em Up mode. Sounds tough but it's possible to pull it off.

Yeah. There are some slam stuff I need to make tweaks of.

Thanks man. Haven't seen you in a while. How you been?

Character select screen grid:

Opponent Substitute/Replacement:

Win Count and Continue Tests:
Great!
Please tell me the screen texts are place holders...
Your game would look better with actual Street fighter text for "Round one" "Fight" etc.
 
Great!
Please tell me the screen texts are place holders...
Your game would look better with actual Street fighter text for "Round one" "Fight" etc.
Ned, to be honest, I really needed something that can fit in it, so yes, they are place holders. I found HDR sprites which could fit for Pre-fight ones. However, for the post-fight one such as "You Win/Lose" part, I wonder how they did that. Does that come from the font itself? I downloaded the sprite pack of the HD Remix stuff. I thank you for the suggestion.

Despite not having time to put the new screen texts yet, here's a projectile collision test for hearing sound.


Another surprise... it's the random flash (hit sparks) and a little bit of VS mode, along with the new title screen.

 

Attachments

  • title.png
    title.png
    67.5 KB · Views: 0
Thanks for the feedback, O. I'll change the speed of it. :) I figured out how to change the facing of the hit spark randomly, but I decided to save it for a certain moment before uploading it. Now is the time that I'm gonna use it.
 
@DCurrent: Do you mind if you could give some insights about the use of "hitbyid" and the way the simultaneous hit pain is played in ondoattack? If not for "hitbyid", I'll ask in the Documentation project thread. I just realized that double simultaneous hit happens in a rare occasion, but one gets smaller damage than the other with higher damage, which is supposed to have small damage as that one. It's my ondoattackscript but showing just the simultaneous hit script here:

C:
void main(){
    DoubleHit();
}
void DoubleHit(){
    void self = getlocalvar("self");
    void vAniID = getentityproperty(self,"animationID");
    int dir = getentityproperty(self,"direction");
    int a1 = getentityproperty(self,"a");
    int attacktype1 = getlocalvar("attacktype");
    int attackid1 = getentityproperty(self,"attackid");
    int animpos1 = getentityproperty(self,"animpos");
    int damage1 = getlocalvar("damage");
    int drop1 = getlocalvar("drop");
    void other = getlocalvar("other");
    int Tdir = getentityproperty(other,"direction");
    int a2 = getentityproperty(other,"a");
    int which = getlocalvar("which");
    int attacktype2 = getlocalvar("attacktype");
    int attackid2 = getentityproperty(other,"attackid");
    int animpos2 = getentityproperty(other,"animpos");
    int damage2 = getlocalvar("damage");
    int drop2 = getlocalvar("drop");
    if ( which && getentityproperty(other,"exists") ) {
       attacktype1 = attackid1;
       attacktype2 = attackid2;
       drop1 = attackid1;
       drop2 = attackid2;
       damage1 = attackid1;
       damage2 = attackid2;
       changeentityproperty(self,"hitbyid",0);
    }
    if ( which && getentityproperty(other,"exists") && getentityproperty(self,"attacking") == 1 && getentityproperty(other,"attacking") == 1 && getentityproperty(self, "invincible") == 1 && getentityproperty(self, "vulnerable") != 1 && getentityproperty(other, "invincible") == 1 && getentityproperty(other, "vulnerable") != 1 && dir!=Tdir && a1==a2 && animpos1 <= 2 && animpos2 <= 2 ) {
      // updateframe(other, 1);
      // updateframe(self, 1);
       damageentity(other,self,damage1,drop1,attacktype1); //damageentity(entity, other, force, drop, type)
    }else if ( which && getentityproperty(other,"exists") && getentityproperty(self,"attacking") == 1 && getentityproperty(other,"attacking") == 1 && getentityproperty(self, "invincible") == 0 && getentityproperty(self, "vulnerable") != 0 && getentityproperty(other, "invincible") == 0 && getentityproperty(other, "vulnerable") != 0 && dir!=Tdir && a1==a2 && animpos1 <= 2 && animpos2 <= 2 ) {
      // updateframe(other, 1);
      // updateframe(self, 1);
       damageentity(self,other,damage2,drop2,attacktype2);
    }
}

 
Last edited:

HitID is for making sure one attack box doesn't hit the same entity again on subsequent engine updates. That's it. That's all.

About your code, TBH it's kind of messy from a readability standpoint and I can't really tell what's going on. If something seems awry with damage amounts, then it's time to debug. log() wants to be your friend. Add log traces into the code to keep track of the values you're passing around and where your numbers are going wrong. That will tell you where to apply the fixes.

DC
 
Back
Top Bottom