1. Lua为什么在游戏编程领域被广泛运用
用过Lua的都知道,Lua无论在与C/C++数据传递,还是在封装都很方便,API非常简单。同时Lua的许可证和紧凑性(把lib编译进程序即可),都十分利于集成。这些都是Python和V8不能比的。同时,Lua编程学习难度极低。Python虽然容易学,但不简单;JavaScript学习难度不够低。实际上,Lua进入游戏业非常早,早在1998年卢卡斯的《异域狂想曲》(Grim Fandango)中,就首次在游戏领域用到了Lua。十年之前着名的游戏博德之门、猴岛4都用了Lua。至少从开源代码来看,云风对Lua的使用是十分重度的,比如skynet的入口是在Lua上。国内很多游戏对Lua的使用很浅,多是把一些需要经常改的运算放出来给Lua做。
2. 为什么将lua作为游戏脚本
就我个人的理解来看,使用LUA作为脚本语言有三个好处:
1、轻量级
LUA只包括一个精简的核心和最基本的库。这使得LUA体积小、启动速度快,从而适合嵌入在别的程序里。
2、可配置性、可扩展性
LUA并不象其它许多"大而全"的语言那样,包括很多功能,比如网络通讯、图形界面等。但是LUA可以很容易地被扩展:由宿主语言(通常是C或C++)提供这些功能,LUA可以使用它们,就像是本来就内置的功能一样。
3、兼容性
LUA由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。
这些都是LUA本身所具备的一些特质。而这些特质正好就决定了LUA的广泛使用:
1、轻量级
没人希望自己的应用程序需要附加几十M甚至几百M的库类文件才能运行。如果一个应用程序这么做了,那么它很难做到Run Anywhere。当然,这个Run Anywhere只是这么一说。
2、可配置性、可扩展性
在游戏研发的过程中,修改是必不可少的过程。如果每次修改都需要从底层做起,那必定是一个非常繁琐的过程。而LUA的可配置、扩展正好可以解决这一问题。
3、兼容性
游戏只是游戏,不能决定玩家的机器配置,更不能决定玩家的操作系统。如果因为游戏与用户的操作系统不兼容导致游戏销量下降,我想,这肯定是不被允许的。
所以,具备了以上三个特点的LUA,没有不作为游戏脚本使用的理由。
3. lua在游戏方面上能做什么
lua是一种脚本语言,但是用它可以完成很多的事情,比如游戏里面游戏配置(其实就是一些游戏的数据,比如level1 的某个英雄的能力值应该是多少, level2的英雄又是多少之类的), 游戏里面的逻辑(比如用某种武器,伤害到了某个英雄,对英雄的伤害值是多少, 当英雄的HP用完后, 又会怎样?).
但是这种语言,不能"独当一面", 它只能通过和其他语言一起,才可以发挥它的作用, 它的结构是通过:
C++ -> Lua -> C++ -> 游戏底层(从而展现给玩家一些画面,一些声音).
上面就是一些简单的回答, 有不清楚的地方可以多交流.
4. 《Lua设计与实现》pdf下载在线阅读全文,求百度网盘云资源
《Lua设计与实现》网络网盘pdf最新全集下载:
链接: https://pan..com/s/1CBeaXtKiPUJDwkSdAxFcxQ
5. 英雄无敌5 3.1有修改器吗或者怎么调控制台
雄无敌5没有修改器...只有使用游戏的控制台,不过基本修改器可以达到的效果都可以达到
下面是打开控制台的方法:
虽然H5并没有像以往的Heroes系列一样有作弊码的设定,但是有游戏制作过程中使用的调试控制台(H2-H4采用的是调试菜单),功能比作弊码更为强大,同时命令也更为复杂。事实上这些命令是地图脚本,可以在 游戏安装目录\Editor Documentation 下的PDF文件里找到相应的命令和代码及代号。
不过游戏默认是关闭控制台的,想要启用控制台,必须对游戏的相关配置文件进行修改。游戏升级之后也有可能会打不开控制台,此时把我的文档里那份cfg删除,然后进入游戏,游戏会自动再生成一份,在这份文件基础上再修改一次。
打开游戏的安装目录,用windows自带的记事本打开profiles目录下的autoexec.cfg(命运之锤需修改autoexec_a1.cfg)。修改之前建议备份文件;打开文件后,在文件的最后一行加入以下内容后保存。
setvar dev_console_password = schwinge-des-todes
然后打开 我的文档\My Games\Heroes of Might and Magic V\Profiles\你在游戏中用的名字\input.cfg
命运之锤为我的文档\My Games\Heroes of Might and Magic V\Hammers of Fate\Profiles\你在游戏中用的名字\input_a1.cfg。
东方部落的为
我的文档\My Games\Heroes of Might and Magic V - Tribes of the East\Profiles\你在游戏中用的名字\input_a2.cfg。
在第一行添加 bind show_console '`'
可以 将`改成游戏中你所经常使用的快捷键以外的键,最好不要和其它游戏中的快捷键重复(快捷键列表见这里)。
进入游戏后按`就可以激活控制台。
游戏升级后有可能会无法打开控制台,即使你的配置文件是正确的,这时可以把我的文档里的input.cfg和user.cfg删除,然后进入游戏,游戏会重新生成这两个文件,在新生成的文件上再修改一次。
下面是常用命令:
add_skill + 技能名/数字" 可以给选定英雄加技能,例如在控制台中输入:
add_skill Necromancy
这个可以加巫术
或者在后边加数字:
add_skill 19
可以加寻路术。这些数字对应的技能可以用写字板打开data\data.pak\scripts\advmap-startup.lua这个文件察看
注意这个data.pak是个压缩文件,可以用解压软件(winrar,winzip等)把它打开并把想要的文件解压出来。
用这种方法所加的技能数量是可以超出原有限制,虽然不会显示出来,但是效果还在
add_army 种族代码, 是否升级
加生物
种族代码对应如下:
HEAVEN(圣堂) = 0
PRESERVE(森林) = 1
ACADEMY(学院) = 2
DUNGEON(地牢)= 3
NECRO(不死) = 4
INFERNO(炼狱) = 5
例如:
add_army 5, 0
会给英雄加升级前的7种炼狱生物各十(至于原来的兵会怎样?试过就知道了)
add_army 4, 1
加升级后的七种不死生物各十
add_all_spells
使英雄学会所有魔法,不受技能限制(包括使用这些魔法)
set_hero_luck_morale M N
改变英雄的基本运气(M)和士气(N),例如 set_hero_luck_morale 5 3
show_player_money N
显示玩家N所拥有的资源,例如 show_player_money 2
show_hero_mp
Shows detailed movement point stats for currently selected hero - exact quantity, stats for currently plotted path(how many points it'll take).
add_exp N
加经验,例如add_exp 5000
add_money N
加金币1000*N,其他所有资源加N
(2)调用函数
上边的都只算小儿科,下边来点真格的
在data.pak或你所解出来的文件夹里的.lua 、.xdb文件里边你通常会看到一大堆函数,游戏中的所有事件(如征兵,学技能等)都是通过这些函数实现的。开始游戏时这些文件会对游戏进行初始化。然而通过控制台你可以在游戏中调用这些函数,也就是说,只要你知道了这些函数,几乎可以人为的实现在游戏中可能实现的一切
要在游戏中使用这些函数,只要调用控制台,在这些函数前加上@,并使用相关参数就可以了。例如:
文件中有这么一句:
GiveExp("Isabell",5000)
会给Isabell 5000经验(太明显啦!)
那么在控制台里,你可以输入:
@GiveExp("x", y)
会给英雄 x 增加经验值 y
或者更简单的:
@Win()
直接取得胜利
@Loose()
失败
下边列几个比较实用的:
@GiveArtefact("x", y)
给英雄x加上物品y,y可以是物品名或者物品代码,
@TeachHeroSpell("Isabell",SPELL_PHANTOM)
使Isabell学会法术PHANTOM, 也可以用法术代码
@AddHeroSkill('Isabell', 13)
加技能13
@AddHeroCreatures( "Agrael", CREATURE_HELL_HOUND, 1000 );
给Agreal加1000只Hell Hound
@SetTownBuildingLimitLevel('Putor', 13, 1);
设定城镇Putor的建设等级
@OpenCircleFog (0, 0, 0, 9999, PLAYER_x);
给第x位玩家开图(地面)
如果是地底的话
@OpenCircleFog (0, 0, 1, 9999, PLAYER_x);
@SetPlayerResource(PLAYER_1,x,y);
把玩家1的资源x设为y,x对应资源GOLD,WOOD,ORE,GEM,SULFER,MERCURY,CRYSTAL ;y对应数字
@ChangeHeroStat( 'Isabell', STAT_ATTACK, 9999 );
使Isabell的攻击变为9999
@AddHeroWarMachine('Isabell',1)
给英雄加战争机器
这里的部分代码我会在后边列出,当然你最好可以自己去查lua文件,我比较常用/data/script/里边的
注意: 游戏里显示的名称(如英雄名,城镇名等)往往跟在程序里使用的内部名称不一样,对于英雄名,可以用这个命令
@print(GetPlayerHeroes(PLAYER_x))
显示第x位玩家的英雄名。至于其他的,也可以在/data/text/里边查找,不过比较麻烦,希望有高手能解决这个问题
没见过作弊能这么bt的。不过,我喜欢。
这么强大的控制台并不一定要拿来作弊的,比如说在最后大局已定英雄毒孤求拜时,可以放几百条黑龙出来耍耍
又或者让一队地狱犬在清掉一群骷髅后说:“Mmmmm, yummy......”
活活, yy无限啊
当然这个也可以方便制作mod的玩家进行调试,本来就是debug用的
6月2日更新:
@print(GetObjectPos('heroname'))
会显示英雄的坐标
@SetObjectPos('heroname',x,y,0)
瞬移(地面)
@SetObjectPos('heroname',x,y,1)
瞬移(地底)
@CreateMonster('Peasant',CREATURE_PEASANT,100,30,40,1)
在地底坐标(30,40)处放100个农民
6. 游戏脚本语言lua,相关的一些东西
LZ要学LUA的话一定要去看书 Programming in Lua不一定要买纸质的 至少要有个电子档的 在序言里就已经说了 Lua本身是作为一种扩展语言来定位的 所以本身没有很强大的库 而它优势在于扩展性和兼容性 大部分功能都必须依赖外部的库 本身只有一些很简单的库函数可供调用 但是作为学习的话 那些强大的库大可不必看 基本的那些库学起来已经需要好一段时间了
至于脚本和C等的调用问题 虽然两者都可相互调用,但是毕竟windows与C相连接更紧密,所以一般来说 都是C调用lua 但是当脚本里需要实现一些需要使用c来写程序的时候也会在lua中调用c
lua脚本和C绑定的问题 c写的VC程序在windows下是可以直接运行的,lua写的如果没有解释器是无法直接运行的 所以一般来说写lua程序 想要直接使用的话都会用C来调用
7. lua游戏案例
案例本人也想要来学学,还没碰到
不过可以提供给你一个初级指南,对于想入门LUA的人甚至是没有编程基础的人来说都可算很简单的,而且是相应针对游戏编程来指导的哦
菜鸟也能为PSP编程 - Lua Player 编程初级指南
http://psp.tgbus.com/pspdg/jc/etct/200805/20080506094037.shtml
8. 如何用lua制作游戏
LZ要学LUA的话一定要去看书 Programming in Lua不一定要买纸质的 至少要有个电子档的 在序言里就已经说了 Lua本身是作为一种扩展语言来定位的 所以本身没有很强大的库 而它优势在于扩展性和兼容性 大部分功能都必须依赖外部的库 本身只有一些很简单的库函数可供调用 但是作为学习的话 那些强大的库大可不必看 基本的那些库学起来已经需要好一段时间了
至于脚本和C等的调用问题 虽然两者都可相互调用,但是毕竟windows与C相连接更紧密,所以一般来说 都是C调用lua 但是当脚本范肌顿可塥玖舵雪罚磨里需要实现一些需要使用c来写程序的时候也会在lua中调用c
lua脚本和C绑定的问题 c写的VC程序在windows下是可以直接运行的,lua写的如果没有解释器是无法直接运行的 所以一般来说写lua程序 想要直接使用的话都会用C来调用
如果您认可我的答案,。
您的采纳,是我答题的动力,O(∩_∩)O!!
9. lua与游戏相关
lua player是用来开发psp软件的一套环境。
http://wiki.ps2dev.org/psp:lua_player
10. 用lua做的游戏,有前途吗有钱途吗
lua不能做游戏,lua只是游戏中的脚本,一般负责游戏中的一些逻辑处理或者数据初始化。要想学习做网络游戏必须具备条件:熟练掌握C++、STL及各种设计模式,熟悉各种数据结构和算法;熟悉3D图形学原理,熟悉3d图形的常用技术,有较强的数学功底;熟悉HLSL,Shader编写;