Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Muma Rope - Issues with pictures #41

Open
1 of 3 tasks
jetrotal opened this issue Sep 7, 2024 · 2 comments
Open
1 of 3 tasks

Muma Rope - Issues with pictures #41

jetrotal opened this issue Sep 7, 2024 · 2 comments

Comments

@jetrotal
Copy link
Contributor

jetrotal commented Sep 7, 2024

There are a series of issues related to pictures in current version of muma rope.
Mimigris suggested that they were related to the YNOP code being based on 2k picture commands, without supporting 2k3 variations of it.

The Muma Rope devs are patching workarounds to those issues , but those same issues could limit the amount of games supported by ynop.


here they are in detail:

1 - Show Picture - The game doesn't interpret frames from sprite sheets properly in multiplayer:
image

Spritesheet animations are not correctly detected. To support them, a bunch of com.paramenters should be parsed to the server, then executed by each client that shares a pic:
image

2 - Show Picture - The game ignores map layers
image

The multiplayer should also parse the maps layers of each picture, or else everything is going to be on the top.
Here's the correct parameter
image

I guess, it will be hard to predict every parameter that should be shared, for that reason, I suggest parsing through GMI() the entire com variable. since it contains every parameter from a command:
image

The com variables even knows what type of event it should be, through com.code.

Knowing that, I suggest to change how GMI() work, to receive and transmit the entire com.
with that com variable, it should be possible to transform its needed com.parameters[n](like picture ID for YNO). then execute those modified commands trhough something like:

//com being the argument inside every command function (show picture, erase event, play SFX, etc)
    std::vector<lcf::rpg::EventCommand> cmdList; //create an empty list of commands
    cmdList.push_back(com); // send an entire command to that list
    Push(cmdList, 0, false); // execute the command from the list

another problem:

3 - Erase Picture - Batch Erase picture isn't working:
image
Erase picture commands should support a batch that erases multiple pictures at once.

I guess this issue is related to how the GMI() function erases pictures. It simples does not cycle the entire list of pictures:

// problematic code from game_interpreter.cpp -> commandErasePicture()
for (int i = pic_id; i <= pic_id_max; ++i) {
            if (i <= 0) {
                Output::Error("ErasePicture: Requested invalid picture id ({})", i);
            }

            Main_Data::game_pictures->Erase(i);

            GMI().PictureErased(pic_id); //this should be i, not pic_id
        }
@Desdaemon
Copy link
Contributor

Desdaemon commented Sep 8, 2024

Thank you for the detailed report. Are these issues fixable by syncing with upstream again or does it require more careful deliberation? It seems that these are indeed issues with the multiplayer portion, not EasyRPG proper and would need to be fixed from our side.

@Desdaemon
Copy link
Contributor

Extra syncing capabilities have been implemented in #43.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants