Lua 为什么在游戏编程领域被广泛热处理运用的广泛性

[Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘(上) - 推酷
[Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘(上)
各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我地博客地址是
。如果提到游戏开发,大家一定会想到C/C++、DirectX、OpenGL等这些东西,可是众所周知,游戏行业是一个需求变化极快地行业,如果我们采用编译型的语言,那么我们可能很难跟上这个时代的步伐,因为编译型的语言每经历一次重大地更新,整个项目都需要重新编译,这样无疑会影响我们的开发效率。那么,有没有一种更为高效的游戏开发模式呢?或许答案大家已经看到了。现在在游戏界普遍采用的方式是将游戏的底层逻辑交给C/C++这样的底层语言,而将游戏的上层逻辑交给脚本语言。因为底层逻辑更看重效率而上层逻辑更注重灵活、便捷地使用。例如我们熟知的Unreal引擎是采用UnrealScripts,这是一种类似于Java/C语法地语言;Unity3D引擎是采用的C#/javaScript/Boo这三种脚本语言;cocos2d-x采用地是Lua/javaScript这两种脚本语言,未来可能会支持更多的语言。大家可能想问一个问题:什么是脚本语言?所谓脚本语言是一种用来控制软件应用程序且只在被调用时进行解释或编译的编程语言,这种语言通常以文本的形式来存储脚本代码。换句话说,脚本语言类似于一种指令,它缩短了传统应用程序的编写-编译-链接-运行(edit-compile-link-run)这个过程,是一种解释执行的程序。或许人们发明脚本语言的那一刻起,从未想过要将脚本语言和游戏开发联系在一起,不过脚本语言注定会因为游戏开发而开拓出更为广阔的世界。本文将以目前游戏开发领域较为流行的Lua语言为线索,深度解密游戏开发领域与脚本语言之间千丝万缕的联系。
一、什么是Lua?
是一个小巧的脚本语言,巴西里约热内卢天主教大学里的一个研究小组于1993年开发,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。相比Python和Per的内核,Lua的内核小于120KB,而Python的内核大约860KB,Perl的内核大约1.1MB。Lua语言支持面向对象编程和函数式编程,它提供了一个通用类型的表table,可以实现数组、哈希表、集合、对象的功能。Lua支持协同进程机制。作为一门可扩展的语言,Lua提供简单而稳定的交互接口,如Lua和C程序可通过一个堆栈交换数据,这使得Lua语言可以快速地和其它语言实现整合。总体来说,Lua语言具备以下优点:
言优美、轻巧
2)性能优良、速度快 &(3)可扩展性强
。正因为Lua语言具备了这样的特点,使得它能和游戏开发领域的需求完美地结合起来,因为我们需要这样的一门语言,它能够和C/C++进行完美地交互,因为我们需要它对底层进行封装。它需要足够地简单,因为我们需要简单、灵活、快速地编写代码。那么显然Lua就是我们一直在寻找地这种语言。
二、Lua可以做什么?
尽管博主已经告诉了大家太多的关于Lua语言的优秀特性,相信大家仍然会对Lua语言的能力存在怀疑。大家或许会想,Lua到底可以做什么呢?在《Lua游戏开发》一书中作者已经告诉了我们答案:
1、编辑游戏的用户界面
2、定义、存储和管理基础游戏数据
3、管理实时游戏事件
4、创建和维护开发者友好的游戏存储和载入系统
5、编写游戏的人工智能系统
6、创建功能原型,可以之后用高性能语言移植
这时候我们似乎觉得Lua语言在某种程度上就是专门为游戏开发而诞生的,因为它将大量的优秀特性全部指向了游戏开发领域,因此Lua语言走进走进游戏开发领域变得顺利成章,那么,让我们接着往下看吧,Lua在游戏开发领域有那些成熟的案例吧。
三、哪些游戏使用了Lua?
1、魔兽世界
如果提到Lua在游戏领域中第一次崭露头角,我们就不能不说《魔兽世界》这款游戏,由于《魔兽世界》在其客户端中使用了Lua,使得Lua在游戏领域的作用第一次被展示出来,Lua语言因此在游戏开发领域成名。Lua语言的虚拟机很轻巧,可以很容易地嵌入到客户端程序中。如果需要更新客户端,只需要更新脚本程序即可,无需重新编译整个客户端。这样地优点使得Lua在游戏开发领域一战成名,可以说是《魔兽世界》为游戏开发领域带来了这样激动人心的伟大语言,作为Lua在游戏领域攻城略地的尝试,《魔兽世界》功不可没。
2、大话西游2
如果说《魔兽世界》开辟Lua在国外游戏领域地战场,那么网易的《大话西游2》无疑是开启了国内游戏制作公司使用Lua的先河。2002年网易开发《大话西游2》时,决定在客户端内嵌入新的脚本语言,因为当时使用的微软JScript存在较多Bug、维护不便、兼容性差。当时该项目技术负责人云风吸取了《大话西游1》时外挂泛滥的教训,决定选择一个新的语言,这样既能摆脱对JScript的依赖,又能有效地打击外挂制作者,权衡再三,最终选择了Lua 4.0。后来《大话西游2》在市场上取得了成功,国内游戏开发行业纷纷受此影响采用Lua,可以说是网易Lua走进了国内开发者的视野,不过到今天为止,Lua在国内仍然是一门较为小众的语言,从《大话西游2》引领国内开发者将视角转向Lua到今天将近10余年地时间,此中缘由,只有大家自己去想个清楚啦。
3、古剑奇谭
《古剑奇谭》系列游戏是由上海烛龙信息科技有限公司研发的大型3DRPG单机游戏。游戏设定源自于《山海经》,故事则以武侠和仙侠为创作题材,以中国神话时代为背景,讲述了中国古代侠骨柔情的仙侠文化。《古剑奇谭》系列游戏初代作品与二代作品采用的是不同的游戏引擎和不同的战斗模式,尽管如此,我们依然能从中找到一个共同点,那就是在初代作品和二代作品中都毫无例外的使Lua作为游戏地脚本语言。例如下面是《古剑奇谭》红叶湖迷宫场景的Lua脚本节选:
require(&Necessary&)
require(&StoryUtility&)
require(&BigMap&)
require(&Script_DLC4&)
--------------以下为初始化函数-------------
function OnEnterLevel()
if GetStoryVersion() == 2 then
OnDLCEnterLevelM01()
if GetMainStory() == 10100 then
callTaskFunction(&story10100&)
elseif GetMainStory() == 161900 then
callTaskFunction(&story161900&)
if gValue.MK == 1 then
showNPC(&NPC 06&, false)
showNPC(&NPC 07&, false)
enableTrigger(&Tri_MK&,false)
elseif gValue.MK &1 then
showNPC(&NPC 04&, false)
showNPC(&NPC 05&, false)
showNPC(&NPC 06&, false)
showNPC(&NPC 07&, false)
enableTrigger(&Tri_MK&,false)
enableTrigger(&Tri_MK 02&,false)
、仙剑奇侠传
既然提到了古剑奇谭,怎么能不提仙剑奇侠传呢?虽然和古剑奇谭初代作品发布时间仅仅相差一年的《仙剑奇侠传五》市场反响并没有像游戏制作方所预料地那样成功,不过这部作品值得称赞地地方还是蛮多的,因为进步总是要去缺点的嘛,毕竟时代在进步,我们不能总是拿仙剑初代作品的高度去要求后续作品,因为我们已经不再是那个年龄的人,而仙剑依然要不断地突破自身、大胆创新和进取。好了,我们暂时先感慨到这里,仙剑四、仙剑五以及仙剑五前传都使用了RenderWare引擎,可能唯一的不同就是仙剑五和仙剑五前传都使用了Lua吧,下面同样是一段从游戏中提取的脚本:
function baoxiang(id,npcID)
player.Control(0)
pid=player.GetMainPlayer()
player.SetAnim(pid,203)
global.Print(id)
global.Wait(1)
y=flag.GetValue(15093)
---------江洋大盗称号获得-------------
jyd=flag.GetValue(15255)
flag.SetValue(15255,jyd)
global.Print(jyd)
global.AddTimer(0.5,13279)
-----------------------------------------
if id~=17711 then
npc.SetAnim(npcID,501)
global.Wait(1)
金庸群侠传Lua复刻版
、带你走进Lua的世界
最后想和大家分享是Lua语言编程的一个简单的示例,因为博主觉得以后做游戏用脚本语言的场景会越来越多,所以能学会一门脚本语言能为你的游戏开发之路增色不少。因为博主刚开始学,所以脚本中有不足之处,希望大家能谅解,在学校的时间一天天地在减少,博主希望能和大家共同度过最后的这段时间。博主使用的是Lua5.2,使用的Sblime Text2作为脚本编辑器配合LuaDev插件进行编程的,如果大家想用懒惰点的办法,可以使用Lua for Windows这个集成环境。好了,下面开始吧,作为第一个Lua程序,我们直接给出代码,具体的语法及API大家可以自己去查阅。
--while-do示例代码
myValue=10
while(myValue &= 20) do
print(myValue)
myValue=myValue+1
--sample table && for-do示例代码
myTables={&Item0&,&Item1&,&Item2&,&Item3&}
for i=1,table.maxn(myTables) do
print(myTables[i])
--complex table示例代码
myTables={}
myTables[&A&]=&ItemA&
myTables[&B&]=&ItemA&
myTables[&C&]=&ItemA&
myTables[&D&]=&ItemA&
print(myTables[&A&])--&ItemA&
--function示例代码
function fib(n)
if(n&2) then
return fib(n-1)+fib(n-2)
--math示例代码
maxValue=math.max(12,23,56,18,10)--56
minValue=math.min(25,34,12,75,8)--8
print(maxValue-minValue)--48
--字符串演示
myString=&Hello this is the cool program language called Lua&;
print(string.find(myString,&Lua&))--48,50
io.write(&Hello I get a powerful program language called Lua \n&)
io.write(string.format(&This Lua is %s and now is %s \n&,_VERSION,os.date()))
运行结果是:
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致您所在的位置: &
移动开发新宠:Lua语言
移动开发新宠:Lua语言
《程序员》
TIOBE编程语言流行度排行榜的统计数据来源于谷歌、Bing、Yahoo!等主流搜索引擎,以及各大技术网站发布的招聘信息,在很大程度上代表了编程语言的流行趋势。在本月的TIOBE编程语言排名中,Lua语言第一次进入了排行榜的前十名。
当移动开发成为如日中天的技术话题,这必将带动一些新的技术热点的兴起,之前并未广泛应用的Lua语言,因其灵活、轻量、高效的效率成为iSO平台上的新宠。
498)this.width=498;' onmousewheel = 'javascript:return big(this)' width="204" height="204" src="/files/uploadimg/8550.jpg" alt="" />
TIOBE编程语言流行度排行榜的统计数据来源于Google、Bing、Yahoo!等主流搜索引擎,以及各大技术网站发布的招聘信息,在很大程度上代表了编程语言的流行趋势。在本月的TIOBE编程语言排名中,Lua语言第一次进入了排行榜的前十名。
轻量级脚本语言Lua在开发者中正变得越来越流行,这与移动应用开发的升温密不可分。以iPhone为代表的移动平台,为不少开发者提供了新的应用展示空间,也为支持iOS系统的应用开发带来了巨大商机。包括大获成功的游戏《愤怒的小鸟》在内,不少iPhone和iPad流行应用都使用了Lua作为游戏脚本。
Lua语言最大的优势在于其轻量级脚本和高效的运行效率,这一得天独厚的优势让Lua在以娱乐和用户体验而著称的iOS系统之上大有用武之地。
小巧的Lua语言来自于巴西里约热内卢天主教大学于1993年启动的实验性项目。Lua语法简洁优美,解释器由标准C编写。以快速小巧著称的Lua拥有在目前所有脚本引擎中最快的运行速度,这样的特性让Lua成为用作嵌入式脚本的最佳选择。
Lua代码几乎能在所有操作系统和移动终端上编译运行,同时Lua提供了LuaJIT项目(http://luajit.org/),针对特定目标平台为开发者提供即时编译功能,进一步增强Lua的执行效率。
Lua的设计初衷并非意图构建完整的应用,而是嵌入在应用程序中为应用提供灵活的扩展和定制功能,所以Lua仅提供了基本的数学运算和字符串处理等函数库,而并未涵盖程序设计的方方面面。
在语言兼容性上,Lua一开始就瞄准了具有广泛应用场景的C和C++,让C/C++编写的代码可以很方便地调用Lua脚本,同时C/C++函数也能够在Lua脚本中调用。与C/C++代码的良好交互性,让Lua在应用程序开发中有着广泛的应用基础。
Lua最流行的应用场景是在游戏中作为处理逻辑的脚本,即用来编写游戏的任务脚本,以实现游戏的可配置性和可扩展性。在游戏中Lua脚本的加载不需重启服务器,尽管脚本的运行效率低于编译好的二进制代码,但目前CPU速度已完全能够让Lua脚本迅速解释执行。
在以《魔兽世界》为代表的网络游戏中,几乎所有的插件都是使用解释性的脚本Lua编写,核心的C++代码只占全部代码中的很小一部分比重。
目前Lua语言的最新版本是5.2
Beta,如果你也准备在移动应用开发中尝试嵌入Lua脚本,在熟悉语法之后,便可移步Lua开源项目站点luaforge.net或Lua开发者站点lua-users.org的Wiki库,下载感兴趣的Lua程序脚本,开启Lua脚本的学习之旅。
电子商务领域,各种时髦概念名词总是层出不穷。继B2B、B2C、C2C之后,O2O(Online-to-Offline)作为一种新诞生的电子商务模式,一夜蹿红并受到各方追捧。
O2O反映了互联网商业模式的一个趋势,就是从线上走中国标准化研究院助理研究员,从事信息技术标准化研究工作。
本文作者:高昂,关注开源社区,也是OSGeo中国和InfoQ中文站成员。【编辑推荐】【责任编辑: TEL:(010)】
关于的更多文章
Lua是一个被设计成用于扩展C/C++编程的轻量级脚本语言,它的目标
百度推出轻应用引起业界火热议论,收购91和推出轻应用
App搜索对应用的影响不容忽视,目前应用商店仍采用最
当下,移动App的开发相当火热,Android的和iOS的开发
它从最简单的地方入手,不仅讲述了JavaScript的基础知识,还讲述了JavsScript如何操作CSS、DOM等Ajax基础技术。而关于跨浏览器兼
Windows Phone专家
Android开发专家
51CTO旗下网站Lua游戏编程
Lua游戏编程
Windows10用户联盟QQ群:
Lua用于很多游戏引擎,由于其简单的语言结构和语法。此外,垃圾回收功能通常是其消耗大量的存储器,由于丰富的图形所使用的游戏相当有用。使用一些游戏引擎使用Lua,它们包括:
Corona SDK
Gideros Mobile
每个游戏引擎是基于Lua和有丰富的API的集合中的每个这些引擎提供。我们会研究每个简要的功能。
Corona SDK
Corona SDK支持iPhone,iPad和Android的跨平台手机游戏引擎。有一个免费版本,Corona SDK,可用于小游戏,功能有限。但在需要的时候可以升级到其他版本。
Corona SDK提供了许多功能,其中包括,
物理与冲突处理的API
Web和网络APIs
游戏的网络API
数据库和文件系统的API
加密和数学的API
音频和媒体的API
使用上面的API,可以更容易地开发比单独使用iOS和Android原生的API快得多。
Gideros Mobile
Gideros提供了跨平台的SDK创建iOS和Android游戏。它是免费提供了Gideros。一些显着Gideros的优点包括
开发IDE:提供了自己的IDE,这使得它更容易开发Gideros应用程序。
即时测试:在开发游戏,也可以通过WiFi在真实设备上只需1秒测试。不需要浪费时间在导出或部署过程。
插件:可以很容易地扩展核心及插件。导入现有的(C,C+ +,Java或对象 -)代码,绑定到Lua,并直接对其进行解释。开源的几十个插件已经开发完毕,可以使用。
干净OOP方法:Gideros提供了自己的类系统与所有面向对象的基本标准,使您能够编写简洁和可重用的代码来实现游戏。
原生速度:开发在C/C+ +和OpenGL之上,游戏运行在原生速度,充分利用CPU。
ShiVa3D是3D游戏引擎,提供了一个图形化的编辑器,设计用来创建网页,游戏机和移动设备上的应用程序和视频游戏之一。它支持多发的平台,其中包括,Windows,Mac,Linux中的iOS,Android,黑莓,Palm操作系统,Wii和WebOS。
一些主要的功能包括
网状修改API
内置的地形,海洋和动画编辑器
ODE物理引擎的支持
全光照控制
实时预览的物料,颗粒,小径和HUD
Collada交换格式的支持
Shiva3d网络版是完全免费的,其他版本已订阅。
Moai SDK支持iPhone,iPad和Android平台,跨平台手机游戏引擎。Moai SDK平台最初由Moai SDK,一个开源的游戏引擎,并Moai云,云平台,为游戏服务的托管和部署服务。现在Moai云被关闭,只有游戏引擎可用。
Moai SDK运行于多个平台,包括iOS上,Android浏览器,Windows,Mac和Linux操作系统。
LOVE可以用它来制作2D游戏的框架。它是免费和开源。它支持Windows,Mac OS X和Linux平台。
它提供了多种功能,其中包括,
文件系统API
键盘和摇杆的API
窗口和鼠标API
系统和定时器API
CryEngine是由德国游戏开发商Crytek公司开发的游戏引擎。它已演变从第1代到第4代,是一种先进的开发解决方案。它支持PC,微软Xbox 360,PlayStation3游戏机和WiiU游戏。
它提供了多种功能,其中包括,
视觉效果就像自然光线和动态柔和阴影,实时动态全局光照,光传输容量,颗粒底纹,镶嵌等。
角色动画系统和人物个性化系统。
参数骨骼动画和独特的专用人脸动画编辑器
人工智能系统如多层导航网格战术角度系统。还提供了设计师友好的AI编辑系统。
在游戏混合及分析,数据驱动的音响系统的动态声音和互动音乐等。
如程序变形和高级绳索物理物理特性
一个结束说明
所有这些游戏的SDK/框架都有自己的优点和缺点。它们之间的做正确选择能使您的工作更轻松,可以有一个更好的时间吧。因此,在使用它之前,需要知道游戏的需求,然后分析哪些满足所有需求,然后要使用它们。
标签:&&&&&&&&&&&&> 1 初窥Lua
相关推荐:依赖包(附件有下载):
包名类型操作系统luajava-1.1.jarjarALLlibluajava-1.1.so.solinuxluajava-1.1.dll.dllwindows
windows:
将luajava-1.1.dll拷贝到java.libary.path目录(通过System.getProperty("java.library.path")可以知道)
linux:
将libluajava-
1、为什么使用Lua?这个问题很多大牛前辈都回答过它的用处,现实游戏开发情况也可以证明它的广泛使用。知乎上《Lua 为什么在游戏编程领域被广泛运用》,开源社区《为什么我选择Lua ?》等等,都充分肯定了Lua的强大及其前景,免费小巧快速易移植,更重要的是其易扩展性使得Lua非常适合开发游戏,大话西游2、 魔兽世界Wow插件、剑侠情缘3等等都是用Lua语言。不过不用担心,强大的Lua却是比较容易学习上手,可深入讲的东西并不多,市面专门讲Lua的中文书籍也很少。《Programin Lua》、译本《Lua游戏开发实践指南》等都是很经典的书。2、游戏项目中的Lua(此处摘自《Lua游戏开发实践指南》)·编辑游戏的用户界面·定义、存储和管理基础游戏数据·管理实时游戏事件·创建和维护开发者友好的游戏存储和载入系统·编写游戏的人工智能系统·创建功能原型,可以之后用高性能语言移植3、Lua环境搭建Lua几乎可以在所有操作系统和平台上都可以编译,运行,Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。Lua内核小于120KB,当编译和集成到游戏开发系统中时非常小巧。下面简单地介绍一下Lua环境的搭建:①linux环境下:首先到Lua官方网站(http://www.lua.org/download.html)下载最新的Lua源代码,目前最新的是lua-5.2.3,得到的是一个.tar.gz。其次,使用tar -xzvf /path-to-your-lua-tar-file-folder/lua-5.2.3.tar.gz命令解压缩,将得到一个lua-5.2.3文件夹。之后,使用cd /path-to-your-lua-tar-file-folder/lua-5.2.3将当前工作目录切换到lua-5.2.3文件夹中。运行make命令,你将看到如下提示:Please domake PLATFORMwhere PLATFORM is one of these:aix ansi bsd freebsd generic linux macosx mingw posix solarisSee INSTALL for complete instructions.如果你的系统平台名称是否在支持的列表中,如果存在则继续运行make PLATFORM命令,否则选择运行make linux命令,一般情况下编译都是成功的。最后,运行makeinstall命令。至此,lua语言环境已经顺利安装完成,在终端下输入lua命令即可进入!之后可以下载一个Lua编辑器(LuaEdit)。②Windows环境下:下载LFW(Lua for Windows)版的,地址:(/p/luaforwindows/),luafor windows其实是一整套Lua的开发环境,它包括:Lua Interpreter(Lua解释器)Lua Reference Manual(Lua参考手册)Quick Lua Tour(L相关推荐:原文:/blog/2078851下载地址:protobuf:/p/protobuf/downloads/list下载最新的protobuf 我这里下载的是2.5.0protoc-gen-lua:/sean-lin/protoc-gen-lua下载master分支Linux下构建:ua快速入门)Examples (Lua范例)Libraries withdocumentation (一些Lua库和文档)SciTE (一个很棒的多用途编辑器,已经对Lua做了特殊设置)它整合了在windows学习和开发Lua所需要的所有东西,非常适合新手,附带的SciTE只要经过简单配置就能够很方便的编写Lua程序,编译,运行,调试。如果需要结合VC++6.0来使用,这里又有两种方法:1)这种比较方便,利用之前下载的FLW,在VC6.0的菜单里找到【工具】-【选项】-【目录】选项卡,然后把对应的 .h 文件和 .lib 文件给添加进去,路径就是下载FLW的安装路径下的include和lib文件夹,这样就行了。可以使用SciTE新建一个lua文件,在VC++里面打开加载,或者调用其某个函数。如下代码:#include#includeextern "C" {#include "lua.h"#include #include }#pragma comment(lib,"lua5.1.lib")int main (void){// 打开 Lualua_State *L = lua_open();// 加载 .lib 文件luaL_openlibs(L);// 加载脚本文件,需要放在程序目录luaL_dofile( L, "test.lua" );lua_resume( L, 0 );// 调用结束lua_close(L);system("pause");return 0;}2)如果不想下载LFW,就需要自己编译Lua库和配置开发环境。下载最新的Lua源代码,得到一个.tar.gz,用压缩软件来解开。解开的目录中有一个src目录,整个Lua核心代码就在这里了。用VC++6.0来生成lib文件,在VC6中新建一个Win32StaticLibrary静态库工程,工程名称比如设置为mylua,工程路径指向Lua的src目录,在随后的工程设置向导中,不用加入任何设置,即,不要勾选“预编译的头文件”和“MFC支持”选项。接下来,将所有src中的所有.c (lua.c除外)和.h 文件加入到工程中,编译,就可以得到我们想要的静态库mylua.lib 文件了。自己创建新项目时,只需要加入mylua.lib和几个头文件就可以开发了,网上大神推荐,把这些文件整理一下,放到合适的位置较好。先是建立include目录,然后在include目录下建立lua目录,将下列文件复制到lua目录下:lauxlib.hlua.hluaconf.hlualib.h建立和include目录同级的lib目录,将编译好的 liblua.lib 放到这里即可。可以使用记事本或Sublime Text创建lua文件,在VC++里面打开加载,或者调用其某个函数,同上。我们也可以用这个方法自己写个Lua控制台。共享代码如下:http://download.csdn.net/detail/hejiero/6900023
相关推荐:Lua5.3已经发布好长时间了,可是因为LuaForWindows的Lua版本无法和官方保持一致,所以想尝试下编译Lua5.3的源代码,因为作为一名合格的程序员,是应该要懂得编译原理的相关内容的啊(可是我真的没有学过编译原理啊!…..)。好了,那么今天博主将在文章中和大家
1、为什么使用Lua?
这个问题很多大牛前辈都回答过它的用处,现实游戏开发情况也可以证明它的广泛使用。知乎上《Lua 为什么在游戏编程领域被广泛运用》,开源社区《为什么我选择
Lua ?》等...
------分隔线----------------------------Lua教程(一):简介、优势和应用场景介绍
投稿:junjie
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Lua教程(一):简介、优势和应用场景介绍,本文是Lua教程系列文章的第一篇,需要的朋友可以参考下
一、简介:
  Lua作为目前最为流行的、免费轻量级嵌入式脚本语言,在很多工业级的应用程序中被广泛应用,如Adobe's Photoshop,甚至是在一些著名的游戏程序中也被大量使用,如星际。不仅如此,由于Lua具备很多特殊的优点,如语法简单(基于过程)、高效稳定(基于字节码)、可以处理复杂的数据结构、动态类型、以及自动内存管理(基于垃圾收集)等,因此在很多嵌入式设备和智能移动设备中,为了提高程序的灵活性、扩展性和高可配置性,一般都会选择Lua作为它们的脚本引擎,以应对各种因设备不同而带来的差异。
二、主要优势:
  1. 高效性:
  作为一种脚本语言,Lua的高效是众所周知的,因此在实际应用中,很多大型程序都会考虑将代码中易变的部分用Lua来编写。这不但没有明显降低系统的运行效率,反而使程序的稳定性和可扩展性得到了显著的提升。
  2. 可移植性:
  在官方网站中提供了基于多种平台的发布包,如Linux/Unix、Windows、Symbian和Pocket PC等。
  3. 可嵌入性:
  在语言设计之初,Lua就被准确的定位为嵌入式脚本语言,因此Lua的设计者们为Lua提供了与其他编程语言之间的良好交互体验,这特别体现在和C/C++之间的交互上。对于其他语言,如Java和C#,也可以将Lua作为其嵌入式脚本引擎,并在代码中进行直接的交互。
  4. 简单强大:
  尽管是过程化脚本语言,但由于Lua的设计者们为Lua提供了meta-mechanisms机制,这不仅使Lua具备了一些基本的面向对象特征,如对象和继承,而且仍然保持了过程化语言所具有的语法简单的特征。
  5. 小巧轻便:
  在最新版本(5.2.0)的Lua中,仅仅包含了大约20000行的C语言代码,编译后的库文件大小约为240K左右,因此这对于很多资源有限的平台有着极强的吸引力。
  6. 免费开源:
  MIT Licence可以让Lua被免费的用于各种商业程序中。
三、应用场景:
  1. 在很多时候,我们可以将Lua直接嵌入到我们的应用程序中,如游戏、监控服务器等。这样的应用方式对于程序的最终用户而言是完全透明的,但是对于程序本身,其扩展性将会得到极大的增强。
  2. 将Lua视为一种独立的脚本语言,通过它来帮助我们完成一些软件产品的辅助性工具的开发。比如在我们之前的数据分析产品中,我们通过编写Lua脚本,将每个用户不同格式的数据重新格式化为我们的软件平台能够读取的格式,之后再将格式化的后的数据加载到数据库中,或者是写入我们的分析引擎可以识别的数据分析文件中。这其中Lua仅仅用于文件格式的规格化过程,至于此后的操作,都是通过Lua调用我们的C语言导出函数来完成的。
  3. 将Lua应用于应用程序的动态配置部分。比如移动智能设备或嵌入式设备,它们的显示分辨率在很多情况下都是非标准的,如果我们为每一款设备都维护一套相关的配置信息,这无疑会加大我们程序的维护开销,如果我们将这段动态配置逻辑交由Lua脚本完成,那么这对于程序配置的灵活性而言,将会得到很大的提高。甚至可以是这样,运行在移动终端设备上的应用程序,在启动主窗体之前先和服务器建立连接,在服务器确认设备的各种参数后,再将和该设备显示相关的Lua脚本发送给设备客户端,这样客户端在得到Lua脚本之后,就可以立刻执行它以得到最新的动态配置信息。
  最后需要特别指出的是,学习Lua对于我们知识的系统性和完整性而言将是非常重要的一环,特别是对那些致力于软件架构设计和软件解决方案分析的高级软件专业人员而言就更是如此。因为在很多时候,如果我们能够很充分的理解和驾驭Lua,它不仅可以为我们的软件产品增色很多,而且也可以为我们技术人员带来一些意想不到的收获。
  这是Lua系列的第一篇博客,此后还会有十几篇相关的博客陆续发布,请有兴趣的网友持续保持关注。如有问题,欢迎及时指正。好了,那就让我们一起开始Lua的学习之旅吧。:)
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具}

我要回帖

更多关于 nfc在如今运用广泛吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信