19 Commits
2.0 ... 2.3

Author SHA1 Message Date
Yannik
548349d9f8 bumped version 2023-06-30 22:54:43 +02:00
Yannik
68c8a42826 removed obsolete export plugin 2023-06-30 22:54:13 +02:00
Yannik
3e944683a4 Merge pull request #31 from vaartis/patch-1
Change gdextension dependencies so they're actually used, patch the SDK
2023-06-30 22:22:33 +02:00
Ekaterina Vaartis
6f288564cf Patch the SDK in setup.py so it actually builds 2023-06-30 20:51:04 +03:00
vaartis
aa39fb80e0 Change gdextension dependencies so they're actually used
This part isn't very well documented, but they changed the format of that file at some point and now it needs to be like this to pull the dependencies into the built project. Assuming this is what the export plugin does, that can probably be removed.
2023-06-30 19:35:35 +03:00
Yannik
980080492e bumped version and cleaned up project 2023-05-23 23:30:27 +02:00
Yannik
b3ebd2c737 Merge pull request #29 from Bioblaze/patch-1 2023-05-23 21:57:38 +02:00
Yannik
f9134f30f7 Update export.gd 2023-05-23 21:56:07 +02:00
Bioblaze Payne
da42d6a228 Update export.gd to support extend environments
After having a conversation with Yannik, had more environment variables in my array then most so made this lil change to make it work. Works flawlessly.
2023-05-23 11:48:50 -07:00
Yannik
a998076b79 bumped version to 2.1 2023-05-20 15:15:48 +02:00
Yannik
7fd0d25da9 added release.py 2023-05-20 15:14:04 +02:00
Yannik
52fcce409a fixed random crashes by only typing = 0 2023-05-20 15:01:46 +02:00
Yannik
88a855d1da fixed editor presence again 2023-05-18 15:49:36 +02:00
Yannik
53dafb1da2 removed unused method 2023-05-18 14:47:35 +02:00
Yannik
9772445870 Updated github things 2023-05-18 13:35:30 +02:00
Yannik
52ec3392fa removed custom loader node and did a bit documentation 2023-05-18 13:35:30 +02:00
Yannik
3913736a42 Update README.md 2023-05-18 13:35:20 +02:00
Yannik
ba5eb3316e fixed wrong EditorPresence tooltip 2023-05-18 13:34:47 +02:00
Yannik
9929ccbb3a fixed some 2.0 bugs 2023-05-18 13:34:47 +02:00
20 changed files with 136 additions and 89 deletions

View File

@@ -23,6 +23,10 @@ body:
label: Version label: Version
description: What version of our software are you running? description: What version of our software are you running?
options: options:
- 2.3
- 2.2
- 2.1
- 2.0
- 1.5 - 1.5
- 1.4 - 1.4
- 1.3 - 1.3

27
.github/ISSUE_TEMPLATE/FEATURE.yml vendored Normal file
View File

@@ -0,0 +1,27 @@
name: Feature request
description: File a feature request
title: "[Feature request]: "
labels: ["enhancement"]
assignees:
- vaporvee
body:
- type: markdown
attributes:
value: Thanks for taking the time to fill out this feature request!
- type: textarea
id: idea
attributes:
label: What is your idea?
description: Tell me what you want to see in the addon.
placeholder: Tell me what you want to see!
value: "I have a cool new feature!"
validations:
required: true
- type: textarea
id: additional
attributes:
label: Additional information
description: If you have anything else tell me here
placeholder: Anything else.
validations:
required: false

5
.gitignore vendored
View File

@@ -19,4 +19,7 @@ build/
*.lib *.lib
#Clean files from the Game SDK #Clean files from the Game SDK
src/lib/discord_game_sdk/ src/lib/discord_game_sdk/
# release.py
release/

View File

