#游戏编程模式# --- 框架、性能、游戏

---恢复内容开始---

一、软件框架

1.1 好的软件框架

好的设计意味着当我们做出一个改动时,就好像整个程序都在期待它一样。我们可以调用少量可选的函数来完美地解决一个问题,而不会为软件带来其他的多余的副作用。

“只管写我们自己的代码,框架会帮我们收拾一切!”。

关键部分:框架意味着变化。衡量一个设计好坏的方法就是看它应对变化的灵活性。

1.2 如何做出改变

好的改变,是在下一个人在添加代码的时候不会察觉我们的代码的变动。

1.3 我们如何从解耦中受益

我们可以用一堆方式来定义“解耦”,不过只要我们明白,如果两块代码耦合,意味着我们必须同时了解这两块代码。如果我们使它们解耦,那么我们只需要了解其一。

软件框架的一个关键目标:在我们前进前,最小化我们的脑海中的知识存储量。

当然,对于解耦的另一个定义就是当改变了一块代码的时候,不必更改另外一块代码。耦合得越低,更改所波及的范围就会越小。

1.1.4 代价是什么

一个框架良好的程序工作起来会让人感觉愉悦,每个人都会变得更加高效。良好的框架会在生产力上产生巨大的差异。

但是!良好的框架需要很大的努力及一系列准则,每当我们做出一个改变或者实现一个功能时,我们必须很优雅的将它们融入到程序中的其余部分。我们必须非常谨慎地组织代码并保证其在开发周期中经过数以千计的小变化之后任然具有良好的组织性。我们必须考虑程序的哪一个部分应该要解耦然后在这些地方引入抽象。同样地,我们要确定在哪里做一些扩展以便将来很容易应对变化。

1.5 性能与速度

1.6 坏代码中的好代码

1.7 寻求平衡

开发中我们需要考虑的几个因素:

1.我们想要获取一个良好的架构,这样在项目的生命周期中便会更容易理解代码。

2.我们希望获得快速的运行时性能。

3.我们希望快速完成今天的功能。

1.8  简单性

我们应该致力于保持数据结构和算法的正确性(在这个顺序下),然后继续往下做。如果能保持简单性,代码量就会少很多。这意味着更改代码时,我们的脑袋里只需装在更少的代码。但是请注意,并不是简单的代码会花费较少的时间来编写。我们可能会觉得最终的代码量更少了,但是一个好的解决方案并不是更少的实际代码量,而是对代码的升华。

总结:

1.抽象和解耦能够使我们的程序开发变得更快和耕简单。但不要浪费时间来做这件事,除非我们确信存在问题的代码需要这种灵活性。

2.在我们的开发周期中要对性能进行思考和设计,但是要推迟那些降低灵活性、底层的、详尽的优化,能晚则晚。

3.尽快地探索我们的游戏的设计空间,但是不要走得太快留下一个烂摊子给自己。毕竟我们将不得不面对它。

4.如果我们将要删除代码,那么不要浪费时间将它整理得很整洁。

5.最重要的一点,若要做一些有趣的玩意儿,那就乐在其中地做吧。

---恢复内容结束---

时间: 2024-12-23 01:02:33

#游戏编程模式# --- 框架、性能、游戏的相关文章

Game Programming Patterns(游戏编程模式)

Game Programming Patterns(游戏编程模式) 大部分游戏开发者在他们游戏项目上总是一个巨大的挑战,总是东拼西凑,修修补补.很多游戏项目常常以失败告终,或者是被淹没在复杂而繁琐的代码中.如何解决这些问题? 各位看官,不管你是对游戏开发感兴趣,或者正在饱受代码不断增长带来的灾难,这本书将是你们的福音! 这本Game Programming Patterns 是由Bob Nystrom(一位在EA待过7年,有着20年游戏开发经历的工程师编写).本书将告诉你,什么模式能够帮你理清和

Game Programming Patterns(游戏编程模式)-架构,性能与游戏

游戏编程模式- 架构,性能与游戏 本系列博客是:Game Programming Patterns 的中文翻译版本. 翻译的github地址: cyh24. 如有兴趣,可联系博主共同翻译,一起造(wu)福(dao)他人. 博客虽然水分很足,但是也算是博主的苦劳了, 如需转载,请附上本文链接,不甚感激! 本系列博客 <游戏编程模式>– 目录,可点击进入. 架构,性能与游戏 ============================ 在我们埋头研究一堆的设计模式之前,我想先告诉你,对于软件架构,我个

