Forum Fighters: Rewritten (Discontinued)

and a new stage

Go read the docs
Everything.
Then come back to edit stuff
You can’t just walk right in and expect to be allowed to join immediately.

For the ai, I was thinking maybe (you know) when the ai falls from the screen or hits a non-moving object that may damage them, the x-value where the event occurred is recorded into an array? Then we can tell the ai to jump over or stay under that thing or simply attempt to avoid the next time they’re moving towards it or are near it (so the ai learns from their mistakes).

May also add an array that stores the ai’s last positions. If a pattern is shown in the array, the ai would know that it’s repeating itself.

So yea - I may try to add these in (unless if they’re already added in?)

2 Likes

no, the current AI is really simple, it has no “learning” involved.

sorry, i have lost some motivation, and also i was focusing on other stuff, so i have some catching up to do…
but i’ll try to help out some more
(can’t code today though)

2 Likes

i have an idea of how to make the bot jump over gaps

when a match starts it creates a grid of the world, and records which areas of the world are occupied by a block and which areas of the world are air.

this image might help explain the following
image
the black areas are blocks, and the white is air. to get how far the gap is, check how many blocks are between the relevant corner (marked by the blue pixel) and the closest solid to the right/left. also, the Y value of the block to land on can be calculated by getting the closest empty cell above (other corner x, original corner y)

then, using the parabola of the character’s jump, we can test to see if the position of the corner is under the parabola (meaning the character can land on it). the equation to get how high the player would be at a certain point of the jump would be
h(x) = vx + (1/2)gx^2
x is the x position, v is the jump velocity, and g is gravity

edit: actually now i realize this equation isn’t right. x would not be the x position directly. it actually is the amount of time it took for the character to reach that x position, which is dependent upon the character’s speed. (the time would be measured in frames, since velocity in the game is measured as units/frame and therefore gravity/acceleration as units/frame2)

if this test succeeds, then it adds some sort of marker in the corner that the ai should jump here.

it also checks if it can land on a block if it falls at full speed. the orange curve is a graph of the same h(x) function from earlier, except v is 0 (because the character wouldn’t jump). it checks every cell in the area shaded in red (which is above the fall parabola, but below the y value of the corner), and if there is a solid cell with an air cell above it, that means it can land there. if this test does not succeed, it checks if it can land somewhere if it stopped moving in mid-air, by checking below the parabola for a solid cell with air above it. the X position of that cell is where it would stop.

we could generate this everytime the round starts, or just have it pre-baked, i.e. calculate this once and put the data in the game

also this grid representation can be helpful during the battle, e.g. if the ai is in mid-air and needs to find a safe place to land.

4 Likes

Oh Mai Mai
What a beautiful consept!
Don’t worry Pk
Why don’t you go do something fun! Like come up with Pk’ and his counterpart’s attacks?

2 Likes
Feedback

I Tested the game out and i Think it is Great! even the starting animations Is cool! I like How The combo system Works Instead of Hundreds of Buttons it is Just the Combination of Movement and Atacking! I lied that also the animations are so good made I like them so much i cant think of how much work have ben gone into this! also The Gameplay it is so much Fun i just Pluged my laptop into the Tv and Mapped some Keys on to two Controls and the MultiPlayer acction Begann! I realy Like The game and i cant wait to see Progress done!

2 Likes

@Hamzah_Alani
Do you think you can implement the jump ai Pk came up with into FF?

1 Like

Yes sir- I’ll see what I can do!

I’ll try to work on that today - though don’t expect any perfections

2 Likes

My school year just ended yesterday so i now have more time for work and making fixes and tweaks

i think we should figure out exactly who is allowed to work on the collab… there are quite a few people talking who are doing and have done nothing for the game. besides, making the collab 100% public basically just asks for disorder and getting less work done. like just now.

for a week, nothing truly productive has been done. it’s just talking about making multiplayer, making really small changes that aren’t done in the most efficient way, a bunch of is-school-over talk, and other i’ll-work-on-this talk. yet the only thing that was actually productive was pumpkinhead’s bot jumping idea.

no offense Ayden_Pierre-Fils, but you told us you would create online multiplayer, then you literally take pumpkinhead’s online platformer, and in the end you never made it. and then you told us you’d make a new bot. where did the bot go? what about the stage?