@@ -4,11 +4,21 @@
**Please leave a star that would really help! And thanks to all the people that already starred this project! ❤️** **Please leave a star that would really help! And thanks to all the people that already starred this project! ❤️**
<br /> <br />
<br /> <br />
# [Quick start :rocket: (click here)](https://github.com/vaporvee/discord-sdk-godot/wiki/Quick-start) # [Quick start :rocket: (click here)](https://github.com/vaporvee/discord-sdk-godot/wiki)
<br /> <br />
**A small donation with the sponsor button would be nice if you sell your project with this addon but is of course not mandatory!** **A small donation with the sponsor button would be nice if you sell your project with this addon but is of course not mandatory!**
# Features
- Activities (Make people see what you are playing)
- Invites
- Steam and launch command registering
- User information
- Overlay management
- Editor Presence (optional)
<img width="400px" src="https://camo.githubusercontent.com/e4ae18ce30a7731145376e1a85c384e9ea207420c09365e3fcdd455ef332ba98/68747470733a2f2f6769746875622d70726f64756374696f6e2d757365722d61737365742d3632313064662e73332e616d617a6f6e6177732e636f6d2f38303632313836332f3233383739343331392d35373164653262612d346635652d343062612d613263662d3839666365643963306366302e706e67">
<br />
<br /> <br />
### Credit ### Credit

View File

@@ -17,13 +17,13 @@ linux.release.rv64 = "bin/linux/libdiscord_game_sdk_binding.so"
[dependencies] [dependencies]
macos.debug = "bin/macos/libdiscord_game_sdk.dylib" macos.debug = { "bin/macos/libdiscord_game_sdk.dylib": "" }
macos.release = "bin/macos/libdiscord_game_sdk.dylib" macos.release = { "bin/macos/libdiscord_game_sdk.dylib": "" }
windows.debug.x86_64 = "bin/windows/discord_game_sdk.dll" windows.debug.x86_64 = { "bin/windows/discord_game_sdk.dll": "" }
windows.release.x86_64 = "bin/windows/discord_game_sdk.dll" windows.release.x86_64 = { "bin/windows/discord_game_sdk.dll": "" }
linux.debug.x86_64 = "bin/linux/libdiscord_game_sdk.so" linux.debug.x86_64 = { "bin/linux/libdiscord_game_sdk.so": "" }
linux.release.x86_64 = "bin/linux/libdiscord_game_sdk.so" linux.release.x86_64 = { "bin/linux/libdiscord_game_sdk.so": "" }
linux.debug.arm64 = "bin/linux/libdiscord_game_sdk.so" linux.debug.arm64 = { "bin/linux/libdiscord_game_sdk.so": "" }
linux.release.arm64 = "bin/linux/libdiscord_game_sdk.so" linux.release.arm64 = { "bin/linux/libdiscord_game_sdk.so": "" }
linux.debug.rv64 = "bin/linux/libdiscord_game_sdk.so" linux.debug.rv64 = { "bin/linux/libdiscord_game_sdk.so": "" }
linux.release.rv64 = "bin/linux/libdiscord_game_sdk.so" linux.release.rv64 = { "bin/linux/libdiscord_game_sdk.so": "" }

View File

