Top Banner
Lua in Games Mr. Nguyễn Ngọc Vân Ass Software Manager – VNG Corporati
19

OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc

May 27, 2015

Download

Technology

Buff Nguyen

Presentation in OGDC 2012 organized by VNG Corp.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc

Lua in Games

Mr. Nguyễn Ngọc VânAss Software Manager – VNG Corporation

Page 2: OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc

Agenda

1. Lua & Benefits2. Core engine & Lua model3. Lua integrations model4. Secure Lua code5. Disadvantages

Page 3: OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc

1. Lua & Benefits

Page 4: OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc

• Scripting language• Works through LVM (Lua Virtual Machine)• Stack model design• “Ultimate game scripting language” (GDC 2010)• Popular uses in games• Runs on most machines and devices• Written in ANSI C and distributed by small library

What’s Lua?

Page 5: OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc

• Free and open source • Support OOP• Runs on almost platforms• Easy to interface with C/C++• Very clean C API• Auto memory management (GC)• Powerful, fast and lightweight• Flexible data structure (TABLE)

Lua Benefits

Page 6: OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc

• Contents can be changed in real-time• Auto generate contents• Users can customize/change contents• Fast and easy distributed contents• Secure code• Easy to use, embed and learn• Good references

Lua Benefits

Page 7: OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc

2. Core Engine & Lua Model

Page 8: OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc

ConfigsSettings

(XML, INI, TXT, …)

Game Logic Process(Behaviors, AI, …)

Control Flow

Core Engine

Page 9: OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc

ConfigsSettings(…, LUA)

Lua Engine

Control Flow

Core Engine

LUA Logic Process

(Behaviors, AI, …)

Page 10: OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc

3. Lua Integrations Model

Page 11: OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc

Core Logic(Logic Flow)

Lua Engine(LVM)

Lua codes

Lua APIs

Lua interface

Core Engine

Page 12: OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc

• Lua APIs– Call to LVM through events/triggers base– C APIs to work with LVM– Auxiliary library provides basic functions to

check, register, debug, … LVM– Use C APIs to build core functions

• Lua Interface– Call to core logic through exports APIs– Provides APIs (game APIs) to work with core

logic– Use C APIs to build, register, and exports APIs

Page 13: OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc

function OnPlayerUseItem(nItem)core.InstanceObj(OBJ_KIND_ITEM, nItem)if item.GetKind() == ITM_KIND_HP then

local nItemHP = item.GetAttribute(ITM_ATTR_HP)local nPlayerHP = player.GetCurrentHP()local nAddHP = 0.2 * nPlayerHPif nAddHP > 0 and nAddHP < player.GetMaxHP() then

player.SetCurrentHP(nAddHP)player.Message('Player:

'..player.GetName()..' use item '..item.GetName())end

endend

Quick Sample

Page 14: OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc

4. Secure Lua Code

Page 15: OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc

• Compile to byte-code– Popular use– Use luaC module included in library– Modify luaC with keys for more secure

• Encrypted– Little use– Use keys-pair to encrypted– Use signed file, CRC

Page 16: OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc

• Simple codefunction Add(a, b)

return a + bendprint(Add(100, 200))

• Byte-code

Page 17: OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc

5. Disadvantages

Page 18: OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc

• C APIs are too low-level• Error messages are very confusing • No try-catch, no exceptions• Hard to debug• Hard to interfaces with unlike C/C++• Once LVM is crashed, it’s not likely to recover and

the service is crashed too • Hard to implement reload feature at run-time• For extreme speed, LuaJIT is a good choice

Page 19: OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc