首页
学习
活动
专区
工具
TVP
发布

逍遥剑客的游戏开发

专栏作者
306
文章
337589
阅读量
55
订阅数
Nebula3脚本系统
Nebula2的脚本系统实现了一个面向C++的脚本接口, 它把脚本命令直接映射到了C++方法. 从技术角度来说, 这是一个简捷的思路, 但是对于需要把游戏逻辑和行为脚本化的关卡设计师来说, Nebula2的脚本系统太底层和透明了.
逍遥剑客
2022-01-11
2740
Nebula3的多线程架构
Nebula3的代码运行在两种根本不同的方案中. 第一种方案我称之为”Fat Thread”. 一个Fat Thread在一个线程中运行一个完整的子系统(如渲染, 音频, AI, 物理, 资源管理), 并且基本上锁定在一个特定的核心上.
逍遥剑客
2022-01-11
4200
使用STL vector 作为XNAMath快速灵活的SIMD数据容器
这篇文章是关于如何将传统的STL vector作为XNAMath类型容器使用. 因为SSE/SSE2指令集要求数据必须对齐到16字节的边界, 所以vector的分配器必须替换成一个可以对齐的内存分配器(x86架构). 本文适用于想在代码中引入新鲜空气的x86 Windows开发者, 你将会看到如何把强大的XNAMath和灵活的STL vector结合到一起.
逍遥剑客
2022-01-11
7240
UE4学习笔记(三): 为什么使用C++替代UnrealScript?
原文链接: https://forums.unrealengine.com/showthread.php?2574-Why-C-for-Unreal-4&p=16252&viewfull=1#post
逍遥剑客
2022-01-11
3680
关于Web3D
ActiveX之类的插件, Unity也归于此类 可以从C++的引擎直接升级过去, 与传统客户端游戏引擎的差异不大 如果有现成的游戏, 改造工作量不是很大 需要针对每一种平台x每一种浏览器做相应的插件 Flash11 装机范围广, 所以就不需要安装插件这一步(11的话估计也得升级) 几乎所有平台和浏览器都支持 无法利用现有的基于C++的引擎 WPF 可以利用C++/CLI封装现有的C++的引擎 装过.net的机器就可以支持 平台受限于windows, 浏览器受限于IE(FireFox冒似也有相应插
逍遥剑客
2019-02-20
1.2K1
C#脚本实践(三): 集成到游戏
至此, C#做为脚本已经完全可行了: 可嵌入, 跨平台, 高效率, 热更新, 几乎可以忽略的编译时间, 强大的IDE支持, 丰富的第三方库, 部分动态语言特性的支持, 可以接受的体积与内存占用
逍遥剑客
2019-02-20
1.5K0
C++的反射和序列化
Gamasutra上有篇文章讲得挺细的: Sponsored Feature: Behind the Mirror - Adding Reflection to C++ RTTI 在Class声明后加入RTTI宏的做法几乎快成各种引擎的标配了, 谁叫C++的rtti太弱来着. 之前只是认为自己实现RTTI的原因是dynamic_cast的效率不高和对象工厂的需要, 原来关掉这个编译选项还可以减少占用的内存 Field(Property) 实现反射必须有一些属性成员的描述类, 这些信息目前看到三种实现方法
逍遥剑客
2018-05-23
1.2K0
一个HLSL的常量数组问题
在RenderMonkey里写了RNM的demo: float fUvScale;   sampler2D diffuseMap;   sampler2D normalMap;   sampler2D lightMap1;   sampler2D lightMap2;   sampler2D lightMap3;   const float3 bumpBasis[3] =   {       {sqrt(2.0 / 3.0), 0.0, 1.0 / sqrt(3.0)},       {-1.0 / sqr
逍遥剑客
2018-05-23
2K0
把C++/CLI委托传入本地代码
参考: http://resnikb.wordpress.com/2009/05/18/passing-ccli-delegate-to-native-code/ C++/CLI可以直接执行C++,
逍遥剑客
2018-05-23
8740
Ogitor代码分析
引擎状态监听(观察者) 底层变化时, 需要高层UI做出反应. 这个有一个原则, 就是下层逻辑不能依赖上层逻辑, 所以通过一个接口进行消息的派发. 如果是.net的话, 可以用delegate/even
逍遥剑客
2018-05-23
5250
Nebula3中的委托(Delegate)
April2009增加了不少好东西, 这段时间准备静下心来看看 关于delegate这么个东西, 可能C++程序员很陌生, 但是Callback函数一定听说过吧? 其它两者本质上是一种东西 不过C++
逍遥剑客
2018-05-23
4050
关于Nebula3工程的几个编译选项
研究一下人家是怎么通过编译选项来优化性能的 DEBUG: C++/Code Generation/Enable String Pooling: Yes (/GF) 该选项使编译器能够为执行过程中程序映像和内存中的相同字符串创建单个副本,从而得到较小的程序,这种优化称为字符串池 C++/Code Generation/Enable C++ Exceptions: No 禁用C++异常 C++/Code Generation/Enable Function-Level Linking: Yes (/Gy) 此选
逍遥剑客
2018-05-23
5800
Nebula3学习笔记(8): 脚本系统
可能是还在开发当中的缘故, 我感觉Nebula3中的lua脚本系统不是很完善. 所有的调用都是封装成Command来执行的, 并不像LuaBind那样直接绑定到C++类对象; 而且, 对于C++调用脚本的接口也不是很方便, 只有一个Eval()来执行一个字符串. 如果要实际进行应用的话, 我想最好是自己扩展一下, 这里有一篇不错的文章: Integrating Lua into C++. 当然, 对于需求更高的用户来说, 可以选择使用LuaBind等第三方库来整合脚本系统. Command(命令) 可以这么
逍遥剑客
2018-05-23
4440
Nebula3学习笔记(3): 核心库
核心子系统 核心库(Core namespace)实现了这些特性: 一个实现了引用计数的RefCounted基类 一个运行时类型信息系统(RTTI) 一个模板智能指针, 用于处理RefCounted对象的生命周期 一个由类名创建C++对象实例的工厂机制 一个中央Server对象用于建立基本的Nebula3运行环境 对象模型 Nebula3在C++对象模型的基础之上实现了下面这些新特性: 基于引用计数和智能指针的生命周期管理 基于类名或四字符编码的对象创建 一个运行时类型信息系统 实现一个新的
逍遥剑客
2018-05-23
5740
Nebula3绘制基本图元
看了好久好逮能让N3画出东西来了, 感觉它的架构就是专门为DX而设计的^_^. 虽说也能编写GL的中间层(因为N3的API是处于继承树的中间, 而不是最底下), 但是很多习惯一看就是DX嘛. 可能用惯API的会比较好上手点. 命令行程序都是从ConsoleApplication派生, 那么图形程序就是从RenderApplication派生了^_^. 先看看RenderApplication都有哪些成员: Ptr<Core::CoreServer> coreServer; 前面的命令行程序已经用过了, 最
逍遥剑客
2018-05-23
6200
Nebula3的Input系统
相对于其他的子系统来说, 输入系统是比较简单的. 很多游戏根本就没有对这一块进行封装, 而直接采用了Win32的消息机制. 不过经过封装的输入系统使用起来很方便, 呵呵. N3中有三种输入设备, 键盘, 鼠标, 手柄. 分别是基于Win32消息, DirectInput, XInput实现的. 这里有一个继承图能够很好的说明输入系统的组织结构: 基本的消息处理机制是这样的一个流程: InputServer里有默认的一个键盘, 一个鼠标, 一个手柄的"handler", 在每帧开始时InputServer
逍遥剑客
2018-05-23
7500
UE4学习笔记(四): 开发体验
官方WIKI上面有个FPS C++ Tutorial, 照着做一遍可以很好地了解UE4开发的方方面面 这里只是记录一下自己的收获 GameMode/Config/Character 从这个可以看出UE系列对游戏底层功能还是有一个不错的框架, 对比一下Unity会明显感觉到两者的不同 一个是给你提供了很多常用的功能, 不管你用不用的到. 想要用得好必须先了解清楚这一套框架结构 一个是什么也不给你, 你自己去找/写. 当然, 这样减少了上手的难度 C++运行时编译加载 实际用下来感觉还没做到位, 因为只限于不改
逍遥剑客
2018-05-21
7800
在C#中派生C++的抽象类
目前看到了几种选择: SWIG 这个叫做"director"的机制不是真正的派生, 只是看起来像而已 C#里的类只是包装了一个C++对象的指针, 所有调用都是通过P/Invoke完成的, 实际上是两个不同的对象 CXXI 通过改变C++对象的vtable实现派生 通过DLL(so)的导出方法名来取得函数指针 通过解析GCCXML来生成C++类的C#声明 MSVC的支持还没有完成, 可以参考这个去完善: Inheriting From a Native C++ Class in C# [Hack] 嵌入mon
逍遥剑客
2018-05-21
7290
关于中文文本的截取
从Java转到C++后,对于它的字符串处理能力抱怨了好久 这不,非Unicode下对字符串进行截取有时会出现乱码,因为把一个汉字是两个字节,如果拆开了就显示不正确了 IsDBCSLeadByte The IsDBCSLeadByte function uses the ANSI code page to determine whether a specified byte is potentially a lead byte that is, the first byte of a two-b
逍遥剑客
2018-05-21
9200
UE4学习笔记: Functions
函数声明 UE4中有两种函数, 一种是传统的C++函数, 一种是UFunction. UFunction通过加入一些描述符来支持一些特殊功能 UFUNCTION([specifier, specifier, ...], [meta(key=value, key=value, ...)]) ReturnType FunctionName([Parameter, Parameter, ...]) 主要有几种应用: 在Blueprint中调用 做为delegate, 如与按键消息进行绑定 网络回调和数据同步 做为
逍遥剑客
2018-05-21
2.4K0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档