找回密码
 点一下
查看: 938|回复: 1

说说galaxy++的使用感受吧,附带各种问题

[复制链接]
发表于 2011-6-24 16:47:14 | 显示全部楼层 |阅读模式
      现在开发进度最高的就是这个了,还有自己的GUI界面和语法提示、自动完成系统,写好的地图脚本还能自动导入地图进行测试,思路上来说是很好很强大了。看着现在天赋简化的比快餐还快餐的魔兽世界,终于下决心把war3时代就想做的天赋系统给搞出来了。于是乎别无选择的用了galaxy++。

先说说这玩意的优点吧,比较有特色的应该算是代码的优化和加密了(obfuscate),虽说不是什么新东西,但一开始考虑加入这样的功能还是很有些想做专业的味道的。不过问题也很头疼,下面实际说明:

优化部分包括remove method,struct,field,三个选项,method还好,一般没什么问题,但要注意的一定要避免在class里使用未经声明的本地变量
#class XXX {
void foo () {
int var1
code...........

int var2 = 0;
code..........
}
}

这样的情况有很大可能会被误编译其他本地变量比如var1 = 0,具体出发条件尚不明;

struct和field的移除,基本上都会发生语法错误,特别是在有class和namespace的情况下,必出错;

加密也是一样,无复杂嵌套的情况下OK,出现class的instance调用后,编译肯定出错;

关于扩展的语法特征,头目已经发过帖子了,大家看看便知,想说的是坑爹一般的无指定数组和类:

无限数组在直接使用时还是ok的,但当把struct型的无指定数组直接用于类的实例调用时,基本会出错,like this:
#class Foo {
void   foo ()
{
DialogControlSetPositionRelative(DialogControlLastCreated(),g_player,c_anchorCenter,tmpcontrol[XX].var,c_anchorCenter,61,0);
}
}

一个实例无法正常调用另一个实例的成员函数,原因不明;

触发器的bool XXX(bool c , bool a){} 是无法写入class的,因为在编译时会被编译成bool XXX(bool c , bool a,string current){};

++之类的算符会出现莫名其妙的错误,触发条件尚不明;

TriggerCreate(“XXXX”)中的XXXX正确与否不会被检测,甚至可能所有的string型参数都不会被检查。

现在知道主要是这些,总结下来,还是处在class上,并且现在还不支持静态和私有(至少说明上没说可以的啦),这个大丈夫嘎?


现在项目做了有一半了,所以觉得坑爹,也好要做下去,这就好像是取了个长得不错的女人当老婆,孩子都生了,脾气在怪也只好忍了,此文只为还想娶这位回家的用以参考而已。

评分

参与人数 1威望 +2 收起 理由
oneonestar + 2 已阅

查看全部评分

 楼主| 发表于 2011-6-24 16:49:56 | 显示全部楼层
关于在做的天赋系统过一段会发个预览出来,因为想分成SDK和RunTime分开的方式,比较花时间,总之和现在大家熟知的天赋树不太一样就是了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-12-25 10:26 , Processed in 0.125057 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表