GameEngineArchitecture读书笔记(二)

DLL

  • 很多公司会采用完全的静态链接, 这样比较省事, 也比较安全
  • 静态链接通常比较慢(编译时间影响开发效率), 而且EXE也比较大
  • DLL的话如果不使用interface封装会暴露很多类定义
  • 如果使用C++/CLI的话不能使用静态链接库
  • Debug
    • Release能重现而Debug不能重现的BUG通常是变量没初始化
    • DMP文件可以方便地重现崩溃时的堆栈调用
  • Coding
    • 代码规范是一个项目/引擎必须制定的东西, C++标准的缺乏造成每人一种风格习惯
    • CodeReview其实是统一风格习惯的一种有效措施
    • AtomString/HashString: 这东西本身是为了提高效率而出现的, 但是用不好就会成为影响效率的东西
    • Endianness: 主机平台跟Win32是不一样的, 生成二进制格式需要转换
    • 全局static变量的初始化顺序没办法控制, 不过函数里的static变量确可以在调用时初始化, 这样可以解决一部分初始化顺序问题
    • dbghelp可以通过地址反查代码行, 对付内存泄露比较方便
    • SIMD要求128bit对齐的内存, 如XNAMath
    • Exception:
      • 主机平台应该避免使用
      • 有时为了保证稳定性不得不用, 比如美术的编辑工具, 至少要让他们有保存一下的时间, 不要直接崩溃了...
    • 模块的初始化/销毁可以使用堆栈处理, 通常这两边的顺序正好相反
    • 数学库现在最好的选择是XNAMath, 自己去实现感觉吃力不讨好, 而且也不敢保证没BUG
    • 容器最好自己实现, STL的限制有很多;
      • 通用型的效率比不上针对特定问题优化过的
      • 内存占用的要多一些(主机平台很看重这个)
      • 动态分配的内存太多
      • 各平台的实现不一样, 对于平台移植有些麻烦
    • 最好不要用boost
    • 字符串
      • 尽量减少const char*的使用(个人习惯)
      • 比于比较操作频繁的, 可以使用HashString
      • 中文编码处理需要考虑
      • 最好把所有字符串做成一个表格, 游戏里通过ID使用

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏有趣的Python

最新Django2.0.1在线教育零基础到上线教程(七)-7-完结

演示地址: http://mxonline.mtianyan.cn 教程仓库地址1: https://github.com/mtianyan/DjangoGe...

4886
来自专栏大前端开发

从编程小白到全栈开发:理解异步

作为以JavaScript为主要开发语言的JS全栈开发者,是一定会碰上“异步(Asynchronous)”这个重要概念的,尽早的理解这个概念,会对你的JS编程生...

813
来自专栏腾讯Bugly的专栏

手把手教你如何分析 iOS 系统栈 crash

先上栈,这个 crash 是我们目前开发产品的 top5 crash ? 第一步 对于死在 ojbc _ msgSend 的函数(不仅仅是 msgSend, o...

4698
来自专栏DannyHoo的专栏

利用plist文件查看后台返回数据的数据类型

当看客看到标题的时候或许会有些疑惑,有的人甚至会鄙视写者。查看后台返回的数据类型为什么要用plist文件,这也太麻烦了吧。我既然写这篇博客,肯定是有一定的原因的...

951
来自专栏数据派THU

教你用一行Python代码实现并行(附代码)

来源:编程派 翻译:caspar 译文:https://segmentfault.com/a/1190000000414339 原文:https://mediu...

29010
来自专栏Golang语言社区

golang websocket总结(问题贴)

因为工作的需要,接触了websocket,开始的一些很简单的代码,都不知道该怎样运行起来,所以,总是有一层神秘感,却没有太多的兴趣去研究它。不过,还是免不了要了...

3967
来自专栏web前端教室

前端开发就是这样,“看似简单的东西,反而会很复杂。”

今天的零基础前端课讲到了一个tab地址切换的菜单,就下面这个东西, ? 第一眼看起来超级简单,无非是点击上面的title显示下面的菜单,然后点省市区把内容选上去...

2106
来自专栏微服务生态

Akka简单的性能测试

这种方案是采用MQ作为中间的媒介,在服务端采用线程池异步处理任务,处理完成之后将结果发送到MQ中,客户端采用侦听的方式得到结果继续进行处理。

1371
来自专栏杨建荣的学习笔记

初探Redis

大概在2010年的时候,有一次和一个同事聊天,那个时候知道了Redis,对于技术的追随至今,还没有下载一个Redis版本玩玩, 只有1万多行代码,以性...

4409
来自专栏信安之路

pentestdb 架构详解

在渗透测试领域有琳琅满目的工具、神器,它们可以大大简化渗透测试的工作量。但很多时候仅仅使用别人的工具是不够的,我们需要自己去编写一些脚本、插件来完成定制的内容,...

1000

扫码关注云+社区