2006-03-23炸弹人开发日志

事情终于变得比较顺利了,并且解决了昨天一个BUG。果然有时出去走走对心情有正面的作用。特别是今天下了些雨,空气这么好不出去走走真是浪费啊。

今天完成的事:

1.       解决了昨天引用User_Data地址无效的BUG

2.       地图中对象的选择与拖动。

3.       对游戏中的对象产生有了初步的想法。

 

明天任务:

1.       决定游戏中地图的属性细节,比如地图有多大,最小格子有多大。

2.       对地图编辑的代码进行整理。

3.       完成资源文件xml的数据。

4.       对地图编辑器的介面进行调整。


5. 完成地图编辑器的数据读写功能

 

问题集:

Q1:怎么画粗线呢?

 

 

经验:

1.  CL_Canvas::set_pixeldata我试着用了好几次都出问题,这个函数还是不要用算了。

 

2.  关于画布(CL_Canvas),使用的时候,假如select_surface了多个表面,那么画布的大小将会是最小的那个表面的长与宽,而不是最后一个表面,这点必须注意。

 

3.关于pitch的概念

   一般的,会去解释pitch的通常都是新人(恩,看什么?我承认我也是新手)。最初看到它是在《游戏开发大师技巧》一书中发现的,那时没看仔细。可记得他说的一句话,pitch的概念非常非常重要。于是,这事就成了思维里的一个时钟,不时的出来骚扰一下我。经过不段的骚扰,以及对相关资料的理解。其实这是一个很简单的概念,用来存放表面数据在逻辑上是一个二维数组。我们知道在内存或显存中,很难保证经常有连续的空间存放图片的数据。所以就要分段,那么分段的大小是多少呢?1Byte还是 1M ?于是乎库程序员就把这个恼人的问题交到我们手中啦。换句话说,我们定的pitch值就是要尽量保证它够大,以及一定连续。太大则分配不到合适的存贮空间,太小则数据读写操作耗时(想象一下,memcpy这类函数,拷贝的数据越多,速度就越快)。按照我们脑子里舒服的理解,一般情况下pitch就等于 图片的宽X 每个象素的字节数。不过这个值在理论上,不应该影响我们的操作,不同的值最多会在速度上有不同的表现。另外在clanLib游戏开发库中的CL_PixelBuffer构造函数中的pitch参数经过实验,也发现其值对于其操作结果并没有太大的影响。

 

所以说对于年代久远的游戏程序员来说是非常重要的概念,现在也是重要吗?不过我只是认为肯定重要性是降低了。

 

 

关于游戏对象的创建:

1>xml中不但定义游戏对象的ID,并且还要定义其类别。

2>工厂对象就是根据不同的类别创建相应的对象,(如果对象种类太多的话,可能首先还要创建相应的工厂)这样做的话,那么就不用为每个奖品(中毒,加火焰等)专门做一个类。而是所有奖品共用一个类,它们的不同则是由构造参数决定。这样就解决了直接通过ID创建对象会产生大量类的情况。

 

 

发现一个BUG,改完之后,删了些代码,最终发现有两个类的代码,结果目的只为了在其中添加一条语句。哈~

 

 

地图编辑器的字体好难看,而且只支持英文。看它的例子,都是使用一个图片来存放相关字符的。这种方法不可能用在中文上,会死人的啊。早先看到clanLib库说它的字体方法,有使用FreeType,以后抽空看看能不能用上FreeType里面的中文字呵。

 

 

虽然我的地图编辑器总体上还是很难看地。但其实它的GUI都是画上去的,之所以使用clanLib而不用DELPHI之类的工具,一方面是为了兼容里面的资源文件。另一方面,相对的,地图编辑器的画面没有游戏本身来得重要。而且我也是刚学的clanLib,所以应该以相对有经验的情况去写游戏代码。还有地图编辑器由于代码相对少很多,修改起来难度也不大。所以地图编辑器也间接成了我练手的工具。但,不代表会粗粗制滥造,只是完善的工作优先级比较底而已

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值