[抖音] 揭秘 字節抖音小游戲制作流程公布
1.1 注冊字節開發者後台1.2 Unity版本說明1.3 檢查AppID是否有效2.1 創建項目2.2 接入SDK3.1 發布安卓Apk3.2 發布雙端WebGL3.3 IOS15.4版本問題
字節抖音小游戲是壹種基於字節跳動產品生態開發且無需下載安裝即可使用的全新游戲應用,實現了客戶端“點開即玩”的優質用戶體驗。小游戲擁有開發輕便快捷,發布流程簡單的特點,同時依托字節跳動生態優勢,讓小游戲天然具備較強的內容分發能力,支持小游戲開發者快速推廣與變現。壹,准備工作1.1 注冊字節開發者後台
進入字節小程序開發者後台,在開發者平台中點擊右上角的「快捷登錄」進行帳號注冊。在登錄後需要通過【申請創建】提示完成申請流程即可。
然後等著字節小游戲通過注冊時的手機號或郵箱給予的答復。工作日提交的話壹般在幾個小時之內就有答復,最長時間為兩個工作日之內。
注冊後按照要求填寫資質信息:公司就寫企業全稱,個人開發者填寫個人姓名,然後其他內容根據要求填寫。

其中需要注意的是小游戲體驗路徑:壹般是壹個可用的測試鏈接或者是壹個網盤地址裡面放壹個可以玩的apk。(我們寫過蘋果商店地址審核失敗了,應該是IOS的不行)1.2 Unity版本說明
如果使用 natvie 方案:確認游戲工程運行在 Unity 2019.4.8f1 或者 Unity 2019.4.35f1
如果使用 wasm 方案:建議使用 unity 最新版,比如 2021.2 之後的版本,在 wasm 方面做了很多優化
可以用 2019.4.8 構建 native 版本,用 2021.x 構建 wasm,壹起發布。
我前幾天測試了2019.4.35f1c1,2019.4.8f1,Unity2021.3.3f1c1版本都是可以使用的,
不過在7月26號看到有開發者反饋說2019.4.8f1不好用了,官方回復:最近因為Android 12 的普及新增崩潰太多了,所以發新版需要升級了。

因為插件本身也在開發中,所以建議在開發是加入意見反饋群(在官方文檔文末),及時關注動態,以免重復趟坑。
我這裡用的是Unity2021.3.3f1c1版本:
發布Android就在下載時添加:Android Build Support 模塊:

發布WebGL的話就在下載時添加:WebGL Build Support 模塊: (想上線IOS的話只能使用WebGL的方式進行發布)

1.3 檢查AppID是否有效
審核通過後就可以在應用中心看壹個以07結尾且長度是20位AppID,若不是需要重新申請(後面打包時用)

贰,開始集成2.1 創建項目
下載字節SDK:開發者後台,建議先讀壹遍文檔,因為當你看的時候有可能有更新:

導入後在工具欄選:ByteGame --> ByteGame Develop Tools

打開後下載:StarkSDK和StarkSDKUnityTools兩個包:

下載完成後目錄大致如下:

2.2 接入SDK
發布抖音小游戲,只需要壹個錄屏分享功能即可上線。所以這裡只提供錄屏和分享功能示例,其他功能可按需接入,官方文檔地址。
邏輯也非常簡單,創建叁個按鈕分別為開始游戲,游戲結束,分享錄屏來模擬游戲過程中的功能實現;帶有詳細注釋的接入代碼如下:using System.Collections; using System.Collections.Generic; using StarkSDKSpace; using UnityEngine; using UnityEngine.UI; public class StarkSDKTest : MonoBehaviour { public Button startBtn; public Button endBtn; public Button shareBtn; void Start() { startBtn.onClick.AddListener(StartVideo); endBtn.onClick.AddListener(StopVideo); shareBtn.onClick.AddListener(ShareVideo); } void StartVideo() { Debug.Log("抖音 開啟錄制視頻 ..."); // 是否錄制聲音,默認為錄制聲音 // 最大錄制時長,單位 s。小於等於 0 則無限制。默認為10分鍾 // 視頻錄制開始回調 // 視頻錄制失敗回調 bool isStart = StarkSDK.API.GetStarkGameRecorder().StartRecord(true, 200, StartCallback, FailedCallback, SuccessCallback); Debug.Log("視頻開啟錄制結果 ..." + isStart); } void StopVideo() { Debug.Log("抖音 停止錄制視頻 ..."); bool isStop = StarkSDK.API.GetStarkGameRecorder().StopRecord(SuccessCallback, FailedCallback, null, false); Debug.Log("停止錄制視頻狀態 ..." + isStop); } void StartCallback() { Debug.Log("視頻開始錄制回調執行 ..."); // 開始回調邏輯,比如:顯示錄屏中按鈕 } void FailedCallback(int errCode, string errMsg) { Debug.Log("錄制視頻失敗回調執行 ... 錯誤碼是:" + errCode + " ,錯誤消息是:" + errMsg); // 失敗回調邏輯,比如:隱藏錄屏中按鈕 } void SuccessCallback(string videoPath) { Debug.Log("視頻錄制完成實際路徑:" + videoPath); // 成功回調邏輯,比如:隱藏錄屏中按鈕 } void ShareVideo() { Debug.Log("ShareVideo ShareVideo ..."); // 只有回調,不帶預定義標題和話題 StarkSDK.API.GetStarkGameRecorder().ShareVideo(SuccessCallback, FailedCallback, CancelledCallback); // 分享成功回調 // 分享失敗回調 // 分享取消回調 // 分享視頻的標題,如不需要設置標題,可以傳null或空字符串 // 分享視頻的話題,如不需要設置話題,可以傳null或空列表 //StarkSDK.API.GetStarkGameRecorder().ShareVideoWithTitleTopics(SuccessCallback, FailedCallback, // CancelledCallback, "自定義標題", new List() {"自定義話題1", "自定義話題2"}); void SuccessCallback(Dictionarystring, object> dictionary) { Debug.Log("視頻分享成功回調 ..."); // 成功回調邏輯,比如:彈窗提示並發放獎勵 } void CancelledCallback() { Debug.Log("取消分享回調 ..."); // 取消回調邏輯,比如:彈窗提示 } void FailedCallback(string errMsg) { Debug.Log("分享視頻失敗回調執行 ... " + " ,錯誤消息是:" + errMsg); // 失敗回調邏輯,比如:彈窗提示 } } }
最後將代碼掛載到游戲場景中並將上面創建的叁個按鈕賦值給代碼中預留的公開變量。

然後運行:點擊開始游戲按鈕 -——> 調用錄屏邏輯 -——> 游戲中出現:開發階段...文字提示,-——> SDK接入成功 -——> 進入真機測試階段。

叁,發布游戲
在工具欄選擇 ByteGame --> StarkSDKTools --> Build Tool 即可打開打包的工具面板

3.1 發布安卓Apk
在面板的運行框架選擇Native,然後按照需求填寫,構建即可。

3.2 發布雙端WebGL
在面板的運行框架選擇WebGL,然後選擇構建WebGL:

構建完成後,會在指定目錄生成 --> 壹個webgl的目錄和壹個壓縮包,如下圖:

然後在3.1圖1中選擇發布WebGl:

最後按需填寫完成後,選擇發布,等待發布完成即可在彈出贰維碼,使用抖音掃描就可以進行測試了。3.3 IOS15.4版本問題
測試IOS時發現,使用IOS15.4版本的測試機,不能成功加載出游戲場景,報錯如下:

報錯原文:
10:08:30.703 exception thrown: RuntimeError: Out of bounds memory access (evaluating 'dynCall_ii(index,a1)'),.wasm-function[59627]@[wasm code] .wasm-function[146029]@[wasm code] .wasm-function[83839]@[wasm code] wasm-stub@[native code] invoke_ii@blob:file:///ce3cf2cf-9cb3-4723-a499-98a7b0c93a71:3:413696 .wasm-function[83839]@[wasm code] .wasm-function[19042]@[wasm code] .wasm-function[1057]@[wasm code] .wasm-function[66513]@[wasm code] .wasm-function[4560]@[wasm code] .wasm-function[118584]@[wasm code] wasm-stub@[native code] invoke_iii@blob:file:///ce3cf2cf-9cb3-4723-a499-98a7b0c93a71:3:411844 .wasm-function[118584]@[wasm code] .wasm-function[2239]@[wasm code] .wasm-function[63653]@[wasm code] .wasm-function[18940]@[wasm code] .wasm-function[541]@[wasm code] .wasm-function[540]@[wasm code] .wasm-function[111580]@[wasm code] .wasm-function[134747]@[wasm code] .wasm-function[18950]@[wasm code] .wasm-function[118583]@[wasm code] wasm-stub@[native code] invoke_iiii@blob:file:///ce3cf2cf-9cb3-4723-a499-98a7b0c93a71:3:412366
應該unity引擎有些代碼變動導致,壹個相關說明
解決方法:升級IOS版本就不會有問題啦。
[加西網正招聘多名全職sales 待遇優]
還沒人說話啊,我想來說幾句
字節抖音小游戲是壹種基於字節跳動產品生態開發且無需下載安裝即可使用的全新游戲應用,實現了客戶端“點開即玩”的優質用戶體驗。小游戲擁有開發輕便快捷,發布流程簡單的特點,同時依托字節跳動生態優勢,讓小游戲天然具備較強的內容分發能力,支持小游戲開發者快速推廣與變現。壹,准備工作1.1 注冊字節開發者後台
進入字節小程序開發者後台,在開發者平台中點擊右上角的「快捷登錄」進行帳號注冊。在登錄後需要通過【申請創建】提示完成申請流程即可。
然後等著字節小游戲通過注冊時的手機號或郵箱給予的答復。工作日提交的話壹般在幾個小時之內就有答復,最長時間為兩個工作日之內。
注冊後按照要求填寫資質信息:公司就寫企業全稱,個人開發者填寫個人姓名,然後其他內容根據要求填寫。
其中需要注意的是小游戲體驗路徑:壹般是壹個可用的測試鏈接或者是壹個網盤地址裡面放壹個可以玩的apk。(我們寫過蘋果商店地址審核失敗了,應該是IOS的不行)1.2 Unity版本說明
如果使用 natvie 方案:確認游戲工程運行在 Unity 2019.4.8f1 或者 Unity 2019.4.35f1
如果使用 wasm 方案:建議使用 unity 最新版,比如 2021.2 之後的版本,在 wasm 方面做了很多優化
可以用 2019.4.8 構建 native 版本,用 2021.x 構建 wasm,壹起發布。
我前幾天測試了2019.4.35f1c1,2019.4.8f1,Unity2021.3.3f1c1版本都是可以使用的,
不過在7月26號看到有開發者反饋說2019.4.8f1不好用了,官方回復:最近因為Android 12 的普及新增崩潰太多了,所以發新版需要升級了。
因為插件本身也在開發中,所以建議在開發是加入意見反饋群(在官方文檔文末),及時關注動態,以免重復趟坑。
我這裡用的是Unity2021.3.3f1c1版本:
發布Android就在下載時添加:Android Build Support 模塊:
發布WebGL的話就在下載時添加:WebGL Build Support 模塊: (想上線IOS的話只能使用WebGL的方式進行發布)
1.3 檢查AppID是否有效
審核通過後就可以在應用中心看壹個以07結尾且長度是20位AppID,若不是需要重新申請(後面打包時用)
贰,開始集成2.1 創建項目
下載字節SDK:開發者後台,建議先讀壹遍文檔,因為當你看的時候有可能有更新:
導入後在工具欄選:ByteGame --> ByteGame Develop Tools
打開後下載:StarkSDK和StarkSDKUnityTools兩個包:
下載完成後目錄大致如下:
2.2 接入SDK
發布抖音小游戲,只需要壹個錄屏分享功能即可上線。所以這裡只提供錄屏和分享功能示例,其他功能可按需接入,官方文檔地址。
邏輯也非常簡單,創建叁個按鈕分別為開始游戲,游戲結束,分享錄屏來模擬游戲過程中的功能實現;帶有詳細注釋的接入代碼如下:using System.Collections; using System.Collections.Generic; using StarkSDKSpace; using UnityEngine; using UnityEngine.UI; public class StarkSDKTest : MonoBehaviour { public Button startBtn; public Button endBtn; public Button shareBtn; void Start() { startBtn.onClick.AddListener(StartVideo); endBtn.onClick.AddListener(StopVideo); shareBtn.onClick.AddListener(ShareVideo); } void StartVideo() { Debug.Log("抖音 開啟錄制視頻 ..."); // 是否錄制聲音,默認為錄制聲音 // 最大錄制時長,單位 s。小於等於 0 則無限制。默認為10分鍾 // 視頻錄制開始回調 // 視頻錄制失敗回調 bool isStart = StarkSDK.API.GetStarkGameRecorder().StartRecord(true, 200, StartCallback, FailedCallback, SuccessCallback); Debug.Log("視頻開啟錄制結果 ..." + isStart); } void StopVideo() { Debug.Log("抖音 停止錄制視頻 ..."); bool isStop = StarkSDK.API.GetStarkGameRecorder().StopRecord(SuccessCallback, FailedCallback, null, false); Debug.Log("停止錄制視頻狀態 ..." + isStop); } void StartCallback() { Debug.Log("視頻開始錄制回調執行 ..."); // 開始回調邏輯,比如:顯示錄屏中按鈕 } void FailedCallback(int errCode, string errMsg) { Debug.Log("錄制視頻失敗回調執行 ... 錯誤碼是:" + errCode + " ,錯誤消息是:" + errMsg); // 失敗回調邏輯,比如:隱藏錄屏中按鈕 } void SuccessCallback(string videoPath) { Debug.Log("視頻錄制完成實際路徑:" + videoPath); // 成功回調邏輯,比如:隱藏錄屏中按鈕 } void ShareVideo() { Debug.Log("ShareVideo ShareVideo ..."); // 只有回調,不帶預定義標題和話題 StarkSDK.API.GetStarkGameRecorder().ShareVideo(SuccessCallback, FailedCallback, CancelledCallback); // 分享成功回調 // 分享失敗回調 // 分享取消回調 // 分享視頻的標題,如不需要設置標題,可以傳null或空字符串 // 分享視頻的話題,如不需要設置話題,可以傳null或空列表 //StarkSDK.API.GetStarkGameRecorder().ShareVideoWithTitleTopics(SuccessCallback, FailedCallback, // CancelledCallback, "自定義標題", new List() {"自定義話題1", "自定義話題2"}); void SuccessCallback(Dictionarystring, object> dictionary) { Debug.Log("視頻分享成功回調 ..."); // 成功回調邏輯,比如:彈窗提示並發放獎勵 } void CancelledCallback() { Debug.Log("取消分享回調 ..."); // 取消回調邏輯,比如:彈窗提示 } void FailedCallback(string errMsg) { Debug.Log("分享視頻失敗回調執行 ... " + " ,錯誤消息是:" + errMsg); // 失敗回調邏輯,比如:彈窗提示 } } }
最後將代碼掛載到游戲場景中並將上面創建的叁個按鈕賦值給代碼中預留的公開變量。
然後運行:點擊開始游戲按鈕 -——> 調用錄屏邏輯 -——> 游戲中出現:開發階段...文字提示,-——> SDK接入成功 -——> 進入真機測試階段。
叁,發布游戲
在工具欄選擇 ByteGame --> StarkSDKTools --> Build Tool 即可打開打包的工具面板
3.1 發布安卓Apk
在面板的運行框架選擇Native,然後按照需求填寫,構建即可。
3.2 發布雙端WebGL
在面板的運行框架選擇WebGL,然後選擇構建WebGL:
構建完成後,會在指定目錄生成 --> 壹個webgl的目錄和壹個壓縮包,如下圖:
然後在3.1圖1中選擇發布WebGl:
最後按需填寫完成後,選擇發布,等待發布完成即可在彈出贰維碼,使用抖音掃描就可以進行測試了。3.3 IOS15.4版本問題
測試IOS時發現,使用IOS15.4版本的測試機,不能成功加載出游戲場景,報錯如下:
報錯原文:
10:08:30.703 exception thrown: RuntimeError: Out of bounds memory access (evaluating 'dynCall_ii(index,a1)'),.wasm-function[59627]@[wasm code] .wasm-function[146029]@[wasm code] .wasm-function[83839]@[wasm code] wasm-stub@[native code] invoke_ii@blob:file:///ce3cf2cf-9cb3-4723-a499-98a7b0c93a71:3:413696 .wasm-function[83839]@[wasm code] .wasm-function[19042]@[wasm code] .wasm-function[1057]@[wasm code] .wasm-function[66513]@[wasm code] .wasm-function[4560]@[wasm code] .wasm-function[118584]@[wasm code] wasm-stub@[native code] invoke_iii@blob:file:///ce3cf2cf-9cb3-4723-a499-98a7b0c93a71:3:411844 .wasm-function[118584]@[wasm code] .wasm-function[2239]@[wasm code] .wasm-function[63653]@[wasm code] .wasm-function[18940]@[wasm code] .wasm-function[541]@[wasm code] .wasm-function[540]@[wasm code] .wasm-function[111580]@[wasm code] .wasm-function[134747]@[wasm code] .wasm-function[18950]@[wasm code] .wasm-function[118583]@[wasm code] wasm-stub@[native code] invoke_iiii@blob:file:///ce3cf2cf-9cb3-4723-a499-98a7b0c93a71:3:412366
應該unity引擎有些代碼變動導致,壹個相關說明
解決方法:升級IOS版本就不會有問題啦。
[加西網正招聘多名全職sales 待遇優]
| 分享: |
| 注: |
| 延伸閱讀 | 更多... |
推薦: