davidc / gootool

GooTool, addin manager for World of Goo
http://goofans.com/gootool
12 stars 5 forks source link

WoG 2019 Game changes #1

Open urkle opened 5 years ago

urkle commented 5 years ago

I've started a list of changes for the game up on https://pcgamingwiki.com/wiki/Talk:World_of_Goo

And if you need any other details ask and I can document them here for you.

davidc commented 5 years ago

That's great, thank you. One other thing I've noticed on Windows (2D Boy version) is that the game assets (res and properties) are now in a "game" subdirectory. Does that apply to all the distribution versions? Are there any changes to directories on Mac or Linux (I won't be able to test those)?

urkle commented 5 years ago

Yes, all of the assets have moved to a "game" subdirectory for all platforms. On mac that would be the World of Goo.app/Contents/Resources/game/ directory. (as it's a bundle on macOS).

McMistrzYT commented 3 years ago

This is a problem, because you need the original game to mod WoG, and it’s hard to find.

meh2481 commented 9 months ago

I've started a list of changes for the game up on https://pcgamingwiki.com/wiki/Talk:World_of_Goo

And if you need any other details ask and I can document them here for you.

@urkle Hello! I've reached out elsewhere, but do you have any input on https://github.com/goofans/WooGLE/issues/2 ? On 1.3 we were able to run levels directly with e.g. "WorldOfGoo.exe AB3" but that seems to have been changed or removed in the 2019 version.

urkle commented 9 months ago

@meh2481 looking at the code ONLY the linux build has that functionality.

I'll reach out to Kyle and see if he's ok with me patching and pushing an update to add that functionality to all platforms.

meh2481 commented 9 months ago

Thanks, that would be awesome!

urkle commented 9 months ago

@meh2481 I got an OK to proceed from Kyle (so long as I handle QA and don't create any regressions :-D )

One quick question though, how exactly do custom levels get introduced? I'm assuming you are putting the files in the game install directory (which would be in Contents/Resources on macOS, breaking code-signing).

One item that I was going to look into adding was the ability to load resources from the user-profile folder as an optional place making this a little smoother.

meh2481 commented 9 months ago

@urkle I'll ask everyone else about MacOS; not sure there. The user profile folder would certainly workaround the code signing issue.

For Win/Linux, we usually just have a separate installation (or two; one for level editing and one for modding) of the game in documents or wherever, and add custom levels/resources in the same folder as the base game levels are kept, as you said.

For level editing, the 1.3 version of the game would allow you to specify a level name via commandline and it'd run it, regardless of if it was a base game level or not, so having it all in the same folder worked transparently.

For distributing mods, we have a separate tool (this one, gootool) that modifies the XML for island 1 to add new buttons for custom levels up top. I think XSLT transforms are involved. I'm catching up with the modding scene myself lol. I think 1.5 allows custom islands, too, but I'm not sure anyone has gotten around to standardizing modifying the world map to add them.

zakaryan2004 commented 8 months ago

@urkle I'll jump in about macOS. We do it the same way: We manually copy all of the files to a custom installation into a new .app, and run the game from there. As you said, all custom levels/resources are in the Contents/Resources directory.

Indeed, this should have broken code signing, especially on Apple Silicon machines, but there are some interesting things to note here.

Trying to verify the code signature on the original binary (downloaded from Epic Games)

/Users/Shared/Epic Games/WorldOfGoo codesign -d --verify --deep --verbose=4 World\ of\ Goo.app
--prepared:/Users/Shared/Epic Games/WorldOfGoo/World of Goo.app/Contents/Frameworks/libSDL2_mixer.dylib
--validated:/Users/Shared/Epic Games/WorldOfGoo/World of Goo.app/Contents/Frameworks/libSDL2_mixer.dylib
--prepared:/Users/Shared/Epic Games/WorldOfGoo/World of Goo.app/Contents/Frameworks/libSDL2.dylib
--validated:/Users/Shared/Epic Games/WorldOfGoo/World of Goo.app/Contents/Frameworks/libSDL2.dylib
World of Goo.app: unsealed contents present in the bundle root

And notarization

/Users/Shared/Epic Games/WorldOfGoo spctl -a -vvv -t install World\ of\ Goo.app            
World of Goo.app: rejected (unsealed contents present in the bundle root)
origin=Developer ID Application: 2D BOY (SFWNMWJGQC)

I don't know if this is something that's only seen in my case, but I completely uninstall and redownload the game, and it's like this again. This causes the problem of the game not opening without right click>Open for the first time.

About code signature issues, I don't think that the files in Resources are code-signed

/Users/Shared/Epic Games/WorldOfGoo codesign -dv --verbose=4 World\ of\ Goo.app/Contents/Resources/game/res/islands/island1.xml 
World of Goo.app/Contents/Resources/game/res/islands/island1.xml: code object is not signed at all

More serious code-signing issues arose when I tried to mod the libSDL shipped with the game (to add features like in-game volume control), but things like this should always trigger code-signing issues and it won't be a good idea to allow mods like this officially.

zakaryan2004 commented 8 months ago

@urkle By the way, I just discovered a built-in Alt+M shortcut that mutes audio on the game. Is this something implemented by WoG or a side effect of other libraries/frameworks used? If this is a WoG feature, do other shortcuts exist?

urkle commented 8 months ago

@zakaryan2004 the Epic game store build of WOG is probably not codesigned at all as they didn't require code-signing. (I believe they remove the quarantine xattr off of the application like steam and GOG do).

I'll recheck that though as EGS has most likely changed things since WoG was published on there (as I published little inferno on there end of last year and I DID code-sign and notarize those)

As for the alt-m shortcut, I know that was in the linux port of the game and most of the work for the 2019 WoG came out of the SDL2 port for the OS interactions. (as everything moved to SDL2 + GLES2 based renderer).