笔记

A collection of 10 posts
笔记

使用Windbg分析开启LocalDumps

1. 开启LocalDumps 配置方法 这项功能通过修改 Windows 注册表来进行配置。相关的注册表项位于 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps。 主要的注册表值包括: * DumpFolder (REG_EXPAND_SZ): 指定转储文件的保存路径。 * DumpCount (REG_DWORD): 指定在文件夹中保留的转储文件最大数量。当达到数量上限后,新的转储文件会覆盖旧的。 * DumpType (REG_DWORD): 指定要收集的转储类型。 * 0: 自定义转储(Custom dump)。 * 1: 迷你转储(Mini dump)。 * 2: 完整转储
13 min read
笔记

Git迁移到SVN

背景 之前的一个项目使用Git进行源代码管理,现在项目中止,需要把代码迁移到公司大部分项目都在用的svn上进行存档。 迁移后的svn需要保留原始git的修改记录。 首先需要说明一下,因为目标svn是公司服务器,个人是没有服务器访问权限的,因此迁移过程困难重重,如果有服务器权限,那么最简单的方案是使用subgit,只需要在git端和svn服务器进行简单的配置,即可完美迁移。下面的讨论基于没有svn服务器权限的方案。 历经好几天的折腾终于找到了一个不算完美的解决方案,这里记录一下。 解决思路 经过了大量的搜索和AI的讨论,对于我的情况,最好的办法还是使用git svn。当然这中间进行了大量的妥协: git子模块问题(submodules) 待迁移的git项目中使用到了子模块,目前我还是没有找到可以完美保留子模块的方法,最后采用的折衷方案是使用git-filter-repo移除子模块相关的提交。否则在使用git svn dcommit提交到svn时,会因为找不到子模块对应的提交hash链接而失败。 原始提交人问题(author) 由于svn提交的提交人
12 min read
游戏开发

C++代码审查终极指南

英文原文:https://www.incredibuild.com/blog/the-ultimate-guide-to-cpp-code-review-part-2 在第一部分中,我们花了一些时间讨论代码审查的广泛方面。本部分将专注于 C++,提供一个代码审查清单并提供一些最佳实践。你可以按任意顺序阅读它们,但我们建议回过头去阅读我们的之前的文章。 C++ 审查清单 代码审查清单永远不会全面,需要检查的问题、项目和潜在事项几乎是无穷无尽的。因此,制作一个涵盖所有潜在情况的清单是不可能的,而且执行起来更加困难。相反,让我们关注在 C++ 代码审查期间应该涵盖的广泛方面。 类别 1 - 需求和底层领域的理解 Joel Spolsky(Stackoverflow 的联合创始人,Fog Creek 的创始人,现在是 Glitch 的创始人,以及Joel-on-Software 博客的作者)曾经讲过一个关于他与微软联合创始人比尔·盖茨的审查的故事。 当时的 CEO 花了相当多的时间提问,包括一些看似随意的问题和更难的问题。问题越来越难,越来越尖锐,
19 min read
疑难杂症

Mactype配置文件

**LCD.ini** [General] Name=LCD Icon=..mactray.exe,012 HookChildProcesses=1 【应用到子进程】——比如你用启动方法1启动了一个winrar,双击里面的一个文本文档,那么下一步被打开的“记事本”程序也会使用gdi++渲染。 0:禁用; 1:启用。 HintingMode=1 ; 0:Normal 1:NoHinting 2:AutoHinting 3:Light+AutoHinting 【字体微调】——对字体进行细微调整,以实现比较锐利、不模糊的效果。windows的cleartype就是用的这类技术,弊端是会使字体变形、笔画粘在一起。 下面会有两种情况: 情况一,当FontLoader=0(在下面)时: 0:使用字体内部的微调,字体内部没有微调的话就和选1时的效果一样; 1:
6 min read
游戏开发

Lua语言学习笔记

自学过Lua好多次,每次都因为长时间没用然后忘记了。这次决定做一下笔记,一方面加深印象,另一方面为了下次忘记能够快速“捡回来”做准备。 参考教程:菜鸟教程之Lua教程 参考手册:Lua5.3参考手册 斜体部分为我个人的理解,可能不一定正确,只是帮助记忆。 [TOC] 注释 单行注释 --是单行注释: --这是单行注释 多行注释 --[[]]--是多行注释: --[[ 这是多行注释的第一行 这是多行注释的第二行 ... ]] 标识符 我喜欢称之为变量名。规则同C/C++。字母或者下划线_开头,后面跟字母、数字或者下划线。 关键词 即系统保留关键字。一般约定,以下划线开头连接一串大写字母的名字(比如_VERSION)被保留用于Lua内部全局变量。 and break do else elseif end false for function
45 min read
笔记

导航网格学习笔记

相关资料 1. 导航网格开源库:RecastNavgation 2. 一个基于C#的AI库,包含UNITY 3D插件:CAINav 3. 开源服务端框架:kbengine 4. WOW服务端模拟器:TrinityCore RecastNavgation是业界比较知名的导航网格生成和寻路的开源库了,大名鼎鼎的UE4和Unity3D游戏引擎都有基于Recast的实现,而上述两个开源服务端框架中,导航网格也是基于Recast的。因此,Recast应该是已经被证明可靠的导航网格LIB。 在CAINav官网看到有比较详尽的导航网格文档,因此打算深入了解一下导航网格的原理和相关算法,本篇就是学习过程中记录的学习笔记。 多边形网格(Polygon Mesh) 多边形网格(Polygon mesh)是三维计算机图形学中表示多面体形状的顶点与多边形的集合,它也叫作非结构网格。这些网格通常由三角形、四边形或者其它的简单凸多边形组成,这样可以简化渲染过程。但是,网格也可以包括带有空洞的普通多边形组成的物体。 导航网格的生成 1. 高度图介绍 * 基本高度图结构
8 min read
笔记

游戏开发网络协议对比:TCP VS UDP

本文基于Glenn Fiedler的英文原文翻译,原文请戳这里 为了防止歧义,一些专有词汇将保留英文原文。 以下是翻译全文: 介绍 这篇文章我们将从网络编程最基础的方面说起,即通过网络发送和接收数据。这仅仅是个开始——网络编程中最简单和最基础的部分。但是如何达到最佳实践过程,依然是错综复杂的。如果你弄错了这个部分,那么将会给你的联机游戏带来可怕的负面结果,请务必注意。 你很可能听说过sockets,并且可能已经知道有两种主要的类型:TCP和UDP。当编写一款网络游戏时,我们首先需要选择使用哪种类型的socket。那么我们应该使用TCP sockets,UDP sockets,还是将两种混用呢? 你的选择完全取决于你想做的网络游戏的类型。本文(和后面的系列文章)的内容都将假设你要做的一款动作网游。比如大家熟知的:《光环》、《战地1942》、《雷神之锤》、《虚幻竞技场》、《反恐精英》、《军团要塞》等等。 按照我们想要做一款动作网游的假设,我们将非常详细的考察每种类型socket的特性,并且略微进一步探讨英特网是如何工作的。一旦我们掌握了这些讯息,那么作出正确的选择就易如反掌了。
15 min read
笔记

《网络多人游戏架构与编程》读书笔记

第一章 网络游戏概述 将数据分为4种类型: 1. 非保障数据。这类数据不是游戏所必需的数据。所以当带宽有限时,游戏选择首先丢弃这些数据。 2. 保障数据。该类数据需要保证其准确到达以及到达的顺序。用于对游戏至关重要的数据。 3. 最近的状态数据。该类数据用于只有最新版本的数据才是重要数据的场合。 4. 最快保障数据。该类数据具有最高的优先级,在可靠传输的基础上,保障尽快到达。 * 我们游戏现在数据没有分类,导致网络传输出现瓶颈的时候,无法根据类型丢弃数据包,后续可以考虑优化,但是重点在于如何选择哪些数据可以被丢弃?
1 min read
笔记

VS2008 WIN32升级VS2017 X64

工程配置修改 1. 用vs2017打开原vs2008的工程,自动升级工程。 2. 修改所有Project的Windows SDK Version(默认升级完会变成8.1,但是VS2017自带的是10.x.x) 3. 新增X64平台配置。 4. 覆盖提供的tq_lib目录,修改MsgServer和NpcServer工程的库包含路径: mysql->mysql64 lib->lib_X64 GameLib->GameLib_X64 5. 覆盖提供的游服运行环境(X64运行环境DLL.rar)到游服运行环境目录sjmy_server_bin。(请注意备份原来的运行环境,建议新建一个sjmy_server_bin_X64来运行X64的游服)。 源码修改 1. hash_map已废弃,需修改为unordered_map: #ifdef USE_
3 min read