• Welcome to Smashboards, the world's largest Super Smash Brothers community! Over 250,000 Smash Bros. fans from around the world have come to discuss these great games in over 19 million posts!

    You are currently viewing our boards as a visitor. Click here to sign up right now and start on your path in the Smash community!

SSB64 Vs mode Bot

cmu6eh

Banned via Warnings
Joined
Apr 29, 2012
Messages
356
Location
Parterre
In a month or 2 (once I am done with my current project) I am going to begin coding a bot to play at high level play (probably in LUA), with the goal of making it as 'perfect' as possible. I believe it may be best to use Fox, due to the speed and versatility in attacks, and I don't plan on the bot ever having to deal with an opponent edgeguarding :)

I would appreciate any input, and if there are any TASers out there that want to contribute let me know.
 

clubbadubba

Smash Master
Joined
Apr 27, 2011
Messages
4,086
i think one of the huge issues with lvl 9's is that they don't do anything when they are off the edge, making them way to easy to edgeguard. Giving your bot some creative recovery options would be awesome.
 

cyoonit123

Smash Apprentice
Joined
Feb 27, 2011
Messages
158
Perfect Z-Cancelling, better combos, avoiding you during recovery(mario luigi downB, Pika perfect angles)
fox to not do standing lasers
have computers be more aggressive instead of just standing there doing nothing/spamming up smashes or something
make it so the computers dont run after items. (link's bombs)
jigglypuff to use rest
kirby to not SD with rock whenever possible.

just some things that came to mind.
 

TANK64

Smash Lord
Joined
Mar 31, 2009
Messages
1,886
Location
Training Mode
i think one of the huge issues with lvl 9's is that they don't do anything when they are off the edge, making them way to easy to edgeguard. Giving your bot some creative recovery options would be awesome.
Yes THIS.
Continuing to recover would make the computer 48308x better.

also, canceling and techs/techrolls would be priority also. Good Luck and stuff.
 

The Star King

Smash Hero
Joined
Nov 6, 2007
Messages
9,681
And it's like YOU don't know better than to interfere with my master plan *maniacal laughter*
 

ciaza

Smash Prodigy
Premium
Joined
Aug 12, 2009
Messages
2,759
Location
Australia
pete is wasted as fuark

obviously prepping himself for the sack a day challenge
 

Sangoku

Smash Master
Joined
Apr 25, 2010
Messages
3,931
Location
Geneva, Switzerland
I have no idea if that's doable and if it will go anywhere, but I think that's really interesting. Exactly what I had been looking for for years.

So I don't know anything about coding/ROM hacking, but I'm willing to try to help the best I can.

Do you plan on changing the current CPU or are you going to create a whole new one?

If you change the current one, here are some things to add:

- Z-cancel
- Tech and techroll
^For these two, maybe having it "press" z + a random direction everytime he's going to hit the ground might be good.
- Shine cancel instead of standing shine
- Short hop lasers instead of standing lasers
- Reuse upb after having been hit : I think the CPU doesn't reuse it if it were hit while not above the stage
- Recovery variation : for Fox, he should recover high and sometimes do the "where am I going to land" variation, if you see what I mean
- Antigimp recovery : he should sometimes attack while recovering (not everytime I guess)
- Edgeguard : I don't know if gimping is going to be too difficult, but some basic edgeguard, like fsmash/dsmash/dash attack could be already good.
- Less rolling
- No random smashes and random upbs to attack
- This one is debatable, but I'm not sure if his frame perfect reaction time is good or not. If you jump/run to a CPU, he will never be surprised (obviously) and will smash at the perfect timing to stop your approach. This is inhuman and works really well if you're used to playing against real players, but once you understand that, you can just dashdance and they will fall for it everytime (another example, if they're on a platform and you cancel a jump below, by shining or DJCing, they will attack everytime).
- DI : not always inside you in a combo + ledge DI/wall DI, etc.

If you want to rebuild a brand new CPU, here are some ideas:

- Maybe having a catalog of different killing combos on every characters for a lot of range of % would help. This will however be long to do, won't work well if the opponent DIs and most importantly, hard to start. If you have a combo on pikachu at 40% starting with an uptilt registered, it won't be a good idea to try to hit with the uptilt as an approach. If you separate the approaching/spacing game with the combo game, it might work? For example, once Fox lands a hit, he finds from the list of combos, which one he can use from that hit.
- Having him SHDL perfectly (meaning the second laser as low as possible) standing and running.
- Same as above concerning recovery/edgeguard
- If you really want him to be insane, you could have him break your shield everytime he lands a shine on it, but that might be too inhuman...
- Even worse, have him DI perfectly (or better: simply a good DI)
- Stage variation : at first, I suggest you create it for Dreamland, as it would be easier to interact with the stage. I mean, it's going to be hard for some things (running SHDL for example) if there's a slope. Fox could shine land on platforms too.

Hmm I think that's about it. If anything else comes to mind, I'll add it.

If you need frame data for anything I mentioned, I can provide them.

Hope it will be possible (doubt it though).
 

cmu6eh

Banned via Warnings
Joined
Apr 29, 2012
Messages
356
Location
Parterre
Sangoku,
I plan to make a wrapper that can read the emulator memory, and provide input either to an existing controller plugin or I may have to write my own controller plugin. This way I won't need to edit the emulator or the rom.
 

Sangoku

Smash Master
Joined
Apr 25, 2010
Messages
3,931
Location
Geneva, Switzerland
So if I understand correctly, you will need that catalog of combos on every char at every %? I still don't really see how you would deal with approaching/spacing wars.
 

Sempiternity

Smash Lord
Joined
Sep 11, 2010
Messages
1,695
Location
Connecticut
So are you going to essentially program a Player 2 (and start from scratch) instead of editing the CPU?

Or will you read the CPU stuff in the ROM and base it off that?
 

cmu6eh

Banned via Warnings
Joined
Apr 29, 2012
Messages
356
Location
Parterre
I hopefully have pulled a friend into this project to assist once we get started. Right now I am beginning the research phase. I'll probably need to start a thread over at TASvideos in order to get assistance with reading emulator memory/RAM address locations.
The plan is to create a controller plugin (or edit and existing one) where the Foxbot takes control of the 1p controller slot. In addition, it will access and read the memory space of the emulator, in order to retrieve the gamestate at 60hz. Initially the Foxbot will only be programmed to play on the fighting polygon stage in order to eliminate having to factor in level specific effects (wind blowing in dreamland, tornadoes in hyrule, etc)

The data it'll need to retrieve:

Pre gameplay:
Current screen (menu/character select/level select/playing)
p2 character​

Right before gameplay:
Current Level​

During gameplay:
p1 position
p1 velocity
p2 input
p2 position
p2 velocity​



The data Foxbot will have stored:

Level Data:
Platform Boundaries,
Soft platform flag
grabable edge flag (and location)​

Adversary Character Data:
Weight (acceleration)
Moveset hitboxes​

Fox's moveset: (These will basically be built up on top of each other (Yay OOP))
Basic button commands (a, b, jump, z, R, L. analog stick position)
Short hop
Frame perfect shine
Teleport up smash
Firing lazers
etc.​

AI control (aka the meat of the program):
Approach, DI, and combo algorithms.​


Since it will take up the 1st controller slot I hope it will able to do netplay.
 

Sangoku

Smash Master
Joined
Apr 25, 2010
Messages
3,931
Location
Geneva, Switzerland
Yay this starts looking really exciting. I can't wait to test it.

Not sure if online will work (except with AQZ, I think it does work with it), but isn't the point of a CPU to play offline alone?

Concerning the emulator memory stuff, maybe firo knows enough to help you? I don't know, might be worth the trial. And if you need inputs concerning techs (SHDL, shines, etc) I can provide some.
 
Top Bottom