Unity联盟 发表于 2020-11-23 19:17

unity开发工作流程?

unity开发工作流程?

杜小薇 发表于 2020-11-23 19:18

我司用下来的一些好物分享,抛砖引玉 (其实针对不同项目类型、不同团队体量会差很多,仅供参考哈)

- 版本管理:目前是Git,主要是branch/tag/submodule功能比较好使。注意工程需要打开visible meta和force text serialization。正在考虑美术资源部分是否改回SVN...
- 编辑器:大家顺手即可,我个人是VS党。写lua的同事偏向于Sublime
- 服务器:目前是PHP+skynet都有,通信是protobuf。短链接正在从WWW切换到WebRequest,长链接是KCP/TCP
- 常用插件(这里推荐大家能买就买,一方面支持下开发者,另一方面跟着稳定升级)
TextMeshPro 字体锐利而且各种描边、阴影效果不费
DOTween 性能压力小,链式写法很爽快
I2 多语言解决方案 (在插件基础上我们做了一套直接读取外部csv更新的修改,方便翻译)
TexturePacker 比UGUI那套更容易自定义,譬如我们支持了 Polygon mode sprites 和部分重叠的资源检查( @游侠最近刚搞定的,哈哈)UniWebView 内嵌网页
LogViewer 在真机上直接显示Log
uFrame 部分项目使用了作为MVVM框架
Dynamic Shadow Projector影子的一套解决方案,见 利用Projector实现动态阴影
不过需要注意的是,很多插件对性能不是很在意……所以需要进一步优化精简

此外我们还有一套公共的仓库,实现了常用控件封装、命令行出包(之前在 知乎专栏 分享过)、一些运行时性能检查工具、资源检查工具(规则大部分在知乎专栏 里提过)等,基本上完整的做1-2个项目下来都会有所积累

