ruffle-rs / ruffle

A Flash Player emulator written in Rust
https://ruffle.rs
Other
15.64k stars 809 forks source link

Papa games issues #9201

Closed MartySVK closed 7 months ago

MartySVK commented 1 year ago

Describe the bug

Since Papa games are very popular, I decided to make a special issue for them and test them regularly.

All games use similar logic and will also contain similar features. In addition to Papa games, Flipline Studios has similar games like Jacksmith.

Current issues:

Pastaria swf - LZA1w2C4888Z3a - Pastaria.zip

All games are online here.

List of Games

Bonus: it looks like Jacksmith is working too 🥳

n0samu commented 1 year ago

You should also mention the unclickable menu buttons in games like Papa's Burgeria on Flipline.com: https://www.flipline.com/games/papasburgeria/index.html

ERROR core/src/avm2/events.rs:422 Error dispatching event EventObject(EventObject { type: "addedToStage", class: flash.events::Event, ptr: 0x1a24058 }) to handler FunctionObject(FunctionObject { ptr: 0x6d8bac8 }) : RustError("Cannot access property ::addEventListener of null or undefined")

MartySVK commented 1 year ago

You should also mention the unclickable menu buttons in games like Papa's Burgeria on Flipline.com: https://www.flipline.com/games/papasburgeria/index.html

ERROR core/src/avm2/events.rs:422 Error dispatching event EventObject(EventObject { type: "addedToStage", class: flash.events::Event, ptr: 0x1a24058 }) to handler FunctionObject(FunctionObject { ptr: 0x6d8bac8 }) : RustError("Cannot access property ::addEventListener of null or undefined")

Actually, these kinds of issues are mostly connected with different issues. In this case, it looks like it is connected with Stage invalid. I tried golfinq's PR (https://github.com/ruffle-rs/ruffle/pull/9339) and you can click on the menu button, you can even see the first customer 🥳. Hope, it will be merged soon

n0samu commented 1 year ago

With #9339 merged, Papa's Burgeria works until here, where for some reason it's impossible to click the "Take Order" button: image

I'm guessing this is a mouse pick issue, but it needs further investigation.

EDIT: The same issue occurs in Freezeria, Pancakeria, Taco Mia, and Wingeria.

MartySVK commented 1 year ago

yeah, same for me. I will check other papa games later and add error details

n0samu commented 1 year ago

With #9683 and #9679, Papa's Hot Doggeria is nearly playable, but pouring toppings onto the hot dog does not work. image

Dinnerbone commented 1 year ago

Papa's Hot Doggeria seems to need BitmapData.hitTest to progress that screen

MartySVK commented 1 year ago

wow...nice progress

Lord-McSweeney commented 1 year ago

As part of the graphical issues, Jacksmith seems to have red circles covering weapons (I believe where they were hit with the hammer). Jacksmith finally breaks on ERROR core/src/display_object/movie_clip.rs:1556 Unable to instantiate display node id 1247, reason being: Not a DisplayObject, after delivering the sword to the first customer.

n0samu commented 1 year ago

With #9683 rebased on latest master, Papa's Cupcakeria works until you try to frost the cupcake: image The error is:

ERROR run_frame:run_all_phases_avm2: ruffle_core::avm2::activation: ReferenceError: Error #1069: Property getVector not found on flash.display.BitmapData and there is no default value.
        at cakeGame.models::CupcakeFrosting/getFrostingY()
        at cakeGame.models::CupcakeFrosting/renderFrostingQueue()
        at cakeGame.models::CupcakeFrosting/updateObject()
        at cakeGame.models::Cupcake/updateBuildCupcake()
        at cakeGame.models::FoodOrder/updateBuildCupcakes()
        at cakeGame.screens::BuildScreen/updateScreen()
        at cakeGame.events::GameControls/gameCycle()
Dinnerbone commented 1 year ago

I had no idea there were so many yet unsupported BitmapData methods 😅

n0samu commented 1 year ago

Papa's Pastaria works up until you try to pour sauce onto the pasta. Seems like a similar issue to Hot Doggeria. image

n0samu commented 1 year ago

Papa's Donuteria is officially the first Papa's game to make it through the tutorial! 🎉 image

Unfortunately, the "Take Order" button is unclickable here, even though it was clickable when starting the tutorial.

n0samu commented 1 year ago

Papa's Bakeria is in exactly the same situation as Donuteria: image

Papa's Cheeseria gets stuck when trying to add turkey to the sandwich, with the same BitmapData.getVector error as Cupcakeria: image

Papa's Sushiria gets stuck here: image The error is:

ERROR ruffle_core::avm2::activation: ReferenceError: Error #1069: Property threshold not found on flash.display.BitmapData and there is no default value.
        at sushiGame.models::SushiTopping/cutoutDrop()
        at sushiGame.models::SushiTopping/addDrop()
        at sushiGame.screens::BuildScreen/releaseToppingBin()
        at sushiGame.screens::BuildScreen/releaseScreen()

Papa's Scooperia gets stuck after trying to pour the strawberry syrup: image

The error is:

ERROR ruffle_core::avm2::activation: ReferenceError: Error #1069: Property drawPath not found on flash.display.Graphics and there is no default value.
        at scoopGame.models::SundaeTopping/screenUpdate()
        at scoopGame.models::FoodOrder/updateOnBuildScreen()
        at scoopGame.screens::BuildScreen/updateScreen()
        at scoopGame.events::GameControls/gameCycle()
MartySVK commented 1 year ago

@n0samu Thanks for the deep testing. I wanted to do the same thing tomorrow, so after the next update I will definitely do similar tests of all games.

MartySVK commented 1 year ago

With PR https://github.com/ruffle-rs/ruffle/pull/9683, in Jacksmith I can finish my first order (tutorial), but it is not possible to take another. There are also some graphical issues with the finished sword

image

2023-02-28T23:27:56.131047Z ERROR ruffle_core::avm2::activation: AVM2 error: Object(ErrorObject(ErrorObject { class: TypeError, ptr: 0x1d62b68a8e0 }))
2023-02-28T23:27:56.131459Z ERROR ruffle_core::avm2::activation: TypeError: Error #1009: Cannot access a property or method of a null object reference. (accessing field: ::addEventListener)
2023-02-28T23:27:56.131825Z ERROR ruffle_core::avm2::events: Error dispatching event EventObject(EventObject { type: "addedToStage", class: flash.events::Event, ptr: 0x1d62b421da0 }) to handler FunctionObject(FunctionObject { ptr: 0x1d62b175e00 }) : AvmError(Object(ErrorObject(ErrorObject { class: TypeError, ptr: 0x1d62b68a8e0 })))
2023-02-28T23:28:01.751692Z ERROR ruffle_core::display_object::movie_clip: Unable to instantiate display node id 1247, reason being: Not a DisplayObject
MartySVK commented 1 year ago

After https://github.com/ruffle-rs/ruffle/pull/9819 Papa's Cupcakeria is blocked by unimplemented Graphics.lineBitmapStyle

2023-03-02T23:35:19.142079Z ERROR ruffle_core::avm2::activation: AVM2 error: Object(ErrorObject(ErrorObject { class: ReferenceError, ptr: 0x182e3c827f0 }))
2023-03-02T23:35:19.142903Z ERROR ruffle_core::avm2::activation: ReferenceError: Error #1069: Property lineBitmapStyle not found on flash.display.Graphics and there is no default value.
MartySVK commented 1 year ago

@n0samu, can you please test Bakeria again? I can not finish the tutorial because of panicked at 'assertion failed: self.mask_index_count.is_none()', render\src\tessellator.rs:127:17

n0samu commented 1 year ago

That's strange. I just ran through the tutorial with the latest desktop nightly and did not see that issue.

