- 博客(51)
- 资源 (32)
- 收藏
- 关注
转载 八款开源 Android 游戏引擎 (巨好的资源)
初学Android游戏开发的朋友,往往会显得有些无所适从,他们常常不知道该从何处入手,每当遇到自己无法解决的难题时,又往往会一边羡慕于 iPhone下有诸如Cocos2d-iphone之类的免费游戏引擎可供使用,一边自暴自弃的抱怨Android平台游戏开发难度太高,又连个像样的游 戏引擎也没有,甚至误以为使用Java语言开发游戏是一件费力不讨好且没有出路的事情。事实上,这种想法完全是没有必要且
2012-05-08 17:01:45
1473
转载 一个简单的游戏服务器框架
最近一段时间不是很忙,就写了一个自己的游戏服务器框架雏形,很多地方还不够完善,但是基本上也算是能够跑起来了。我先从上层结构说起,一直到实现细节吧,想起什么就写什么。第一部分 服务器逻辑服务器这边简单的分为三个部分,客户端的连接首先到达网关服务器,网关这里有个线程用来监听来自与客户端的连接,然后在将这些数据发送到游戏逻辑服务器上,这个逻辑游戏服务器上,数据的交互就是通过与数据服务器进行交
2012-05-08 17:00:23
773
原创 3dsmax模型导出插件调试技巧
<br /> 以前调试3dsmax的模型导出插件总是很头疼,因为3dsmax的插件是在启动的时候加载进去,在运行中是无法卸载的,这样每一次修改都得重启3dsmax,而且3dsmax的启动时间还特别长,很是郁闷.昨天晚上没事逛书店,偶然发现一本书在讲3dsmax的导出插件,提到了关于调试的一个小技巧,欣喜若狂,立马回家试验了一下,果然很爽. <br /> 其实很简单,就是再写一个dll,实际的操作都在这个dll里面,每一次导出动作都将实时的加载这个dll,导出完毕再卸载这个dll文件
2011-05-16 16:46:00
3213
原创 3dMAX 导出插件
<br />第一次编写max场景导出插件的经验分享(仅限第一次写max插件的兄弟姐妹)<br /><br />这几天第一次开始写max插件比较兴奋,作为这方面的新手有些经验和同样是新手的兄弟姐妹们分享一下<br />1。插件就是一个dll虽然他的名字未必输出是dll也可能是dlo,dle..<br /><br />2。既然是dll就一定有一个DllMain函数<br />如果你和我一样什么都不懂不用害怕,打开max6sdkmaxsdksamplesimpexp中的3dsexp.vcproj这个是3ds文件的
2011-05-16 16:38:00
3038
1
原创 六种Windows Socket I/O模型(转)
<br />本文简单介绍了当前Windows支持的各种Socket I/O模型,希望对初学者有所帮助。<br />如果你发现其中存在什么错误请务必赐教。<br /><br />一:select模型<br />二:WSAAsyncSelect模型<br />三:WSAEventSelect模型<br />四:Overlapped I/O 事件通知模型<br />五:Overlapped I/O 完成例程模型<br />六:IOCP模型<br /><br />老陈有一个在外地工作的女儿,不能经常回来,老陈和她通
2011-01-14 15:16:00
965
原创 C++ 实现flash动画播放——Flash和c++的交互
<br />下面简单讲解一下最近实现的一个用C++做控制,用flash 做表现的桌面精灵。如果时间允许,我将在blog上全程介绍自己的开发进展。 <br /> <br />1,如何在windows程序中播放flash?<br />首先创建一个vc项目,可以是win32程序,也可以是MFC。<br />然后加载shockwave flash object控件,在win32中可以使用如下方式进行加载:#import "c://windows//system32//macromed//flash//flash9b
2010-12-01 23:07:00
2148
原创 Ogre场景编辑器Ogitor的使用总结
基本控制1.场景中的坐标:x轴z轴表示左右,Y表示上下2.QWEASD:摄像机方向、行走控制(在“Fly”与“Walk”模式下,作用略有不同)3.鼠标中键+移动:晃动摄像机镜头4.鼠标右键+移动:旋转摄像机镜头5.Alt+Mouse Wheel:靠近或远离选中对象6.Alt+鼠标右键+移动:摄像机围绕选中物体旋转7.将摄像机放置到Scene Tree中选中的对象前:双击Scene Tree中的对象名字或按“F”键(只有场景在“Fly”模式下才有效)8.增加摄像机移动速度:场景工具条中的“Speed+”(图标
2010-11-10 17:15:00
6765
原创 Ogre场景编辑器Ogitor源代码的构建
<br />Ogitor-0.4.2源代码构建,不少时间,这里记录一下:<br />下载源代码的地址为:http://hg.ogitor.org/v0-4 点击zip(这个搞得我找了很久)<br />可执行程序下载地址为:http://www.ogitor.org/Building+Ogitor&structure=Development(一)构建QT <br />1.环境变量中加入bin路径:PATH--->C:/Qt/4.6.3/bin(我的路径是)<br />2.环境变量中加入qt的路径:QTDIR-
2010-11-10 17:12:00
4498
3
翻译 Ogre粒子编辑器 ParticleEditor 使用
<br /> 在这个教程中我们将创建一个简单的粒子系统效果。通过创建这个基本的粒子系统我们将熟悉很多编辑器的界面,希望我们将知道这个编辑器和Ogre的粒子系统能做什么。<br />在本教程中我们将创建一个这样的粒子系统,一个简单的喷洒效果<br />提示:本教程假定你没有修改编辑器的任何数据文件。<br /> 好了,打开粒子编辑器。默认的粒子系统将被加载到背景,所有主要编辑窗口都将显示出来,除了Editor Options 窗口虽然显示但默认只显示标题。<br /> 打开Template Managem
2010-09-10 15:03:00
5468
1
原创 OGRE1.7 3D图形引擎2:singleton,Smart Point,Memory Manager
<br /> singleton模式是软件工程中的一个术语,他是一种设计模式,将类的实例化个数限制在一个。Ogre也提供了相应的模板 template <typename T> class Singleton。只需通过该模板创建的类,既可以使用Class::getSingleton()方式获取类的唯一实例。Ogre中不少类使用了singleton设计模式:大量的Manager类,Profiler类,Root类,这些整个程序运行过程中只有唯一实例的类都是使用singleton模板创建的。当你需要运行
2010-08-31 14:15:00
849
原创 OGRE1.7图形引擎使用1:编译ogre
2009年12月31号,OGRE1.7RC版发布 2010年2月03号,irrlicht发布1.7.0 2010年2月17号,irrlicht更新至1.7.1 2010年2月28号,OGRE发布1.7RC(final)版,两大开源引擎拼得很凶啊:-),对广大好学者来说是件好事情。Iphone项目总算gold了,听说卖的不错。休息了一下,开始研究OGRE1.7。 OGRE1.7开始使用CMake来生成项目解决方案。这个很方便的让跨平台者配置不同平台下自己的项
2010-08-31 14:10:00
602
原创 对CRITICAL_SECTION理解的总结
很多人对CRITICAL_SECTION的理解是错误的,认为CRITICAL_SECTION是锁定了资源,其实,CRITICAL_SECTION是不能够“锁定”资源的,它能够完成的功能,是同步不同线程的代码段。简单说,当一个线程执行了EnterCritialSection之后,cs里面的信息便被修改了,以指明哪一个线程占用了它。而此时,并没有任何资源被“锁定”。不管什么资源,其它线程都还是可以访问
2010-01-11 17:12:00
629
1
原创 Direct3D中设备丢失处理
设置丢失 设备丢失的典型情况:图形显示丢失焦点,例如按下alt+tab键,或者弹出一个系统对话框;调用Reset接口函数的任何错误也会导致设备丢失。丢失后,所有继承自IUnknown的方法仍可以继续正常正作,除了Present()会返回D3DERR_DEVICELOST错误代码。 处理设备丢失:在重设(reset)丢失的设备之前,必须重新创建所有相关的资源(包括显
2009-07-29 11:56:00
1591
原创 用DirectX方式抓屏——3D游戏场景中的拍照
每个DirectX程序都包含一个被我们称作缓冲的内存区域,其中保存了和该程序有关的显存内容,这在程序中被称作后台缓冲(Back Buffer),有些程序有不止一个的后台缓冲。还有一个缓冲,在默认情况下每个程序都可以访问-前台缓冲。前台缓冲保存了和桌面相关的显存内容,实质上就是屏幕图像。我们的程序通过访问前台缓冲就可以捕捉到当前屏幕的内容。由DirectX的底层优化机制做保证,我们的抓屏效
2009-07-27 15:25:00
5774
原创 Windows下删除.svn文件夹的最简易方法
SVN是我认为目前最方便的版本管理体系。我最早一次接触版本管理是大学刚毕业时在深圳腾域游戏公司当时用的是VSS,后来也有接触过SVN,但是由于不是怎么了解,加上大家都用VSS习惯了,所以当时没有完全接纳SVN,今年,我来了网纤时代,搜狐要求我们全封闭形开发,现在用到的版本管理就是SVN,随着对SVN的深入了解,我觉得VSS跟SVN相比,存在很多的不足。 我十分喜欢SVN的
2009-06-11 01:58:00
4269
原创 四叉树和八叉树的剔出
传统计算机图形应用--特别是的应用的需要一个实时,交互的方法来现实--通过处理一个发送到显卡的数据的最有效的图形数据子集的方法来决定图形数据的显示,而不是传送全部的数据,四叉树,八叉树,Bsp树,背面剔出,pvs集合很多其他方法都是针对这个目的而提出的。 流行的计算机图形卡近些年在处理能力和处理方法上程指数增长,当前的状态揭示出很多时候应该更好的和快速的找到一个好的数据集把它们送到显
2009-06-11 01:54:00
900
原创 D3D中设置渲染SetRenderState()使用
我把根据SDK的帮助文档翻译,结合自己的理解把渲染类型D3DRENDERSTATETYPE写出来,大家来看看,请指出不正确的地方.呵呵。DDRS_ZENABLE 用于控制深度缓存的状态。它的状态是用一个枚举类型来表示的:D3DZB_TRUE、D3DZB_FALSE和D3DZB_USEW。在D3D中z-buffering 是对z轴上的信息起作用,所以,如果你需要表示的是2D信息的话,可以用pd3dD
2009-06-06 16:03:00
2617
原创 D3D——四元数
我必须承认到目前为止我还没有完全理解四元数,我一度把四元数理解为轴、角表示的4维向量,也就在下午我才从和同事的争辩中理解了四元数不完全是角、轴这么简单,为此写点心得给那些同我一样搞快了2年3D游戏的还不清楚四元数的朋友。 为什么使用四元数 先来看看一般关于旋转(面向)的描述方法-欧拉描述法。它使用最简单的x,y,z值来分别表示在x,y,z轴上的旋转角度,其取值为 0
2009-06-04 12:56:00
1875
原创 VC知识点2
一、打开CD-ROM mciSendString("Set cdAudio door open wait",NULL,0,NULL); 二、关闭CD_ROM mciSendString("Set cdAudio door closed wait",NULL,0,NULL); 三、关闭计算机 OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构 OsVers
2009-04-30 13:54:00
1032
1
原创 VC知识点1
1.如何建立多语言版本的程序?资源中String Table,点插入副本,可以选择语言.添加字符串IDS_XXX.读取时,用 LoadString(IDS_XXX,szBuffer,nSize).2. 如何取得文件版本信息?====================================================LPTSTR CChrome::GetFileVersion(LPCTS
2009-04-30 13:04:00
771
2
原创 远程调试 VS2005
顾名思义,就是要调试的程序和调试器本身并不在一台机器上。由于虚拟机技术的盛行,在虚拟机里面运行待调试的程序,而在外面运行调试器,也是一种比较流行的做法。2 为什么使用远程调试 远程调试有如下好处: a. 能让产品运行在一个比较干净的环境。有的时候如果产品安装在一个装好集成环境的机器上,某些bug并不能显示出来。 b. 易于部署调试环境。很多产品都非常复杂,比如很多都以service
2009-04-29 23:26:00
1903
原创 写个自己的调试器
对于写了一段时间的程序员来说,了解一些debugger的实质无疑对于技术的提高是有很大帮助的。而debugging自身也是一门非常细节化,比较复杂的技术。好的Debug工具如SoftICE,也是技术稍深一些的程序员必备的技术之一。这篇随笔并不会去讨论Debug技术的实质,而只是利用Platform SDK和最新的DbgHelp.dll提供的API作为引擎写一个自己的debugger,也即是写一个
2009-04-21 18:02:00
2057
1
原创 演示如何dump指定文件的符号信息
近来在工作中总是会有一些dump文件需要分析,今天正好有点空,整理了一段代码,贴上来供大家作例子。代码是完整的,建个新工程加入它即可。闲话少说,例子代码如下。 //============================================================================// SymDump: A small tool used to
2009-04-21 17:57:00
1012
原创 http 断点续传
原理:1. 打开本地文件fopen,移动文件指针到文件尾fseek2. 获得文件大小ftell, 格式化HTTP请求头 "Range: bytes=ftell -", 以偏移httpfile指针,实现断点续传3. 获得要下载的文件,以二进制形式传输,OpenURL4. 接收数据,防止阻塞PeekMessage Sample:char string[25]; CString StrFileNa
2009-04-08 11:23:00
1034
1
原创 使用URLDownloadToFile http 下载文件
#include "Windows.h"#include "resource.h"#include "shlobj.h" #include #pragma comment(lib, "Urlmon.lib")HWND dlg;HANDLE hinst;//实现IBindStatusCallback接口,以便处理进度条class CBindCBHttpCallback : publ
2009-04-07 15:56:00
1272
原创 不规则对话框的实现 C++
///////////////////////////////////////////////////////////////////////////////////////////////////////////////// 在 OnInitDialog() 时初始化相关数据 HDC hdcs; HBITMAP pBitmap; CBitmap m_bmp; pBitmap
2009-03-31 18:28:00
1291
2
原创 在MFC中使用Tab Control
说实话,我刚开始看见Tab Control的时候,觉得很简单。哪知道用了一下,才发现自己错了。要用好它,还是需要一些技巧的。经过网上搜索资料,以及我自己的摸索,把一些要点记录在这里。Tab Control的运行效果有点像Property Sheet,但两者还是有一些区别。我的理解就是Property Sheet主要用在对话框中,对数据进行进行分类管理。而Tab Control使用范围更广一
2009-03-21 14:50:00
561
原创 lua和C++相互交换数据
下面的代码演示了在C++和lua脚本之间传递数据。首先在C++中创建一个table,添加元素,然后放置到lua的全局表中。在lua脚本中可以使用C++创建的这个表。然后在脚本中创建一个表,以脚本返回值的方式返回给C++,在C++中可以读取表中的值。 例子代码需要一个args.lua的lua文件,要手工创建,我把它放到了C盘根目录下。 // cpplua.cpp : D
2009-03-18 11:07:00
1980
原创 C/C++ 调用 Lua
lua作为小巧精悍的脚本语言,易于嵌入c/c++中 , 广泛应用于游戏AI ,实际上在任何经常变化的逻辑上都可以使用lua实现,配合c/c++实现的底层接口服务,能够大大降低系统的维护成本。下面对lua和c/c++的交互调用做一个实例分析:lua提供了API用于在c/c++中构造lua的运行环境,相关接口如下://创建lua运行上下文lua_State* luaL_newstate(void) ;
2009-03-18 10:40:00
1266
原创 用C++ 实现(程序自杀)
近日看到网友询问如何实现程序运行之后把自己删除的方法,用户只要一运行程序,可执行文件就没有了,可是程序还是在跑,胆小的只怕要喊"鬼呀!","老婆,快出来看上帝"甚么的。其实最典型的用法是写反安装程序. 闲来无事,查到一种还算巧妙的“删除自己”的方法。 大家都知道,一般的程序运行的时候,可执行文件本身是被操作系统保护的,不能用改写的方式访问,更别提在本身还在运行的时侯删除自己了。
2009-03-11 16:53:00
2856
1
原创 C++ 注册表的读写
//////////////////////////////////////////////////////////////////////////////////////////////////////////////// 先写两个例子 const char _szLogSubKey[] = "SOFTWARE//SystemWalker/OutputAssist//
2009-03-11 15:49:00
10560
原创 用命令行批处理编译MFC
/////////////////////////////////////////////////////////////////////////////////////////////////////////////开始的时侯先设定编译环境这里以VS2003上例 @SET VSINSTALLDIR=C:/Program Files/Microsoft Visual Studio .N
2009-03-04 13:08:00
1283
原创 编译错误总结
编程时经常遇到一些编译错误,这些都是我遇到过的,去百度、Google找了半天找到的,现在整理一下,方便以后查找。。。统一格式: ID.【错误提示】:编译器提示的错误信息 【说 明】:产生此错误的根本原因 【解决方法】:解决此错误的具体方法 1. 【错误提示】: libcmtd.lib(crt0.obj) : error LNK2001: unresolved
2009-03-02 16:52:00
560
原创 c++异常处理
异常,通常是指程序困难检测到的,运行是不正常的情况,例如被0除,数组越界访问等等。异常处理的语法通常是try{ throw() } catch(){}关键字try以及它后的大括号中的内容我们称其为try块。简单的说,它包含的是可能会出错的地方(就是我们要检测的地方)。当我们检测到一个错误信息的时候,关键字throw就把这个错误抛出来(强呀:)),抛出来怎么办呢?抛哪去呢?我们的catc
2009-02-27 13:19:00
586
1
原创 Extern使用方法总结
#include "stdafx.h" 1.extern用在变量声明中常常有这样一个作用,你在*.c文件中声明了一个全局的变量,这个全局的变量如果要被引用,就放在*.h中并用extern来声明。 2.如果函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其它作用。即下述两个函数声明没有区别: extern int f(); 和int f(); 如果定
2009-02-27 13:12:00
543
原创 p2psim产生拓扑文件的代码
p2psim软件中官方的最大节点数的拓扑文件也就2048个节点,这对于需要模拟大量节点的仿真就存在一些问题。之前走了一些弯路,以为官方只给了2048个节点的拓扑 就意味着p2psim模拟的最大节点数为2048个。其实不是这样,官方给的拓扑仅仅是模拟真实的网络环境中的时延,但是对于不需要时延那么准确的实验来说,可以自己来制作拓扑。前几天写了一个小代码来生成拓扑:#include #in
2009-02-27 13:09:00
1090
原创 c++实现文件传输之四:断点传输
所谓的断点续传就是指:文件在传输过程式中被中断后,在重新传输时,可以从上次的断点处开始传输,这样就可节省时间,和其它资源.实现关键在这里有两个关键点,其一是检测本地已经下载的文件长度和断点值,其二是在服务端调整文件指针到断点处实现方法我们用一个简单的方法来实现断点续传的功能.在传输文件的时候创建一个临时文件用来存放文件的断点位置在每次发送接受文件时,先检查有没有临时文件,如果有的话就从临时文件
2009-02-27 13:06:00
5423
5
原创 c++实现文件传输之三:断点续传与多线程传输转
继木马编程DIY的上两篇,现在我们开始讨论断点续传与多线程文件传输的实现.其实这两项功能是下载软件所必不可少的功能了,现在我们把它加到自己的木马中来感受感受.提到多线程下载,首先向网络蚂蚁的作者洪以容前辈致敬,正是由于网络蚂蚁而使得多线程下载被关注并流行起来.在这本篇文章中我们将简单的实现支持断点续传和多线程传输的程序.为了更清晰的说明问题,我们将断点续传与多线程传输分别用两个程序来实现多线程传
2009-02-27 13:03:00
7756
5
原创 c++实现文件传输之二
在上一篇中,我们以经介绍了程序的流程和框架,在本篇将详细讨论各个功能的实现主要包括1.获取磁盘信息2.获取目录信息3.获取文件信息4.运行指定文件5.删除指定文件6.删除指定目录7.创建指定目录8.上传下载文件9.获取远程文件图标获取磁盘信息磁盘信息可以用API GetDriveType来实现,它以路径名作为参数(如C:/)返回磁盘类型,其实例代码如下DWORD GetDriverProc(COM
2009-02-27 13:02:00
13213
大公司 笔试 面试题目,华为 中兴 阿里巴巴 百度 腾讯 网易 微软 intel 大唐电信
2009-04-22
http 断点续传 C++ 实现 vs2003
2009-04-09
跟据域名为IP,Ping 网络速度
2009-04-03
C++ MFC 界面实例开发
2009-04-01
资料网叶 定时器 时间日期 用法
2009-03-17
UML图.rarUML图.rar
2009-01-08
MFC 或VC 程序运行时所须要的所有DLL
2008-12-19
使用md5校验和算法保护文件.rar
2008-11-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人