游戏开发者必看:Perforce Helix Core 的功能特点及游戏开发中的常用工具、典型用例介绍

「不出海,即出局」随着全球化的加速发展,企业出海已成燎原之势。日前,2024 亚马逊云科技出海全球化论坛在深圳成功举办。龙智携手 Perforce 亮相游戏行业展区,展示了Perforce Helix Core如何与主流游戏开发引擎高效集成,以及如何助力分布式团队协作,为游戏开发者提供强大支持。

此外,龙智客户服务总监李培受邀出席游戏出海分论坛,并发表「Perforce Helix Core 如何利用亚马逊云科技支持跨地域游戏开发」的主题演讲,分享 Perforce Helix Core 的功能特点、游戏开发中常用的工具及典型用例,以及进入云时代后,在游戏出海方面可提供的支持与服务等。

在这里插入图片描述

以下为演讲内容回顾(部分有删减):

Perforce Helix Core 概述

提及 Helix Core,大家可能会稍微有些陌生,但其实对游戏从业者来说,他们已习惯称其为 Perforce 或者 P4,这是在细分行业里一个非常耳熟能详的软件。作为 Perforce 旗下的一款高性能的版本控制软件,Helix Core 在游戏和芯片行业拥有广泛的用户群体,为什么在这两个行业有广泛应用呢?主要因为游戏和芯片行业面临着比较大的版本管理的挑战,其他行业使用的 Git 或 SVN 在这两个行业的某些场景下是难以胜任的,而 Perforce Helix Core 可以为其提供有力的版本管理的支撑。

高度可伸缩性

对于 Perforce Helix Core 的特点,首先是部署极为简单,初始安装仅需要 5 分钟,在当前软件爆炸的时代,Perforce Helix Core 其实是一款比较精巧、简单而强大的一个工具。只有两个文件就可以完成非常强大的任务。其次是原生支持分布式部署,有些版本控制工具,比如 Git 发行版,若想支持分布式部署可能需要购买许可,而不是免费的。另外,Perforce Helix Core 非常容易扩展,从小团队到大团队,可以实现平滑过渡。

高速存取
第二个特点可能是很多客户选择 Perforce Helix Core 的初心,特别对于一些 3A 游戏,一个分支可能就上百 G,加上历史版本,数据可能超过 T 类级别。此时就需要一个强大的版本管理工具来完成版本管理的任务。

Perforce Helix Core 首先可以高速存取,支持多线程的上传下载。它还可以按需获取,我们知道 Git 是是按整库取下来的,而 Perforce Helix Core 可以按文件获取,即需要哪个文件就获取哪个文件。另外它没有本地的管理目录,这是它和 SVN、Git 的不同之处。当工作区的数据较多时,隐藏的管理目录实际上也会占据很多空间,使用 Perforce Helix Core 则没有这种问题。另外 Perforce Helix Core 支持大数据量,可以支持客户上百 TB 的数据。此外也原生支持大文件,对于单个特别大的文件,比如上传一个几十 G 的视频文件,Perforce Helix Core 都可以轻松应对。

文件级粒度权限管理

文件级的粒度权限管理也是 Perforce Helix Core 与其他产品的显著区别。相较而言,Git 通常是项目级,SVN 也只是文件夹级别。Perforce Helix Core 可以基于 IP 来进行访问控制,这实际上也有一些现实用例,比如说在不同的区域允许访问不同的服务器,都可以基于此功能来实现。Perforce Helix Core 还支持审计日志。比如很多大型公司会设有安全团队,他们可能会来项目组检查并要求证明所使用的系统未被非法访问,此时审计日志的功能就显得非常重要了。

便捷强大的分支管理

Perforce Helix Core 具有多种分支管理方式,一种是传统的 local 类型,该类型比较符合常规的对分支管理的类型分支;另一个是 Stream 类型,是专门为增强的分层管理开发的一个管理方式;第三种是 graph,类似于 Git 的使用方式,实际上 Perforce 也可以兼容 Git 的使用方式,只是以集中式为主。

