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

Add Steamworks Support #5401

Merged
merged 19 commits into from
Jun 22, 2023
Merged

Add Steamworks Support #5401

merged 19 commits into from
Jun 22, 2023

Conversation

arthuro555
Copy link
Contributor

Adds a steamworks.js integration to GDevelop.

The namespaces networking and overlay were not implemented because overlay is not released yet and networking only supports old deprecated steam networking instead of the new one.

The events were tested by running them in the event sheets, although I could confirm they do not crash the game and do something, I could not always confirm that the correct behavior is yielded since I do not have a real steam game to test on. Notably, I could not test whether or not Steam Input and Steam Workshop were fully working.

@arthuro555 arthuro555 requested a review from 4ian as a code owner June 14, 2023 03:42
@arthuro555
Copy link
Contributor Author

Testing build download URL: https://s3.arthuro555.com/GDevelop_Steamworks.exe

@Silver-Streak
Copy link
Collaborator

@arthuro555

Missing icon on this action on the test build:
image

@arthuro555
Copy link
Contributor Author

Fixed 👍

Copy link
Owner

@4ian 4ian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good overall!

newIDE/electron-app/app/package.json Outdated Show resolved Hide resolved
.vscode/settings.json Show resolved Hide resolved
Extensions/Steamworks/JsExtension.js Show resolved Hide resolved
Extensions/Steamworks/JsExtension.js Outdated Show resolved Hide resolved
Extensions/Steamworks/JsExtension.js Outdated Show resolved Hide resolved
arthuro555 and others added 3 commits June 18, 2023 13:19
Co-authored-by: Florian Rival <Florian.rival@gmail.com>
@arthuro555 arthuro555 requested a review from 4ian June 18, 2023 11:53
@arthuro555
Copy link
Contributor Author

Note to anyone that used the test build above: some internal condition names have changed, and thus will not be recognized by GDevelop once the feature releases, you will have to re-add those conditions!

@arthuro555
Copy link
Contributor Author

(This is ready for another review/merging, by the way)

Extensions/Steamworks/Z_steamworksinputtools.ts Outdated Show resolved Hide resolved
Extensions/Steamworks/Z_steamworksinputtools.ts Outdated Show resolved Hide resolved
Extensions/Steamworks/Z_steamworksinputtools.ts Outdated Show resolved Hide resolved
Extensions/Steamworks/JsExtension.js Outdated Show resolved Hide resolved
Extensions/Steamworks/steamworkstools.ts Outdated Show resolved Hide resolved
Extensions/Steamworks/JsExtension.js Outdated Show resolved Hide resolved
Extensions/Steamworks/JsExtension.js Outdated Show resolved Hide resolved
@arthuro555 arthuro555 requested a review from 4ian June 20, 2023 17:12
@AlexandreSi AlexandreSi merged commit 3c43f28 into 4ian:master Jun 22, 2023
3 checks passed
@4ian
Copy link
Owner

4ian commented Jun 22, 2023

This makes the macOS code signing to fail: see https://app.circleci.com/pipelines/github/4ian/GDevelop/10204/workflows/facc11a8-54f2-4de7-9af0-b61df63f63a6/jobs/11290

⨯ Command failed: codesign --sign FB6D820A03351D2A14358DEB71ACF68A9ACC2CCE --force --keychain /var/folders/bl/wbxjgtzx7j5_mjsmfr3ynlc00000gp/T/f0dd2d22bf3ebf95800bc2cac4ce74a5430f4d93ec74f5e0171b03fbbf715269.keychain --timestamp --options runtime --entitlements /Users/distiller/project/newIDE/electron-app/build/entitlements.mac.inherit.plist /Users/distiller/project/newIDE/electron-app/dist/mac/GDevelop 5.app/Contents/Resources/app.asar.unpacked/node_modules/steamworks.js/dist/osx/steamworksjs.darwin-x64.node
fatal error: /Applications/Xcode-12.5.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate: can't allocate code signature data for: /Users/distiller/project/newIDE/electron-app/dist/mac/GDevelop 5.app/Contents/Resources/app.asar.unpacked/node_modules/steamworks.js/dist/osx/steamworksjs.darwin-x64.node (for architecture x86_64) because larger updated load commands do not fit (the program must be relinked using a larger -headerpad value)
/Users/distiller/project/newIDE/electron-app/dist/mac/GDevelop 5.app/Contents/Resources/app.asar.unpacked/node_modules/steamworks.js/dist/osx/steamworksjs.darwin-x64.node: the codesign_allocate helper tool cannot be found or used
  failedTask=build stackTrace=Error: Command failed: codesign --sign FB6D820A03351D2A14358DEB71ACF68A9ACC2CCE --force --keychain /var/folders/bl/wbxjgtzx7j5_mjsmfr3ynlc00000gp/T/f0dd2d22bf3ebf95800bc2cac4ce74a5430f4d93ec74f5e0171b03fbbf715269.keychain --timestamp --options runtime --entitlements /Users/distiller/project/newIDE/electron-app/build/entitlements.mac.inherit.plist /Users/distiller/project/newIDE/electron-app/dist/mac/GDevelop 5.app/Contents/Resources/app.asar.unpacked/node_modules/steamworks.js/dist/osx/steamworksjs.darwin-x64.node
fatal error: /Applications/Xcode-12.5.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate: can't allocate code signature data for: /Users/distiller/project/newIDE/electron-app/dist/mac/GDevelop 5.app/Contents/Resources/app.asar.unpacked/node_modules/steamworks.js/dist/osx/steamworksjs.darwin-x64.node (for architecture x86_64) because larger updated load commands do not fit (the program must be relinked using a larger -headerpad value)
/Users/distiller/project/newIDE/electron-app/dist/mac/GDevelop 5.app/Contents/Resources/app.asar.unpacked/node_modules/steamworks.js/dist/osx/steamworksjs.darwin-x64.node: the codesign_allocate helper tool cannot be found or used
               

I read "because larger updated load commands do not fit (the program must be relinked using a larger -headerpad value)
" => is this something to fix on Steamworks.js side? cc @arthuro555

I Tried to not code-sign the executable but then notarization fails: see #5437

I'm reverting this, so we can open a new PR but test the macOS build before merging :) @arthuro555 you can open the PR again with experimental-build/ as a prefix so that builds are being made. EDIT: actually you can't from a fork, @AlexandreSi, @ClementPasteau or myself will do it.

4ian added a commit that referenced this pull request Jun 22, 2023
4ian added a commit that referenced this pull request Jun 22, 2023
@arthuro555
Copy link
Contributor Author

I'm reverting this, so we can open a new PR but test the macOS build before merging :) @arthuro555 you can open the PR again with experimental-build/ as a prefix so that builds are being made.

I don't have any accesses to this repository, so I cannot create a branch on it. I don't think the CI will build experimental builds if I prefix a branch on my fork experimental-build/, would it?

@4ian
Copy link
Owner

4ian commented Jun 22, 2023

Unfortunately it won't indeed. Can you re-open a new PR and we will make a branch experimental-build for it?

Include the change to config.yml you can see in https://github.com/4ian/GDevelop/pull/5437/files - it's temporary but will allow the branch we'll do to actually do the code signing (and so, we can actually test fixes).

I wonder if we should open an issue on steamworks.js - seems like the node executables need some flag when building them.

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

Successfully merging this pull request may close these issues.

None yet

4 participants