@@ -1,25 +1,38 @@
class_name DiscordSDKTutorial
extends Node extends Node
# 1. Put the addons/ folder in your Godot project ## 1. Put the addons/ folder in your Godot project[br]
# 2. Enable the addon in your Project Settings under "Plugins" and "DiscordSDK". (if it doesn't show up restart your project and try again) ## 2. Enable the addon in your Project Settings under "Plugins" and "DiscordSDK". [br](if it doesn't show up restart your project and try again)[br]
# 3. Restart your project ## 3. Restart your project[br]
# 4. Create an Application under https://discord.com/developers/applications and get the Application ID ## 4. Create an Application under https://discord.com/developers/applications and get the Application ID br]
# 5. (optional) Set images under "Rich Presence" and "Art Assets" and remember the keys ## 5. (optional) Set images under "Rich Presence" and "Art Assets" and remember the keys[br]
##
#SELECT THE TEXT WITH YOUR MOUSE AND CTR + K TO UNCOMMENT THE FOLLOWING ## This is your [code]_ready()[/code] function wich could be anywhere
## [codeblock]
#func _ready(): ## func _ready():
# discord_sdk.app_id = 1099618430065324082 # Application ID ## # Application ID
# print("Discord working: " + str(discord_sdk.get_is_discord_working())) # A boolean if everything worked ## discord_sdk.app_id = 1099618430065324082
# discord_sdk.details = "A demo activity by vaporvee#1231" ## # this is boolean if everything worked
# discord_sdk.state = "Checkpoint 23/23" ## print("Discord working: " + str(discord_sdk.get_is_discord_working()))
# ## # Set the first custom text row of the activity here
# discord_sdk.large_image = "game" # Image key from "Art Assets" ## discord_sdk.details = "A demo activity by vaporvee#1231"
# discord_sdk.large_image_text = "Try it now!" ## # Set the second custom text row of the activity here
# discord_sdk.small_image = "boss" # Image key from "Art Assets" ## discord_sdk.state = "Checkpoint 23/23"
# discord_sdk.small_image_text = "Fighting the end boss! D:" ## # Image key for small image from "Art Assets" from the Discord Developer website
# ## discord_sdk.large_image = "game"
# discord_sdk.start_timestamp = int(Time.get_unix_time_from_system()) # "02:41 elapsed" ## # Tooltip text for the large image
# discord_sdk.end_timestamp = int(Time.get_unix_time_from_system()) + 3600 # +1 hour in unix time ## discord_sdk.large_image_text = "Try it now!"
# ## # Image key for large image from "Art Assets" from the Discord Developer website
# discord_sdk.refresh() # Always refresh after changing the values! ## discord_sdk.small_image = "boss"
## # Tooltip text for the small image
## discord_sdk.small_image_text = "Fighting the end boss! D:"
## # "02:41 elapsed" timestamp for the activity
## discord_sdk.start_timestamp = int(Time.get_unix_time_from_system())
## # "59:59 remaining" timestamp for the activity
## discord_sdk.end_timestamp = int(Time.get_unix_time_from_system()) + 3600
## # Always refresh after changing the values!
## discord_sdk.refresh()
## [/codeblock]
##
## @tutorial(More information here): https://github.com/vaporvee/discord-sdk-godot/wiki/Quick-start
## @tutorial(Make your Application ID and else here): https://discord.com/developers/applications

View File

@@ -1,17 +0,0 @@
@tool
extends EditorExportPlugin
func _export_file(_path, _type, features) -> void:
if features[2] == "windows":
if features[4] == "x86_64":
add_shared_object("res://addons/discord-sdk-gd/bin/windows/discord_game_sdk.dll",[],"/")
elif features[4] == "x86":
add_shared_object("res://addons/discord-sdk-gd/bin/windows/discord_game_sdk_x86.dll",[],"/")
elif features[2] == "linux":
add_shared_object("res://addons/discord-sdk-gd/bin/linux/libdiscord_game_sdk.so",[],"/")
elif features[2] == "macos":
add_shared_object("res://addons/discord-sdk-gd/bin/macos/libdiscord_game_sdk.dylib",[],"/")
add_shared_object("res://addons/discord-sdk-gd/bin/macos/libdiscord_game_sdk_aarch64.dylib",[],"/")
func _get_name():
pass

View File

@@ -1,7 +0,0 @@
[gd_scene load_steps=2 format=3 uid="uid://dkbtuqbtdlqnk"]
[ext_resource type="Script" path="res://addons/discord-sdk-gd/nodes/core_updater.gd" id="1_8fjwg"]
[node name="DiscordSDKLoader" type="Node"]
editor_description = "This always needs to run in the background if you want to comunicate with the discord client."
script = ExtResource("1_8fjwg")

View File

@@ -1,8 +1,12 @@
## This always needs to run in the background if you want to comunicate with the discord client. ## [color=yellow]PLEASE IGNORE![/color] This is a important Node wich gets automatically added as Singleton.
##
## The DiscordSDKLoader Node automatically gets added as Singleton while installing the addon.
## It has to run in the background to comunicate with Discord.
## You don't need to use it.
##
## @tutorial: https://github.com/vaporvee/discord-sdk-godot/wiki
class_name core_updater
extends Node extends Node
@export var is_running: bool =false
func _process(delta) -> void: func _process(delta) -> void:
discord_sdk.coreupdate() discord_sdk.coreupdate()
is_running = true

View File