顺便 Unity的资源商店每个月会有一些付费版本的资源打折及免费 大家可以关注下 Asset Store
(下图是我司的账户一点截图,咳咳-。- 其实换算成自己开发的人力,买插件性价比非常高

顺便 项目可以定期扔uwa测试一下,提前暴露问题

最后定期打个小广告(逃
求Unity/PHP大大简历 欢迎私信骚扰

暴躁小强 发表于 2020-11-23 19:18

应题主要求,随便聊一聊。
版本管理工具
大众的选择无非是SVN或Git,选这二者不会错,而且SVN理解起来很容易,对除技术以外的岗位足够友好了;Git更高级但是使用门槛也高,特别是对于非技术岗位来说入门不容易。
甚至还见过用微软Team Fundation、Perforce或Hg的团队。其实在我看来,这些另类的版本工具很小众但是非常好用,甚至可以说更适合游戏开发。
但是小众的工具推广起来并不现实。主流的工具不一定是最好的,但是综合看起来肯定是最稳妥的。
IDE
想要团队统一工具、高效协作Unity开发,Windows肯定是主角。既然用了Windows,那么大部分人肯定会选择VS2017这种官配的IDE。
Rider等其它IDE也很好用,但是统一工具更有助于协作。
打iOS包用的Mac电脑就随意了,因为一般只用来打包。
服务器端开发工具
服务器开发使用Linux系统应该是占了绝大多数,这里就涉及到两个重大选择:
服务器代码要不要兼容Windows。如果只用Linux,平时开发使用虚拟机、单独的主机还是云服务器。
不同的团队项目大小不同、技术积累不同,因此有不同的策略。
积累深厚的公司有实力让游戏逻辑服务器跨平台,这样的好处是任何人都可以方便的开启一台测试服务器。
而现在虚拟机技术成熟了,更多团队放弃跨平台这种麻烦的事,所有服务器都只能用特定版本的Linux运行。这时候可能需要多配几台Linux专用的机器,或者安装虚拟机。
某些会玩的公司会把专用的服务器用虚拟化技术切分成很多台,然后给每个开发人员分一台,这样也比较方便测试。


关于IDE、工具等,关键是:只要好用、协作顺畅,具体用哪种工具不重要。
每种工具都有其优缺点,一开始选择哪种工具其实区别不是很大,关键是后期的协作方式优化,尽可能把协作时导致卡壳的地方平滑处理掉,才是关键。
比如说,很多比较成功的项目后期都有很多版本同时开发,这种多版本管理的问题最让人头疼。千万不要以为这种问题换一个工具就能解决。要解决这类问题,一定要有清晰的计划、逐步完善的工作流程以及团队成员的磨合,否则单纯换工具只能是火上浇油。


关于插件
现在Unity开发相关的插件非常多。但是其实在真正的项目中,插件可不能随便用。
一般来说,采用某个插件都要经过团队讨论、达成共识。而不是为了完成某个功能就随便装一个插件,那样做项目预研期可能无所谓,到后期的结果可能是灾难性的。
关于插件的选择,有几个简单的原则,比如:
1、只用于局部功能的容易接受,影响项目整体的一般不用。比如某个节日活动界面需要浏览器窗口,那么不妨采用成熟的浏览器插件;而如果是某种MVC、ECS框架,一般是不可能采用的,除非大家达成共识——所有人都一起用。
2、成熟的、已验证过的小插件可以用。最典型的就是DOTween,因为大部分游戏UI都需要动效美化,用DOTween再合适不过。但是依然有很多项目选择自己写一套自己的Tween,这东西不难写,而且自己写的东西代码少、毛病少、坑也少。
3、不影响最终项目内容,仅用于制作流程的工具相对宽松,比如美术部门喜欢上某种导出模型的插件、导出序列帧的插件、Unity编辑器内的小工具。这些插件几乎不影响最终项目发布的内容,而只是微调了工作流,影响相对比较小。
总之,关于插件的原则是:谨慎使用,要考虑到可靠性以及后果。很多小的插件功能不如自己重写,很多轮子是值得自己造一遍的。

月芽 发表于 2020-11-23 19:18

这个主要还是看开发什么类型的游戏.
一般来说C#代码肯定是需要编辑的.那么是选择VS还是MonoDevelop都是可以的,个人比较喜欢VS,调试以及编辑都感觉比MonoDevelop要强一些.如果需要程序是可以动态更新的,而且你有是需要做移动端游戏的,那么Lua基本上也是需要的.是选择用ulua还是slua其实都没问题.我扒过一些做的比较好的MMO,基本上都是这两者选择其一.最有意思的是完美的诛仙,居然都没用.懂行的有谁能跟我解释一下诛仙是用了其他的动态更新机制还是根本也就是不能动态更新代码.Lua的开发环境比较头疼,没有什么必杀的IDE,基本上大家各自有喜欢的,我知道的有Sublime(不能调试,纯代码编辑);LuaStudio(国产付费,可以直接Attach到Unity上进行调试,不过编辑代码的时候手感差些,代码提示非常一般);LDT(基于Eclipse,如果你愿你给你的Lua代码都加上符合规格的注释,那么代码提示非常不错,不过要注意的是如果要发布的时候建议处理一下注释代码,全部去掉,否则文件会大不少)

我开发过的Unity项目基本上都是3D项目.所以只说3D的插件:
T4M用来把地形转换成模型,用起来还是比较顺手的,美术也是比较容易上手的.就是T4M不再更新了,不支持Unity5系列.不过稍微修改一下源码就可以了.
DOTween大家基本也都有提到,无论是UI还是游戏中的其他物体都是可以用这个库,而且性能也不错.
uSequencer用来制作过场动画.
NGUI或者系统自带的uGUI都可以用来做界面,NGUI支持的更全面一些,但是uGUI对系统的压力更小,看项目组选型吧,都没问题的.
PoolManager或者FastPool用来做对象缓存池,Unity坑爹的内存管理基本上够大家喝一壶的.每次去Unity大会的时候都能听到台上Untiy的人义愤填膺的说"既然你们在服务端都懂得用池,为什么客户端不用呢".尼玛,自己到现在还是在用那么原始的垃圾回收算法,还好意思说别人.
EasyTouch也是个好东西,做移动游戏的手势,摇杆什么的都可以用到它.最新的EasyTouch的摇杆是用uGUI做的,如果项目是用的NGUI而且又有洁癖,可以修改一下源码改成NGUI的.
ConsoleE这个插件用来替代系统自带的Console是不错的.我用的是免费版.在看调试信息的时候可以用它做关键字过滤.调试起来方便不少.
如果需要读写Excel文件,那么POI库基本上也是需要的.策划同学基本上都喜欢用Excel这东西,我们基于Unity做的游戏编辑器一般都会将数据导出成Excel文件.

如果公司本身没什么积累,那么服务端的选择还是比较麻烦的.我开发过的网游基本上是用Java做服务器端的,这东西配合上好的IDE(Eclipse,IDEA)写起代码来简直就是飞快.而且有非常完善的一套工具链,你想做代码热替换?你想做生产环境的性能调试?内存爆了你想看看什么地方出问题了?游戏死锁了,你想找到死锁的原因?OK,Java完善的工具链里你都能找到能用的.
如果不想从头开发一个服务端,那么现在也有一些开源的选择,比如kbengine用的是c++做底层,然后python做逻辑.skynet是用c做底层,lua做逻辑.scut用的是C#开发.这些我都没用过,就不误导大家了.

如果你做的是手游,那么你需要一台Mac机器,也可以用黑苹果,不推荐用虚拟机,太慢.如果对Mac的系统不熟,你就用它做一台发布的机器,打包用它就可以了.Jenkins挺好用,推荐可以用用.

至于用SVN或者GIT啥的全看个人的喜好了,没什么太大的差别.当然GIT逼格高一些.开发的时候可以把Unity的Editor Settings里的Asset Serialization的Force Text选项打开,这样当提交有冲突的时候,有时候还是能Merge的,如果用的二进制,就完全没希望了.

发布前的Profiler肯定是要做的,Unity的工具其实一直到现在都很一般.这方面可以使用UWA或者腾讯的Cube,都是不错的Profiler工具.如果你有一台root过的Android那是更好的.

最后的最后,如果是做国内的手游,那么发布各种平台的包是个非常蛋疼的事情.这里建议要不然就发布一些主要的平台,然后自己做接入.要不然就找一个靠谱点的接入工具或者平台啥的.否则光是平台接入这块都会让你疲于奔命的.

杜小薇 发表于 2020-11-23 19:19

已参与两款Unity开发的手游, 其中一款已上线.
我司一般的方案是这样:

IDE: Visual Studio 2013, 插件多, 重构起来你就知道VS好用了, 完爆其他IDE;
UI: NGUI / UGUI, 目前我在的项目组是用NGUI;
Unity插件: iTween做滚动效果, 大多数的插件, 如UV动画/UI常用组件, 这些需要自己开发;
特效: 能用UV的就别用粒子, 粒子制作常用FX Maker;
功能系统的开发模式: MVC / MV (C写到M里);
客户端本地持久化: 加密后存xml;
版本管理: 万年svn, 轻拍;

Server端两大类: 纯Erlang / C++ with Lua

月芽 发表于 2020-11-23 19:19

昨天做的某项目 负责的找了认识的程序帮着看性能有没有问题。
然后写了一堆意见,发我让我看看有没有价值
我回“好正确的废话”

说的好对,就是要压缩模型,要少用插件,要注意数据量,要尽量优化。。。
然后我猜他没做过东西。

所谓工作流这种东西,往往不是先验的,有很多经验的东西在里面,不同领域区别巨大,我相信看了所有答案,你要是不知道的还是不知道咋办,知道的看了别人的方案,大多就是一笑,哦,自己该怎么弄还怎么弄

暴躁小强 发表于 2020-11-23 19:20

今天活干的快,回答一记。
1、首先看了上面的答案发现大家都是回答了题主具体的问题,比如用什么IDE、什么版本管理工具、什么插件。除了信梓外,没人回答这个问题真正的title,也就是【unity开发工作流程】。
2、题主问的应该是游戏开发,从游戏开发的角度讲有这样一个基本的流程:
   1)立项,有时候是老板拍脑袋决定要做一个什么游戏或者山寨某个游戏,也有确实是策划规划好了一个游戏,然后开始做。
   2)需求设计,可以是策划自己设计的功能,也可能是完全山寨别人的,当然目前很多是二者的混合,私以为就是所谓微创新。
