摘要: 试用过OGF的朋友,应该会发现GameFrame在鼠标消息处理时,都会搜索当前鼠标坐标下的对象,以实现对像的MouseMove,MouseOver, MouseIn, MouseOut四个事件,但效率非常之差。现打算进行调整,以加快每帧的处理速度,大致方案如下:
1、按FLASH的模式,默认不提供对象的MouseMove, MouseOver, MouseIn, MouseOut事件,GameFrame只负责将MouseMove的消息转发至GameBody,用户要实现要上述4个事件,则必须重载GameBody的OnMouseMove来实现(GameBody可能会提供一个默认的对象分发过程,由用户调用或GameFrame的Setting中带一个标志开发以确定是否分发至对象);
2、在GameLayer层加入一个是否允许处理鼠标消息的标志(默认为false),当为否则不检测,减少FindObject()函数的判断次数;
3、在对象中增加一个是否允许处理鼠标消息的标志(默认为false),减少FindObject()函数中用对象区域判断的次数;
<
阅读全文
摘要: #89 La Mota, Medina del Campo
Valladolid, Spain
13th to 15th centuries
阅读全文
摘要: 原本打算赶在9月上旬放出来的,但CSDN的博客老是出错,于是当天就来申请CPPBLOG,今天就将近期更新后的版本放上来,希望大家继续支持!
OGF 0.81 debug版代码下载:
http://www.cppblog.com/Files/lwq49/GameFrame%200.8.rar
阅读全文
摘要: 本范例主要是介绍图形对象及对象中新增的Region属性.首先要说明图形对象并不是用于绘制,而是图形的封装,一个图形实例只对应一种图形,若想创造复杂的图形则只能通过多个单个图形组合.范例运行后会在屏幕中显示一幅带有边框的图片,当按键盘的左/右键,图片会逆/顺时针旋转,这时边框会根据图片的新区域重绘(将以图片的最小X和Y点为左上角,以图片当前的最大X和Y点为右下角).
阅读全文
摘要: 网络服务器的编写相对客户端的网络应用较为复杂,既要实现单个客户端的功能,也要实现其管理,包括应答,读/写数据的线程开启/回收,多线之间的数据互斥等.(管理方面是采用了一个非开源项目的代码,所以代码暂不便公开,将以LIB方式提供大家使用.)为方便后台服务的开发,因此采用了MFC框架.范例中代码较为多不一一进行说明,只从大体上简单介绍每个类的作,并针对网络相关部分进行相关说明.
范例是实现一个消息管理服务.提供群发或定向发送文本消息至客户端,并带有服务启动/关闭,日志记录的功能.
阅读全文
摘要: 最近几天的闭关修练,终于把OGF的网络部分给补充完了,这样大家就方便开发自己的网络游戏.网络应用方面分为客户端与服务器端,上集我们先介绍客户端的使用,下集再介绍服务器端的的开发.
客户端的消息分发采用原有的队列调配模式,机制上与计时器或动作引擎没有太大的差异,无非创建了一个空窗口与SOCKET进行绑定,然后将SOCKET消息发送队列后再分发.除此之外,提供了简单的数据加/解密的支持,提供了SOCKET代理模式的支持.
阅读全文
摘要: 游戏开发其中一环就是非常枯燥的资源加载及布局,大多数大型游戏都会有编辑器,对自己的游戏中用到的层场进行可视化编辑,但创建这样一个引擎对中小型游戏来说,反而是开发比例不对称,所以OGF内置了场景布局器,方便中小型游戏方便地从XML文件中加载,而生成XML的界面编辑器也会优先开发出来,以简化这方面排版的时间消耗.
布局器是一条处理链,链中可能有多个不同性质的布局处理器,例如:处理资源的,处理环节,场景,场的,还有是处理对象的等.用户也可自行扩展XML的内容,但要求自己编写布局处理器,然后注册到系统中使用即可.
Sample07
简介:布局器
该示例会以一个以前做过的游戏背景为基础,显示了如何按OGF.xml中的内容进行布局.
阅读全文
摘要: 这个范例将会介绍OGF框架另一个扩展功能--物件动作引擎.作为一个游戏必然会涉及到一些对象动作,例如简单的直线移动,旋转,渐变等,高级的话,可能要做贝塞尔的曲线运动或作物理的惯性移动,物件动作引擎专门针对这些动作进行处理(随着推广和改进,相信会有你所需要的动作添加进来).看回一些新手写的程序,总会将这些处理写在渲染函数体内,控制物体位置的判断:switch,if语句占了N多行代码,为此想起写这么一个引擎,将这些动作的处理更为简单方便.例如你让指定物件从A坐标移动至B坐标,OGF会自动在另一线程中帮你处理,你的代码只需是告诉OGF要做什么动,目标是什么就可以了,具体看看下述的示例.
Sample06
简介:对象动作.
本范例会示范一个随机的直线运动.运行并点击"Start"按钮后,Sample05的时间计时器会随机在屏幕上移动,直至程序关闭.
阅读全文
摘要: 游戏中离不开计时器,多多少少需要定时处理某些事情,例如:倒计时,进度条,AI控制等.OGF框架内置了一个计时器系统,提供了一个独立线程去处理这些任务,间隔最少可达到5毫秒.
Sample05
简介:计时器.
该范例运行后会先显示"Start"按钮,点击后会在屏幕中心显示一个秒数计数器,每秒递增1,一直至程序结束为至.
阅读全文
摘要: 我对游戏开发的看法是要尽量将游戏细化,最基本的是将游戏划分为多个环节,每个环节尽可能独立处理本环节的事情,所以於生出“CGameSection”这个类模板。在OGF中,当处于某一环节内,其它环节是不会收到任何消息的并且其内的物件也不会渲染,这使环节变得相对地独立。
Sample04
简介:游戏环节
使用游戏环节对游戏进行分阶段管理.使用环节控制可以将整个游戏流程划分为多个环节,例如:SFLASH窗口环节,菜单环节,游戏环节,结束环节等,具体视游戏大小而定.在此例中,会创建两个环节:CMenuSection, CMainSection,开始时会停留在MenuSection阶段,有一个"Start"文本,当点击后会转换至CMainSection环节,并实现Sample03的效果.
阅读全文
摘要: Sample03
简介:
键盘,鼠标事件的演示。
键盘、鼠标是游戏中主要的输入设备,往往会要求获取当前鼠标对象、鼠标坐标等。该例展示了OGF框架的事件处理机制,并介绍如何运用。
阅读全文
摘要: 该例子非常简单,也曾考虑过是否有必要作为例子,但作为OGF介绍的一部分,最终还是写上了。
Sample02
简介:
系统属性设置
目的是修改游戏框架的系统属性.在基于Sample01范例的基础上,我们来看看在您的游戏项目中如何调整框架的属性,例如:运行窗口的标题,每秒帧数....由于框架属性必须在游戏运行前设置完毕,所以我们要重载在框架运行前调用的GameInit()事件,在该事件内就可以设置框架提供的属性接口.
阅读全文
摘要: 游戏框架的示例,我确实不知如何写才能引人入胜,因为它实在是一些框框条条的东西,并不像图形引擎哪样注重效果的表现,所以,希望读者能耐心地看完所有示例介绍,望能从中找到你需要的功能。
注:以下每个示例均基于上一示例基础上修改,为此,相同部分不再重复。
Sample01
简介:
Hello World!
该例范展示了OGF框架的最基本架构及如何基于OGF创建你的游戏项目,运行后会在屏幕中心显示一段经典的"Hello World!"字样。
阅读全文
摘要: OGF游戏框架是一个基本MPL开源协议的开源项目。它是针对2D游戏普遍的执行流程而提出的框架,而并非一个图形引擎(内核图形引擎是基于HGE)。除了为游戏提供整套的管理规范及流程外,同时提供经常用到的计时器、动作引擎等附助功能;并以组件的形式提供,有利于独立扩展,减少组件的重复开发,加快开发进度。
此版本已实现整个游戏框架,能按暨定的思路运行,但个别设想的组件仍未实现,例如:网络、数据库及更多的对象库等(现已努力写代码中)。希望以此抛砖引玉,引入其他有兴趣的朋友共同参与开发。
感谢BEN、Randy对基础部分的开发作出的贡献!
阅读全文
摘要: 期待已久的LEGO智能风暴系列,终于得偿所愿入手了。早在05年的时候就看上了旧的RCX套装,当时2,000大洋,未能狠心买下,今天终于用上了32位的NXT,看来还是值得的。
回来后,足足花了一个半小时(大部分时间是在找零件)按说明书上的范例,搭起了第一台三轮车。由于8527没有配电池,只能出去家乐福买了6个充电池和充电器,又忍受了8小时的充电。终于第二天按范例写了一个使距离探测器的程序(虽然运行不太正常)并下载运行测试。
阅读全文
摘要: 实在忍受不了CSDN的博客功能了,经常出错,经常要维护,连文件上传也会丢失。。。所以,决定在cppblog上重新建BLOG,希望大家多多支持!
阅读全文