@@ -1,4 +1,8 @@
## This is a Debug Node wich will show (only if the project runs) some usefull info and buttons/input ## This is a Debug Node wich will show some usefull info and buttons/input
##
## The DiscordSDK Debug Node will show info about the current values of its variables and some buttons to change them.
##
## @tutorial: https://github.com/vaporvee/discord-sdk-godot/wiki
extends Node extends Node
func _ready() -> void: func _ready() -> void:

View File

@@ -3,5 +3,5 @@
name="DiscordSDK" name="DiscordSDK"
description="Discord Game SDK support for GDScript in Godot" description="Discord Game SDK support for GDScript in Godot"
author="vaporvee" author="vaporvee"
version="2.0" version="2.3"
script="plugin.gd" script="plugin.gd"

View File

@@ -1,35 +1,24 @@
@tool @tool
extends EditorPlugin extends EditorPlugin
const DiscordSDKLoader = preload("res://addons/discord-sdk-gd/nodes/core_updater.gd")
const DiscordSDKLoader_icon = preload("res://addons/discord-sdk-gd/nodes/assets/Group_1.svg")
var loaded_DiscordSDKLoader = DiscordSDKLoader.new()
const DiscordSDKDebug = preload("res://addons/discord-sdk-gd/nodes/debug.gd") const DiscordSDKDebug = preload("res://addons/discord-sdk-gd/nodes/debug.gd")
const DiscordSDKDebug_icon = preload("res://addons/discord-sdk-gd/nodes/assets/Debug.svg") const DiscordSDKDebug_icon = preload("res://addons/discord-sdk-gd/nodes/assets/Debug.svg")
var loaded_DiscordSDKDebug = DiscordSDKDebug.new() var loaded_DiscordSDKDebug = DiscordSDKDebug.new()
const ExportPlugin = preload("res://addons/discord-sdk-gd/export.gd") func _enter_tree() -> void:
var loaded_exportplugin = ExportPlugin.new()
func _enable_plugin() -> void:
print("DiscordSDK Addon got enabled")
add_custom_type("DiscordSDKLoader","Node",DiscordSDKLoader,DiscordSDKLoader_icon)
add_custom_type("DiscordSDKDebug","Node",DiscordSDKDebug,DiscordSDKDebug_icon) add_custom_type("DiscordSDKDebug","Node",DiscordSDKDebug,DiscordSDKDebug_icon)
add_autoload_singleton("DiscordSDKLoader", "res://addons/discord-sdk-gd/nodes/core_updater.gd") add_autoload_singleton("DiscordSDKLoader", "res://addons/discord-sdk-gd/nodes/core_updater.gd")
add_export_plugin(loaded_exportplugin)
ProjectSettings.set_setting("DiscordSDK/EditorPresence/enabled",false)
func _enable_plugin() -> void:
print("DiscordSDK Addon got enabled (PLEASE RESTART THE EDITOR)")
ProjectSettings.set_setting("DiscordSDK/EditorPresence/enabled",false)
ProjectSettings.set_initial_value("DiscordSDK/EditorPresence/enabled",false) ProjectSettings.set_initial_value("DiscordSDK/EditorPresence/enabled",false)
ProjectSettings.set_restart_if_changed("DiscordSDK/EditorPresence/enabled",true) ProjectSettings.set_restart_if_changed("DiscordSDK/EditorPresence/enabled",true)
func _disable_plugin() -> void: func _disable_plugin() -> void:
print("DiscordSDK Addon got disabled") print("DiscordSDK Addon got disabled")
remove_autoload_singleton("DiscordSDKLoader") remove_autoload_singleton("DiscordSDKLoader")
remove_custom_type("DiscordSDKLoader")
remove_custom_type("DiscordSDKDebug") remove_custom_type("DiscordSDKDebug")
ProjectSettings.clear("DiscordSDK/EditorPresence/enabled") ProjectSettings.clear("DiscordSDK/EditorPresence/enabled")
@@ -40,7 +29,7 @@ func _process(_delta):
discord_sdk.details = ProjectSettings.get_setting("application/config/name") discord_sdk.details = ProjectSettings.get_setting("application/config/name")
discord_sdk.state = "Editing: \""+ str(get_tree().edited_scene_root.scene_file_path).replace("res://","") +"\"" discord_sdk.state = "Editing: \""+ str(get_tree().edited_scene_root.scene_file_path).replace("res://","") +"\""
discord_sdk.large_image = "godot" discord_sdk.large_image = "godot"
discord_sdk.large_image_text = str(Engine.get_version_info()) discord_sdk.large_image_text = str(Engine.get_version_info().string)
discord_sdk.start_timestamp = int(Time.get_unix_time_from_system()) discord_sdk.start_timestamp = int(Time.get_unix_time_from_system())
discord_sdk.refresh() discord_sdk.refresh()
if(discord_sdk.app_id == 1108142249990176808): if(discord_sdk.app_id == 1108142249990176808):

