今天清理硬盘,进去一个 Dota 的文件夹,一看就是以前解包留下来的。漫不经心的看到一个 培训
文件,内容如下:
不谈很具体的技术。在引擎的设计中,需要不停的模拟平常的开发活动,挖掘问题并思考解决方案。引擎是我们十几年实际经验的总结,本次培训内容就来和大家分享下。
说到经验,先说一个故事:经验不可传承。XXX
按照我现在的理解,其实意思应该是很多事情需要自己实际去体验下,才能与别人的经验产生共鸣;别人的经验需要在实际体验中得到实践;如果大家只停留于“听”的层次,是没有什么用的。
1、做引擎,第一件我干的事情:规范。代码整洁之道
你如何编写出别人能够看懂和维护的代码?(添加注释?)
《代码整洁之道》提出一种观念:代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础
细节之中自有天地,整洁成就卓越代码
Bob大叔提倡”写代码犹如写文章“,又说道“大师级程序员把系统当故事来讲,而不是当做程序来写”
2、什么才是好的引擎。
(1) 选什么引擎是程序员的事情吗
(2)提问了解引擎的选择标准
(3) 好的引擎,不至于技术,而且更多的集成了先进的工作流
3、旧的工作流是什么样的呢?我们当前的工作流,有什么问题?
(1)情景模拟
(2)沟通、迭代
(3)专业事交给专业的人干
4、我们公司对U3D的使用,存在哪些问题?
5、新的工作流举例:调整界面效果、拼界面
拿来主义 or 再造轮子?
----
结论:主抄Unity3D,做微创新;结合其他引擎
实际工作中,如何抉择?
读代码比写代码难!
市面引擎特点说明
----
cocos2dx - 接地气的引擎,曾经是2D游戏跨平台的唯一选择。王哲这群人技术水平太次,工具太糟糕,代码太糟糕。
U3D - 早期定位为纯3D,给了cocos2dx空子。目前2D功能也非常完善,工具链非常成熟,并集成了工作流
虚幻 - 高端大气上档次,大公司、大制作的专利
之前有段的一些引擎,比如OGRE等,做游戏工具的团队可以组成一个连了,开发效率太低
渲染核心的选择
----
从零开始,每个程序员都安奈不住的冲动。
重构的方法,其实大部分程序最后把重构的过程演变为从头来的过程。
大部分情况,请忍住。其实你写的不见得能比原来的好
重构:通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性
对于老项目来说,大家在初步接触的过程中,大多总是抱着抵触的情绪,甚至有些是蔑视。总喜欢对以前的代码挑出一大堆的问题,接着就开始抱怨代码、抱怨以前的开发人员,经过一段时间郁闷的抱怨阶段后,处于职业的责任心,就很想去改变这一切,希望把自己认为好的方式给带进来,于是接下来的工作就是重构代码了。 这也许大多数开发人员都经历过,这种经历是辛酸的
盲目的重构! 盲目主要体现在: 1、在还没有对系统整体架构有个清晰认识的时候,就想用自认为新的技术或架构来替换。 2、根本不分析现有系统架构或程序存在的弊端,只是一味地谈设计模式,以设计模式中固有的一套来重构(在重构中,它只作为一个参考,而不是一个依据。) 3、重构比较随性,每个版本的开发都跳出架构之外随意带入新的设计思想 这种盲目重构后给系统会带来更多问题: 你会发现当你重构完后你的系统运行效率变低了, 系统中同时存在多种思想,新加入人员更难接手, 由于你没有完全了解系统,反而在你的重构当中带来了很多重复代码, 最悲剧的是你重构后的代码也被其他人当成垃圾,而进行重构。
格子RPG重构与重写的例子。。。
敢于挑战未知领域!
----
to 策划、美术。
从引擎角度来讲,策划、美术应该具备的能力:
----
1、拼界面
2、调界面表现
3、配置excel表
4、引擎的使用
程序应该具备的能力:
----
1、写逻辑代码
2、分离业务代码、游戏数据
3、为策划和美术写工具
4、把英文学好
放下你高傲的身段
----
解决问题才是王道!例子:骨骼动画的sample化
游戏项目中,牢记几个问题:
1、这个BOSS不好打,我想随时更改下其数值,并实时体验,快速找到一个合理的数值
2、我看到的一定是和最终的产品是一致的
3、我是项目中一员,我能调整下界面按钮的位置和大小,感受下哪种操作更舒服吗?
4、这个界面打开效果不怎么好,我想尝试换换效果
5、策划想自己换一批怪物
XXXXX
2. 交流分享会
---------------
1. 游戏引擎应该帮我们解决哪些问题?
(1) 高效渲染
(2) 易用的API
(3) 工具链
(4) 工作流(团队协作)
使用这个引擎,可以开发出我想要的XXXXX游戏游戏。
一个游戏引擎的所有主要部分,包括应用程序框架、状态机、图像引擎、物理引擎、声音引擎、玩家输入和游戏逻辑。
http://blog.csdn.net/uxyheaven/article/details/7836536
游戏引擎的数学美?解决问题才是王道。
面向过程、面向对象、面向组件等……
百度百科
=======
甚么是游戏引擎 游戏引擎 是指一些已编写好的可编辑游戏系统或者一些互交式实时图像应用程序的核心组件。简单地说,引擎就是“用于控制所有游戏功能的主程序,从计算碰撞、物理系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等等。”
什么才是好的游戏引擎
完整的游戏功能。随着游戏要求的提高,现在的游戏引擎不再是一个简单的3D图形引擎,而是涵盖3D图形、音效处理、AI运算、物理碰撞等游戏中的各个组件,组件设计也应该是模块化的
2.强大的编辑器和第三方插件
强大的编辑器和第三方插件。优秀的游戏引擎还要具备强大的编辑器,包括场景编辑、模型编辑、动画编辑等,编辑器的功能越强大,美工人员可发挥的余地就越大,做出的效果也越多。而插件的存在,使得第三方软件如3DS Max、Maya可以与引擎对接,无缝实现模型的导入导出
3.简洁有效的SDK接口。优秀的引擎会把复杂的图像算法封装在模块内部,对外提供的则是简洁有效的SDK接口,有助于游戏开发人员迅速上手,这一点就如各种编程语言一样,越高级的语言越容易使用
4.其他辅助支持。优秀的游戏引擎还提供网络、数据库、脚本等功能,这一点对于面向网游的引擎来说更为重要,网游还要考虑服务器端的状况,要在保证优异画质的同时降低服务器端的极高压力
拿来主义
----------------
程序员典型特点:喜欢造轮子。如何考量:重新造轮子 or 拿来主义
不造一个轮子,你就永远不会知道轮子是怎样造出来的
小沈阳说:“人生最痛苦的,是人死了,钱没花完。”
赵本山说:“人生最痛苦的,是钱花完了,人还没死。”
这个问题其实主要看是在具体的商业项目还是完全属于你自己的开源或者学习性质的项目,如果是商业项目,有具体的要求和时限,那么就是利益最大化,替老板考虑,在这里技术美学就成为扯淡了。
防错性编程
错误总是难免的,哪怕是明星程序员也不例外。失控是世界的常态,出错毫不奇怪。防错性编程正是理解了这个事实。如果东西不会不出错,我们就不会检查文件打开成功与否,不会检查客户 ID 是否合法数字,不用测试代码是否允许正确。
2017.09.06
网友评论