Unity自动构建(1)|自动构建机器的选择经验和思考

假如你所在一个稍有规模的开发团队,那你一定会听过——自动构建

笼统来说,所谓自动构建,就是自动编译出客户端包、程序包;但宏观来说,它更代表着一个概念——任务自动化。

自动构建,是一个高效率游戏开发团队的必经之路。假如你所在的团队没有经历过自动构建流程,那么相信你的团队肯定会在版本的编译和发布上,浪费相当多的时间,因为那是很多一些重复累赘的事情。

从成本的角度去考虑,自动构建,是相当重要的。曾经我所在的一个开发团队,并没有安排自动构建的流程,导致说,专门招了一个人,人工不停重复、机械化的做着出包、编译的流程,非常的愚蠢。

其实,这是一个相当简单的大号道理,而又很容易被研发团队所忽视:

完善自动构建的流程,将节省成吨的人力成本和时间成本。

这个道理,我倒是希望一些非技术人员,比如制作人、老板能看见并重视,把自动化作为软件研发的立身之本,不但让日常工作流能更加的流畅,还能节省人民币。

可以理解,大部分的游戏研发团队,尤其是初创中小型团队,都会将主要精力集中在游戏逻辑功能上面去,忽视自动化工具的开发。

“自动构建”这个话题,可大,也可小。今天,总结下,我在Unity游戏开发的工作中,“自动构建”的“编译机器”的选择经验和思考过程。

就我自己而言,我经历过3次不同的实践,来尝试过把自动编译的机器架构给搭建起来,前2次,都不那么靠谱。那就说说不靠谱的故事是怎么产生的吧,教训总比成功鸡汤来得有劲。

尝试1:Mac Mini + 虚拟机Windows

Unity游戏引擎目前来说,常见的开发操作系统平台有两个,一个是Windows,另一个是macOS。

其中,Windows版的Unity,是无法编译苹果版本的iOS、macOS游戏程序的(但能编出Xcode工程)。

在创业公司时,我想能够省钱的地方,那就省省

所以我就选择了一台Mac Mini电脑,5000左右的价格,并且在上面通过Parallel Desktop虚拟化软件进行虚拟了一个Windows系统。

一台Mac Mini电脑的性能实在是太有限了,即使Mac Mini里配备的是一个性能不错的固态硬盘(读写1GB+),自动构建执行几个任务,性能还是太糟糕了。

为什么要虚拟出一个Windows操作系统呢?

因为当时想做成一个虚拟机,可以把一个操作系统,整个做成一个镜像,方便进行备份。

可是,性能实在是太慢了。

自动构建机器的一个最核心的需求——那就是性能。在后期,美术资源量上去了,Asset Bundle的一次打包占据了半个小时以上的时间,严重的影响了日常的工作流程。

所以,性能最大化,是选择构建机器的优先考虑维度。

尝试2:编译机阵列

由于回到了大公司,大公司内部有完善的、使用OpenStack云计算平台搭建起来的企业虚拟机平台,可以调用的机器资源,就多起来了。机器多,所以直接把它们做一个阵列规划吧。

实体机有2台,3个系统:

一台实体电脑Windows,上面通过虚拟机软件Hyper-V模拟出Linux(主要用于一些命令行批处理的任务)。

一台苹果电脑Mac mini,用于iOS的编译构建。

企业云虚拟机平台上,申请了3台,他们的系统分别是Windows,macOS,Linux。

就这样,一共有6个操作系统可供使用,组成一个阵列。当初的想法是,每个操作系统分别安排2台机子,任何任务都能进行主从任意执行,实现高可用,即同样任务,可以有两台机子顺利执行成功,当一台出问题了,Jenkins自动切换到新的机子进行任务,确保可用性。

理想是好的,可是跟现实有一点差距。

主要就是,需求,经常在变!

像前面所说的,主从两台机器都可以同时编译的困难就在这,开发环境的变化无时无刻都在进行。今天改了这个环境,然后两边又不同步了,在两边配置同步上就会花费不少的功夫。

实际运行时,很大一部分的自动构建任务,都放到了这3台企业云虚拟机平台上,原因很简单,因为这批企业云虚拟机的性能,比实体机还要好,这主要体现在硬盘性能上,功劳在于云平台的一些特性,不细说。

这个部署,看起来比较理想化。但是,实际操作起来,由于机器多,就涉及到管理问题了。

所以,简单最大化,是选择构建机器的其次考虑维度。

尝试3:黑苹果

这第二次尝试,是基于一个企业内部云的情况下才能实现的,这可能并不是很多小公司能实现的事情。

其实,前两种方案的尝试,都基于我的一个愚蠢的决定——我想帮公司省钱,用最小的钱买最小的机器,实现最大的效率。

完全没有必要。省这点钱,老板会意识到你的价值吗?不会懂的。(看“成本”的概念太多了,老喜欢抠这种。)

这次,决定从淘宝上面,定做一个黑苹果主机。

那是选用什么样的黑苹果主机比较好呢?以我最近选购的一款黑苹果为例,简要说一下它的配置:

价格一万出头。这个配置,其实最关键的两个点,一个是CPU,另一个就是他的硬盘了,三星960 pro这个固态硬盘高达2GB/s读写。

根据我经验,进行Unity引擎游戏的编译,最关键的是硬盘性能、CPU单核性能。

当然了,为什么要选用这一个CPU,而不是说至强Xeon系列的服务器CPU呢?因为游戏引擎在编译的时候它是单核在跑的单核性能最好的。服务器CPU的强项并不在于说单核性能,而是在于它的多核性能。

所以,选用单核性能更好的,够了。目前最牛逼单核性能的,正是i7 7700K。

(图:CPU单核性能天梯图,注意哦,最好的其实并不是最贵的。)

这一台新配的黑苹果机子。只是使用了一个独显,因为自动构建根本用不上显卡这回事。

就这么一台机子,就足够了——性能最大化、简单最大化

因为Unity它是可以在苹果系统上面编译出Windows客户端的,所以使用mac系统作为编译机,是全能的,Android\Windows\iOS啥都行,很强的适应性。

如果你说你有需求,需要用到Linux进行的任务怎么办?比如说,我的项目就会有这个需求。

因为服务器是运行在Linux下的,编译服务器,那就需要一台Linux环境。

我的做法是——Docker。因为苹果系统上也可以运行Docker,而且它相对虚拟机也更加的轻量,性能也更好,所以直接使用了容器来进行服务器(Linux C++)的编译。

总结,花个一万来块,买个好点的机器吧,会让你省很多事。

后续更多

在组建的自动化构建方案是,我一般会“自动化构建”整理成三层:

控制台界面就是Jenkins,自动化脚本是处理一些杂项杂事(最关键的一层),编译脚本是处理具体客户端、服务器端等程序包的出包。

今天只总结了一些自动化构建的机器选择,下一篇,我会分享更多一些执行细节。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容