kaikai向前走

转职任务完成。崭新fn诞生
posts(83) comments(209) trackbacks(0)
  • 博客园
  • 联系
  • 订阅 订阅
  • 管理

公告

project: CurvedAni
project: TankWAR
project: Lumines
昵称:kaikai
园龄:7年1个月
粉丝:1
关注:1

搜索

 
 

常用链接

随笔分类

  •  c/c++语言(31)
  •  ogl2d(10)
  •  updated from kaikai's weblog(7)
  •  算法与竞赛(19)
  •  游戏(17)

随笔档案

  • 2009年11月 (1)
  • 2009年10月 (2)
  • 2009年9月 (2)
  • 2009年7月 (6)
  • 2009年3月 (2)
  • 2008年2月 (2)
  • 2007年7月 (3)
  • 2007年5月 (1)
  • 2007年4月 (1)
  • 2007年2月 (2)
  • 2006年10月 (1)
  • 2006年8月 (1)
  • 2006年7月 (4)
  • 2006年3月 (2)
  • 2006年2月 (2)
  • 2006年1月 (1)
  • 2005年12月 (5)
  • 2005年11月 (4)
  • 2005年10月 (6)
  • 2005年9月 (10)
  • 2005年8月 (2)
  • 2005年7月 (4)
  • 2005年6月 (1)
  • 2005年4月 (2)
  • 2005年2月 (1)
  • 2005年1月 (1)
  • 2004年12月 (15)

相册

  • etc

blog

  • isabelcat's 呢喃碎语
  •  kaikai's weblog
  • rimy my love
  • rimy my love
  • roof的咖啡屋
  • sindgers的原野
  • 学妹的blog
  • Snokin's Blog
  •  步履蹒跚
  •  毛毛虫的air3d
  •  农夫三拳有点疼
  •  跳蚤之家
  •  我要过六级
  •  小小的垃圾袋
  • 杨人jloss
  • 看不懂就对了
  •  臻臻
  • 可爱妹妹正花季
  •  终于有了个茅草棚
  • 同事的茅草棚

links

  • CGDN论坛
  • gba开发者论坛,现又添加psp/ps2,nds等版面
  • Tongji Online Judge
  • 计算机图形学团队
  •  蜘蛛游戏开发小组
  • 专注游戏开发

宠物

  • sindgers
  • adopt your own virtual pet!
  • 臻臻

  • adopt your own virtual pet!

积分与排名

  • 积分 - 64545
  • 排名 - 1641

最新评论

阅读排行榜

评论排行榜

推荐排行榜

2009年11月2日

TFS:添加已经在项目中但不在TFS中的文件

转移一个项目的代码,会发现这些代码不在TFS的管理中也没有成为新增文件(没有TFS的加号小图标)。

这时可以选中这些文件后从菜单里选择

文件->源代码管理->从源代码管理中排除

然后再次选择

文件->源代码管理->从源代码管理中排除

去掉勾选。于是这些文件进入了挂起的更改。

posted @ 2009-11-02 11:18 kaikai 阅读(193) 评论(0) 编辑

2009年10月20日

宅电脑桌

突发奇想,躺着用电脑是啥感觉?
于是涂鸦了一个桌子.你可以把电脑安放在上面.躺好后把脚跟的桌子拉到正上方.

 

posted @ 2009-10-20 23:39 kaikai 阅读(164) 评论(3) 编辑

2009年10月17日

动作游戏自定义技能探讨

