Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
獨立遊戲開發者分享會 110220 ─ LuaJIT intro
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
IGDSHARE
January 09, 2012
Programming
970
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
獨立遊戲開發者分享會 110220 ─ LuaJIT intro
這是重新上傳第一場 IGDSHARE 時所分享的 LuaJIT 簡介資料,其中有少部份資訊已過時,參考時請注意。
LuaJIT 官方網站
http://luajit.org
IGDSHARE
January 09, 2012
More Decks by IGDSHARE
See All by IGDSHARE
Cogmind - a Well-Played Discussion (zh-TW)
igdshare
0
120
Guided Reading: Steam Tags, Discounts & Publishing Deals
igdshare
1
510
Steam in 2018 - notes from various talks
igdshare
2
170
Experimental Gameplay Workshop 2018 與 Alt. Ctrl. GDC 印象
igdshare
0
160
Experimental Gameplay Workshop 2017 & Alt. Ctrl. GDC Impressions
igdshare
0
190
IGDShare 160306 "Good Sound, Good Game" by IMBA Interactive
igdshare
1
530
Save your own game industry
igdshare
4
1.5k
Experimental Gameplay Workshop 2014 Impressions
igdshare
0
400
Making of CuBeat, Programming-wise
igdshare
1
2.2k
Other Decks in Programming
See All in Programming
20260828_品質と開発生産性を両立させる、AI時代のE2Eテストの考え方
magicpod
0
200
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
2.7k
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
140
巨大モノリシックアプリ モダン化大作戦
ktcryomm
0
880
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
1
510
Heart of Swift Concurrency
koher
0
240
Deep dive into the select statement (GopherCon UK)
jespino
0
170
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
300
自分的「カンファレンスの楽しみ方」
syumai
0
200
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
260
GraphRAGのKnowledge Graphを 直接!見る/View-GraphRAG's-KnowledgeGraph-directly!
tyumugi1113
1
290
デプロイ直後のレイテンシスパイクを調べたら、 Railsの仕様にたどり着いた
nhsykym
0
110
Featured
See All Featured
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
400
Facilitating Awesome Meetings
lara
57
7.1k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Raft: Consensus for Rubyists
vanstee
141
7.7k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
The Curse of the Amulet
leimatthew05
2
14k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
300
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
680
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.9k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Transcript
LuaJIT a Just-in-Time compiler for the language Lua
誰在用 Lua World of Warcraft Angry Birds Civilization 5 Homeworld
2 ... http://en.wikipedia.org/wiki/Category:Lua-scripted_video_games ...AND YOU!(possibly)
認識 Lua 語法簡單、靈活 速度快 體積小 易延展(Lua/C API) =>Extensible & Embeddable
『通常不獨立使用』
Lua 效能
Lua 效能
LuaJIT http://luajit.org Michael (Mike) Pall 2005~ LuaJIT 1.x (stable 1.1.6)
2009~ LuaJIT 2.0-beta releases Now =>LuaJIT 2.0-beta6 (google for LuaJIT Roadmap 2011)
Just-in-Time Compiler? 即時編譯器 Source code => bytecode => machine code
Java Hotspot C# .Net Javascript V8/Trace(Jaeger) Monkey Python Pypy ...還有很多
JIT 效能
速度 & 程式碼量
LuaJIT 2.0 超級快 只算 interpreter 也比原本快 2x-4x Lua 5.1 語法完全相同
丟進去就可以用(drop-in replacement) Beta 已經很穩定 Foreign Function Interface(beta6) 現在只有 x86/64 版本
LuaJIT in Games? The Settlers 7 搶在上市前實裝 LuaJIT2-beta 個人測試: Civilization
5 只能用 LuaJIT1 (可能是因為 bytecode 不相容) Mike 本人透露,還有很多不能講...
LuaJIT 注意事項 Lua table 盡量用,不用怕 overhead 避免大量的 closure(目前) 避免只跑幾次的 inner
loop 避免 global object for i = 1, 100000000 do local t = {'a','b','c'} for j = 1, 3 do t[j] = .. end End --p.s.通常這可以被自動 unroll,但若其 loop 次數是由變數決定就很難講
LuaJIT 注意事項 避免無謂的暫存物件 多用 -jv option 查看執行效果 Bytecode 不相容於 Lua
5.1 不打算積極跟上 Lua 5.2
LuaJIT 近期重點 Qualcomm 贊助 ARM Port! Foreign Function Interface! local
ffi = require("ffi") ffi.cdef[[ typedef struct { float x,y,z; } SVertex; int MessageBoxA(void*,char const*,char const*,int); ]] ffi.C.MessageBoxA(nil, "Hello world!", "Test", 0) local img = ffi.new("SVertex[?]", 100) img[0].x = 123
What's to come? 2011 年內: LuaJIT 2.0 正式版與 2.1 測試版
ARM port of LuaJIT 2.0 About 2.1: New Garbage Collector FFI C-preprocessor (?)
What's to come? 更遠程:LuaJIT FFI to C++ (!?) Binding 再也不用額外寫,運算可以幾乎
都寫在 Lua 裡... ...Full Lua 3D engines ? ...Full Lua Triple-A Titles ? What's in the next level ?
My 2 Cents: 沒有天天過年的啦 Lua nature1:沒有統一穩定的電池 Lua nature2:大概永遠不適合大團隊開發 因為太簡單,大家自成一套 =>
結果反而不穩定、難用? x86/64、ARM 以外的平台大概有得等
Demo Time Game of Life benchmark: 純邏輯速度比較 C/C++ 加上繪圖速度比較 =>
GL primitive、Vertex Array、 VBO、PBO 繪圖加速情況下把邏輯加速關掉 [1] https://github.com/archilifelin/mysandbox/blob/master/lua/lifegame_ffi_sdl_gl.lua [2] https://github.com/archilifelin/mysandbox/tree/master/cpp/lifegame_sdl
Lua 框架 CoronaSDK Scripting-Layer for Android (SL4A) Gamekit (based on
Ogre) ShiVa Engine Love2D ...and more
Love2D http://love2d.org OpenGL 加速的輕量 2D遊戲框架 Box2D integration TrueType Font(no unicode
yet) Pure Lua function love.draw() love.graphics.print('Hello World!', 400, 300) end
Q & A 資料來源 Lua mailing list http://luajit.org http://love2d.org http://en.wikipedia.org
http://shootout.alioth.debian.org
[email protected]
http://igdshare.org