Dorothy SSR性能参数介绍

Dorothy SSR的程序中如果打开Director.displayStats = true,或是每帧调用ImGui.ShowStats(),就会在界面上展示一些引擎性能相关的参数。这些参数包括渲染器(Renderer),多线程渲染(Multithreaded),主渲染缓 »

Dorothy SSR项目

功能展示 项目地址   项目地址在这里:码云,Github。 项目目标   Dorothy SSR项目的最终目标是制作一款跨平台的,专门用于制作2D游戏的“魔兽争霸3世界编辑器”。这个目标由三个子目标组成: Step 1   开发一个跨平台的底层游戏框架。功能包括或是整合图形渲染 »

Dorothy Xml编写UI 2

使用了Dorothy Xml编写界面以后,接下来要解决的问题是,为Xml中定义的纯展示界面增加界面逻辑。我们可以使用Dorothy的class类的机制,写一个继承Xml界面组件的带有界面处理逻辑的新的类。比如我们有一个按钮的Xml组件。 <!-- ButtonView. »

Dorothy Xml编写UI 1

Dorothy编辑器的项目现在进展到了场景编辑器的部分,因为担心项目太过复杂,用之前随意地进行编码的方式可能会导致后期难以维护。尤其是之前几个编辑器的代码都是一个.lua文件动辄上千行代码,混杂着创建UI组件,设置布局大小,颜色外观,创建交互动画特效,响应事件回调,处理编辑器 »

Dorothy新版消息机制