kaikai 21:18:46
最近对格斗类的游戏感兴趣
kaikai 21:19:06
想做格斗过关的游戏:)
下雨了... 21:19:09
格斗游戏是指类似KOF ?
下雨了... 21:19:30
合金弹头那种过关游戏?
kaikai 21:19:42
差不多。
下雨了... 21:20:30
我记得好像有玩过类似的别人制作的游戏 和魂斗罗差不多
kaikai 21:20:56
主要是动作游戏。再增加格斗方面的内容。
玩家能选择的动作以及动作的组合方式多而灵活。
kaikai 21:21:09
这样玩家可以发挥一些创造性
下雨了... 21:22:07
额 听起好像小时候玩红白机的游戏
kaikai 21:23:15
恩
kaikai 21:23:28
忍者龙剑传~
下雨了... 21:24:10
哦 那个有玩过
kaikai 21:24:16
甚至连玩家的动作本身也可以让玩家自己来定义。
下雨了... 21:24:41
这个就困难点了吧
kaikai 21:27:29
我还在构思中。如果把动作拆为一些元素,元素之间有一些相互限制条件,然后交给玩家。应该是可以自定义的。只是要事先预知玩家能获得的动作不至于太夸张,远远超出了关卡设置的难度就不好玩了。
下雨了... 21:28:08
恩 这也是个办法
kaikai 21:30:20
动作元素可以是移动(如跳跃、平移、加速平移、瞬移等)、伤害(伤害范围、伤害类型、杀伤力等)、动画(预先设计了若干的动画,根据玩家选择的移动方式做一定的过滤,余下的可以任意选择)等等。
下雨了... 21:30:58
那样的也不错啊 就像是自己制作出的人一样
kaikai 21:30:58
哦,还有声音
kaikai 21:32:38
限制条件,比如玩家需要在游戏中收集某种物品,设计动作时不同的元素将消耗不同的的该物品。
kaikai 21:33:08
这使得玩家无法一下子获得很强的动作。但越玩角色能力越强
下雨了... 21:33:13
恩 
下雨了... 21:33:43
也就类似RPG游戏 升级加力量
kaikai 21:36:30
对。只不过这里获得的能力需要玩家在实时的游戏过程中随机应变的使用。如果是回合制则这些能力将偏向于计算而不是运动直觉。
玩家大致可以在这个维度上分2类,一种是依靠直觉的,一种是依靠理性计算和推理的。前者力求游戏过程的流畅和节奏带来的爽快感。后者则享受运筹帷幄的满足感
下雨了... 21:37:26
恩 可是说起来容易 做起来应该不简单吧
kaikai 21:37:28
相比之下大部分玩家应该是属于前者的,因为后者上手难度高。
kaikai 21:37:32
对
kaikai 21:38:29
我现在只是信口说一通。真的要实现出这个系统,肯定会遇到很多细节的困难问题。

posted @ 2009-10-17 21:47 kaikai 阅读(109) 评论(1) 编辑

2009年9月17日

TFS如何跨分支合并未签入的文件

昨天晚上单刷噩梦汜水关。毁了2套武器,吃了无数的药和大力丸,耗尽复活币。终于干掉了华雄。
同时也想到了如何将一个分支上暂时不能签入但又需要转移到其它分支上的大量代码妥善转移的方法。

1.       获取文件清单

首先,在vs中打开挂起的更改窗口:视图->其它窗口->挂起的更改
选中要转移的文条件,然后点搁置,填写搁置集名称,然后去掉在本地保留挂起的更改选项,点搁置确认。
 
注意,此时本地挂起的更改都已经被撤销了。

 回到挂起的更改窗口,选择取消搁置,在取消搁置窗口的结果列表中选中刚才的搁置集,并点取消搁置确认。

    此时刚才搁置的文件又回到了本地。

 

然后,打开输出窗口:视图->输出
在显式以下输出中选择源代码管理 – Team Foundation
可以看到一串形如:

取消对 $/project/…/*.* 的更改的搁置

的文件清单,将所有这些清单剪切到你熟悉的文本编辑器,把头尾部分去除,只保留分支内的目录

如橙色部分:

取消对 $/project/Sources-branch-0.0.62/GameEngine/fsm/state.cpp的更改的搁置

将整个清单剪贴备用。

 

2.       合并代码

获取需要转移的目标分支(建议获取最新版本的代码,避免多次合并)

用Beyond Compare 3比较两个分支目录。

在Beyond Compare中选择File Filters
把剪贴板上的文件清单贴在Include files内
Beyond Compare内选择Show No Orphans,Only Compare Files 

此时仅列出所有原本挂起的更改文件。

手动确认和合并你做出的修改。请注意,这里需要格外仔细!
因为是2个不同分支的代码,BeyondCompare列出的不同的地方不仅仅是你要做的修改。
 

3.       签出目标代码

在目标代码下建立checkout.bat文件,内容如下

call “%VS80COMNTOOLS%vsvars32.bat”

for /F “” %%i in(filelist.txt) do tf checkout %%i

建立filelist.txt,内容是刚才剪贴板的文件清单。
然后双击checkout.bat运行后签出所有清单内的文件。
 

4.       最后签入

建议你再review一下所有要签入的文件。

 

谢谢你阅读完整个过程!
kaikai

posted @ 2009-09-17 20:06 kaikai 阅读(364) 评论(1) 编辑

2009年9月8日

友元接口-限制你的友元类数量

友元接口-限制你的友元类数量

 

在写C++程序时,也许你遇到过这样的情况:
在一个类有一组策略,而且这组策略的实现都需要访问A的一些成员,而且这些成员并不希望被其它类所访问。
一般这些成员被期望设置为保护或者私有的,并且这组策略被当作这个类A的友元类。如:

 

Code
class Strategy1;
class Strategy2;
class Strategy3;

class A
{
public:
         friend class Strategy1;
         friend class Strategy2;
         friend class Strategy3;
private:
         
void _foo();
         
int _bar;
};

现在,假如你需要添加新的策略Strategy4为了维持这种微妙的关系,你需要把Strategy4添加为类A的新的友元类。
随着策略的增加,这个过程不断扩展A的友元类,最终你恐怕不会喜欢你看到的代码。并且由于每次增加策略都需要使得依赖A的代码重新编译,这里一定有什么不妥之处。

我想到一种解决方法,可以让你的代码看上去不算太混乱。
首先,既然这组策略以相似的情况出现在A的周围,那么它们可能有相似之处。比如它们可能需要访问A的同一部分成员。
那么假如通过一个代理类来访问这些成员,那么这组策略就不必都是A的友元,只要这个代理是A的友元即可。
这个代理我称之为友元接口。

Code
class IFriendA_Strategy;

class A
{
public:
         friend class IFriendA_Strategy;
private:
         
void _foo();
         
int _foo2(int p) const;
         
int _bar;
};

class IFriendA_Strategy
{
protected:
         typedef IFriendA_Strategy Friend; // 统一友元接口的访问方式

         
// 想必这组函数的实现不必给出了吧
         static void _foo(A& rA);
         
static int _foo2(const A& rA, int p);
         
static int get_bar(const A& rA);
         
static void set_bar(const A& rA, int value);
};

class Strategy1 : protected IFriendA_Strategy
{
public:
         
void x(A &ra, int p)
         {
                  
// 于是你可以访问了
                  Friend::_foo(ra);
                  
int f = Friend::_foo2(ra, p);
                  Friend::set_bar(ra, Friend::get_bar(ra) + f);
         }
};

 

如此一来,既完成了友元关系,又减少了依赖关系。
缺点在于代码不具备防御性,非授权类可以轻易的获得访问A保护成员的能力。只需要从友元接口继承即可。
这里再进一步可以看到,如果类A有多组不同方面的策略,这些策略需要访问A的成员的不同子集,那么它们可以独立的归到各自的友元接口上,互不相干。

kaikai

ps. 发现被转载了,没带上链接,而且还被分类到java版块。特此在内容中做一些改动:标明语言c++

posted @ 2009-09-08 13:01 kaikai 阅读(115) 评论(0) 编辑

2009年7月23日

g++上c++模板与padding交互产生的陷阱

摘要: 关于Padding,请看下面的代码:[代码]我们可以assert:[代码]这里的padding大小我们基本都可以预测。由于c++模板的代码生成规则,下面的代码可能不会注意到[代码]这时sizeof(B2)以及B2::b的偏移地址是多少?struct BT第一次被实例化是在struct B内,且此时的pack为1.于是该类的alienment也被当作1来处理到后面的B2内,虽然pack已经恢复(为4...阅读全文

posted @ 2009-07-23 14:21 kaikai 阅读(94) 评论(0) 编辑

卡马克的求平方根函数代码的陷阱

摘要: 首先感谢xq; lj定位问题! 问题出在我签入的来自卡马克的求平方根函数代码。[代码]红色部分代码在gcc开启-fstrict-aliasing选项后将得到错误的代码。由于使用了type-punned pointer将打破strict-aliasing规则。由于-fstrict-aliasing选项在-O2, -O3, -Os等优化模式下都将开启(目前dev不带优化,main带-O3所以该问题只在...阅读全文

posted @ 2009-07-23 14:19 kaikai 阅读(262) 评论(0) 编辑

[zt]调试的时候,无法设置数据断点(为灰色)

摘要: 1:代码不一致(编译)2:内存不够用了(看看那个进程占了这么多)3:符号文件被其他进程锁住了(一般是多个vs造成的,把VS关掉,检查是否有devenv.exe/mspdbsrv.exe死进程)by 教练阅读全文

posted @ 2009-07-23 14:16 kaikai 阅读(160) 评论(0) 编辑

[zt]关闭VS自带的提示

摘要: 使用VA后,因为要在一台机器上调试客户端和服务器,之前一直卡到不行.后面找到方法,关闭vs2005自带的提示功能,这样速度会快不少,具体方法很简单,把..\Miscrosoft Visual Studio 8\VC\Vcpackages\feacp.dll 删除或者改名即可by 万hb阅读全文

posted @ 2009-07-23 14:09 kaikai 阅读(69) 评论(0) 编辑

vs偶尔出现链接时间过长的情况的临时处理方法

摘要: 仿佛.ilk文件超过了200兆就会造成增量链接失败,链接时提示如下:LINK: warning LNK4076:无效的增量状态文件”xxx.ilk”;正在非增量链接尚不知道如何避免,临时处理方法是添加一个预生成事件,当增量链接文件大于200兆就先删除它再继续生成具体操作方法如下:选中出现该情况的项目,编辑它的属性配置属性->生成事件->预生成事件->命令行...阅读全文

posted @ 2009-07-23 14:08 kaikai 阅读(190) 评论(0) 编辑

仅列出标题  下一页
 
Powered by:
博客园
Copyright © kaikai