Unreal Engine 集成 Steamworks SDK 教程

前言

STEAMWORKS 是什么? 它针对游戏项目提供了一整套的工具与服务,能帮助游戏开发者与发行商构建游戏,并从在 Steam 上分发游戏中获得最佳效益。简单的说就是类似 Appstore 或者 Google 商城一样的应用分发平台,所以如果您的游戏想在 Steam 上分发的话,那接入 STEAMWORKS SDK 就成了必做题。

需求分析

目前接入 Steamworks SDK 有好几种方式,根据你游戏引擎的不同,可操作性也不一样,这里我要带大家讲解的是如何在 UnrealEngin 中集成 Steamworks SDK,我总结了三种方式,分别如下:

  • UE 自带的 Steamworks SDK 版本太低,不想使用,我想直接下载最新的 SDK 接入游戏
  • UE 自带的 Steamworks SDK 能够满足我的需求
  • 使用 Epic 的 OnlineSubSystem

那接下来,咱就来简单的看下这几种方式该如何接入。

不使用 UE 自带的 Steamworks SDK

下载最新版本的 Steamworks SDK, 下载地址:partner.steamgames.com/downloads/s...

在 .cs 中引入相应配置,将下载好的 SDK 中的 steam 文件夹 copy 到工程的 source/工程名 中,然后在 .cs 配置文件中加入如下配置:

PublicAdditionalLibraries.Add(Path.Combine(ModuleDirectory, "steam", "lib", "steam_api64.lib"));

引入头文件 #include "steam/steam_api.h"

示例代码:

c++ 复制代码
FFileHelper::SaveStringToFile(TEXT(RAW_APP_ID), TEXT("steam_appid.txt"));
	SteamAPI_RestartAppIfNecessary(atoi(APP_ID));

	if (SteamAPI_Init())
	{
		GEngine->AddOnScreenDebugMessage(-1, 10.0f, FColor::Green, FString::Printf(TEXT("22222")));
	}
	else
	{
		GEngine->AddOnScreenDebugMessage(-1, 10.0f, FColor::Green, FString::Printf(TEXT("33333")));
	}

接入 UE 自带的 Steamworks SDK

在 .cs 中引入引擎提供的 Steamworks

AddEngineThirdPartyPrivateStaticDependencies(Target, "Steamworks");

引入头文件 #include "steam/steam_api.h"

示例代码调用:

c++ 复制代码
    FFileHelper::SaveStringToFile(TEXT(RAW_APP_ID), TEXT("steam_appid.txt"));
	SteamAPI_RestartAppIfNecessary(atoi(APP_ID));

	if (SteamAPI_Init())
	{
		
	}

使用Epic OnlineSubSystem

在 .cs 中引入配置

PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "OnlineSubsystem", "OnlineSubsystemSteam" });

当然必须也要参考UE文档,加入你们游戏项目所需的必要配置:

DefaultEngine.ini

ini 复制代码
[/Script/Engine.GameEngine]
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

[OnlineSubsystem]
DefaultPlatformService=Steam

[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480

; If using Sessions
; bInitServerOnClient=true

[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"

测试代码:

c++ 复制代码
#include "OnlineSubsystem.h"
#include "Interfaces/OnlineSessionInterface.h"

public:
	static constexpr char* APP_ID = RAW_APP_ID; 
	TSharedPtr<class IOnlineSession, ESPMode::ThreadSafe> myOnlineSessionInterface;
	
	
	
		IOnlineSubsystem* myOnlineSubsystem = IOnlineSubsystem::Get();
	if(myOnlineSubsystem)
	{
		myOnlineSessionInterface = myOnlineSubsystem->GetSessionInterface();
		GEngine->AddOnScreenDebugMessage(-1, 10.0f, FColor::Green, FString::Printf(TEXT("%s"), *myOnlineSubsystem->GetSubsystemName().ToString()));
	}

最后

以上就是在虚幻引擎中集成 Steamworks SDK 的几种方式,如果您有更好的方法,不妨也与我分享一下,另外记得在打出的包中 加入 steam_appid.txt ,并填写正确的 AppID.

我是杰少,如果您觉的我写的不错,那请给我 点赞+评论+收藏 后再走哦!

相关推荐
凌乱风雨12118 分钟前
从源码角度解析C++20新特性如何简化线程超时取消
前端·算法·c++20
两个西柚呀10 分钟前
每日前端面试题-css塌陷
前端·css
IT_陈寒13 分钟前
Vite 5大实战优化技巧:让你的开发效率提升200%|2025前端工程化指南
前端·人工智能·后端
未来之窗软件服务22 分钟前
幽冥大陆(八十八 ) 操作系统应用封装技术C#自解压 —东方仙盟练气期
java·前端·c#·软件打包·仙盟创梦ide·东方仙盟·阿雪技术观
沛沛rh452 小时前
React 学习笔记:State、hook —— 组件的记忆
前端·javascript·react.js
0和1的舞者9 小时前
Spring AOP详解(一)
java·开发语言·前端·spring·aop·面向切面
web小白成长日记9 小时前
在Vue样式中使用JavaScript 变量(CSS 变量注入)
前端·javascript·css·vue.js
QT 小鲜肉9 小时前
【Linux命令大全】001.文件管理之which命令(实操篇)
linux·运维·服务器·前端·chrome·笔记
C_心欲无痕9 小时前
react - useImperativeHandle让子组件“暴露方法”给父组件调用
前端·javascript·react.js
BullSmall11 小时前
支持离线配置修改及删除操作的实现方案
前端