游戏开发者必看: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。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker安装部署Jenkins并发布NetCore应用

Docker安装Jenkins # 拉取镜像 docker pull jenkins/jenkins # 查看镜像 docker images # 运行jenkins # 8080端口为jenkins Web 界面的默认端口 13152是映射到外部 :前面的是映射外部 # 50000端口为jenkins 的默认代理节点(Agent)通信端口…

FFmpeg: 自实现ijkplayer播放器--06封装打开和关闭stream

文章目录 流程图stream openstream close流程图 stream open 初始化SDL以允许⾳频输出;初始化帧Frame队列初始化包Packet队列初始化时钟Clock初始化音量创建解复用读取线程read_thread创建视频刷新线程video_refresh_threadint FFPlayer::stream_open(const char

java:多线程解决生产者消费者问题

生产者消费者问题 生产者消费者问题,也称有限缓冲问题,是一个多线程同步问题的经典案例。该问题描述了共享固定大小缓冲区的两种线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中…

第十三届蓝桥杯省赛大学B组编程题(c++)

D.刷题统计 二分(AC): 注意:二分时右边界 right 的确定 #include<iostream> using namespace std; long long a,b,n; bool check(long long x){long long tx/7;x%7;long long temp0;if(x<5) tempx*a;else temp5*a(x-5)*b;long long cntt*(5*a2*b)temp;return cnt&g…

【网站项目】驾校报名小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

【Linux学习笔记】安卓设置内核信息的打印级别

开发环境 开发板&#xff1a;正点原子RK3568开发板安卓版本&#xff1a;11 问题描述 在串口调试过程中经常打印出这样的一些信息 极影响调试&#xff0c;暂时又没什么用&#xff0c;有些时候还不能给它直接关了。尤其是这个信息 healthd: battery l50 v3 t2.6 h2 st3 fc10…

如何使用pytorch进行图像分类

如何使用pytorch进行图像分类https://featurize.cn/notebooks/5a36fa40-490e-4664-bf98-aa5ad7b2fc2f

Unity笔记之Android打包、减小包体之类的问题

打包问题 问题1&#xff1a; 一般大部分问题就是JDK、SDK、NDK之类的问题。现在是其他的问题&#xff0c;之前遇到过&#xff0c;好久没玩android了都忘了。 这试了半天&#xff0c;结果是需要有密钥库。那就给他创建一个填一下就行了 &#xff08;在网上看了半天&#xff…

weblogic oracle数据源配置

在weblogic console中配置jdbc oracle数据源 1. base_domain->Service->DataSources 在Summary of JDBC Data Sources中,点击New, 选择【Generic Data Source】通用数据源。 2. 设置数据源Name和JNDI name 注:设置的JNDI Name是Java AP中连接DB使用的数据源名 JND…

Vue ElementUI el-input-number 改变控制按钮 icon 箭头为三角形

el-input-number 属性 controls-position 值为 right 时&#xff1b; <el-input-number v-model"num" controls-position"right" :min"1" :max"10"></el-input-number>原生效果 修改后效果 CSS 修改 .el-input-number…

sql注入之延时注入

1.1 延时盲注原理 延时盲注&#xff0c;也称为时间盲注或延迟注入&#xff0c;是一种SQL盲注的手法。其原理在于利用执行时间差来判断是否执行成功。攻击者提交一个对执行时间敏感的SQL语句&#xff0c;通过执行时间的长短来判断注入是否成功。如果注入成功&#xff0c;执行时…

2024年生物医学与食品安全国际会议 (ICBFS 2024)

2024年生物医学与食品安全国际会议 (ICBFS 2024) 2024 International Conference on Environmental Prevention and New Materials 【会议简介】 2024年生物医学与食品安全国际会议即将在成都召开。本次会议将汇聚全球生物医学与食品安全领域的专家学者&#xff0c;共同探讨生…

CSS导读 (元素显示模式 下)

&#xff08;大家好&#xff0c;今天我们将继续来学习CSS的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 3.6 元素显示模式转换 3.7 (一个小技巧)单行文字垂直居中的代码 3.8 单行文字垂直居中的原理 3.9 小案例…

学习笔记------约束的管理

此篇记录FPGA的静态时序分析&#xff0c;在学习FPGA的过程中&#xff0c;越发觉得对于时序约束只是懂了个皮毛。现在记录一下自己的学习过程。 本文摘自《VIVADO从此开始》高亚军 为什么要进行约束&#xff1f;约束的目的是什么&#xff1f; 简单来说&#xff0c;就是需要在…

提高APP安全性的必备加固手段——深度解析代码混淆技术

​ APP 加固方式 iOSAPP 加固是优化 APK 安全性的一种方法&#xff0c;常见的加固方式有混淆代码、加壳、数据加密、动态加载等。下面介绍一下 iOSAPP 加固的具体实现方式。 混淆代码&#xff1a; 使用 ProGuard 工具可以对代码进行混淆&#xff0c;使得反编译出来的代码很难…

数据结构复习指导之绪论(算法的概念以及效率的度量)

文章目录 绪论&#xff1a; 2.算法和算法评价 知识总览 2.1算法的基本概念 知识点回顾与重要考点 2.2算法效率的度量 知识总览 1.时间复杂度 2.空间复杂度 知识点回顾与重要考点 归纳总结 绪论&#xff1a; 2.算法和算法评价 知识总览 2.1算法的基本概念 算法( Al…

端口协议(爆破、未授权)

常见端口服务及攻击方向&#xff1a; 弱口令爆破 工具&#xff1a;https://github.com/vanhauser-thc/thc-hydra hydra是一个支持多协议的自动化的爆破工具。 支持的服务、协议&#xff1a; telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt http-{head|get} http-{get|post}-…

Java基础-知识点04(面试|学习)

Java基础-知识点04 Object类wait和notify需要在什么地方使用&#xff1f;说明 toString() 方法的作用和重写时的注意事项。toString() 方法在实际开发中的应用场景和作用。 continue、break 和 return 的区别1、continue&#xff1a;2、break&#xff1a;3、return&#xff1a;…

HarmonyOS NEXT星河版之实战知乎App评论功能

文章目录 一、目标完成页面二、实战2.1 定义数据2.2 mock数据2.3 封装顶部标题栏2.4 封装评论Item2.5 定义回复组件2.6 主页面 三、小结 一、目标完成页面 二、实战 2.1 定义数据 export interface ReplyItem {avatar: ResourceStr // 头像author: string // 作者id: number …

Python和Java哪个更适合后端开发?

Python和Java都是强大的后端开发语言&#xff0c;它们各自有鲜明的特点和适用场景。选择哪一个更适合后端开发&#xff0c;主要取决于具体的项目需求、团队技术栈、个人技能偏好以及长期发展考虑等因素。 下面是两者在后端开发中的优势和劣势&#xff1a; 「Python&#xff1…