书籍地址: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的一个重要特性:协程,协程在异步编程中应用广泛,不但能简化传统异步编程的代码编写,并且还能有效的提高性能;

《Lua游戏开发实践指南》读后感的更多相关文章

  1. 《DevOps软件架构师行动指南》读后感

    从软件架构师视角讲解了引入DevOps实践所需要拥有的技术能力,涵盖运维.部署流水线.监控.安全与审计以及质量关注,这是本书一开始内容简介的开头,本书的作者是伦恩·拜斯(Len Bass).英戈·韦伯 ...

  2. nodejs开发指南读后感

    nodejs开发指南读后感 阅读目录 使用nodejs创建http服务器; supervisor的使用及nodejs常见的调式代码命令了解; 了解Node核心模块; ejs模板引擎 Express 理 ...

  3. DevOps:软件架构师行动指南(文摘)

    第一部分 背景 第1章 DevOps是什么 第二部分 部署流水线 第三部分 横切关注点 第四部分 案例研究 第五部分 走向未来

  4. 2020年DevOps工程师入门指南

    DevOps兴起于2010年代,到现在DevOps已经在行业中拥有了一席之地,并在继续发展壮大. 有兴趣成为一名DevOps工程师吗?如果想要成为一名DevOps工程师,需要做到以下五点: 要有开发者 ...

  5. 5月29日 Java性能调优指南 读后感

    并行垃圾收集器 串行垃圾收集器 并发标记清除(CMS)垃圾收集器 Garbage First(G1)垃圾收集器 没有深入的学习G1的原理,只是看了大概的思想; SA工具:待学习

  6. 敏捷开发、DevOps相关书籍——书单

    自己瞎整理的一些书单,都是豆瓣评分比较高的书,可以作为选择的一个参考. 书名 豆瓣链接 持续交付:发布可靠软件的系统方法 https://book.douban.com/subject/6862062 ...

  7. 有奖试读—Windows PowerShell实战指南(第2版)

    为什么要学PowerShell? Windows用户都已习惯于使用图形化界面去完成工作,因为GUI总能轻易地实现很多功能,并且不需要记住很多命令.使得短时间学会一种工具成为可能. 但是不幸的是,GUI ...

  8. [转载]你所不了解的DevOps

    DevOps开发运维训练营 一旦建立了创新的文化,即使那些并非科学家或者工程师的人——诗人.演员.记者——也能以团体的形式,接受科学文化的意义.他们信奉创新文化的概念.他们以促进这种文化的方式投票.他 ...

  9. 给 DevOps 初学者的入门指南

    当我们谈到 DevOps 时,可能讨论的是:流程和管理,运维和自动化,架构和服务,以及文化和组织等等概念.那么,到底什么是"DevOps"呢? 什么是DevOps 随着软件发布迭代 ...

  10. CI Weekly #3 | 关于微服务、Docker 实践与 DevOps 指南

    CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...

随机推荐

  1. Ubuntu 12.04 安装 Tomcat8 遇到的问题

    问题: :/tomcat8/bin$ sudo ./configtest.sh Using CATALINA_BASE:   /home/yyb/android/tomcat8 Using CATAL ...

  2. Trie图和Fail树

    Trie图和AC自动机的区别 Trie图是AC自动机的确定化形式,即把每个结点不存在字符的next指针都补全了.这样做的好处是使得构造fail指针时不需要next指针为空而需要不断回溯. 比如构造ne ...

  3. php如何判断用户是从指定页面跳转进来的

    $_SERVER['HTTP_REFERER']下'HTTP_REFERER' 引导用户代理到当前页的前一页的地址(如果存在).由 user agent 设置决定.并不是所有的用户代理都会设置该项,有 ...

  4. java去全半角空格,trim(), replaceAll(" +",""),replaceAll("\\s*", ""), replaceAll(" | ", "")

    JAVA中去掉空格 . String.trim() trim()是去掉首尾空格 .str.replace(" ", ""); 去掉所有空格,包括首尾.中间 St ...

  5. SQLiteDatabase和Contentprovider

    SQLiteDatabase和Contentprovider这两个数据库,我一般是用前面一个,喜欢它的操作数据库的语句,简单明了,可惜有时遇到数据库同步的问题,有时我们需要在一个数据库下建立多个表,多 ...

  6. java HashMap中出现反复的key, 求解释

    上代码: Person p1 = new Person("xiaoer",1); Person p2 = new Person("san",4); Map< ...

  7. dedecms 织梦显示时间格式

    field:pubdate function=GetDateMK(@me)/] 2009-11-10 [field:pubdate function=GetDateTimeMK(@me)/] 2009 ...

  8. 懒人模式Singleton模式Meyers版本号

    直接看代码: /* Singleton模式保证:在一个程序,,一个类有且只有一个实例.并提供一个访问 它的全局访问点 在编程其中.很多情况下,需要确保有一类的一个实例 比如: windopws系统中仅 ...

  9. HBuilder之初体验

    听闻HTML5定稿了,所以特意去了解了下.文章有提到HTML5的一款IDE(HBuilder,貌似出来好久了,孤陋寡闻....),于是来到官网http://dcloud.io/ ,被演示图震惊了!果然 ...

  10. 做web项目时对代码修改后浏览器端不生效的应对方法(持续更新)

    做web项目时,经常会遇到修改了代码,但浏览器端没有生效,原因是多种多样的,我会根据我遇到的情况逐步更新解决办法 1.运行的时候采用debug模式,一般情况下使用项目部署按钮右边那个按钮下的tomca ...