书籍地址:http://book.douban.com/subject/20392269/

一句话点评该书:想用Lua作游戏脚本开发的同学值得一读!

(一)本书特点

市面专门讲Lua的中文书籍非常少,窃以为,一方面可能认为Lua比較简单,可深入讲的东西并不多;还有一方面,说明Lua的开发人员数量,(尤其是国内)还是一个比較小众的群体,出版商们也无利可图。回到这本书,它不同于一般纯粹讲Lua语言本身的书籍,如:《Lua程序设计》等,而是专注于解说Lua在游戏领域的应用,从书中列出的几个样例来看,能够看得出作者在游戏行业是有比較丰富的经验的。以下摘取了书中的一些要点,与诸君分享之:)

(二)要点分享

(1)Lua在游戏开发的应用场景

1)编辑游戏的用户界面

我的理解:GUI图形绘制等基础功能还是要由宿主语言来完毕,如:C/C++,Lua能够负责GUI的排版、布局等逻辑处理;

2)定义、存储和管理基础游戏数据

我的理解:游戏对象各配置数据假设比較简单的,均能够用Lua代码直接描写叙述,用以取代文本文件,并省却解析的代价。复杂一点的,能够结合excel(保存为cvs文件),并利用Lua强大的文本解析功能来完毕。

3)管理实时游戏事件

我的理解:玩家与游戏的交互都是通过鼠标、键盘等外设来完毕,而在游戏设计中,普遍的做法是用事件机制来驱动完毕。在Lua中能够通过定义LuaGrue函数与C/C++等宿主语言进行交互调用来形成一整套完整的事件系统。详细实现时,宿主语言实现捕获鼠标、键盘各类事件的底层接口,而事件触发后详细做什么,以及事件之间可能的依赖关系等逻辑,则由Lua来完毕;

4)创建和维护开发人员友好的游戏存储和加载系统

我的理解:在单机游戏中的游戏存档等数据,也能够非常方便的用Lua来直接描写叙述;

5)编写游戏的人工智能系统

我的理解:作者说的在AI中应用Lua,我认为应用场景应该是在一些比較小的单机游戏中,而在大型多人在线的网络游戏中,恐怕还是须要性能更高的C/C++来实现。当然,作者也讲到,一个灵活的做法是,先用Lua来高速实现原型,遇到性能瓶颈了,再用C/C++来替换。

作者在讲到Lua在游戏开发团队中的应用分工时说,“程序猿负责将Lua整合到游戏开发环境中,游戏设计师(策划)是脚本语言的主要使用者,由于他们和上层的游戏设计和数据直接打交道,美术师也会常常使用Lua,进行诸如界面布局、设计和3D场景中各种模型的摆放之类的工作。”看到这里时,不禁感叹,我们与国外游戏开发同行的水平差距:人家觉得游戏策划和美术人员写脚本是理所当然的事情,而咱们这里,却觉得这些不都是程序猿该干的活吗?开发理念的高低直接导致了开发成果的巨大差异!

(三)本书的不足

(1)书中讲的Lua版本号是5.0,而如今最新的已是5.2.1了,与C语言通信的API也有了一些变化;

(2)没有讲Lua的一个重要特性:协程,协程在异步编程中应用广泛,不但能简化传统异步编程的代码编写,并且还能有效的提高性能;

最新文章

  1. C算法编程题(四)上三角
  2. Android横竖屏切换
  3. 网络误区:不用中间变量交换2个变量的value,最高效的是异或运算.
  4. 采用Atlas+Keepalived实现MySQL读写分离、读负载均衡【转载】
  5. 使用php脚本查看已开启的扩展
  6. .NET C# Tostring() format 格式化字符串大全
  7. jQueryUI日期显示
  8. 转:Tomcat配置
  9. D.T SOFTWARE (1) 软件架构直播答疑课程
  10. Android java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor ver
  11. DNA Sorting(排序)
  12. ACM比赛(11462 Age Sort)
  13. Chapter 2 User Authentication, Authorization, and Security(4):限制SA帐户管理权限
  14. EBS form 之间跳转实现(form 关闭)
  15. 图片与Base64相互转换 jar包
  16. spring 空指针报错,Could not create connection to database server.
  17. 【CF506E】Mr. Kitayuta's Gift dp转有限状态自动机+矩阵乘法
  18. C++STL queue
  19. JS 播放列表收缩展开
  20. springBatch学习 batch的使用方式(5)

热门文章

  1. java总结,错误集
  2. Nginx使用ngx_zeromq模块返回502错误的解决方法
  3. PHP 文件操作类(创建文件并写入) 生成日志
  4. Objective-C NSObject 的实现分析(2014-10-23更新)
  5. 遇过的坑(2)—MyISAM表类型不支持事务操作
  6. WPF换肤之七:异步
  7. 浅谈TCP优化(转)
  8. Maven插件之git-commit-id-plugin
  9. uva11922(强行用rope替代spaly)
  10. android中的返回键与Activity