glest学习笔记2 重构

目前重构过程工作目录:

0.00-original

0.00(2)-original.fps

0.02-move.render.renderUnits.to.world.renderUnits

0.04-harvest

0.06-FirstAttackCommand

0.08-2ccRepair.hasCommonType

0.08-最后一个caommandTypes.但改了之后会crash.所以未改

0.10-computeFirstCtOfClass

0.12-替换全部的commandTypesMap

0.14-替换AiRuleBuildOneFarm中的test中的getCommandType函数

0.16-替换gui中的getCommandType函数

0.18-删去了UnitType中的commandType

0.20-fps

0.22-修改CommandType和UnitUpdater的关系.XXXUnitUpdater的变量未初始化

0.24-修改CommandType和UnitUpdater的关系.通过全局变量game修正bug

0.26-XXXUnitUpdater初始化放进UnitUpdater

0.28-UnitUpdater中的updateUnit转入World

0.30-重构ParthFinder为Singleton

UnitUpdater

1 class unitUpdater

void XXXCommandType::update(…)

{

unitUpdater->updateXXX( unit );

}

XXX代表Build、Move、Stop

 

 

2 UnitUpdater-CommandType

void XXXCommandType::update()

{

unitUpdater->update();

}

进而,将XXXCommandType::update()上升为CommandType::update()

void CommandType::update()

{

unitUpdater->update();

}

这样就可以把CommandType中对unitUpdater::updateXXX()的调用统一起来。

CommandTypeSkillType

CommandType和SkillType都是行为。但SkillType是baseic action;而CommandType是complex action, composed by skills。下面是类关系图。

 

3 CommandType-SkillType

signleton模式

ParthFinder转为为Singleton。

发现singleton模式可以让代码写得很优雅――免去了函数调用过程中传递ParthFinder参数,仅仅将ParthFinder头文件包含进来就可以了。

FPS

在屏幕上显示fps,如果每一帧都显示fps=1/Δt时,会发现显示的数字抖动很厉害,更本看不清是多少。

现在用“取均值”的方法解决了这个问题。显示连续5帧的平均的fps

4  FPS:29.1(图左上角)

RainParticleSystem

       RainParticleSystem的改动,原因如下:

游戏登陆画面出现时,背景中雨滴从天而降,但最下面的雨滴形成了一个明显的面,看起来很不舒服。

5 背景中的雨滴形成了一个“面”

RainParticleSystem初始化时,将particaly坐标修改为区域随机值。画面有了较好的改善。

6 随机化y坐标后的rain

rain的效果没有最初的好。一个比较好的方法应该是,登陆时rain partical不是从time =0时刻开始生成,比如说从time10.0开始生成。此时玩家登陆时看到的雨滴已经到达地面,不会在出现那个“面”了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值