【游戏设计模式】之四 《游戏编程模式》读书笔记:全书内容梗概总结

本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://blog.csdn.net/poem_qianmo/article/details/53240330 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 本文的Github版本:QianMo/Reading-Notes/<游戏编程模式>读书笔记 这是一篇超过万字读书笔记,总结了<游戏编程模式>一书中所有章节与内容的知识梗概. 我们知道,游戏行业其实一直很缺一本系

Game Programming Patterns(游戏编程模式)-简介

游戏编程模式-简介 本系列博客是:Game Programming Patterns 的中文翻译版本. 翻译的github地址: cyh24. 如有兴趣,可联系博主共同翻译,一起造(wu)福(dao)他人. 博客虽然水分很足,但是也算是博主的苦劳了, 如需转载,请附上本文链接http://blog.csdn.net/cyh_24/article/details/46868419,不甚感激! 本系列博客 目录,可点击进入. 简介 ============================ 在我五年级

《游戏编程模式》(8)

<游戏编程模式>最后一篇,刚从英国玩了一圈,春节又要到啦 Chapter 19 对象池 使用固定的对象池重用对象,取代单独地分配和释放对象,达到提升性能和优化内存使用的目的. 使用情境: 频繁创建销毁对象: 对象大小基本一致: 堆上分配内存较慢或可能产生内存碎片: 粒子类: 用union节省内存:粒子使用时用live结构体,不使用时用next指针 1 class Particle 2 { 3 4 public: 5 Particle() 6 : framesLeft_(0) 7 {} 8 9

《游戏编程模式》记录

写在前面 这本书长这样 我还没有看过“GOF”,我所读到的设计模式都是这本书(游戏角度)给出的定义,害怕GOF中的定义过于抽象. 没有在项目代码晃来晃去经历的,或者没有工作至少半年的,不用着急买这本书,因为估计看不懂. 本文用来重点记录“我觉得XX设计模式是什么”,以及“当我在看XX设计模式时,我在想什么” 这本书的写作方式,属于我喜欢的“谈话口吻” 命令模式 书面定义:“将一个请求封装成一个对象,从而允许你使用不同的请求.队列或日志将客户端参数化,同时支持请求操作的撤销和恢复” 他的举例:按键

《游戏编程模式》(4)

Chatper 8 双缓冲 核心问题:对状态同时进行修改与访问的冲突(读写) 缓冲区: 1 class Framebuffer 2 { 3 4 public: 5 Framebuffer() { clear(); } 6 7 void clear() 8 { 9 for (int i = 0; i < WIDTH * HEIGHT; i++) 10 { 11 pixels_[i] = WHITE; 12 } 13 } 14 15 void draw(int x, int y) 16 { 17 p

游戏编程模式--单例模式

单例模式 定义:确保一个类只有一个实例,并为其提供一个全局的访问入口. 那么什么情况下使用单例?最常见的情况就是一个类需要与一个维持自身状态的外部系统进行交互,比如说打印机.大多数情况下都是多人共用一个打印机,这意味着可能由多个人同时向这个打印机发送打印任务,这个时候管理打印机的类就必须熟悉打印机的当前状态并协调这些任务的执行.这个时候就不允许存在多个打印机的实例,因为实例无法知道其他的实例所做的操作,也就无法进行整体的管理. 我们先看看最常见的单例的实现方式: class FileSystem

游戏编程模式-事件队列

“对消息或事件的发送与受理进行事件上的解耦.” 动机 如果你曾从事过用户界面编程,那肯定对“事件”不陌生了.每当你在界面中点击一个按钮或下拉菜单,系统都会生成一个事件,系统会把这个事件抛给你的应用程序,你的任务就是获取到这些事件并将其与你自定义的行为关联起来.那么为了获取到这些事件,你的代码通常都会由个事件循环.就像这样: while(running) { Event e = pollEvent(); //handle event } 可以看到,这段代码会不断的获取事件,然后处理.但如果期间再事