Vico Bill< 刘 利 波 > 的个人网站

记录关于学习、工作中的技术点滴

C,C++,Rust,Ruby爱好者;热衷于游戏开发、任务自动化与跨平台;沉迷于游戏引擎与图形表现;深信'简单、多元'哲学的力量。


访问主页

游戏开发-开发知识汇总

CMake

XMake

C++

  • Treat warning as error: WX -> WX-

库开发:

  • 避免全局状态,否则其生命周期的管理会相当麻烦
  • 不要在公共头文件中定义通用类型,否则不同编译器的字节对齐会出现问题
  • 不要在公共头文件中包含windows.h
  • 小心对待自己的命名空间,不要导出你不想公开的符号
  • 尝试建立稳定的 ABI
  • 不要对结构体太疯狂
  • 允许别人自定内存分配器。如果不能对每个context这样做,至少在每个库中这样做
  • 不要强迫用户使用你所喜欢的构建工具,始终确保用户可找到 VisualStudio 和 Make 的解决方案。

API 设计准则

  • 最简原则。公开的 API 应简洁,不冗余。只公开必须公开的。
  • 完整。API 能准确无误完成预期功能。
  • 最少惊讶原则。
  • 直观。无需查阅文档,即可知使用此 API 编写的代码,则为直观。
  • 易于记忆。选择一致且精确的命名规则。
  • 时刻可读。Code Once, Read Many times。

编码中常用注释标记

标记 意义
TODO 表明尚未完成,需要后期完成
TEST 表明待测试
REVIEW 代码待审查,需要代码是否完美达成目标
HACK 表明当前实现的代码不完美,比较蛮力,需要后期再重新编写
FIXME 表明当前的代码有点问题,需要被修改
OPTIMIZE 代码性能有问题,需要被优化,提高性能
@,@see,@refer等 通常表示引用。如@see Game.js 表示如果有问题,可以参考Game.js文件
\param,\return等 用于描述函数的参数和返回值分别是什么,有什么作用。
最近的文章

游戏开发-逆向工程

破解的本质:数据解析!十六进制数据解析!Code->Human!在逆向工程中,包含两种数据:静态数据和动态数据。数据,包含操作指令和内容。内容数据通常由header,data, tail组成。header中常包含:version,size, chunck_offsetstail中常包含:checksum对整体数据而言,又可进行加密、压缩操作(crypto (zip (data)))静态数据分析静态数据包括:资产(Level, Audio, Model, Texture, Animat...…

继续阅读
更早的文章

编程语言-如何选择编程语言

日常使用编程语言:Ruby(高抽象、语法糖), Rust(性能,宏)工作=游戏开发中使用编程语言:Lua(热更新),C#/GDscript/js(引擎自身绑定语言), C/C++(引擎)编程语言是编程过程中的首要之门,是编写软件过程中首要的选择项。如今编程语言遍地开花,选择项有多种,每种编程语言都有大量拥护者和狂热者。每种语言设计哲学都有区别,应对的领域也不相同,语言设计的性能、 开发效率也不相同,如何挑选适合自身的编程语言是一项技术活。目标明确,选择才能清晰。日常使用主要图开发效率,最好...…

继续阅读