另外,Perforce Helix Core 支持分支及模块的组装,以解决不同模块迭代速度不同所带来的问题。这是一个非常实用的功能。举个例子,比如一个游戏开发往往可能分几个模块,一类是美术团队,一类是维护引擎(引擎有可能自己要做一些微调或者适配),还有就是代码团队,即程序员团队。这三个模块的迭代速度是不一样的,可能有的模块一天要改 8 次,有的则是几个月改一次,迭代速度必定不同。如果我们把这些上百 G 的项目综合到一起,我开一个分支,就是 100G 的控制数据,那你的服务器上面数据就会很多。此时,我们就可以按不同的模块来组织分支,即可以把美术资源、引擎和代码分别拆分成三个模块,各个团队按需去使用各个模块的各个版本,然后通过 Stream 把这些分支组装起来。

说了分支的组装之后,自然又会带来一个问题:组装错了怎么办?比如美术团队要求使用我的 1.0 版本,但是有人把这个分支定义修改了,导致我版本用错,那么产生的后果谁来承担?为了解决这一问题,Perforce Helix Core 在比较新的版本里加入了对分支定义的权限控制,即需要有权限才能修改该分支的组成、模块等内容。

另外,Perforce Helix Core 支持分支合并历史及分支关系的图形化查看,该功能也非常实用,且相较于 Git 工具,Perforce Helix Core 的图形化展示更加清晰直观。

与其他软件集成

在游戏行业这一重要领域,Perforce Helix Core 可以与 Unreal、Unity 等主流的游戏引擎工具实现天然集成,使得游戏开发者能够无缝地使用 Perforce Helix Core 进行版本控制。此外,Perforce 还支持与 Photoshop、3Ds Max、Maya 多款美术工具以及上下游的变更管理自动化工具进行集成。

游戏行业的典型用法

我们知道,游戏行业具有高度的保密性,尽管我们服务的客户中不乏一些国内的头部企业,但出于对客户隐私的尊重,不便透露过多细节。这里我们就一些通用的用例进行介绍。

Perforce 游戏开发工具集
首先 Perforce 提供了一些游戏开发相关的工具集:

Helix Plan 敏捷计划工具:轻量化的敏捷变更管理工具,用于制定计划及变更控制;

Helix Core 版本管理工具:是我们目前重点介绍的工具,主要用于版本管理,其功能特点已在前文详细介绍;

Helix Swarm 代码评审工具:与 Helix Core 搭配使用,主要用于代码的评审,以及辅助进行一些文档和某些图片格式的评审;

Helix DAM 数字资产管理工具:近两年新开发的一款数字资产管理工具,用于满足游戏行业的数字资产管理,包括音频、视频、动画以及一些常见的图片格式等资产,实现诸如搜索、自动分类、在线预览、评审等管理,同样与 Helix Core 搭配使用;

Helix 4Git 使 Git 能与 Helix Core 协作:使用相对较少,对 Git 和 Helix Core 比较熟悉的客户会更多地使用这一工具。具体来说,我们知道引擎代码是存在 Git 上的,而有些代码在 Perforce 上,构建时就需要把 Git 侧的代码提交到 Perforce,才利于统一构建,但同时也要兼顾到一些用户的习惯问题。Helix 4Git 就是用于解决这一问题,使用该工具,用户可以在 Git 侧进行工作和修改,同时可以把 Git 仓库映射到 Perforce,在 Perforce 侧只读访问,从而实现在同一个工作区里完成构建。

使用 Stream 管理分支
对于刚开始使用 Perforce Helix Core 的新客户,他们可能会选择使用 local 类型来管理分支。然而,随着项目规模的扩大,比较大型的厂商通常会选择使用 Stream 类型的仓库来管理分支。其好处在于,Stream 类型原生支持了预定义的分支类型和分支深度,有效避免了因误用而引发的混乱。此外,Stream 类型还提供直观的图形化界面支持,使得分支关系一目了然。

比如前面已经提到的,可以将游戏开发中的不同模块组装起来,通过分支组装来简化团队协作,减轻服务器负荷,从而降低管理开销。

值得一提的是,分支的组织应在迁移到 Perforce Helix Core 之初就进行规划。一旦游戏开发进入正轨,数据量庞大且团队忙碌时,再对分支进行调整就会变得十分困难。

其他常见用法
一个是使用 Perforce Helix Core 支撑持续迭代。随着游戏行业对持续提升和持续发布的需求日益增长,有些公司可能每小时就要迭代一次,每一次或许都是上百 G 的数据。据我所知,一些比较好的游戏公司甚至会设置专门的岗位,比如 DevOps 开发工程师,来完成这些工作。对于如此庞大且繁重的迭代任务,就要求有一个高效的版本控制工具来支撑大量的数据操作。Perforce Helix Core 凭借其强大的功能,能够轻松应对每次迭代可能涉及的上百 G 的数据量,确保团队能够高效地进行开发和发布。同时,对于已经实现快速迭代的团队,通过更细致的规划每次集成的任务,可以进一步优化开发流程,实现有目的的快速迭代。