and again, no offense gamer_boi, but the majority of your contributions aren’t useful (trophy shelf), are minimal in quality (arena 1 cave, house, and hobbit hole ideas; and my animations), or are inefficient (victory screen).

for a third time, no offense MrDashell and nuggetofwisdom (yes, I know that you acknowledge this already), but both of you didn’t do much.

I know I sound very mean pointing out all that from all of you, and I’ll acknowledge I don’t know how to deliver the message in a better way. It may not be the kindest way to get the information out, but I am trying to be fair and civil with my reasoning and point of view.

I feel like this is what happens when you let anyone join a collab, whether or not they have motivation and do anything. this is why I feel that we should close the “invitation”.

1 Like

none taken

1 Like

how do you recommend we do this ?

ask someone how good they are and what do they mostly do and they have to send real proof

so the people that I think are guaranteed to stay are:

  • watrmeln (i actually don’t really know)
  • tryo
  • me
  • kringle
  • hamzah
  • pumpkinhead

and the people I think might be allowed to stay are:

  • nugget (for his music)

the other people are:

  • gamer
  • mrdashell
  • ayden

so I guess we first verify that the bottom 4 people are willing to do work (meaning work that actually contributes to the game) or give stuff (like music that is “worthy” of being in the game), and then we just close it.

idk if we should do the proof thing because not everything just comes instantly, but if they clearly don’t contribute up to the standards we’re looking for, then we kick them from the collab. or something like that. not sure.

and no, the lists of people aren’t ordered in any way other than the order they appear at the top…

@Hamzah_Alani you seem to more knowledgeable about JS then the rest of us!
How do you think we could make bots learn?

I’m still here, just waiting for a good idea to hit me

really long useless stuff

I just realized that we might be able to create a new “hits” function that may work perfectly. Every path object has points - if we reach the clip and determine the points in each of its own path (using clip.json), then see the difference between every two points to look for open spaces between the points, and insert points to close the openings within an array attached to the clip (this may be affected by curved path objects), then use the parents X & Y, and the scale size to determine the position of these points outside of the clip, then determine when these points are touching points of other clipped objects, we may have a perfect hits function… though this may take longer to make since there are so many possible areas for bugs - I figured I may just share it here since it’s an interesting concept that MIGHT work - and can help us if we want to add slopes. Sorry for the long sentence - I hope I’m making sense here lol

I may try to work on this on a separate project later - but for now, it’s just thoughts.
(This is also somewhat related to PK’s idea of having bots know their surroundings)

(sorry - I had to cross out some parts of what you said)

I think the easiest way to make bots learn is from experience - so, we’ll need to use multiple arrays to have the bot record data that they can learn from. Here are EXAMPLES of the types of arrays we might have:

  • Clip.Notes
    If the bot decides to change action due to something they recognized in their arrays, add this to the bot’s notes array.

  • Clip.Actions
    Besides moving right/ left, record here all of the actions the bot makes (ex: right/ left/ top/ down/ midair attacks, jump, land, etc.)

  • Clip.Mistakes
    Record the last action the bot made before getting damaged (use Clip.Actions).

  • Clip.Memory
    Record XY positions of bot - finding a pattern here will let the bot know that they’re repeating themselves (add “Repeating” to notes).

  • Clip.Floor
    Record XY positions of where the bot was touching the floor.

  • Clip.Attacks
    Record all attacks ai makes.

  • Clip.Success
    This array should record the damage that the player takes. Have this array parallel the Clip.Attacks array so the bot knows which moves it made were successful and which ones the player is capable of dodging.

  • Clip.OAttacks
    Record all of the opponent’s attacks.

  • Clip.Failure
    This array should record all the times that the player was damaged. Have this array parallel the Clip.OAttacks array (if falling damage, add “FD” to Clip.OAttacks).

  • Clip.PF
    Record all platforms and their edges (may help with adding in PK’s idea). This is easy to add in since all platforms are currently just rectangles

I just made this list - so there’s probably some stuff that I’m missing here. We may not use all of these… but most of these arrays are really easy to add in (the hard part is having the ai read them and learn from them).

1 Like

i just don’t know what to do because I haven’t been told to do anything and I don’t know if I’m allowed to animate a character