2217v 发表于 2008-11-17 21:50:39

想写一个脚本编译器,大家有什么建议么

没底,实在心里没底。写下来放心点。

目前在下office等编程办公要用的软件了,也不能老玩游戏了。脑子乱乱的,随便写点。

首先,并不打算做成范用型的,而是针对特别应用来写。凡用的现在也有,似乎也无必要再发明轮子。我的打算是用来remake太阁5里的格斗小游戏,加上必要的对话,人物cg,背景cg显示,分支选择,实际上做出来的东西也可以用来独立制作文字游戏了。太阁5有一个自己的脚本编译器,我没研究过它的语法,也不打算参考那个来做,总之,实验和练手的成分比较大(也是我写这个的目的),毕竟我没做过游戏,想试试。

目前工程分为几个部分:

1.脚本编译器(C++)
2.脚本播放器(VC/directx)
3.script dump用来调试脚本的。(MFC)
4.资源打包器,以及解包程序。(MFC/C++)

使用的工具都在后面括号里了

脚本编译器主要还是实现前端,后端涉及到汇编,优化等操作系统相关的东西,想起来就头大,还是不要接触比较好。
脚本最终会翻译成类似汇编指令式的东西,由播放器解释执行,播放器就相当于cpu了,指令和执行的功能基本也是类似的。
比如ADD,SUB这类算术操作要提供,MOV,当然是赋值用,另外还有变量申明,用来开辟内存空间,goto指令和if指令配合用来实现跳转,循环,和分支选择。
变量里面分四种基本变量:整数,浮点,布尔,字符串。这四种变量可以单独申明,但不允许申明复合变量,复合变量只能用游戏规定的那些,比如“人物”这种变量,由hp,mp,sp等变量组成。
比如:声明一个人物
Person 张三;
张三.hp=100;
Person是个内置变量种类,hp是其中的成员变量,那么person,hp是否都应该申明为脚本的关键字呢?或许应该把这些变量类型放到声明表中比较好?
还有涉及到应用的特殊格式,比如一场战斗的描述
fight
Person 1,2,3....;参与战斗的人
Win 逻辑表达式 ;获胜条件
start:
;//发生在战斗开始处的事件
event:
if 表达式 then
else if 表达式 then
end if
//发生在战斗过程中的事件
end fight win:
;如果获得胜利的处理...

自写脚本就有这种好处了,因为格式可以很宽松。。。

再着就是表达式的问题,很是头大,逻辑表达式,算术表达式,太简单了功用小,复杂了实现麻烦,考虑到麻烦的变量匹配和转换问题,决定将四个基础变量减少到3个,统一用浮点表示整数算了。还有表达式中需要用到的临时变量也是个问题,变量可以回收,但是关系到变量的生存期等,感觉会变得很复杂了,不好搞。

播放器方面是用脚本指令驱动,即遇到什么就处理什么,还是用游戏循环,用状态机来决定每一桢的绘画内容?觉得后一种方式比较有把握,前种方式好像未知的麻烦会多一些。

此外战斗部分需要设计电脑的ai,这个业很有挑战性,目前还没思考到这一部分来。初步考虑,设计若干行动模式,模式可由脚本选择。

还有资源的导入和导出,资源压缩加密的算法已有,是否需要设计资源池呢?

2217v 发表于 2008-11-18 18:39:59

今天要装vc了,不过还想再等等。另外忘记了找人合作,考虑的东西太多了。这里顺便求人:

脚本作家一只,包括写游戏剧本和确定脚本编译器格式,最好有点写脚本的经验,能够提供一些建议,游戏形式背景等等内容请参照太阁5的部分。

美工一只,为剧本需求寻找和(如需必要)制作素材。

还有,本游戏名称定为(転)

本项目团队名称:

転 TeamWork

这个项目主要目的是为涨经验用的,所以不拒小白,对自己有信心的来吧。

corivsky 发表于 2008-11-22 13:57:39

我提一些建议:
1.不建议你重头写自定义的脚本,因为光光词法分析,语法分析,语义分析等等你就吃不消。建议直接使用lua,然后将lua脚本函数集成成几个函数,封装到指令里,由程序调用。
2.你所谓的脚本播放器难道要用DirectX sdk从头写么?没必要的,2d开源引擎有hge,3d开源引擎有irrlicht,你可以直接用。

corivsky 发表于 2008-11-22 13:59:57

还有一个建议:
你的工程程序部分从头开始做到大概可以玩了,估计要半年时间(保守估计,我用c++写了n多游戏都没写完orz,每个版本大概都要用两三个月,当然我也比较懒)
所以在你的程序还没有看见曙光的时候,不建议招收脚本作家,美工之类的。
你没付钱给他们,你的成果迟迟不出,他们会心凉,会走的。

corivsky 发表于 2008-11-22 14:03:52

如果真的要练手的话,可以试着用directx sdk或者hge写一个gui系统,
然后写一个可视化的gui编辑系统,
然后是可视化的地图编辑器,
然后才是可视化的游戏逻辑编辑器。

对你的提高很大的应该,呵呵。

checktao 发表于 2009-3-27 22:52:12

一旦做了就不要放弃

yongyuanlin 发表于 2010-4-19 20:21:16

我要给自己找个适合自己的系统。
页: [1]
查看完整版本: 想写一个脚本编译器,大家有什么建议么