ipodtouch0218 / NSMB-MarioVsLuigi

Standalone Unity remake of New Super Mario Bros DS' multiplayer gamemode, "Mario vs Luigi"
https://ipodtouch0218.itch.io/nsmb-mariovsluigi
663 stars 294 forks source link

Inaccuracies & Bugs #44

Open Pronimal opened 2 years ago

Pronimal commented 2 years ago

Introduction

I played this gamemode a lot as a kid and found it an absolute joy to play this again with friends for the past few days. We've been playing this quite a lot. Apologies if this is quite a lot of information, but I'm really impressed by the quality and want to see it become as accurate as possible.

I've been crossreferencing footage from a few channels, with this being the most helpful mainly because they play on all stages: New Super Mario Bros. I will be timestamping videos created by them if necessary to mention inaccuracies.

EDIT 1: Added section about D-Pad issues and video link for infinite star state EDIT 2: Added correction to Enemy Spawning section. I misunderstood how it worked. Added Additional suggestion at the end because I suggested another lobby option

Hitstun

1) Jumping on another player multiple times is possible while stunned, but this will only drop the star the first time. An extreme example can be found here There doesn't appear to be any hitsun frames for jumping on another player, so theoretically, a player can be jumped on as much as desired. This doesn't appear to be the case in this remake since you can only jump on them once. In a more practical application, this video shows you can immediately jump on the stunned player a second time after hitting them, but once they stand up, they cannot be jumped on. This is seen differently in the remake here:

https://user-images.githubusercontent.com/108695324/177212614-44dc0d9c-eeee-420e-a7b9-b7c64166fe0e.mp4

Invincibility Frames

2) Also found in the previous video, there is invincibility frames after losing a second tier powerup. In this remake, if you are crushed, there are no invincibility frames and you will lose both powerups and 2 stars, turning you immediately back into the small player. This may be intentional because the stars don't randomly shoot out and always go out in both directions at once, but I thought it worth mentioning because it makes Fortress a little more bearable. I don't know how long the invincibility frames last, but it will definitely be harder to find a video for that. The remake's footage is shown here:

https://user-images.githubusercontent.com/108695324/177212194-a3c6447d-dfd7-4bcc-a0a3-1e1d124a7a99.mp4

Brick Animation

3) When bricks are destroyed and respawned, the bricks' shining animation loses sync. I'm not sure what causes this, but it should probably be looked into. This desync is not seen in the original. Similarly, the shining animation appears to be 2x slower in the remake. This desync can be seen here:

https://user-images.githubusercontent.com/108695324/177213091-1e928bd6-39ec-4805-b885-dbbc4831c858.mp4

Item Inventory

4) Seen in this video, when spawning in an item from the inventory, it's at the second to top block level. There's a very slight pixel deviation, but it's functionally on that block level. In the remake, the item held in the inventory is at a half block level. This leads to there being a much larger drop in situations when the powerup would simply start moving almost immediately. I also imagine this is partly why the hitbox is wonky when used in Fortress. The remake's footage is seen here:

https://user-images.githubusercontent.com/108695324/177213575-ed84f0be-3b5d-4a7e-87d5-12fb4d43b558.mp4

Music Randomness

5) The music present in the remake is not random. Rather, the same track is played in the same stage at all times. In the original, this track was randomly chosen between the two. It doesn't appear to be affected by stage, wins, or turn order. I could not get the second track to play on Grasslands in the remake no matter how I played it. Grasslands Track 1 Track 2 Bricks Track 1 Track 2 I don't think I have to bother doing the rest. I think the reason why this change would be beneficial is obvious.

Enemy Spawning

6) As seen in this video, within Grasslands, if you immediately run left, the enemies will spawn facing right. Enemies spawn facing the player when that player causes them to spawn by coming close to their spawn point. This should be fairly easy to test within the remake, so I won't be showing a video.

7) Also, If enemies aren't spawned due to being in close proximity to the player or some other reason, they will attempt to spawn again if they go back into the area. This is seen here. This probably isn't necessary but when the enemies in Grasslands fall into pits so easily, I think they should at least appear. It feels kind of empty when they die before you can see them. Correction: Enemies will spawn or respawn whenever three conditions are met: their spawn point is out of view from other players, they were killed or don't exist, and a player goes near their spawn point (likely one block off-screen). Seen in the earlier video from this section, enemies do have the condition they must be killed, as the koopa continued to move off-screen. Though it seems that if they fall off a block off-screen, they will despawn rather than fall (as seen with that goomba). So their respawning isn't actually tied to collecting the star oddly enough. Because of the 10 player nature of the game, this may not be feasible to have it work the way in the original. Perhaps by default, enemy spawning works as it did the original (ie, spawning a block or so off the screen in the original resolution), but you could also add an option that allows enemies to spawn from the star being collected? One that would allow you to check it on/off similar to the custom powerups setting? You could also potentially have a seekbar for the spawn radius of enemies from the players, but it might be better to just include the smaller radius in the proposed "Spawn Enemies from Stars" setting or something. This would be a nice balance between the original and remake. This original respawning behavior can be clearly seen by paying attention to a game in Bricks such as here. I feel this change would make the maps feel a lot more lively with enemies, since Grasslands does at times feel rather empty due to the enemies both spawning and dying off-screen before you have a chance to see them. It would also make it a lot less jarring when they respawn, since they would only spawn off-screen rather than out of thin-air (assuming the original resolution is selected)

Blue Shell Item Hierarchy

8) This is a minor thing and I believe this difference in the remake might be for the best, but a fire flower does not override the blue turtle shell in the original as it does in the remake. If you have the blue turtle shell powerup, collecting a fire flower will put the fire flower into your inventory. This might be helpful for users of the blueshell though since a powerup cannot stop their shell movement, so I feel this worth mentioning.

Giant Star Physics

9) This may be obvious, but the arc of the star when dropped is far from the original's. This leads to the star doing things in the terrain it wasn't intended to. The star in general is very complicated and I can't begin to imagine how difficult it is to program correctly, but I believe getting the arc correct is the first big step. This will likely involve much trial and error, but I believe a good test case for the first bounce is seen here. As you can see, getting hit at the edge of this pipe will cause the star to fall directly into the pit. This is partially because of the strange star collision, but also due to the differences in the arc. This is different in the remake as seen here:

https://user-images.githubusercontent.com/108695324/177220677-bdce328c-10e1-4aef-a54a-f2e0887b47e2.mp4

I believe a lot of testing will need to be done to get this arc to function correctly, but I have some comparison images. In this first image, I show the peak height of the first star jump. Both of these players were shot on ground level. On the left is the original, and on the right is the remake. Worth mentioning, however is that even though the star reaches the height of those blocks on the left, it doesn't actually land on them. In this comparison shot, you can see that in the original game stars had the ability to at least land on top of a block one block higher. I believe this change in the remake has consequences on the level design, especially in Fortress.

image

In this comparison shot, I show the peak of the second star jump. In the original, the peak was around the middle of the fourth block from the ground, but in the remake it's almost entirely above it.

image

I can't comment on other issues relating to the star's mechanics such as the collision box or acceleration and velocity, but I believe fixing this arc should come first.

Infinite State Bugs

10) These are client-side bugs my friends and I found in 1v1 matches. I'll discuss this using P1 and P2 for the players. There is a rare bug where P2 will appear to be in a star state infinitely, meaning that P1 cannot hit the P2 anymore even though P2's star state has disappeared on his end. This issue only appears on one player's game, so to the other player, nothing is wrong. In this infinite star state, they only can't be hit or taken damage from. The star state from P2 cannot damage P1 anymore. I know this to be the case because P1 used a giant mushroom and ran into P2 multiple times. This bug lasted until the end of the game and the star's music continued to play. This bug with the infinite star can be seen at 1:10 in this video. In another game, another similar bug appeared. P2 was in as infinite drill state with the propellor suit. What I mean by this is P2 was in the drill state even when he was moving as if he was regular mario. He could not be hit. The drill animation continued. This was also client-side. Only P1 could see this. In another game, I noticed P2 was "smoking" or something. I imagine this is because of the ground pound or something. I'm unsure if P2 could do damage on P1.