Dorothy的Lua接口中的消息处理,从最初的函数接口: -- 注册 layer:registerTouchHandler(function(eventType,touch) if eventType == CCTouch.Began then return »

Dorothy Lua开发建议

1.禁用全局变量   可以在zbstudio中使用Analyze(Shift+F7)功能检查全局变量的使用。但是可以通过模块做数据的共享,但是只能共享基本数据类型包括string, number, boolean, table, 没有俘获userdata类型变量的function »

I++ Talk

The programmer`s three romantic works are OS, Compiler and CG. -- So said the VCZH. Why use scripting language Chrome Network, Webkit, V8, e »

Dorothy物理编辑器

一、物理编辑器的介绍   在Dorothy中有对Box2D物理引擎进行了封装。Box2D是一个十分纯粹的2D物理运算的程序库。给它设定好输入的几何图形以及物理属性,它就能持续地模拟出这些物理对象接下来的速度、加速度、碰撞、弹性和摩擦等等的物理变化来。因为Box2D提供的只是纯粹演 »

Dorothy模块管理

在Dorothy Lua中,如果要使用某一个模块比如CCNode模块,标准的写法是在.lua的源文件开头添加local CCNode = require("CCNode"),之后就可以任意使用这个模块。   这样做的好处很多,在动态语言里比如lua、js和 »

Dorothy面向对象的写法

用Lua编程是非常自由的。闭包、table加上metatable,可以按自己的喜好调教成任意的编程风格。我最喜欢函数式的写法,在写乱七八糟的业务逻辑的时候,可以一边写一边想,想到什么业务规则就随手加什么业务规则,开发效率很高。当然写的时候行云流水很顺畅,写完要维护会费一些力。 »

Dorothy动画编辑器

Dorothy里带了一套自己的骨骼动画库,叫做oModel库,以及可视化的动画编辑器AcionEditor。编辑器可执行版本的下载地址在:这里。 目录   一、基本概念   二、编辑器的使用   三、图片切片编辑界面   四、模型节点编辑界面   五、模型动画编辑界面   六 »

Dorothy Routine

回调函数大家一定不陌生,比如说我们使用一个计时器的功能,时间到了要做一件事,自然就会定义一个自己的回调函数,就像这样: setTimeout(1000, function(){ ... });   在这样回调式的写法里,如果我们要连续做很多件事,每件事之间都要等待一些时间,这 »

Dorothy的安装和配置

首先通过git来clone这个仓库到本地,或是直接下载zip。   然后在Windows下,双击运行Dorothy/tools/tolua++/build.bat生成lua绑定代码。   或是在Mac下,双击运行Dorothy/tools/tolua++/build.sh生成 »

Memory 4

一个游戏最大的内存消耗就是游戏资源的缓存。游戏资源主要包括图片、音频、游戏数据等等,这些资源都得从游戏硬盘上读取并加载到内存中,然后游戏才能使用。   这些资源中尤其是图片对内存的消耗很大,像一张标准的1024x1024大小的png图片加载到内存中,每个像素占4个bytes, »

Memory 3

内存池   内存池就是像一个养鱼池一样的东西,我们需要鱼的时候就从池子里捞出来,鱼少了以后又往池子里补充鱼苗,也就是用来做这两件事的一个池子而已。   我们进行内存分配依赖的new和delete关键字,或是底层的malloc和free函数,它们是一些通用的内存分配回收的系统调用方 »

Memory 2

内存泄漏   内存泄漏就是不再使用的内存没有被释放掉。   最基础的情况,像在C++里的new和delete没有对应使用就一定会发生内存泄漏。C++中进行内存管理有一个通用的做法叫做“RAII”,基本原理就是把内存或是其它要进行“获取”,“使用”,“释放”的资源,封装成C++对象 »

Memory 1

内存的基础使用   程序在运行时对内存使用包括: 程序代码、程序常量 静态变量 栈内存 堆内存   程序代码、程序常量和静态变量,在程序进入main函数执行之前就已经放到了内存里分配了空间。有一个冷知识,如果使用的静态变量是类的对象的话,还会在main函数执行之前就运行构造函数, »

游戏人工智能

状态机   状态机系统中的状态具有进入状态,离开状态,接受输入,进行转移等动作。   根据“状态A->接收条件X->状态B”可以画出状态机图或是列成状态表。   原理简单,但是随着设计的状态增加状态间的跳转关系增加,状态图越来越不直观,状态机编码和调试的难度也越来越大 »

委托和消息系统

意义和用途   一个对象内部触发事件影响外部的对象。   想象不同功能按钮的点击事件。 简单处理多个点击事件 #include <FilePanel.h> #include <Program.h> class Button { public: enum »

Dorothy中对象引用的问题

在使用Dorothy时遇到了一些诡异的现象。大概的代码类似这样: -- 核心的伪代码如下 local scene = CCScene() local world = oWorld() local body = oBody(...) local joint = oJ »

Dorothy是什么

Dorothy是Cocos2d-x-Lua的另一个分支,基于原始版本2.1rc0版再次开发的框架。之所以开始在这个版本上做自定义的开发,是因为我在跟随原版的更新,持续做开发的过程中,发现它的功能渐渐变得又多又杂,吸纳了各式各样的扩展,光是骨骼动画的扩展就重复增加了两套代码。并 »

tolua++中的类型系统

一、类型继承   为了在Lua中访问C++对象,tolua++用了些方法将C++接口映射为Lua代码。Lua本身就可以存储调用一些C的对象,包括基本数据类型、C函数、指针等等。但是一个C++对象所拥有的东西要比这些复杂得多。其中最重要的就是C++的类信息。   C++的类包括类的 »

Cocos2d-x-Lua对象生命周期管理

最近研究了Cocos2d-x的Lua binding。在Cocos2d-x中,使用了tolua++来完成C++绑定到Lua的工作。以下便是我对tolua++绑定Cocos2d-x的一些理解和改进。 一、对象的生命周期管理   C++做Lua binding最重要的工作就是管理 »

一些游戏程序的基础知识(二)

在《游戏主循环、帧数控制》中提到了游戏主循环中最主要执行的两个方法updateEverything()和drawEverything(),就是游戏程序中【逻辑更新】和【图形绘制】两件最重要的工作。这里再聊聊图形绘制又是怎么做的吧。 管理场景的节点(drawEverything »

一些游戏程序的基础知识(一)

在《游戏主循环、帧数控制》中提到了游戏主循环中最主要执行的两个方法updateEverything()和drawEverything(),就是游戏程序中**【逻辑更新】和【图形绘制】**两件最重要的工作。先聊聊逻辑更新是怎么做的吧。 管理组件的更新(updateEveryth »

游戏主循环、帧速控制

FPS(Frame Per Second)游戏帧速60帧是指游戏每秒循环更新60次。   一个游戏程序的基本结构像是这样: while (isRunning) { updateEverything(); }   但是这样死循环的话,游戏的更新速度就只与CPU频率有关了,频率 »