3)出策划案,讨论。经过策划、美术、程序的PK后,老板来定。这个期间老板很可能变成策划,而策划变成秘书负责把老板的想法写成策划案。
4)几轮PK过后,开始实际工作。此时完美的状态是策划案OK,然后美术先行,程序可能还在别的泥潭中挣扎。等美术资源出的差不多了,程序开始介入,进行功能编码。但是很多情况是策划案还在改,美术资源还没有,但是程序已经开始编码了。这个时候就考验功力了,怎么把程序写的将来能少改是高科技。
5)如果需求不怎么变了,策划开始划水上班打dota或者开始挖下一个坑。美术一般也闲不了。程序开始在坑里往外爬。
6)功能开发完成,开始alpha测试,经过几轮alpha过后正规点的开始beta测试,不正规的就直接上市了。

3、以我目前的经验看,基本上都是边写边改。其实游戏开发也是软件开发的一种,因此也遵循软件开发的基本流程,很多会遇到的问题都是一样的。

月芽 发表于 2020-11-23 19:20

IDE就用monoDevelop就可以了。版本管理svn等常见的都没有什么问题。插件完全看项目什么类型,需要什么,立项的时候选。

杜小薇 发表于 2020-11-23 19:21

实习三四个月,让我来答一把()

版本控制用git,编译器用monodevelop,常用插件ngui和itween(做界面和简单动画),其他插件看项目。比如你非要用flash做界面就得用scareform插件。

以上仅限三维开发,二维的就不知道了

暴躁小强 发表于 2020-11-23 19:22

1 开发2d插件: TK2D、DoTWeen,有这2个,加上UGUI,基本够了。
2 server端: SmartFox 2X(商业的),用JAVA写后台,入门容易。
页: [1] 2
查看完整版本: unity开发工作流程?