View File

@@ -8,7 +8,7 @@ custom_features=""
export_filter="all_resources" export_filter="all_resources"
include_filter="" include_filter=""
exclude_filter="" exclude_filter=""
export_path="../../demo/discord_sdk.exe" export_path="../../exportestt/discord_sdk_demo.exe"
encryption_include_filters="" encryption_include_filters=""
encryption_exclude_filters="" encryption_exclude_filters=""
encrypt_pck=false encrypt_pck=false
@@ -35,15 +35,15 @@ codesign/timestamp_server_url=""
codesign/digest_algorithm=1 codesign/digest_algorithm=1
codesign/description="" codesign/description=""
codesign/custom_options=PackedStringArray() codesign/custom_options=PackedStringArray()
application/modify_resources=false application/modify_resources=true
application/icon="" application/icon="res://assets/Logo_V2.png"
application/console_wrapper_icon="" application/console_wrapper_icon=""
application/icon_interpolation=4 application/icon_interpolation=4
application/file_version="" application/file_version=""
application/product_version="" application/product_version=""
application/company_name="" application/company_name=""
application/product_name="" application/product_name=""
application/file_description="" application/file_description="Discord SDK Godot Test"
application/copyright="" application/copyright=""
application/trademarks="" application/trademarks=""
ssh_remote_deploy/enabled=false ssh_remote_deploy/enabled=false

12
release.py Normal file
View File

@@ -0,0 +1,12 @@
import os
from distutils.dir_util import copy_tree
import shutil
if os.path.exists("release/ADDON-Discord-SDK-Godot/addons"):
shutil.rmtree("release/ADDON-Discord-SDK-Godot/addons", ignore_errors=True)
copy_tree("project/addons/", "release/temp/ADDON-Discord-SDK-Godot/addons")
shutil.make_archive("release/ADDON-Discord-SDK-Godot", "zip", "release/temp/")
shutil.rmtree("release/temp/")

View File

@@ -6,6 +6,12 @@ import os
with zipfile.ZipFile("src/lib/discord_game_sdk.zip", "r") as zip_ref: with zipfile.ZipFile("src/lib/discord_game_sdk.zip", "r") as zip_ref:
zip_ref.extractall("src/lib/discord_game_sdk/") zip_ref.extractall("src/lib/discord_game_sdk/")
# Patch the SDK to actually build, since it's missing an include
with open("src/lib/discord_game_sdk/cpp/types.h", "r+") as f:
s = f.read();
f.seek(0);
f.write("#include <cstdint>\n" + s)
copy_tree("src/lib/discord_game_sdk/lib/", "src/lib/discord_game_sdk/bin/") copy_tree("src/lib/discord_game_sdk/lib/", "src/lib/discord_game_sdk/bin/")
os.rename( os.rename(
"src/lib/discord_game_sdk/bin/aarch64/discord_game_sdk.dylib", "src/lib/discord_game_sdk/bin/aarch64/discord_game_sdk.dylib",

View File

@@ -18,11 +18,11 @@ protected:
static void _bind_methods(); static void _bind_methods();
private: private:
int64_t app_id; int64_t app_id = 0;
String state; String state;
String details; String details;
// just want to make pr
String large_image; String large_image;
String large_image_text; String large_image_text;
String small_image; String small_image;
@@ -112,7 +112,6 @@ public:
void register_steam(int32_t value); void register_steam(int32_t value);
Dictionary get_current_user(); Dictionary get_current_user();
void set_current_user(Dictionary value);
bool get_is_discord_working(); bool get_is_discord_working();
int get_result_int(); int get_result_int();