EDIT: Oh, are you running Ruffle in debug mode? I think this is due to some debug_asserts (that were changed from asserts in #2529, and thus no longer crash Ruffle in release mode)

MartySVK commented 1 year ago

you are right...it is probably only in debug

c4artisan commented 1 year ago

by the pull request that's above this comment taco mia (and i think burgeria but i haven't tested it yet) works almost flawlessly however the taco toppings go to the bottom of the shell and (of course) there are no effects image

c4artisan commented 1 year ago

the errors on the console: image

MartySVK commented 1 year ago

it is probably because of hitTest stub. Same for Hot Doggeria

c4artisan commented 1 year ago

ah. hope it's implemented soon

InputEvelution commented 1 year ago

The issue of toppings not piling up correctly also seems to be an issue for Papa's Freezeria. Freezeria also seems to have a strange sound problem when switching between certain scenes, where the audio will suddenly loudly peak for a short moment.

InputEvelution commented 1 year ago

Pancakeria seems to have similar sound problems to Freezeria. The text and font rendering issues pose a large problem for this game, as it's impossible to see how many of a certain topping you need to put on from the ticket. Additionally, the ticket read-off is bugged; past the first detail being listed by the customer, everything else will appear on the ticket in a split second.

InputEvelution commented 1 year ago

While deleting save game data works fine for Burgeria currently, functionality seems to be broken in Taco Mia onwards.

n0samu commented 1 year ago

Wingeria also has some noticeable font issues.

MartySVK commented 1 year ago

In Hot Drogeria, when putting toppings on the hotdog, only the first topping that touches it seems to stick, the rest just fall down. image left - Ruffle right - Flash Player

But mustard sticks without any problems

c4artisan commented 1 year ago

In Hot Drogeria, when putting toppings on the hotdog, only the first topping that touches it seems to stick, the rest just fall down. image left - Ruffle right - Flash Player

But mustard sticks without any problems

:< i hope that doesn't happen in taco mia

c4artisan commented 1 year ago

it does. let's just hope it's fixed soon

n0samu commented 1 year ago

Unfortunately the games have regressed on desktop due to an XML issue - see #10498

n0samu commented 1 year ago

The XML issue will be fixed by #10500.

Playing through the tutorial in Freezeria, I noticed a similar error to the one in Pastaria, although this one just causes a tiny glitch while the first customer is ordering, with seemingly no effect on gameplay. ERROR run_frame:run_all_phases_avm2: ruffle_core::avm2::events: Error dispatching event EventObject(EventObject { type: "enterFrame", class: flash.events::Event, ptr: 0x1a8f83ac070 }) to handler FunctionObject(FunctionObject { ptr: 0x1a8e2532d10 }) : RustError("ArgumentError: sprinkles is not a valid frame label.")

The issues with missing text in Freezeria, Pancakeria, and Wingeria all seem to be fixed by #10494! 🎉

InputEvelution commented 1 year ago

The issues with missing text in Freezeria, Pancakeria, and Wingeria all seem to be fixed by #10494! 🎉

Are you sure? Pancakeria still lacks the text indicating how many of a topping to put on with the tickets for me.

n0samu commented 1 year ago

Oh, you're right. I'm not sure whether that's really a font issue though. While the customer is ordering, there are several errors, and the ticket is drawn faster than it's supposed to be: ERROR run_frame:run_all_phases_avm2: ruffle_core::avm2::events: Error dispatching event EventObject(EventObject { type: "enterFrame", class: flash.events::Event, ptr: 0x20a880e6390 }) to handler FunctionObject(FunctionObject { ptr: 0x20a84b6ff10 }) : RustError("ArgumentError: pancake is not a valid frame label.") ERROR run_frame:run_all_phases_avm2: ruffle_core::avm2::events: Error dispatching event EventObject(EventObject { type: "enterFrame", class: flash.events::Event, ptr: 0x20a8810d990 }) to handler FunctionObject(FunctionObject { ptr: 0x20a84b6ff10 }) : RustError("ArgumentError: butter is not a valid frame label.") ERROR run_frame:run_all_phases_avm2: ruffle_core::avm2::events: Error dispatching event EventObject(EventObject { type: "enterFrame", class: flash.events::Event, ptr: 0x20a8810e110 }) to handler FunctionObject(FunctionObject { ptr: 0x20a84b6ff10 }) : RustError("ArgumentError: blueberries is not a valid frame label.")

