Unity2D项目-平台、解谜、战斗! 0.2 序言:团队在线协作方案、基线控制
各位看官老爷们,这里是RuaiRuai工作室,一个做单机游戏的兴趣作坊。
本文跟大家聊一下笔者团队中所使用的在线协作的诸多工具,以及使用这些工具的目的和所记录的内容,希望这些内容在大家团队工作中有所帮助。
文档管理
笔者团队中主要记录了以下文档:
游戏设计文档
玩法及机制文档
剧情文档
关卡设计文档
创意点文档
程序设计文档
版本说明文档
模块设计文档
类说明文档
文件头注释及内部注释
项目管理文档
长期进度规划
短期任务规划及任务分解
bug列表
会议记录文档
这些文档中,有些文档是需要随着进度的定期更新的,如关卡设计文档、版本说明文档等,这些文档一般有专人负责维护,在笔者的小团队中,一般是谁负责这个模块谁负责写该模块的文档;有些文档是实时更新的,比如bug列表、短期任务规划,一般来说这些文档是随着工作的推进随时可能更新的,而且任何团队成员都有可能对这些文档进行随时修改;还有些文档是一经编写、核验便在整个项目中不会变动或极少变动的,比如长期进度规划文档、软件需求规格说明书(游戏项目中比较少见)等,这些文档在整个项目中起到参照、引导方向的作用,故需要谨慎编写、反复核查。
根据这个分类,笔者团队中采用不同的方法管理这些文档:
对于需要定期更新的,文档名以及文档头会根据当前项目的版本号自行扩展文档版本号,采用版本迭代的方式进行管理,比如
当前项目的版本为0.1.2,那么相关玩法设计的文档可能为0.1.2.1\0.1.2.2等。主策划负责维护这个文档版本系列,并将以往的所有文档保存在文档管理工具中。
对于实时更新,任何人都可能编写的,我们采用在线文档的方式进行管理,一般这样的文档只需要一个文件即可。文档内容实时保持当前工作进度的最新进展,已经完成的任务项或是已经失去时效性的信息便会放在文档末尾的历史记录中留存。
对于一经编写,极少变动或者不会变动的文档,在团队公开文档中只需要留存一份只读文件即可,改写权在项目组的项目经理或组长手中。
在文档方面,不管使用使用何种管理工具,我们只要找到一种合理的方案就可以,笔者团队中使用群文件管理变动较少的文档,使用git版本控制管理与版本有关的文档,使用群在线文档管理实时更新文件。
设计图管理
在团队搭建伊始,大家都没有协作经验,只是简单地搜集了一下信息就决定使用ProcessOn来管理和协作各种设计图。在大佬的指导下,我们了解到了draw.io开源工具,我们才将所有的设计图搬运到了draw.io下面。
(英文不好的小伙伴记得切换中文界面噢,吹爆draw.io
版本控制
当然首推git,但是在使用git进行版本控制中我们也遇到了相当多的问题,比如.gitignore配置不正确导致的vs项目同步失败问题,美术资源导致的带宽过小问题,场景数据和prefab数据的merge问题。在此我们只是对每个遇到的问题做一个解决思路上的概括,不做过多的细节描述,对于上述问题的细节解决方案已经存在很多博客可以参考。
.gitignore配置不正确导致的vs项目同步失败问题
首先,.gitignore文件中记录了git在本地仓库文件夹中中不予追踪和同步的子文件夹、文件格式等一系列文件。而在unity中(默认使用vs进行C#开发),我们只需要对项目结构中的部分文件进行同步和版本控制,比如Assets文件夹下的资源文件和脚本文件、package文件夹下的资源包插件包等。其他的诸如vs本地化配置文件\文件夹等则不需要进行同步,这部分文件我们需要在.gitignore文件夹中指名,否则如果这些文件通过远程仓库进入了其他机器,会造成路径丢失、配置冲突等本地化问题。
在这里建议在github中搜索.gitignore,在官方给出的unity.gitignore中做一些针对自己项目的改动(如果不确定你在做什么,直接使用官方的.gitignore就好!)

美术资源过大导致同步速度难以接受问题
用其他工具进行资源同步吧!我们没有做过多思考和调查,简单地使用一个群文件+版本号进行控制,当然这种随意的控制方式可能会有潜在的风险,希望有相关经验的朋友不吝赐教!
场景数据和prefab数据的merge问题
首先我们需要将unity的文件储存形式配置为可序列化而不是二进制文件,这样做就允许了git比对不同版本的场景\prefab数据文件的差异,从而进行自动merge操作,当无法自动merge时,便在序列化的文件中做出标记,指示我们进行手动merge。我们顺着这个思路,便可以将存在merge conflict的序列化文件以文本格式打开,像手动合并代码一样merge这些文件。
实时交流方案
我们是游戏团队所以当然开发了一套最先进的AR全息会议来实现实时交流啦
我在想批次.jpeg
笔者团队经历了时长越2个月的线上协作,这段时间给笔者的最大感受就是:需要像问小朋友要作业一样问你的组员要成果...
确实,线上协作的距离感无可避免地带来了管理上的困难,这就需要项目负责人花很多心思在凝聚这个团队上,在保证团员的紧迫感和摸鱼带来的心理压力之间找到一个可以忍受的平衡(我是哲学家吗2333)。当然,团队管理并不是今天的主要话题,那么回到主线,在这种情况下如何进行有效的在线实时交流呢?
笔者团队采用的方案是不定期在线会议+每周工作汇报+1h内找必回制度,即
1. 根据工作进度和团队成员的状态不定期(约1~3天)开一次短会,主要是工作进度分享、工作任务分解、问题讨论、团队氛围建设(瞎b聊天)等内容。
2. 每周进行一次较为正式的定期会议,每个人口头汇报工作内容、工作状态、问题反馈等内容,并每周安排一名组员进行激动人心的游戏安利环节,同时安排另一名组员进行会议记录。
3. 1h内找必回制度,即在工作群中,若有相关工作的问题交流,对应模块的负责人必须在1h内予以接洽,否则进行惩罚(0.0我是被罚最多的)(是因为我负责模块最多啦)a
在这套方案的使用过程中,笔者认为所谓张弛有度还是可以保证的,即让队员有一个较为轻松愉快的讨论氛围,又不至于影响工作效率,或者说流于形式。当然,在具体实施管理交流方案中最重要的还是项目经理和项目成员的各方面能力和性格,所谓人定胜天。
小结
笔者本想通过本文介绍一些工具的使用方法和技术上的问题的阐述,没想到说着说着有感而发,逻辑就顺道了团队管理的经验上去,不过这也是我最想和大家分享得内容吧。本文我们介绍了笔者团队所应用的文档管理办法、设计图管理工具、git的使用经验和在线交流和团队管理经验,希望这些内容能够对已经阅读到这里的你有所帮助,特别是关于团队管理方面的心得。
感谢您阅读到这里!那么今天的分享就是这些,欢迎访问:
整个项目原型github地址:
www.gitHub.com/yunshiyue/elementgame
最后,这里是RuaiRuai工作室,一个做单机游戏的兴趣作坊,希望你对我们的项目能提出各种意见和想法,也欢迎各种合作!
下期再见!

Unity2D项目-平台、解谜、战斗! 0.2 序言:团队在线协作方案、基线控制的更多相关文章
- Unity2D项目-平台、解谜、战斗! 0.1 序言:团队、项目提出、初步设计、剧情大纲
各位看官老爷们,这里是RuaiRuai工作室(以下简称RR社),一个做单机游戏的兴趣作坊. 本文跟大家聊一下社团内第一个游戏项目.算是从萌新项目组长的角度,从第一个里程碑的结点处,往前看总结一下项目之 ...
- pythonchallenge 解谜 Level 0
解谜地址: http://www.pythonchallenge.com/pc/def/0.html 这题没什么难度,意思就是得到2的38次方的值,然后,替换 http://www.pythoncha ...
- Unity2D项目-平台、解谜、战斗! 1.2战斗组件Defence、Attack
各位看官老爷们,这里是RuaiRuai工作室,一个做单机游戏的兴趣作坊. 接上文,我们定义了两个分别具有"攻击"和"被攻击"语义的组件CanFight和CanB ...
- Unity2D项目-平台、解谜、战斗! 1.1战斗底层组件CanFight-CanBeFighted
各位看官老爷们,这里是RuaiRuai工作室,一个做单机游戏的兴趣作坊. 本文对该2D项目中战斗底层组件的开发及设计思路做一个总结,希望各路同行多多交流,各路大佬多多指点. 实例特征分析 首先对于各个 ...
- Unity2D项目-平台、解谜、战斗! 1.5 Player框架、技能管理组件
各位看官老爷们,这里是RuaiRuai工作室,一个做单机游戏的兴趣作坊. 前文提到,凡是有"攻击"语义的对象,在游戏中,我们给予其一个"CanFight"组件予 ...
- Unity2D项目-平台、解谜、战斗! 1.3移动组件
各位看官老爷们,这里是RuaiRuai工作室,一个做单机游戏的兴趣作坊. 在这一篇中,我们将会自顶向下地讨论本2D游戏中主角不可或缺的一个功能--移动控制. 首先我们简单分析一下2D游戏中主角与移动相 ...
- [转帖](整理)GNU Hurd项目详解
(整理)GNU Hurd项目详解 http://www.ha97.com/3188.html 发表于: 开源世界 | 作者: 博客教主 标签: GNU,Hurd,详解,项目 Hurd原本是要成为GNU ...
- eclipse里面构建maven项目详解(转载)
本文来源于:http://my.oschina.net/u/1540325/blog/548530 eclipse里面构建maven项目详解 1 环境安装及分配 Maven是基于项目对象模 ...
- Redis 配置文件 redis.conf 项目详解
Redis.conf 配置文件详解 # [Redis](http://yijiebuyi.com/category/redis.html) 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, ...
随机推荐
- Egg.js 是什么?
Egg.js 是什么? 阿里巴巴出 Egg.js 为企业级框架和应用而生,我们希望由 Egg.js 孕育出更多上层框架,帮助开发团队和开发人员降低开发和维护成本. 注:Egg.js 缩写为 Egg 设 ...
- [转]在ROS下使用zeroconf配置多机通信
原文地址:http://www.corvin.cn/635.html,转载主要方便随时查阅,如有版权要求,请及时联系. 0x00 为何需要配置ROS多机通信 众所周知ROS是分布式系统,因此可以将机器 ...
- FTP服务器搭建以及上传下载的学习
首先需要搭建FTP服务步骤如下: 1.在win7上先开启ftp服务:这里点击确定后,可能会要等一会儿,完成后有时系统会提示重启 2.打开 计算机-->管理--> 在这里我们可以看见 ...
- CentOS7安装Kibana7.9.2
1:下载 wget https://artifacts.elastic.co/downloads/kibana/kibana-7.9.2-linux-x86_64.tar.gz 点击进入官网 安装手册 ...
- 基于西门子S7-1500的大型焊接机全套程序,使用博图V14打开(带全部注释)
程序说明:本套程序是在从事自动化行业时候的做的项目的程序,经过在设备上运行测试,其中包含20多个轴的伺服控制以及模拟量,数字量IO的控制,包括扫描枪的读取,属于大型程序,总步数有好几万步. 本程序注释 ...
- 后端程序员之路 23、一个c++的api framework
在"21.一个cgi的c++封装"中,我们封装了cgi,在这之上,我们可以再来封装一个webapi的framework.当然,前文的Casablanca是个不错的选择,但是它比较庞 ...
- Layui 源码浅读(模块加载原理)
经典开场 // Layui ;! function (win) { var Lay = function () { this.v = '2.5.5'; }; win.layui = new Lay() ...
- .Net Core 3.1浏览器后端服务(四) 你眼中的依赖注入与我相同吗?
一.前言 DI-Dependency Injection 依赖注入 IoC-Inversion of Control 控制反转 近几年这依赖注入. 控制反转已成为软件开发中不可或缺的一部分,那么该怎么 ...
- 剑指 Offer 22. 链表中倒数第k个节点
剑指 Offer 22. 链表中倒数第k个节点 Offer 22 常规解法 常规解法其实很容易可以想到,只需要先求出链表的长度,然后再次遍历取指定长度的链接即可. package com.walega ...
- PBR:基于物理的渲染(Physically Based Rendering)+理论相关
一: 关于能量守恒 出射光线的能量永远不能超过入射光线的能量(发光面除外).如图示我们可以看到,随着粗糙度的上升镜面反射区域的会增加,但是镜面反射的亮度却会下降.如果不管反射轮廓的大小而让每个像素的镜 ...