另外,可能有一些比较喜欢钻研的同学会使用到 Helix 4Git 工具。他们通过 Helix 4Git 将原本可能在 Git 上的引擎代码或网络库代码,映射到 Perforce Helix Core 里面进行统一构建,并且可以享受这种企业级的统一的备份方案,这也是一项很好的实践。

此外,如我刚才所说,为了提高研发效率,会有一些专门的工具团队来开发各种帮助提升工作效率的工具。与 Perforce Helix Core 相关的是,我们提供全功能的命令行接口,图形界面能做的这个命令行全部都能做;提供 C++或 Python 等编程语言的接口,帮助开发者轻松定制开发流程,开发各种自动化工具。

跨地域协作

完善的跨地域支持
Perforce Helix Core 天然支持跨地域部署,无需额外许可,这是它在跨地域协作方面的一大优势,可以为分布在不同地区的团队提供高效协作的解决方案。

Commit Server 指的是一台集中服务器,一个集群里只能有一台,也可以说是主服务器。

Proxy 是一种低成本的跨地域实施方案,仅需一条命令即可启动,无需过多的维护成本,其主要作用是内容缓存。

Readonly Replica 主要实现自动备份,比如可以将云机器放在不同的机房以实现灾备,一个机房出现意外故障,另一个机房有完整备份,且备份过程无需人工介入,这也是一个很典型的应用场景。

Forwarding Replica 提供了更灵活的功能,除了具备 Readonly Replica 的备份功能外,它还能分担负载,同时允许用户直接访问。

Edge Server 是比较现代化的解决方案,更多应用于跨国部署的场景。它拥有独立的一部分控制数据,通过在海外部署 Edge Server,无需国内主服务器的介入,当地员工即可进行下载。

在部署原则方面,一个是要靠近用户部署下游服务器来优化用户访问的速度;其次,在跨国团队协作时,还需要考虑数据过滤和权限控制等问题,Perforce Helix Core 的 Replica 技术能够支持数据过滤,确保只有指定的目录被复制到海外供当地用户使用;另外,通过细致的权限控制则可以限制用户访问的服务器内容,确保数据的安全性。

在服务器集群间的数据同步方面,Perforce Helix Core 也提供了多种解决方案,包括 Remote Depot、Zip / Unzip 以及 DVCS 等,这些方案能够帮助团队实现国内外主服务器之间的数据传递和同步。

亚马逊云科技支持

亚马逊云科技支持全球 33 个区域,每个区域包含多个 Azs(可用区),每个 Azs 拥有一个或多个数据中心,具备天然的容灾特性,地域、网络设备均是相互隔离的。这些设施为我们提供了坚实的基础架构支持。

与我们业务紧密相关的是其强大的机器性能和存储能力。例如,当我们面对动辄上百 T 的数据存储需求时,若采用传统方式购买磁盘柜,不仅成本高昂,而且无论是否充分利用,成本都是固定的。而采用云存储方案,则可以根据实际的使用情况灵活购买和扩容,如初始购买 5TB,随后根据需要逐步扩展,这种灵活性是云存储的显著优势。此外,一些客户也可以利用云上的负载均衡特性等。

使用亚马逊云科技存储支持

在云上部署开发环境或存储数据时,我们可以根据需求选择不同类型的存储介质。对于控制数据和日志,可以使用高性能的 SSD 存储;而对于仓库数据,由于其连续性较高,可以选择速度稍慢但成本更低的机械式硬盘存储。

值得一提的是,Perforce Helix Core 现已原生支持 S3 存储,这对于 Archive 仓库的管理尤为有利。当我们拥有大量旧版本数据,既不敢轻易删除,又想节省存储成本时,S3 存储便是一个理想的选择。此外,云存储还具有易于清理、扩容、加密和备份的特性,如 Depot 仓库中的设计文件,我们可以选择加密存储以确保数据安全。相较于自行实现这些功能,云上提供的天然选项无疑更为便捷,大大减少了我们的工作量。

部署策略