Giant Star Drop Consistency

11) From my understanding, whenever a player loses a star, it always comes out of their back. In this remake, there are tons of situations where it is random. There are some cases where the star appears in the original to not actually come out of the back when falling down a pit, but this may be due to input made to turn the character around last second. They were probably trying to wall jump but failed. In almost all cases if someone is knocked into a pit, it comes out of their back. I don't believe it's random, I believe this is due to last second player input that it appears random in the original. For instance, in this part of the video, it appears to come out of the player's front here, but this is due to the game interpreting the movement right from the blocks as moving in the right direction, so the game mistakenly made the star come out of the front side. In almost all cases, when falling into a pit, the star comes out of the back. Also, in the remake, the star appears to come out of a random side when hit from under a block. I'm not sure why this is. In the original, this always comes out of the back of the player hit. Within the remake, it's also random if hit by an enemy, instead of only coming out of the back like the original. It also appears to come out of the front when crushed in Fortress, despite it being the opposite in the original. That's seen here. This is a feature that's strongly consistent in the original. Since a lot of this is tested with probability, I can't link every example possible, otherwise I could potentially be cherrypicking. A similar bug, but not quite, is one where sometimes the star will come out of the front of the player even when hit by another player. Because of how rare this is, this is definitely not random. I believe this is because of the speed of fireballs and the lag brought from netplay. Basically, I think it only goes out of the front of the player because the fireball registers as hitting the back of the player due to lag. Not sure how to fix this. Maybe implement rollback (lol) I believe having the star drops being as consistent as the original would make collecting the stars a lot easier, and make fighting more strategic.

Giant Star Drop at Death

12) There's a very strange phenomenom in the game where a star will actually come out at a much higher height than usual. I think this has something to do with death. This can be seen here On second inspection, this does appear to have to do with death. Check here; when the player falls into the pit, the star actually reaches around the same height as if the player had been hit on the ground. I believe the star actually goes much higher when the player dies specifically to account for this. This seems to be consistent. I believe having this functional would allow the level design to function more properly than it does in the remake. Correction: I noticed within the code there DOES appear to be a check for this, so maybe I was wrong. I can't tell if the height difference between death and regular hit are the same as in the original or not, but the check does exist, so this section likely has no reason to exist. My bad.

Giant Stars Improperly Spawning (Resolved in v1.6.5.0)

13) Three giant stars don't spawn in the Bricks map when they did in the original. Placement 1 can be seen here, Placement 2 can be seen here, Placement 3 can be seen here. I collected 100 stars in this map, so they either don't exist or improperly spawn. One giant star doesn't spawn in the Pipes stage. This can be seen here. Didn't spawn after collecting 50 stars. One giant star doesn't spawn in the Ice stage. This can be seen here. Also didn't spawn after collecting 50 stars. I didn't notice any missing giant stars in the noncustom stages. Grasslands and Fortress seem to have all the stars spawning. These maps from this site may be helpful for getting the map correct in all places.

Giant Star Spawning Proximity

14) Stars can spawn in the same location as players. This doesn't appear to happen in the remake but it can be shown to happen here in the original, and this does not depend on if anyone is winning or not. Some games can be won solely because the star spawned right on top of them. That situation can be found here. In the remake, I've noticed stars have a preference to spawn further away from you or at least not close to you, but this isn't seen in the original, and I believe changing this back to how the original worked may make the game more fun due to randomness and chaos. Because this game can have up to 10 players, I can see why the stars may need to be spawned further away from players, but I think this should be an option since this is different from how the original game functioned. Though, in stages like Bricks, this spawning proximity leads to certain stars spawning at much higher rates in certain locations that can be predicted if you pay attention, and inadvertedly allow for camping. I had two players stand in two positions in Bricks and the same giant star spawned 10 times in a row (above the powerup block, and on the lower star next to the rising platform). Running away seems to be encouraged more than fighting since stars never spawn very close to the players, so I believe having it be completely random like the original would allow for a much more balanced game.

D-Pad Functionality (Partially Resolved?)

15) Me along with a couple of friends were having issues with getting the D-pad to work. It was definitely registering the inputs, but it would move the player such a small amount it was worthless. Holding it did not cause the player to accelerate or move. Pressing it would just inch the player closer. I'm not sure why that is, but we just used the joystick instead. One person among us did have a functional D-Pad though. I used a Switch Pro Controller connected via bluetooth. Can't attest for the others. UPDATE: setting both the primary and secondary input to the D-Pad fixed my issue, but having the primary and secondary input be both still causes issues (regardless if the D-pad is primary or secondary, having joystick and D-pad configured at the same time had problems). This is a minor problem now.

Other Bugs

16) Momentum isn't retained properly when crouching after running. I don't think this needs to be shown, but it does create issues in Fortress (Resolved in v1.6.6.0, may be too fast but I can't tell. no issues during gameplay)

17) Weird visual glitch where the ground pound has you crouching. probably noticed by now (Resolved in v1.6.6.0)

18) There's a rare bug where the giant star can't be collected after it's been dropped. This was said to have been fixed in an earlier update, but the issue is still present. This can seen at 2:00 in this video. Yeah, we had a tournament lol

19) This is stupidly minor but I just wanted to mention these coins are placed wrong lol (left is original, right is remake) (Resolved in v1.6.5.0)

image

20) also the star here is weird (Resolved in v1.6.5.0). the platform in the fortress stage is one solid entity while it wasn't in the original, but I don't think this matters too much. you probably already noticed this (Resolved in v1.6.6.0)

image

21) a friend of mine mentioned that you can actually hit big mario from below with a block to knock a star out of him, so I don't think I need to go into detail for that. not sure if I found that or he did

This isn't much of an issue but do you think you could have custom powerups off by default? haha

I think I suggested way too many options that could be added in the server options stuff, so do you think you could have it so that lobby settings are saved so you don't have to re-do them every time you create a lobby? no idea how hard that would be but it would be very helpful

Final Thoughts

You are doing god's work. Keep it up. I can't believe how functional this is. Good luck with finishing this project. I've been waiting for a project like this for ages and I greatly appreciate it. I can't think of any other issues I've had with the game so far and frankly it's getting late. If I can think of or find anymore, I'll mention it. Good luck! I hope this was helpful.

ShadowWalker13 commented 2 years ago

for # 15, the dpad not working properly, a fix you could try is setting the dpad as the primary movement option in the Controls menu, which has fixed the issue for most people

Pronimal commented 2 years ago

Thank you! I didn't do much testing regarding the D-Pad issue (since yknow joystick worked perfectly fine) but it looks like setting both the primary and secondary input to D-Pad has the D-Pad fully functional. Dunno why it has to be both though. Setting D-Pad as primary and joystick as secondary had the same issue with the d-pad not working, so maybe they're interfering or something? I'll update my issue post thing I guess lol

ipodtouch0218 commented 2 years ago

It's possible that the joystick is polled continuously, while the dpad buttons only update when their state changes. And since the joystick was the last value given to the input system, that's the one it uses. Will investigate when I have the time.

ipodtouch0218 commented 2 years ago

Fixed missing star spawns (item 13) Fixed incorrectly placed coins (item 19)

ipodtouch0218 commented 2 years ago

Fixed crouch groundpound (item 17) in v1.6.6.0