GSoC Final Evaluation: Steam Workshop SDK/Third Party Integration

Reporter: k0T0z  |  Status: closed  |  Last Modified: October 12, 2023, 03:22:19 am
Closes #1881. This is the second part of my first PR #2343.

This PR is part of the Google Summer of Code 2023 program.

I will be updating my Logs inside my domain.

Note: ✔️ means that SOG/unit tests for the corresponding function are provided.


Leaderboards API

  • ✅ steam_create_leaderboard();
  • ✅ steam_upload_score();
  • ✅ steam_upload_score_ext();
  • ⬜ steam_upload_score_buffer();
  • ⬜ steam_upload_score_buffer_ext();
  • ✅ steam_download_scores();
  • ✅ steam_download_scores_around_user();
  • ✅ steam_download_friends_scores();
  • LeaderboardEntry data type
  • LeaderboardDisplayType constant
  • LeaderboardSortOrder constant

Social API

  • ✅ steam_set_rich_presence();
  • ✅ steam_set_clear_presence();
  • ✅ steam_user_set_played_with();
  • ⬜ steam_get_friends_game_info();
  • ✅ steam_get_user_avatar();
  • ✅ steam_image_get_size();
  • ✅ steam_image_get_rgba();
  • ✅ steam_image_get_bgra();
  • ✅ steam_image_get_argb();
  • ✅ steam_image_create_sprite();

Cloud API

  • ⬜ steam_is_cloud_enabled_for_app();
  • ⬜ steam_is_cloud_enabled_for_account();
  • ⬜ steam_get_quota_total();
  • ⬜ steam_get_quota_free();
  • ⬜ steam_file_exists();
  • ⬜ steam_file_size();
  • ⬜ steam_file_persisted();
  • ⬜ steam_file_write();
  • ⬜ steam_file_write_file();
  • ⬜ steam_file_read();
  • ⬜ steam_file_share();
  • ⬜ steam_file_delete();

Must Be Done Before Merging:

✅ Adding support for other platforms in the Makefile file.
✅ Switching the Default property in the Steamworks & Json extensions YAML file to false.
✅ Switching the cxxflags property in Compilers/Linux/gcc.ey to -fdiagnostics-color=always.
⬜ Reviewing all error messages and documentation in newly added files.
✅ Adding the license to all newly added files.
✅ Providing installation instructions for all platforms.
✅ Modifying the extension to call steam_init(); automatically when enabled.
✅ Match all naming conventions with GMS's Steamworks extension.
⬜ Testing the APIs with the latest version of Steamworks SDK, Steam, OS version, etc.
⬜ Must test all EDL scripts in the example game provided.
⬜ Providing SOG/unit tests for all functions written (this need to be studied carefully as in order to test the C++ wrapper tester must have steam installed and running or I may use mocks).
✅ Clearing garbage files.
DEBUG_MESSAGE() must exist only in APIs files. Try to remove it from wrapper files. Try to make the wrapper independent on ENIGMA.
✅ Fix example game background design.
⬜ Update the example game to match the latest version of GMS Steamworks extension.

✅ The compiler must write a file next to the exe.
⬜ Review includes.

✅ Commit the example game again and remove it from .gitignore file.
⬜ The extension and the example must be compatible with GameMaker.
⬜ Set the title for Steamworks demo to Created with ENIGMA.
⬜ Monitor GMS's terminal behavior.


Dependencies:


Good to have:

⬜ Test the changes with RGM.
⬜ Solve all build warnings.

k0T0z  

@RobertBColton Thank you so much

Please sign in to post comments, or you can view this issue on GitHub.