做游戏
Garfield
老人家
展开
-
又开始写代码了
先建了一个CGame类,把游戏控制的基本部分包装起来。结构如下:#pragma onceclass CGame{public: CGame(void); ~CGame(void); // 开始游戏 int Start(void); private: // 游戏消息循环 int GameLoop(void); // 游戏运行状态原创 2005-02-08 02:14:00 · 1463 阅读 · 0 评论 -
有些问题Mark下来先~~
刚刚做完测试, 简单的全屏Flip和BltFast,嗯...感觉又找回来了。自从上年国庆过后就没有碰DX,跑去研究SPI了。那时候做了个跟Permeo Secure Driver 差不多的东西,代理的是HTTP Connect而不是SOCKS,用来过滤学校代理出国外网的IP地址和玩网游。扯远了。刚回来看了一下,好像页面查看人数多了3。。难道有人来过?还是我自己刷的呢?……不管了,还是先记下问题,迟原创 2005-02-14 00:07:00 · 1317 阅读 · 0 评论 -
Marco的相~~And今天计划
刚收到Marco哥的相,好可爱啊……哈哈。我应该怎样称呼他呢?他叫我做舅舅。。。睡醒先去csdn把问题都搬出来问,然后继续开发我的game engine...下面是接下来的开发计划1.窗口模式下BLT不显示,今天要解决2.自动裁剪的BLT函数,带Alpha效果的Blt函数3.换页函数及FPS计算4.字体的输出类5.……暂时就这么多先吧,alphaBlt可以先不放上去。代码多数都是搬gp的。嗯……因原创 2005-02-14 03:37:00 · 1455 阅读 · 0 评论 -
美化了一下Blog以及今日总结
12点前在Blog加了个日历和一个深圳的天气预告。实用性又强了一点点了刚刚把CGraph类搞来搞去算是写得七七八八,基础的都搞得差不多了。增加了Blt,BltFast的封装(越界判断)以及CLS,CountFPS等函数。现在的demo是一个图片跟随鼠标移动,窗口模式下FPS平均为21,全屏约40多。明天我想可以正式开始做GUI界面部分了。先把父类CObject做出来,然后一级一级继承下去……COb原创 2005-02-15 03:25:00 · 1474 阅读 · 0 评论 -
做Skin类....这次有图看~~*_*
先看看我平时对着的开发调试屏幕是什么样子的吧这个游戏窗口背景图片是从吞食天地Online那里“借用”一下的,版权是游龙的..嗯...顺便帮他宣传了一下网址现在看看游戏窗口左上角是调试信息.本p3 433nb只能跑1x的fpx,如果帖图少点能上20,如果全屏,大概就是30多了.按F2切换那个东东,我两台机器测试起来都正常得不得了,一台Win2000,一台Win2003,其他用XP的人按起来就报错,要原创 2005-02-17 03:07:00 · 1264 阅读 · 0 评论 -
CGameFont类及CLabel类的诞生
今天比较大的成就应该算是做了CGameFont类和CLabel类。CGameFont是用来设置字体显示的,CLabel类是标签类,用于显示文本信息。由于用了DrawText API,可以显示多行字体并且自动换行,这下就舒服多了。至于以后可能还要弄Keyword加亮的版本,等等。现在卡在了CForm类的Draw上面。呃……刚才煮夜宵,年糕。趁着蒸的这段时间,我灵光一闪,嘿嘿,找到问题的解决办法了。至原创 2005-02-18 02:38:00 · 1644 阅读 · 0 评论 -
某些函数改为了inline方式优化。开始写CCursor类。
凌晨4:30看完了仙剑最后一集,哈哈又多点硬盘用了。那个2046down下来到现在看了两次,每次不超过5分钟。真的不知道说什么,找个机会删掉算了。说回游戏开发这里。一些调用频繁的函数我改为了inline优化了。另外在游戏结束的时候有6个可能出现的访问异常,后来排除了4个,现在还有两个。也需要转换成vc6+那个什么check的看看究竟在什么地方出了问题。这样看代码找太困难了。今天开始终于难以忍受No原创 2005-02-18 23:58:00 · 1542 阅读 · 3 评论 -
DirectInput问题的完满解决
今天又查了许多关于DirectInput的文档,甚至看了DirectX 9.0 SDK中的DirectInput Sample。他们的初始化方式都基本上一样,都从 directinput 的初始化一直到 directinputdevice 的 acquire。但是,M$的acquire是不对返回进行判断的,所以它不管acquire是否成功都会返回,退出初始化函数。而其他很多网上的事例初始化都大同小原创 2005-02-21 03:28:00 · 6864 阅读 · 0 评论 -
CDesktop类的开工~
CDesktop类负责处理窗口们。当一个窗口CreateWin以后,再在Window上面Add一些Control,把它Add到CDesktop里面就算完事了。当然在Add之前可以酌情保留其指针方便控制,也可以用CDesktop类的FindWindow()函数查找指定Name的Window,返回其指针再对其操作。而绘制桌面窗口的时候只需把desktop变量的指针传递给CGraph的RenderDes原创 2005-02-21 19:11:00 · 1431 阅读 · 0 评论 -
色深的一次测试。
由于我的机器不支持32Bit色深,因此特邀wwcbug同学帮忙做个测试。结果如下:窗口颜色 显示模式 表现-------------------------------------------------------------------------16Bit色深 窗口模式 鼠标设置关键色成功,Jpeg图贴图失败(无详细出错消息)24Bit色深 全屏模式 Crash (原创 2005-02-23 20:26:00 · 2600 阅读 · 2 评论 -
一次读取大Size Jpeg图的测试
由于TSOnline采用的是一个Jpeg图作为一个场景的设计,所以当场景比较大的时候,Jpeg图也会相应的比较大。因此做个测试看看读取Jpeg图的大小时间怎么样。壶关沙漠地图场景图片大小:2496 x 1920文件大小:868KB读取时间:3266 ms火盘古地图场景图片大小:1664 x 1280文件大小:367KB读取时间:1569 ms公共军团建设场景图片大小:1600 x 1600文件大小原创 2005-02-24 23:23:00 · 1587 阅读 · 0 评论 -
按钮类基本完成。
嗯……这个按钮类还算是OK了。再有今天下午停电,重新拿回了那本介绍VESA VBE的看了看ASM那些。。觉得学ASM真的非常非常重要啊~~特别是优化程序的速度。要是我学会了ASM,那就能自己写RLEBlt,加速Addtive,alpha,grayblt……如果用C++代码写的话,我想速度真的无法想象了。下一步,CScrollCtrl, CListCtrl, CInputCtrl。 Input的难点原创 2005-02-26 01:41:00 · 1600 阅读 · 0 评论 -
CGraph的增改
郁闷。一个年就几天过完了,好像什么感觉都没有。热闹的时间不够长,很不爽啊。明天是2.14情人节。嗯...不关我事,该做什么做什么。明晚又是一个人在家,找点什么娱乐?没有吧。来来去去都是那几样了...war3, coding, film, tv, music...etc.看着框架逐渐发展起来感觉非常的爽啊~~这次无论如何总应该做出点什么来了吧。代码帖上来先。如果这个Blog有关键字自动着色就好了。。原创 2005-02-13 21:38:00 · 1897 阅读 · 0 评论 -
网游开发构思
构思只是针对程序上的构思,游戏逻辑,以及美工,剧情等等环节,就等待引擎出来了先吧。希望有那么一天,而且不会太久。罗马不是一天建成的,坚持就是胜利。大体来说,网游当然是C/S结构的了。服务器和客户端都选用Visual C++编写。服务器端:服务器启动时读取脚本,装载地图数据,NPC配置,等等。玩家数据在玩家登陆时动态读取,为了数据处理方便,使用SQL Server作为后台数据库。玩家好友列表等等数据原创 2005-02-05 01:53:00 · 1326 阅读 · 0 评论 -
分几个层,慢慢细分,写代码。
看过一句话说当中国人还在研究算法,想着用链表还是什么的时候,印度人已经开始开着一个大数组在写代码了。。。不错,动手很重要,不过也要先规划一下,再说,我是软件工程的,迟早要这样做,先熟练一下吧。游戏具体可以分为几个相对独立的层分别完善各自代码,再组合。主控过程:---------------------------------------初始化图形模式读取资源,数据循环(){ 更新用户输入,鼠原创 2005-02-05 02:33:00 · 1439 阅读 · 0 评论 -
桌面管理类及窗口、控件类
桌面管理类负责窗口的显示,传递窗口消息,管理皮肤资源等作用。大致架构如下:class CDesktop{ AddWindow(CGameWin *win); // win是新增窗口的指针, 插入链表头 Render(IDirectDrawSurface TargetSurface); //TargetSurface为渲染目标 LoadSkin(LPCTSTR szSk原创 2005-02-09 04:17:00 · 1297 阅读 · 0 评论 -
添加了一个CGraph类
这个类主要用于绘图,帖图等操作.有些函数只是简单的包装了一下DX的API...也不知道这样好还是不好昨天发烧,头晕又头痛,感觉就像。。还没完成的,以后逐渐修改。类Graph.cpp文件如下:#include "StdAfx.h"#include "./graph.h"#include "./global.h"CGraph::CGraph(void): m_WinHeight(0){原创 2005-02-12 02:39:00 · 2236 阅读 · 0 评论 -
关于裁剪器以及窗口状态
刚才仔细研究了一下裁剪器发现原来BltFast是不能作用于有裁剪器的页面上的...失策失策,都怪以前没研究就直接抄代码。所以在窗口模式下模拟全屏的Flip的话,就需要用Blt操作将BufferSurface Blt 到主Surface上边来。那为什么不干脆跳过裁剪器这一步直接就用BltFast Copy到窗口的客户区呢?我想这里大概有一个窗口之间互相遮盖的原因,如果不用裁剪器自动管理窗口的裁减区域原创 2005-02-14 22:30:00 · 1444 阅读 · 0 评论 -
哈哈~今天进展顺利
还没有做到界面的部分,不过今天的进展还是令我十分满意的。首先我解决了全屏/窗口模式的动态切换问题。嗯..是我自己想出来的方法,没有参考,不知道跟gp的是否一样。不过我想原理大概都差不多吧。实现了动态切换是十分好玩的一件事。其次,新加了一个CSurface类要来包装ddsurface,这样管理起来方便多了,而且这是十分重要的一个部分,以后都很难会直接用到ddsurface了。这个类包括了动画,建立点原创 2005-02-15 20:57:00 · 1223 阅读 · 0 评论 -
DirectInput困扰了我半天。
今天下午外出办事。晚上吃饺子~~好好吃啊~DirectInput在初始化的时候困扰了我近半天的时间。令我困惑的是代码跟原来我写的旧的初始化代码完全一样,但是每当执行到Acquire()的时候,就会返回E_ACCESSDENIED。google过相关资料,还是没有任何头绪。最后翻出圣剑2的代码看它是在哪个地方初始化的。发现它是在收到WM_ACTIVE消息之后获取设备的。我还发现当我运行调试如果窗口并原创 2005-02-20 02:50:00 · 2271 阅读 · 1 评论 -
Class们的分工合作安排,消息的传递。
现在,有了CCursor类,有了CDesktop类,要开始考虑它们的合作问题了。首先我的基本想法是从CCursor类得到鼠标的事件信息,把按钮状态、指针位置的信息传递给CDesktop,CDesktop根据相应的消息,执行指定的命令。CDesktop类保存的桌面数据:当前焦点窗口:一个CWin*指针,处于最上方的窗口。当前焦点控件:一个CWin*指针,当前激活窗口用有焦点的控件。当前鼠标指针状态:原创 2005-02-21 23:31:00 · 1274 阅读 · 0 评论 -
窗体对消息的响应
对于鼠标的状态,我专门用了一个全局的变量存放,变量结构体如下: static struct MOUSE_EVENT_STRUCT { // 缓冲状态 BOOL DblClicked; // 有效双击次数 BOOL LButtonWasUp; // 左键曾经松开 BOOL RButtonWasUp; // 右键曾经松开 BOOL LButtonWasDown; // 左键曾原创 2005-02-22 18:57:00 · 1498 阅读 · 0 评论 -
模仿Windows的消息驱动机制获得了成功
模仿Windows的消息驱动机制,管理窗口,用回调函数处理事件,已经获得了成功。现在在UI方面,窗口已经可以实现拖拽、激活焦点、失去焦点等等特性,而且还能设置回调函数对消息进行相应的处理,消息用的完全是Windows标准WM消息,而且参数也是两个wParam和lParam,当然了,消息我只是用了很少的几个,为的是节省定义的时间和符合使用习惯。参数是自己定义的。按照这个基本框架,游戏的UI方面已经没原创 2005-02-23 04:28:00 · 1728 阅读 · 0 评论 -
先做Jpeg读取的部分~~
查找了一点Intel Jpeg Library的资料,觉得做起来也比较简单的。就先做Jpeg读取好了。。。然后看看TSOnline的目录下面,哈哈~~ijl15.dll,也是用了Intel Jpeg Library,其他还有盛大营运的泡泡堂,仙境传说,都有用到IJL。我觉得我正在逐步的发现TSOnline这个网游的的秘密,这个过程实在太有趣了。也许有一天,我就能把这个网游完完整整的科隆一次下来原创 2005-02-23 15:13:00 · 1434 阅读 · 0 评论