Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
獨立遊戲開發者分享會 110220 ─ LuaJIT intro
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
IGDSHARE
January 09, 2012
Programming
910
3
Share
獨立遊戲開發者分享會 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
97
Guided Reading: Steam Tags, Discounts & Publishing Deals
igdshare
1
470
Steam in 2018 - notes from various talks
igdshare
2
160
Experimental Gameplay Workshop 2018 與 Alt. Ctrl. GDC 印象
igdshare
0
150
Experimental Gameplay Workshop 2017 & Alt. Ctrl. GDC Impressions
igdshare
0
190
IGDShare 160306 "Good Sound, Good Game" by IMBA Interactive
igdshare
1
490
Save your own game industry
igdshare
4
1.4k
Experimental Gameplay Workshop 2014 Impressions
igdshare
0
380
Making of CuBeat, Programming-wise
igdshare
1
2.2k
Other Decks in Programming
See All in Programming
Xdebug と IDE による デバッグ実行の仕組みを見る / Exploring-How-Debugging-Works-with-Xdebug-and-an-IDE
shin1x1
0
340
脱 雰囲気実装!AgentCoreを良い感じにWEBアプリケーションに組み込むために
takuyay0ne
3
430
AI時代の脳疲弊と向き合う ~言語学としてのPHP~
sakuraikotone
1
1.8k
AIと共にエンジニアとPMの “二刀流”を実現する
naruogram
0
130
PHPで TLSのプロトコルを実装してみるをもう一度しゃべりたい
higaki_program
0
170
レガシーPHP転生 〜父がドメインエキスパートだったのでDDD+Claude Codeでチート開発します〜
panda_program
0
240
20260313 - Grafana & Friends Taipei #1 - Kubernetes v1.36 的開發雜記:那些困在 Alpha 加護病房太久的 Metrics
tico88612
0
250
おれのAgentic Coding 2026/03
tsukasagr
1
130
実践ハーネスエンジニアリング #MOSHTech
kajitack
7
5.6k
iOS機能開発のAI環境と起きた変化
ryunakayama
0
150
Symfony + NelmioApiDocBundle を使った スキーマ駆動開発 / Schema Driven Development with NelmioApiDocBundle
okashoi
0
260
GoのDB アクセスにおける 「型安全」と「柔軟性」の両立 - Bob という選択肢
tak848
0
310
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
180
From π to Pie charts
rasagy
0
160
Building Applications with DynamoDB
mza
96
7k
Mind Mapping
helmedeiros
PRO
1
140
Speed Design
sergeychernyshev
33
1.6k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
990
How to Think Like a Performance Engineer
csswizardry
28
2.5k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
160
Thoughts on Productivity
jonyablonski
76
5.1k
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