工具开发
文章平均质量分 79
xoyojank
来如流水兮逝如风,不知何处来兮何所终
展开
-
远程桌面启动Houdini
最近疫情比较严重大家都是在家办公的, 需要远程登录公司里的开发机. 但是远程桌面无法直接启动Houdini, 会报OpenGL的错这个方法也适用于一些依赖OpenGL硬件加速的程序, 如Substance等原理就是中断当前远程登录的session, 然后再启动程序, 这时候就可以使用OpenGL加速了代价就是重新登录一次, 脚本是这样的:@echo offecho.echo Remo...原创 2020-02-12 14:30:25 · 1632 阅读 · 2 评论 -
WOW小地图生成
参考wowmapview写了一个小地图查看的控件, 可以载入*.wdl文件解析出一张类似于"卫星图"的东西WDL文件保存的是WOW地图的低精度高度数据, 冒似用来做远处的LOD的每个地图最大是64*64个tile, 而一个tile它保存了17*17 + 16*16个16位的高度数据. 如果生成一张512*512大小的小地图的话, 每个tile就只有8*8个像素因此, 我们只取17*原创 2008-11-24 22:53:00 · 3255 阅读 · 1 评论 -
Nebula3 in CLR
有用N3 + CLR做界面的冲动 新建一个CLR WinForm工程, 直接引入N3的头文件和库进行编译........ 编译不过, 找了半天才发现原因晕死, .Net和N3都有个System命名空间, 没法改Microsoft的东西, 只好把N3的System改成了NSystem 然后就是链接不过 一是__fastcall不被CLR支持, 改成__cdecl原创 2008-11-18 22:44:00 · 2575 阅读 · 1 评论 -
The Managed DirectX Render Loop
Tom has the final(?) say on the matter.... Or is it? Of course its not :-) Rick has added a response including some perf and memory numbers.I figured I should put a quick summary list together that e转载 2008-11-19 10:32:00 · 2127 阅读 · 0 评论 -
C++与Flash的交互
研究Flash嵌入游戏中的可行性.......渲染问题已解决事件响应已解决下面是C++与Flash AS的交互, 以MFC为例:1. 新建一个MFC Dialog程序2. 添加一个Flash控件 3. 把Flash控件添加一个变量 4. 在OnInitDialog()中添加载.swf文件// CCppFlashDlg 消息处理程序原创 2008-10-22 10:12:00 · 27773 阅读 · 11 评论 -
Tiled源码分析(一): GUI编辑和布局
MFC, WinForms, WPF, Qt算是都折腾过, 就差WxWigets了比较下来, 做游戏(引擎)工具开发的话, 最重要的是易上手, 好维护, 开发快, 综合下来还是滚回C++阵营, 选择了Qt不用不知道, 其实传统的Qt Widgets用起来跟WinForms非常像, 甚至Qt Quick的特性跟WPF有的一拼想当初强烈地想用C#, 很大部分原因是WinForms那个可视化GUI编辑器原创 2014-01-14 23:55:22 · 3633 阅读 · 0 评论 -
Tiled源码分析(二): 多文档支持
文档模型文档对象是一个MapDocument类, 它的主要功能有:管理编辑操作的signal的派发, 保证一些UI的状态可以正确地更新管理地图的数据模型, 如layer model(Qt MVC结构中的model, 可以绑定到控件)增加删除地图对象的操作接口管理这个地图的undo堆栈(后续专门分析一下undo/redo)管理地图编辑时的选中状态然后就是DocumentManager, 是一个单件类原创 2014-01-17 00:02:55 · 3132 阅读 · 1 评论 -
Tiled源码分析(三): Undo/Redo实现
就像之前说过的, 没有Undo/Redo的编辑器都是耍流氓优点不过, Qt为我们提供了Undo/Redo的完整框架, 连工具栏按钮和History控件都齐活了Command模式的核心当然是Command, 就是说所有操作都是QUndoCommand, push进一个QUndoStack就redo, pop一个就是undoTiled中比较特别是多文档编辑器, 也就意味着有多个QUndoStack,原创 2014-01-21 00:15:14 · 5241 阅读 · 3 评论 -
Tiled源码分析(四): 插件机制
Tiled作为一个通用的2D地图编辑器, 对于功能扩充做了一些考虑, 比例加载/输出第三方的文件格式. 不过分析下来, 能扩充的功能有限, 像UI面板之类的功能扩展就没有提供支持, 但是参考已经有的接口可以很方便地实现插件原理Qt本身就对插件机制提供了完善的支持, 对于应用程序, 插件一般是以DLL的方式存在, 在程序运行时动态加载. DLL中实现已经在主程序中定义好的抽象接口, 然后主程序这边只原创 2014-02-07 23:26:13 · 3754 阅读 · 1 评论 -
基于Unity的编辑器开发(二): 进程间通信
共享代码进程间通信通信协议其它共享代码首先要做的, 是需要编辑器和Unity共享一部部分代码, 至少协议定义和解析我不想写两遍. 虽然有protobuf这样的工具库, 但是如果不是跨语言的话, 我觉得没必要引入另一套流程. 所以我就想能不能让一个C# dll库可以同时被Winforms的编辑器和Unity脚本引用呢? 考查了一下还是可以的:Unity的.Net默...原创 2018-05-09 20:15:14 · 5654 阅读 · 1 评论 -
基于Unity的编辑器开发(一): GUI框架技术
需求背景技术挑战GUI框架技术Unity渲染窗口GUIDockingProperty Editor小结需求背景用Unity开发的游戏, 需要做个关卡编辑器. 如果只是内部用用, 其实直接扩展Unity就够了; 但问题是需要发布给外部的用户使用, 那么总不能把全套资源和Unity发给他们, 所以就诞生了这么个奇葩需求. 技术挑战既然用了Unit...原创 2018-04-26 10:13:54 · 11220 阅读 · 4 评论 -
Android平台上的Native内存分析
文章目录背景UE4的内存统计memreportMemoryProfiler2LLMAndroid进程内存DDMSMemoryAnalyzer背景UE4游戏在Android上的进程内存占用(PSS)很让人困惑, 没有一个清晰直观的方式可以统计到每一部分的内存占用. 所以在做内存分析的过程中顺手做了一个统计工具, 可以从系统底层统计UE4在Android的所有内存分配(包括Graphics部分),...原创 2018-09-28 09:39:03 · 10755 阅读 · 0 评论 -
WoWModelViewer分析
启动:WowModelViewApp::OnInit() 加载配置: WowModelViewApp::LoadSettings() 初始化主界面ModelViewer::ModelViewer() 初始化图形, 载入MPQModelViewer::Init(), 得到文件列表加入树控件里 初始原创 2009-02-20 00:20:00 · 5893 阅读 · 0 评论 -
强大的PropertyGrid
PropertyGrid, 做工具一定要用这东西.....把要编辑的对象看成类的话, 所有要编辑的属性就是成员嗯嗯, 最近看了几眼Ogitor, 它对于PropertyGrid的使用就很不错所有要编辑的对象(灯光, 模型, 粒子等等)都有一个共同的基类, 每当选中一个可编辑对象时, 右边的属性框里就显示出当前对象的属性...(公司那个编辑器要多土就有多土-_-)尽管Ribbon界原创 2009-07-04 22:05:00 · 38254 阅读 · 4 评论 -
WPF初体验
前段时间无聊装了个VS2010RC, 然后试着建个了WPF的工程, 体验了一番.刚开始没觉得这东西比WinForms方便在哪, 只是觉得它是一套跟Win32/MFC/WinForms完全不同的的东西. Win32/MFC/WinForms只要了解了消息循环机制, 理解起来就比较容易, 可WPF冒似没这套东西. 而且, HWND已经不存在于控件上了, 这是一个令人很不习惯的地方. 要知道不论什么原创 2010-04-11 14:34:00 · 3144 阅读 · 8 评论 -
Tiled源码分析: 序
最近业余玩玩了cocos2d-x, 在做地图部分时发现了Tiled这个开源的地图编辑器深入了解之后, 发现这个编辑十分强大, 好用到其他2D引擎都支持其地图格式, 几乎成为了一种标准在使用过程中, 有时会有对其编辑功能进行扩充的需要, 所以顺便看了一下它的代码读过之后, 越看越喜欢, 做为开源的编辑器, 代码能写这么漂亮很不简单想想自己用Qt写的几个工具, 总是感觉有点耦合, 所以就有了学习一下T原创 2014-01-14 22:53:55 · 3259 阅读 · 0 评论 -
C++的反射和序列化
Gamasutra上有篇文章讲得挺细的: Sponsored Feature: Behind the Mirror - Adding Reflection to C++RTTI在Class声明后加入RTTI宏的做法几乎快成各种引擎的标配了, 谁叫C++的rtti太弱来着.之前只是认为自己实现RTTI的原因是dynamic_cast的效率不高和对象工厂的需要, 原来关掉这个编译选项还可以减少占用的内原创 2012-03-29 23:21:13 · 7857 阅读 · 9 评论 -
WPF工具开发: 第三库选择
PropertyGrid Winforms's PropertyGrid非WPF原生支持, 需要借助WinFormHost风格不可定制PropertyInspectorView算是"官方"库, 风格不可定制WPF Property Grid开源功能还不够完善可以定制风格PropertyEditor for WPF开源功能比较实用, 有自己的特色Actipro PropertyGrid商业控件Mindscape WPF Property Grid商业控件DockWindow AvalonDock开源,原创 2010-10-18 09:34:00 · 20642 阅读 · 15 评论 -
基于属性的编辑器框架
看了Ogitor的代码后, 自己又实践了一把, 结合N3中学到的一些技巧, 在编辑器中得到了验证.虽说做的是场景编辑器, 但是其它编辑器也可以用的, 毕竟思想都差不多.对于一个编辑器, 通常是由一个个的"实体"组成, 或者叫"对象". 而"对象"又是由各种"属性"所组成.以场景编辑器为例, 我们通常会涉及以下操作:刷地形, 刷纹理摆模型, 设置模型参数摆光源, 设置光源参数摆特效/音效, 设置参数摆NPC, 设置相应参数...可以看到, 除了地形之外,原创 2010-09-17 00:18:00 · 3240 阅读 · 2 评论 -
DirectX in C++/CLI
昨天熟悉了一下怎么使用CLR, 今天就在里面写个3D程序试试注意, 这个DirectX是Native DirectX, 不是Managed DirectX, 更不是什么XNA-_- 其实很简单嘛....没遇到什么困难就弄出来了那些控件基本上你想用什么事件/属性找找MSDN就能找出来, 汗~~~真是人性化啊 至于遇到什么问题了的话, 冒似在CLR类嵌入NativeC++的类的原创 2008-11-02 21:52:00 · 3266 阅读 · 11 评论 -
引擎工具开发的一些总结
参数编辑可以说, 引擎工具在除了一些特定操作外, 80%的事情都是在进行参数的编辑与保存等. 从我接触工具开发开始, 就一直在学习如何简化这么部分的工作. 因为我见过很多业余的编辑器, 大多都是每加一个参数就在UI层写一些代码, 在IO层加一些版本兼容代码等. 而这些代码常常都是大同小异的, 很多都是Ctrl+C, Ctrl+V出来的. 说起来, 这个探索过程中我也走了不少的弯路, 顺便写出来当教原创 2013-07-20 15:45:45 · 6264 阅读 · 9 评论 -
有向无环图的自动布局算法
最近业余在做一个基于结点的编辑工具玩, 遇到一个问题, 就是结点和连线多了, 经常会出现重叠交叉的问题, 导致图看不清楚:要是这个样子, 还不如不用图清楚呢, 所心就需要找一个方法来进行自动布局, 理想情况是这样的(手动整理结果):当然, 手动整理的话, 每个人弄出来的结果都不一样. 自动的算法肯定没有100%完美的, 但是总是能方便不少的在google了一会儿后, 发现这种结点-线组成的图是一有原创 2012-12-02 23:14:48 · 19374 阅读 · 10 评论 -
发现个不错的WPF控件
http://www.codeproject.com/KB/WPF/NetworkView.aspx有了这东西, 神马材质编辑器, 神马状态机, 神马流程图, 都可以用它来做编辑啦~转载 2011-11-30 20:11:00 · 3223 阅读 · 5 评论 -
.Net用的SQLite
数据库冒似国内的游戏客户端用得比较少, 我见的都是用excel自己转换的...其实一直想在引擎里加个数据库, 但是这个跟游戏逻辑比较紧密, 就没搞...不过, 可以确定的是, 脱离服务器运行的数据库最好的选择应该是SQLite在用.Net做工具时正好要用, 于是查了一下, 找到两种解决方案:sqlite-net小巧, 一个cs文件, 一个native dll(C++也可以调用)接口清晰, 基本上一看就懂, 好学支持LINQ, 虽小却功能一个不少相当于原生sqlite c api的一个包装吧System.Da原创 2011-05-03 20:49:00 · 1870 阅读 · 1 评论 -
把C++/CLI委托传入本地代码
<br />参考: http://resnikb.wordpress.com/2009/05/18/passing-ccli-delegate-to-native-code/<br /> <br />C++/CLI可以直接执行C++, 这个没有问题, 那么反过来呢?<br />比如底层C++进行一项任务, 完成了需要通知上层的C++/CLI, 总不能在上面不停地查询吧?<br />通常这是通过回调来实现的, 说漂亮点就是观察者模式, 说成.net的就是委托.<br />而委托, 本质是就是函数指针. 以前也原创 2010-10-13 11:26:00 · 4963 阅读 · 1 评论 -
Nebula3嵌入WPF
C++/CLI只能使用MD/MDd的运行库, 所以N3的编译选项需要改一下. 可以在makeslnwin32.tcl里改, 然后重新生成所有的工程文件.N3的System命名空间与.Net的冲突. 主要是byteorder.h这个头文件里的Math命名空间, 改成"::Math"或"using namespace Math"都可以.编译时有些代码(估计是内联部分)会提示无法编译成托管代码, 只需要把#include用#pragma unmanaged/#pragma managed包起来XNAMath的对齐原创 2010-09-24 20:55:00 · 2443 阅读 · 2 评论 -
抛弃MFC, 转向.Net
现在我们的工具全是MFC的, 维护起来那叫一个郁闷一直在找一个C++中好用的UI库, 看过Qt(看起来到不错, 懒得学), wxWidgets(跟MFC一个样), 剩下的就不说了......前段时间发现了Xtreme ToolkitPro, 里面那些Samples很强大, 也有过用它来做界面的冲动但是想想, 这东西还是基于MFC, 一样还是要手动写........很怀念大学时在C原创 2008-11-02 00:49:00 · 3068 阅读 · 5 评论