实用!Cocos Creator 游戏发布 Steam 平台攻略出炉
COCOS
共 7184字,需浏览 15分钟
· 2021-08-07
游戏链接:
https://store.steampowered.com/app/1636700/Wirewalk/
Node.js
来实现,所使用到的工具包括 Electron
和 Greenworks
。基于 Electron
,可以轻松将 Cocos Creator 发布到任何桌面。注:本文所有命令行都将从 Windows VSCode
终端或Windows Powershell
运行。
1
了解 Node.js
Node.js
是一个功能强大的工具,通过使用 JavaScript
作为通用语言部署到许多原生平台,可以开发多种类型的应用程序和其他工具。2
安装 Electron
Node.js
(请选择最新的稳定版本)Electron
项目,打开 VSCode
,找到你想要的项目文件夹,然后输入:npm init -y
npm i --save-dev electron
index.js
的文件,内容如下:const { app, BrowserWindow } = require('electron')
app.on('window-all-closed', function() {
if (process.platform != 'darwin')
app.quit();
});
app.on('ready', function() {
mainWindow = new BrowserWindow({
width: 768,
height: 768,
show: true,
fullscreen: false,
resizable: false,
frame: true,
title: "MyGame"
});
mainWindow.removeMenu();
mainWindow.on('closed', function() {
mainWindow = null;
});
});
electron .
MyGame
的空白应用程序窗口,说明你已完成。BrowserWindow
。了解更多创建 Electrom 信息:https://www.electronjs.org/docs/tutorial/quick-start#create-the-main-script-file
将项目从 Creator 导出到 Electron
Electron
项目中的某处,在 Electron
项目的根文件夹中创建一个名为cocosExport
的子文件夹。Electron
的 index.js
,你要做的是在创建 mainWindow
对象后在任何地方添加:mainWindow.loadURL('file://' + __dirname + '/cocosExport/web-desktop/index.html').then(() =>{
});
electron .
HTML
以及 Electron
的 BrowserWindow
进行额外调整,使其看起来更流畅。接下来,讲一下如何集成 Steamworks API。安装 Greenworks 和 Steamworks API
Steamworks
本身不支持 Electron
(甚至在 JavaScript
中也不支持),因此你需要下载一个名为 Greenworks
的工具。这个工具也是一个 Node.js
包,它通过在 JavaScript
中暴露一个接口来访问 Steam API
的本地编译的 C++
函数。下载 Greenworks 和 Steamworks API
Greenworks
存储库的主分支并将其放在单独的文件夹中。Steamworks API
,将 Steamworks API
放在 Greenworks
根目录下的 deps
文件夹中,并将 Steamworks
文件夹重命名为steamworks_sdk
。我们需要构建 Greenworks
,以便二进制文件在你下载并已安装的 Node.js
版本上正常运行。构建 Steamworks
Greenworks
的根文件夹中运行 Greenworks
,以便正确安装所有依赖项。npm install
Greenworks
本身。我们需要一个名为 node-gyp
的 node.js
构建工具。node-gyp
:npm install node-gyp -g
Greenworks
项目的根目录中运行以下命令来构建 Greenworks
:node-gyp rebuild --target=<electron_version> --arch=x64 --dist-url=https://atom.io/download/atom-shell
electron
版本更改 electron
版本,例如 12.0.7 ,相关文件会在里面:build\Release\greenworks-win64.node了解更多构建 Greenworks
的信息:https://github.com/greenheartgames/greenworks/blob/master/docs/build-instructions-electron.md
Greenworks
复制到你的 Electron
项目并加载它。Electron
项目中。Electron
项目的根文件夹中创建一个名为 Greenworks
的文件夹。在其中,复制 Greenworks
项目根文件中的 greenworks.js
文件和 lib
文件夹。lib
文件夹中,将文件 greenworks-win64.node
替换为你在上一步中构建的文件。index.js
文件顶部添加以下行:const greenworks = require(‘./greenworks/greenworks’);
Greenworks
对象以查看它具有哪些方法。启动 Greenworks
Greenworks
,需要做的第一件事是创建一个名为 steam_appid.txt
的文件,其中包含你的应用程序 ID
而没有其他任何内容。应用程序 ID
是商店中的那个,比如我的游戏《Wirewalk()↳》,Steam 是1636700。不要将此 txt
文件复制到本教程最后一步的最终版本中,因为它仅用于测试目的。
Greenworks
了!let relaunch = greenworks.restartAppIfNecessary(1636700);
if(relaunch){
app.quit();
}
else{
if(greenworks.init()){
console.log('Steam inited successfully');
loadWindow();
}
else{
app.quit();
}
}
Greenworks
应该是你收到“ready”事件后要做的第一件事。restartAppIfNecessary
函数可防止游戏在 Steam 之外启动并通过从 Steam 打开它来重新启动它。但这只是为了发布——因为文件 steam_appid.txt
的存在会使 restartAppIfNecessary
总是返回 false
。Cocos 和 Electron 之间的通信 - 成就
成就功能
来举例说明使用 Steamworks
的功能。Steamworks
网站上创建一个成就:API
名称是我们需要传递给 greenworks
的名称。类
来处理与 Electron
的通信,你可以在成就逻辑确定发布成就的时间后调用该类。此代码在 TypeScript
中:export default class Electron
{
static releaseAchievement(id: string): void
{
(window as any).electron.ipcRenderer.invoke('releaseAchievement', id);
}
}
Electron.releaseAchivement('bad_cats');
electron
的对象。这个 electron
对象将成为我们与 Cocos 进程中的 Electron
进程进行通信的大门。我们将通过调用 invoke
方法进行通信,使用字符串参数来标识要调用的回调,后跟任意数量的参数。electron
。我发现更简单的方法是通过编辑构建项目时由 Cocos 生成的结果HTML
(在 cocosExport
文件夹中的 index.html
),将以下内容添加到输出 HTML
,在 <body >
tag之前。<script>
window.electron = require('electron');
</script>
electron js
文件并给出错误,因为它无法找到它。Electron
浏览器窗口的 HTML
可以与本机节点进程通信。本质上使 electron.js
可用。为此,我们需要在创建 BrowserWindow
时传递这些额外的参数。webPreferences: { nodeIntegration: true, contextIsolation: false }
Electron
上添加接收器功能。创建 mainWindow
后,可以在任何位置添加此代码。ipcMain.handle('releaseAchievement', (event, achievementString) => {
console.log('releasing achievement', achievementString);
greenworks.activateAchievement(achievementString);
});
handle
方法是与invoke
匹配的方法。在这个例子中,Electron
收到 releaseAchievement
息后,它会调用 reenworks
tivateAchievement
告诉它为用户激活成就。electron .
将项目导出到 Windows、Mac 或 Linux
electron-packager
。npm install electron-packager -g
electron-packager . MyGame --platform=win32 --arch=x64 --overwrite
–platform
值来构建 Mac 和 Linux,可以在 electron
文档中找到可用平台的列表。https://electron.github.io/electron-packager/master/modules/electronpackager.html#officialplatform
评论
英伟达Blackwell平台网络配置分析
本文来自“英伟达Blachwell平台网络配置详解”。GTC大会英伟达展示了全新的 Blackwell 平台系列产品,包括 HGX B100 服务器、NVLINK Switch、GB200Superchip Computer Node、Quantum X800 交换机和 CX8 网卡(InfiniB
架构师技术联盟
0
人工智能周刊#18:微软发布手机端大模型、Llama 3 中文模型列表、苹果开源新项目、
主打尊重隐私的搜索引擎 duckduckgo,也推出了 ai chat 服务,可以使用 chatgpt 或者 claude机器学习周刊:关注 Python、机器学习、深度学习、大模型等硬核技术本期目录:1、Qwen1.5-110B:Qwen1.5 系列的首个千亿参数开源模型2、苹果开源
机器学习算法与Python实战
0
热搜第一,腾讯又一游戏停运了!
腾讯又有一款游戏要停运了。最近,腾讯游戏宣布:由于游戏的代理协议即将到期,《食物语》将于2024年6月18日11:00停止在中国大陆地区的运营。并且这次的停运话题一度冲上热搜榜第一位,引发网友热议。据了解,《食物语》是一款中华美食拟人的国风女性向RPG养成手游,于2019年9月份公开测试,运营至今已
逆锋起笔
0
Java8 Steam流太难用了?那你可以试试 JDFrame
来源:juejin.cn/post/7356652717392740404👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接
小哈学Java
1
展讯平台手机重启问题分析指南
和你一起终身学习,这里是程序员Android经典好文推荐,通过阅读本文,您将收获以下知识点:一、 User 版本 默认开启 sysdump 方法二、插入SD卡 抓取Sysdump log三、 sysdump log 分析四、展讯平台抓取重启 串口log的方案五、展讯平台判断重启类型六、展讯平台关闭
程序员Android
0
【送书福利】《Java面试八股文:高频面试题与求职攻略一本通》
先来唠唠最近粉丝面试回来跟我聊天,基本上都提到一个点,在面试过程中八股文占比很高(八股文70%、项目20%、10%算法)除了一些搞算法突出的厂除外。其实现在很多厂八股都是逐渐深入的方式来问,所以大家在学习的过程中,针对一些重点的内容,最好深入去学习,不然还是比较难应对这种追问式的问题。最近刚好从一位
Java后端技术
0
delorean,一个超级实用的 Python 库!
作者通常周更,为了不错过更新,请点击上方“Python碎片”,“星标”公众号大家好,今天为大家分享一个超级实用的 Python 库 - delorean。Github地址:https://github.com/myusuf3/delorean/时间在计算机科学和软件开发中是一个至关重要的概念。Pyt
Python 碎片
0
IntelliJ IDEA 2024 首个大版本发布,好用到爆!
关注我们,设为星标,每天7:40不见不散,架构路上与您共享回复架构师获取资源大家好,我是你们的朋友架构君,一个会写代码吟诗的架构师。JetBrains 为多款 IDE 发布了 2024 年度首个大版本更新 (2024.1),包括 IntelliJ IDEA 、WebSt
Java架构师社区
0