OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc

on

  • 1,009 views

Presentation in OGDC 2012 organized by VNG Corp.

Presentation in OGDC 2012 organized by VNG Corp.

Statistics

Views

Total Views
1,009
Views on SlideShare
680
Embed Views
329

Actions

Likes
0
Downloads
27
Comments
0

2 Embeds 329

http://vietgamedev.net 286
http://diendan.gamelandvn.com 43

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc Presentation Transcript

  • 1. Lua in Games Mr. Nguyễn Ngọc Vân Ass Software Manager – VNG Corporation
  • 2. Agenda1. Lua & Benefits2. Core engine & Lua model3. Lua integrations model4. Secure Lua code5. Disadvantages
  • 3. 1. Lua & Benefits
  • 4. What’s Lua?• 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
  • 5. Lua Benefits• 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)
  • 6. Lua Benefits• 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
  • 7. 2. Core Engine & Lua Model
  • 8. Configs Control Flow Settings(XML, INI, Game Logic Process TXT, …) (Behaviors, AI, …) Core Engine
  • 9. Configs Settings (…, LUA) Control Flow Lua Engine LUA Logic Process(Behaviors, Core Engine AI, …)
  • 10. 3. Lua Integrations Model
  • 11. Lua APIs Lua Core Logic Lua Enginecodes (Logic Flow) (LVM) Lua interface Core Engine
  • 12. • 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
  • 13. Quick Samplefunction 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 * nPlayerHP if nAddHP > 0 and nAddHP < player.GetMaxHP() then player.SetCurrentHP(nAddHP) player.Message(Player:..player.GetName().. use item ..item.GetName()) end endend
  • 14. 4. Secure Lua Code
  • 15. • 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
  • 16. • Simple code function Add(a, b) return a + b end print(Add(100, 200))• Byte-code
  • 17. 5. Disadvantages
  • 18. • 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 