永发信息网

什么是游戏脚本

答案:2  悬赏:60  手机版
解决时间 2021-01-01 21:59
  • 提问者网友:缘字诀
  • 2021-01-01 15:05
什么是游戏脚本
最佳答案
  • 五星知识达人网友:玩世
  • 2021-01-01 15:24
游戏脚本 制作
一个游戏引擎做好了,最重要的是缺什么?脚本。打个比方,游戏引擎是一部电脑,则脚本就是电脑的软件。既然脚本这么重要,那该怎样实现呢?下面我就来说说我的做法。
首先理解一下消息循环
一个好的游戏离不开好的消息循环。它是游戏实现很重要的一部分。下面我就来说说我的游戏《宿命传说》的做法。
首先,我定义了一个全局变量extern int GameState;
在游戏中定义了许多当前的游戏状态例如
#define GAME_STATE_CUSTOM 0 //这代表在战斗中玩家可以控制游戏
#define GAME_STATE_TALKING 1
等等。
好了,下面在WinMain里面的while(1)循环中有个UpdateScreen()函数
原型为
void UpdateScreen()
{
延时
switch(GameState)
{
case GAME_STATE_CUSTOM:
画出地图
画出所有精灵
画出天气(如果有的话)
如果玩家选中了敌人的话(打个比方DrawFlag=DrawEnemyState)就显示敌人的移动范围和敌人状态
break;
case GAME_STATE_TALKING:
GameDialogProc();
break;
case GAME_STATE_SCRIPTCONTROLLING:
ScriptControlProc();
break;
….//其他的消息在这里处理
}
将缓冲表面的图象显示到屏幕;
}
每个游戏状态都需要一个独立的函数来写。这样在每次切换游戏状态时都不会出现无法处理的情况。
在处理键盘消息的时候我也用一个个独立的函数来写
如处理回车键我用了 KeyReturnProc()来控制
在这个函数里同样也少不了switch(GameState)这一句,为什么?
答案很简单,比如说在精灵行走时回车键就没有用,这是我没有处理精灵行走这个状态的键盘消息。而在战斗场景里按下回车键,如果有精灵在选择框里的话,就会处理相应的东西。
例如选择了敌人则使DrawFlag=DrawEnemyState;这样在更新屏幕时就会画出敌人的移动范围和状态。
明白了吗?好了,如果你明白了消息循环的原理,下面的东西就很容易理解了。
下面谈谈脚本控制
要实现这个,就必须在UpdataScreen()这个函数中拦截一个“脚本控制”的消息,并调用相应的处理函数:ScriptControlProc();
那么怎样得到“脚本控制”这个消息呢?
我是这样约定的:新游戏->调用脚本
战斗结束->调用脚本
“前往下一个地点”->调用脚本
好了,就只有这几种情况下才调用,调用脚本的函数为BeginScriptControl();
这个函数做了三个工作:
1.首先读取舞台(场景)角色的数据(没一关都是一个不同的舞台)
2.打开脚本文件(注意要用全局的文件指针)(虽然我在源程序中没直接打开,但是原理是一样的)
3.将游戏状态设定为“脚本控制”以便在下一次UpdateScreen()中调用的是ScriptControlProc();(怎么样?知道消息循环的作用了吧?)
ScriptControlProc()这个函数其实也很简单:
读取脚本文件中的参数直到文件结束
读取脚本文件需要一个解释脚本的函数LoadParam(FILE*fp);
这个函数负责解释脚本中的东西:是函数调用还是函数参数
然后找到相应的函数执行即可
比如说脚本里有一段代码MovePlayerTo(1,1,......余下全文>>
全部回答
  • 1楼网友:山有枢
  • 2021-01-01 15:57
感谢回答,我学习了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