部署策略方面也有多种选择。一种是 Perforce 托管,全部由 Perforce 来部署和管理,用户直接使用即可,该种适用于 50 用户以下。其次是自有部署,可以自行选择部署在云上或者机房,然后由 Perforce 远程运维。三是对于 50 用户以上的,可以选择由专门的云服务商来托管。最后一种是部分上云、部分本地部署,这一类是我接触比较多的部署方式。比如对于刚刚建立了海外工作室的国内开发团队,就可以采用部分上云。在云上部署一个 Edge,但主服务器还在国内的本地机房,远程用户就可以通过 Edge 来跟国内团队进行协同开发。

龙智服务

最后介绍一下我们龙智服务。龙智作为 Perforce 中国授权合作伙伴,深知国外产品在服务与支持方面面临着语言障碍、时差等挑战,为此,我们在竭力将国外领先的软件产品引入中国的同时,也致力于为中国用户提供更加全面、高效的本土化服务。

专业的技术支持

我们拥有一支专业的服务团队,具备深厚的行业经验和专业技术知识,能够迅速响应客户需求,解决各类问题。

灵活的服务方式

对于一般问题,客户可以通过各种即时通讯随时联系我们,并得到快速解决;对于复杂或需要深入调查的问题,我们也会主动收集所需资料,并与原厂进行沟通,确保为客户提供及时、有效地支持。

丰富的服务内容

除了日常的技术支持,我们也根据客户的具体需求,提供线上线下培训、现场交流等多种形式的服务,帮助客户更好地理解和使用 Perforce Helix Core。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/545689.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于《CS创世 SD NAND》的技术学习分享

最近发现一个好玩的东西《CS创世 SD NAND》,带大家一起体验一下。 本文引用了部分厂家产品资料及图像,如有侵权,请及时联系我删除,谢谢。 《CS创世 SD NAND》官方网站:http://www.longsto.com/ 什么是CS创世 SD NAND呢…

c++的学习之路:4、入门(3)

摘要 本章将介绍一下auto、for和指针空值,文章末附上入门的所有代码。 目录 摘要 一、auto 二、for 三、指针空值 四、代码 五、思维导图 一、auto 这个关键字是c提出的,可以自动识别变量的类型,可以看出下方图片,auto自…

【研发日记】Matlab/Simulink软件优化(一)——动态内存负荷压缩

文章目录 背景介绍 初始代码 优化代码 分析和应用 总结 背景介绍 在一个嵌入式软件开发项目中,有一个使用MATLAB Function编写的算法模块,功能是从一个较大的数组中提取一段数据,然后求均值输出,示例如下: 初始代…

OpenHarmony实战开发-如何实现图片缩放效果。

介绍 图片预览在应用开发中是一种常见场景,在诸如QQ、微信、微博等应用中均被广泛使用。本模块基于Image组件实现了简单的图片预览功能。 使用说明: 双指捏合对图片进行缩放双击图片进行图片的大小切换,在放大状态下,双击可恢复…

腾讯EdgeOne产品测评体验——多重攻击实战验证安全壁垒:DDoS攻击|CC压测|Web漏洞扫描|SQL注入

腾讯EdgeOne产品测评体验——实战验证安全壁垒:DDoS攻击|CC压测|Web漏洞扫描|SQL注入 写在最前面一、产品概述1.1 什么是边缘安全加速平台 EO?1.2 EdgeOne产品功能 二、准备工作2.1 选择:NS(Name Server)接入模式或 CN…

【架构-13】云原生架构

云原生架构产生背景? (1)大量资源被占用且难以分享,上云后,云厂商提供统一的IaaS能力和云服务。 (2)提供极致性能的云原生算力。 (3)集成服务,构建管理数据、…

如何在CentOS本地部署FastDFS文件系统并实现无公网IP远程上传下载内网文件

文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…

C语言学习笔记之操作符篇

目录 算术运算符 移位操作符 整型在内存中的存储(补充知识) ​编辑左移操作符 右移操作符 位操作符 赋值操作符 复合赋值操作符 单目操作符 关系操作符 逻辑操作符 && 与 || 的计算特点 条件操作符 逗号表达式 下标引用操作符 函…

负载均衡(理解/解析)