MartySVK commented 1 year ago

unfortunately Pastaria is broken with similar error

c4artisan commented 1 year ago

any updates on the taco mia and hot doggeria and etc thing? (the ingredients going to the bottom or whatever)

InputEvelution commented 1 year ago

Some interesting observations about the current issues with ingredients going to the bottom in Taco Mia:

All in all, it seems the issue may be that ruffle's hitTest is only recognising the most recent type of object to be added to the taco's collision mesh. The moment that changes, everything that came before is immediately ignored.

InputEvelution commented 1 year ago

While the customer is ordering, there are several errors, and the ticket is drawn faster than it's supposed to be.

This seems to be a problem in Freezeria as well, though not to the same extent - it's only when the ticket ordering gets to the last few items (such as sprinkles) that it seems to start going faster than intended.

InputEvelution commented 1 year ago

An obscure issue with Papa's Pizzeria (that primarily affects speedrunners and TASers) has emerged: https://github.com/ruffle-rs/ruffle/issues/10682

InputEvelution commented 1 year ago

The Breakfast Blast minigame in Pancakeria and Wingeria seems to be completely broken currently - selecting Play will simply open the curtains up to a black screen, with the player unable to do anything other than close and re-open Ruffle.

InputEvelution commented 1 year ago

Donuteria has an odd visual bug where when inserting fillings into the donuts, the tube connecting the end to the wall will be completely invisible. Gameplay-wise, however, all appears to work as intended so far.

InputEvelution commented 1 year ago

All the gamerias from Wingeria onwards allow the player to take a photo of their character in-game and save it to their computer. When clicking the "Save Photo" button, Ruffle gets stuck and won't respond to input without some finicky workarounds (clicking off of Ruffle and back in seems to sometimes fix the problem).

n0samu commented 1 year ago

Save Photo (and saving/loading backup save files) needs FileReference methods that Ruffle hasn't implemented yet.

n0samu commented 1 year ago

As mentioned in #10760, some of the button hover effects are incorrect. You can see it immediately in Burgeria as well: burgeriabuttons

These buttons have "over" state records with the Overlay blend mode. For some reason this isn't working in Ruffle. Maybe button records with blends don't have special handling implemented yet.

Here is an isolated SWF of just the HUD buttons from Pancakeria, for easier testing: PancakeriaHUDButtons.zip

InputEvelution commented 1 year ago

Here's a list of graphical issues that have come to my attention in testing Cheeseria and Bakeria recently:

InputEvelution commented 1 year ago

Sushiria seems to have two gameplay issues in Ruffle that I haven't seen mentioned here:

lemaximedu66 commented 1 year ago

Save Photo (and saving/loading backup save files) needs FileReference methods that Ruffle hasn't implemented yet.

still not implemented yet as of today

c4artisan commented 1 year ago

anything on the taco mia and hot doggeria issues? (the topping ones)

n0samu commented 1 year ago

The invisible syrup in Scooperia has been fixed by #11898. And button blends & filters are fixed by #11891. (Besides a minor issue that I described in #11907)

MartySVK commented 1 year ago

I noticed new regression in Pastaria, when I use tomato sauce, the texture is invisible. It will become visible at the end. This was working before. image image

The last working build is Nightly 2023-06-23. Probably caused by cacheAsBitmap - https://github.com/ruffle-rs/ruffle/pull/11638