绑定HGE到AngelScript脚本系统

本文介绍了将游戏引擎HGE与脚本语言AngelScript结合的过程及成果。通过封装HGE接口,作者实现了在AngelScript中调用HGE功能的目标。测试结果显示,尽管加载速度略慢,但运行效率接近于本地代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

    关于脚本系统,以前接触过GameMonkey,当时的感觉就是要结合进C++,处理类方面比较麻烦。事实上大部分脚本语言要结合进C++,都存在这个问题。后来知道了Angel Script,稍微看了下文档,发现其与C++结合比较容易。

    最近都在休息,前天休息疯了,就决定玩玩angel script。后来突然就产生了把HGE和angel scrip结合起来的想法。也就是很多游戏引擎的各类脚本wrappet之类的东西。目的就是通过一些中间代码的桥接,使某个脚本语言也可以使用该引擎。我所要做的,也就是在angel script脚本代码中,也可以使用HGE来编写游戏。

    看了些文档,写了些实验代码,就开始这个我认为比较有意思的project。整个过程还是比较顺利,写到后来都是些体力活,没什么意思。

    封装了部分HGE的接口,用angel script重写了HGE第7个例子程序,用来测试效率。结果还算好,效率比本地代码慢了几个FPS(绘制1000个zazaka),只是载入速度慢了点,因为需要把脚本代码编译一次,也许在发行时,发行编译好的字节码,载入速度会快很多。

    写好后整理了下API文档(即目前我封装了哪些HGE的接口),就草草发到HGE官方论坛去了。以下是我在HGE论坛发的帖子:

    帖子原文地址: http://relishgames.com/forum/viewtopic.php?t=2766

    angel script 地址:http://www.angelcode.com/angelscript/

    帖子原文:

    Hi, all
i'm glad that i can use hge engine to create games .Besides hge is an easybut powerful engine.

And yet AngelScript is also easy use script engine. It's a c++-like script
language and it's very easy to embed into c++ native application .

And now i bind hge and AngelScript together . That means i wrapped some hge's functions classes and you can write AngelScript to make your hge games.By using script language, your most convenient is you donot need compile your code and link your code like in c++.

The most important thing is the speed, yes, i wrote hge tutorial 7(thousand of hares) in AngelScript (download below) and see what 's the difference between them. The result on my computer is the speed is almost same . But the loading time is different: the AngelScript version is slower that because the script engine should compile the script first .

You can download the demo here http://blog.blogwhy.com/azjex/upload/ashge_demo_7.rar. And there is a file named apireference.txt that document the current api i wrapped. So you can change game.as whatever you want.

So, is there somebody interested in this project ? If somebody is interested in it i will continue this work, i mean continue to wrap more hge functions(classes).

Best regards,
Kevin Lynx

    DEMO演示下载(包含API文档):

    http://blog.blogwhy.com/azjex/upload/ashge_demo_7.rar

    比较有趣的事是,现在用HGE写游戏,都不需要编译器了。只需要例子程序中的可执行文件,直接改game.as即可。

基本功能和翎风的一样。 ------------------------------------------------------------------ [2016.09.30] 更新M2功能 ------------------------------------------------------------------ 1.增加脚本命令:InSafeZone //检测人物是否在安全区 ------------------------------------------------------------------ 2.修改程序防止最新僵尸攻击 3.增加脚本命令:SETRANDOMNO //产生一个随机数字 [@main] #IF #ACT SETRANDOMNO //产生一个随机数字 #SAY : //将显示出产生的随机数 [@@CHECKNO] #IF CHECKRANDOMNO //检测输入的验证码是否正确 #ELSEACT MESSAGEBOX 验证码错误! CLOSE BREAK 4.增加脚本命令:ISONMAP MAP //检测当前人是否在MAP地图上 5.增加脚本命令:DELAYCALL 作用:延时执行同一个NPC脚本中指定的标签内容 格式:DELAYCALL S LABEL 其中S是延时秒数(毫秒),Label是执行的脚本标签 示例:DelayCall 3000 @DELAYCALLTEST --- 3秒后自动跳到@DELAYCALLTEST节执行 6.增加脚本命令:KILLBYMON //是否被怪杀 7.增加脚本命令:KILLBYHUM //是否被人杀 地图增加一参数:KILLFUNC(X) //X可以随意数字 说明: 人物在该地图杀人,将触发QFunction-0.txt的[@KillPlay数字]节 人物在该地图杀怪,将触发QFunction-0.txt的[@KillPlayMon数字]节 注:宝宝杀人杀怪有效(秒杀除外) 8. //杀人的怪物名字 9. //杀人的人物名字 #IF KILLBYMON SENDMSG 5 在:%m(%x:%y)把干掉了! #IF KILLBYHUM SENDMSG 5 在:%m(%x:%y)把干掉了! 10.增加人物S变量:(0~99个) 11.解决地图标记 NoHUMNoMon 有人刷怪不能用的问题! 12.增加NPC命令:REPAIRALL //特修身上所有装备 13.增加数据库(修复神水)设置:3 14 //特修身上所有装备 14.增加脚本命令:ISGROUPMASTER //检测是否组长,加入编组后组长会触发QFunction-0.txt 15.增加挂机泡点功能。 ===================================== OFFLINE S EXP S是时间,单位秒 EXP为每S秒得到的经验值 默认必须在安全区域有效 脚本示意: (******************************************************************) (@@offlinemsg) [@main] 一、点击开始脱机泡点后,可输入一段留言信息给你的朋友。\ \ \ \ [@@offlinemsg] #IF CHECKLEVEL > 0 #ACT OFFLINE 5 500 //每5秒增加500经验 --------------------------------------------------------------------------- 16.;检测是否组长 [@MAIN] #IF ISGROUPMASTER #ACT GroupMoveMap 3 330 330 #elsesay 你不是组长. 加入编组后组长会触发QFunction-0.txt [@GroupCreate] #if #say 加入编组 --------------------------------------------------------------------------- 17.增加脱机泡点功能 18.增加地图标记有人刷怪 [0 比奇] NoHUMNoMon ;有人才开始刷怪 19.增加地图标记禁止仍背包物品 [1 沃玛森林] NOTHROWITEM ;禁止仍背包物品 20.增加地图标记死后不爆背包物品 [2 毒蛇山谷] NODR
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值