-
Notifications
You must be signed in to change notification settings - Fork 121
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
GSoC Final Evaluation: Steam Workshop SDK/Third Party Integration (#2350
) 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](https://k0t0z.github.io). #### Note: ✔️ means that SOG/unit tests for the corresponding function are provided. --------------------------------------------------------------------------------------------------- ✅ [Leaderboards API](https://github.com/YoYoGames/GMEXT-Steamworks/wiki/Leaderboards) - ✅ 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](https://github.com/YoYoGames/GMEXT-Steamworks/wiki/Social) - ✅ 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](https://github.com/YoYoGames/GMEXT-Steamworks/wiki/Cloud) - ⬜ 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](https://marketplace.yoyogames.com/assets/10709/steamworks-ext). :white_check_mark: The compiler must write a file next to the exe. :white_large_square: Review includes. :white_check_mark: Commit the example game again and remove it from ``.gitignore`` file. :white_large_square: The extension and the example must be compatible with GameMaker. :white_large_square: Set the title for Steamworks demo to ``Created with ENIGMA``. :white_large_square: Monitor GMS's terminal behavior. --------------------------------------------------------------------------------------------------- ## Dependencies: - [Social API](https://github.com/YoYoGames/GMEXT-Steamworks/wiki/Social) depends on this #2309 (#2361). --------------------------------------------------------------------------------------------------- ## Good to have: :white_large_square: Test the changes with [RGM](https://github.com/enigma-dev/RadialGM). :white_large_square: Solve all build warnings. --------- Signed-off-by: Saif Kandil <74428638+k0T0z@users.noreply.github.com> Co-authored-by: saifkandil <saifsaalaheldeen2002@gmail.com> Co-authored-by: = <=> Co-authored-by: --replace-all <--replace-all> Co-authored-by: Robert Colton <robertbcolton@gmail.com>
- Loading branch information
1 parent
3e24167
commit 3918af3
Showing
184 changed files
with
45,347 additions
and
34 deletions.
There are no files selected for viewing
39 changes: 39 additions & 0 deletions
39
CommandLine/testing/SimpleTests/steam_general.sog/create.edl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
var steam_api = 0; | ||
|
||
if (steam_initialised()) | ||
{ | ||
if (steam_stats_ready() && steam_is_overlay_enabled()) | ||
{ | ||
steam_api = 1; | ||
} | ||
} | ||
|
||
gtest_assert_true(steam_api); | ||
|
||
var app_id = steam_get_app_id(); | ||
gtest_assert_eq(app_id, 480); | ||
|
||
var steam_id = steam_get_user_steam_id(); | ||
gtest_assert_eq(steam_id, 0); | ||
|
||
var account_id = steam_get_user_account_id(); | ||
gtest_assert_eq(account_id, 0); | ||
|
||
var logged_in = steam_is_user_logged_on(); | ||
gtest_assert_true(logged_in); | ||
|
||
var name = steam_get_persona_name(); | ||
gtest_assert_eq(name, "FakeSteamUser"); | ||
|
||
var user_name = steam_get_user_persona_name(0); | ||
gtest_assert_eq(user_name, "FakeSteamUser"); | ||
|
||
var language = steam_current_game_language(); | ||
gtest_assert_eq(language, "FakeLanguage"); | ||
|
||
var languages = steam_available_languages(); | ||
gtest_assert_eq(languages, "FakeLanguages"); | ||
|
||
steam_shutdown(); | ||
steam_api = steam_initialised(); | ||
gtest_assert_false(steam_api); |
23 changes: 23 additions & 0 deletions
23
CommandLine/testing/SimpleTests/steam_overlay.sog/create.edl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
var steam_api = 0; | ||
|
||
if (steam_initialised()) | ||
{ | ||
if (steam_stats_ready() && steam_is_overlay_enabled()) | ||
{ | ||
steam_api = 1; | ||
} | ||
} | ||
|
||
gtest_assert_true(steam_api); | ||
|
||
var is_enabled = steam_is_overlay_enabled(); | ||
gtest_assert_true(is_enabled); | ||
|
||
steam_activate_overlay(ov_friends); | ||
|
||
var is_activated = steam_is_overlay_activated(); | ||
gtest_assert_true(is_activated); | ||
|
||
steam_shutdown(); | ||
steam_api = steam_initialised(); | ||
gtest_assert_false(steam_api); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
27 changes: 27 additions & 0 deletions
27
ENIGMAsystem/SHELL/Universal_System/Extensions/Steamworks/.gitignore
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
############################################################################ | ||
# Copyright (C) 2023-2024 Saif Kandil (k0T0z) | ||
# | ||
# This file is a part of the ENIGMA Development Environment. | ||
# | ||
# ENIGMA is free software: you can redistribute it and/or modify it under the | ||
# terms of the GNU General Public License as published by the Free Software | ||
# Foundation, version 3 of the license or any later version. | ||
# | ||
# This application and its source code is distributed AS-IS, WITHOUT ANY | ||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more | ||
# details. | ||
# | ||
# You should have received a copy of the GNU General Public License along | ||
# with this code. If not, see <http://www.gnu.org/licenses/> | ||
############################################################################ | ||
|
||
/.vs/* | ||
/.vscode/* | ||
|
||
# gb stands for Global Backup and it shouldn't be committed to git | ||
# gb is auto-generated by the example game | ||
/*.gb*/* | ||
|
||
# This is only temporary, it will be removed once the Midterm review is done. | ||
# /steamworks_demo/* |
15 changes: 15 additions & 0 deletions
15
ENIGMAsystem/SHELL/Universal_System/Extensions/Steamworks/About.ey
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
%e-yaml | ||
--- | ||
|
||
Name: Steamworks | ||
Identifier: Steamworks | ||
Author: Saif Kandil (https://k0t0z.github.io) | ||
Description: Steamworks is a set of tools and services that help game developers and publishers build their games and get the most out of distributing on Steam. | ||
Default: false | ||
Icon: steam.svg | ||
|
||
Depends: | ||
Extensions: DataStructures, Json | ||
Dependencies: None | ||
Implement: extension_steamworks | ||
Init: extension_steamworks_init |
35 changes: 35 additions & 0 deletions
35
ENIGMAsystem/SHELL/Universal_System/Extensions/Steamworks/CMakeLists.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
############################################################################ | ||
# Copyright (C) 2023-2024 Saif Kandil (k0T0z) | ||
# | ||
# This file is a part of the ENIGMA Development Environment. | ||
# | ||
# ENIGMA is free software: you can redistribute it and/or modify it under the | ||
# terms of the GNU General Public License as published by the Free Software | ||
# Foundation, version 3 of the license or any later version. | ||
# | ||
# This application and its source code is distributed AS-IS, WITHOUT ANY | ||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more | ||
# details. | ||
# | ||
# You should have received a copy of the GNU General Public License along | ||
# with this code. If not, see <http://www.gnu.org/licenses/> | ||
############################################################################ | ||
|
||
############################################################################ | ||
# Note that this file isn't tested yet as ENIGMA's engine still works with | ||
# the old build system. Ignore this file for now. | ||
############################################################################ | ||
|
||
add_library(steamapi STATIC IMPORTED GLOBAL | ||
redistributable_bin/steam_api.lib | ||
) | ||
|
||
set_property(TARGET steamapi APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) | ||
set_target_properties(steamapi PROPERTIES | ||
IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX" | ||
IMPORTED_LOCATION_DEBUG "${CMAKE_SOURCE_DIR}/game_client/Steamv157/sdk/redistributable_bin/steam_api.lib") | ||
|
||
target_link_libraries(steamworks | ||
steamapi | ||
) |
Oops, something went wrong.