$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
獨立遊戲開發者分享會 110220 ─ LuaJIT intro
Search
IGDSHARE
January 09, 2012
Programming
3
870
獨立遊戲開發者分享會 110220 ─ LuaJIT intro
這是重新上傳第一場 IGDSHARE 時所分享的 LuaJIT 簡介資料,其中有少部份資訊已過時,參考時請注意。
LuaJIT 官方網站
http://luajit.org
IGDSHARE
January 09, 2012
Tweet
Share
More Decks by IGDSHARE
See All by IGDSHARE
Cogmind - a Well-Played Discussion (zh-TW)
igdshare
0
77
Guided Reading: Steam Tags, Discounts & Publishing Deals
igdshare
1
450
Steam in 2018 - notes from various talks
igdshare
2
140
Experimental Gameplay Workshop 2018 與 Alt. Ctrl. GDC 印象
igdshare
0
140
Experimental Gameplay Workshop 2017 & Alt. Ctrl. GDC Impressions
igdshare
0
170
IGDShare 160306 "Good Sound, Good Game" by IMBA Interactive
igdshare
1
470
Save your own game industry
igdshare
4
1.4k
Experimental Gameplay Workshop 2014 Impressions
igdshare
0
360
Making of CuBeat, Programming-wise
igdshare
1
2.2k
Other Decks in Programming
See All in Programming
認証・認可の基本を学ぼう前編
kouyuume
0
140
251126 TestState APIってなんだっけ?Step Functionsテストどう変わる?
east_takumi
0
290
How Software Deployment tools have changed in the past 20 years
geshan
0
27k
ローターアクトEクラブ アメリカンナイト:川端 柚菜 氏(Japan O.K. ローターアクトEクラブ 会長):2720 Japan O.K. ロータリーEクラブ2025年12月1日卓話
2720japanoke
0
370
30分でDoctrineの仕組みと使い方を完全にマスターする / phpconkagawa 2025 Doctrine
ttskch
3
700
TypeScriptで設計する 堅牢さとUXを両立した非同期ワークフローの実現
moeka__c
6
2.9k
UIデザインに役立つ 2025年の最新CSS / The Latest CSS for UI Design 2025
clockmaker
16
6.3k
全員アーキテクトで挑む、 巨大で高密度なドメインの紐解き方
agatan
8
18k
Rediscover the Console - SymfonyCon Amsterdam 2025
chalasr
2
120
React Native New Architecture 移行実践報告
taminif
1
130
ViewファーストなRailsアプリ開発のたのしさ
sugiwe
0
360
WebRTC、 綺麗に見るか滑らかに見るか
sublimer
1
130
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
37
7k
Producing Creativity
orderedlist
PRO
348
40k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Why You Should Never Use an ORM
jnunemaker
PRO
60
9.6k
Being A Developer After 40
akosma
91
590k
Designing for Performance
lara
610
69k
RailsConf 2023
tenderlove
30
1.3k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Context Engineering - Making Every Token Count
addyosmani
9
450
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Embracing the Ebb and Flow
colly
88
4.9k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
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