百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

揭秘!你玩的字节抖音小游戏制作流程公布

liuian 2025-03-23 21:06 16 浏览

  • 1.1 注册字节开发者后台
  • 1.2 Unity版本说明
  • 1.3 检查AppID是否有效
  • 2.1 创建项目
  • 2.2 接入SDK
  • 3.1 发布安卓Apk
  • 3.2 发布双端WebGL
  • 3.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

打开后下载:StarkSDKStarkSDKUnityTools两个包:

下载完成后目录大致如下:


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(Dictionary 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版本就不会有问题啦。


相关推荐

面试问了解Linux内存管理吗?10张图给你安排的明明白白!

来源:https://www.cnblogs.com/NanoDragon/p/12736887.html今天来带大家研究一下Linux内存管理。对于精通CURD的业务同学,内存管理好像离我们很远...

Linux Kernel 6.12震撼发布:实时性能飙升,开启全新计算时代!

概述LinusTorvalds在邮件列表中宣布推出LinuxKernel6.12,该版本带来了多项重要的更新和功能增强。更新亮点PREEMPT_RT支持主要内容:LinuxKernel...

linux Grub2功能、常见配置及使用方式

Grub2(GrandUnifiedBootloaderversion2)是一款功能强大的引导加载程序,提供了以下功能和常见配置:多操作系统支持:Grub2可以加载和引导多个操作系统,包括不同...

Linux内核必备知识点-platform总线详解

platform总线是学习linux驱动必须要掌握的一个知识点。本文参考已发布:Linux3.14内核一、概念嵌入式系统中有很多的物理总线:I2c、SPI、USB、uart、PCIE、APB、AHB...

linux kernel内核的头文件获取、安装等方法

交叉编译时经常会用到这些头文件。下载合适版本的linux地址:https://mirrors.aliyun.com/linux-kernel/https://mirrors.edge.kernel.o...

600个常用 Linux 命令,收藏备用!

本文为Linux命令大全,从A到Z都有总结,建议大家收藏以便查用,或者查漏补缺!A命令描述access用于检查调用程序是否可以访问指定的文件,用于检查文件是否存在accton用于打开或关闭记帐进程或...

Linux 中 `/proc/cpuinfo`文件中最常见的标志

/proc/cpuinfo是一个虚拟文件系统,在Linux系统中提供有关CPU(中央处理器)的信息。通过读取该文件,您可以获取有关处理器的详细信息,如型号、频率、核心数、缓存大小等。本文将介绍...

600个Linux命令大全,从A到Z,2023年收藏大吉!

本文为Linux命令大全(有PDF),从A到Z都有总结,建议大家收藏以便查用,或者查漏补缺!A命令描述access用于检查调用程序是否可以访问指定的文件,用于检查文件是否存在accton用于打开或关闭...

Linux下如何查看硬件信息?

我们在Linux下进行开发时,有时也需要知道当前的硬件信息,比如:CPU几核?使用情况?内存大小及使用情况?USB设备是否被识别?等等类似此类问题。下面良许介绍一些常用的硬件查看命令。lshwls...

从PXE到GRUB到VHD文件启动

今天玩点花活儿,之前的文章再探从VHD文件中启动Windows及Grub双启动VHD文件+TinyCoreLinux中研了一下GRUB和VHD文件的关联应用,那么结合PXE又会是怎么样的呢?...

bootra1n教学:Windows用户用U盘Linux实现checkra1n越狱方法

checkra1n越狱工具在前几天推出Linux版本,相信对于Windows用户可能也看得很模糊,甚至要切割硬碟到安装Linux系统太过于繁杂,这篇要来教大家最简易最快速利用U盘Linux...

不了解NUMA,就看不懂Linux内核

哈喽,我是子牙,一个很卷的硬核男人深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程。为了保证课程质量及教学效果,一年磨一剑,三年先后做了这...

Linus Torvalds接受微软Hyper-V升级 下一代Linux启动会更快

虽然Windows的粉丝和Linux的粉丝经常喜欢进行激烈的键盘大战,但操作系统的制造商们自己也了解彼此的优缺点。毫无疑问,微软也明白这一点,事实上,它甚至鼓励用户尝试Linux,尽管是使用...

deepin使用笔记——开机卡LOGO,无法正常关机的解决办法

第一次使用deepin操作系统,很容易遇到几种情况:1,开机卡LOGO,无法进入系统。2,开机可以进入系统,但是进入系统后桌面环境无法正常打开,一直卡着什么都不能用。3,开机后看似一切正常,但关机的时...

如何检查Linux系统硬件信息?从CPU到显卡,一网打尽!

你可能会问:“我为什么要关心硬件信息?”答案很简单:硬件是Linux系统的根基,了解它可以帮你解决很多实际问题。比如:性能调优:知道CPU核心数和内存大小,才能更好地调整程序运行参数。故障排查:系统卡...