目录 什么是负载均衡 应用场景 网络服务和应用: 云计算和虚拟化: 负载均衡分类 硬件负载均衡器 软件负载均衡器 部署方式 硬件部署: 软件部署: 云部署: 路由模式: 算法实现 轮询法(Round R…

MacOS - 程序坞,但图标消失不见了 但是还能用

如图 强迫症难受死 重启什么的都尝试了。不好使! 差点重装系统。 经验证 改名字可以修复。 但是系统的比如启动台 也显示不出来 全网好使的方案 在“应用程序”中打开“终端” 输入命令如下:(注意:需要 sudo 权限&#xff0…

【CLR】《Cyclical Learning Rates for Training Neural Networks》

WACV-2017 IEEE Winter Conference on Applications of Computer Vision 文章目录 1 Background and Motivation2 Related Work3 Advantages / Contributions4 Method5 Experiments5.1 Datasets and Metrics5.2 CIFAR-10 and CIFAR-1005.3 ImageNet 6 Conclusion(o…

Unity 中消息提醒框

Tooltip 用于ui布局 using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; using UnityEngine.UI;[ExecuteInEditMode()] // 可以在编辑模式下运行public class Tooltip : MonoBehaviour {public TMP_Text header; // 头部文本publi…

✌粤嵌—2024/3/11—跳跃游戏

代码实现&#xff1a; 方法一&#xff1a;递归记忆化 int path; int used[10000];bool dfs(int *nums, int numsSize) {if (path numsSize - 1) {return true;}for (int i 1; i < nums[path]; i) {if (used[path i]) {continue;}path i;used[path] 1;if (dfs(nums, num…

ZYNQ之嵌入式开发03——按键中断实验

文章目录 按键中断控制LED的状态AXI GPIO实现按键中断使用多个AXI GPIO实现按键中断 GPIO的简图如下图所示。 GPIO对应的中断ID是52。 按键中断控制LED的状态 前面实验中已经做了按键控制LED状态的实验&#xff0c;但是LED的状态分为按键按下时和按键松开时的两种状态&…

00_STM32CubeMX如何新建一个工程

STM32CubeMX如何新建一个工程 STM32CubeMX如何新建一个工程以使用PA1口点亮LED为例子 STM32CubeMX如何新建一个工程 以使用PA1口点亮LED为例子 1.创建一个新工程 2.搜索芯片&#xff0c;然后双击 3.点击PA1引脚&#xff0c;设置为输出口 4.文件一定要保存到英文路径&#xff…

4. WPF应用程序中的未捕获异常处理

文章目录 一. 目标二. 技能介绍① UI未捕获异常的处理方式② 全局程序域抛出的未处理异常的捕获③ 异步Task任务中的异常捕获 三. 总结 一. 目标 理解和使用UI未捕获异常DispatcherUnhandledException的使用方法和触发方式.理解和使用程序域未捕获异常AppDomain.CurrentDomain.…

vs2022断点调试怎么看堆栈帧,找异常位置

打一个断点以后&#xff0c;会出现如图报错 我们要怎么找到报错的语句&#xff1f;鼠标点击->堆栈帧->上一行运行的位置->直到找到错误出错如图所示&#xff1a; 跳转到&#xff0c;我们手写的代码&#xff0c;执行出错的位置

【第十五届】蓝桥杯省赛C++b组

今年的蓝桥杯省赛已经结束了&#xff0c;与以往不同&#xff0c;今年又回到了8道题&#xff0c;而22&#xff0c;23年出现了10道题 大家觉得难度怎么样&#xff0c;欢迎进来讨论&#xff0c;博主今年没参加哈&#xff0c;大家聊聊&#xff0c;我听听大家的意见和看法哈 试题A:…

DSP笔记13-时间基准子模块Time base(TB)比较子模块Counter cpmpare(CC)

时间基准子模块Time base(TB) 同步&#xff0c;计数 CTR计数寄存器 PRD周期寄存器 CMP比较寄存器&#xff0c;占空比 EPWMA&#xff0c; EPWMB&#xff0c;两个比较寄存器&#xff0c;但只有以及计数寄存器以及一个周期寄存器 计数模式 计数时钟TBCLK HSPCLKDIVx x0,分…

HBuilderX 中开发vue,引入百度地图获取当前ip地址定位

实现功能&#xff1a;使用百度地图获取IP地址&#xff0c;定位到当前位置 参考文档地址&#xff1a;MapVGL | 快速入门 一、在有外网的情况下&#xff0c;常规引入百度地图的方法如下&#xff1a; 1、在index.html中引入 <script src"//api.map.baidu.com/api?v1.…