2012年12月13日木曜日

Lua

技術ミーティングでLTをしたので、ブログでも書きます。
テーマはLuaです。


Luaとは
リオデジャネイロ・カトリカ大学で開発されたスクリプト言語です。
もともとC言語などに組み込まれることを想定しているため、高速な動作、高い移植性、組み込みが容易な事が特徴として挙げられます。

実用例
・アイドルマスター2
・World Of Warcraft
・FF14←もはや()
・Baldur’s Gate
・Playstation Home
・Photoshop lightroom
・VOCALOID3←残念ながら我らがミクさんはVOCALOID2です。
・Wireshark
・ヤマハのルータ

などで使われています。

Luaはスクリプト言語としては速度が速く、組み込みもしやすいのでゲーム制作で活躍しています。
(キャラクターの移動であったり、AIの思考ルーチンだったり……変更が多い箇所で活躍)

どれくらい早いのかは下記を参照してください


特徴
・Rubyなんかでおなじみの連想配列
・関数が変数として扱えるJavascriptのような機能
・ガベージコレクションが採用されておりメモリ管理も楽ちん

更に、今回紹介したい面白機能として「コルーチン」があります。
スクリプト言語による効率的ゲーム開発 新訂版」によれば協調的マルチスレッドを実現する機能で平たく言えば実行を途中で止めたり、途中から再開したりできるような関数が作れます!


実例
[コード]
function func(x)
    for i=0,3 do
        print(x..i)
        coroutine.yield()
    end
end

co1 = coroutine.create(func)
co2 = coroutine.create(func)

while true do
    r1 = coroutine.resume(co1, "A")
    r2 = coroutine.resume(co2, "B")
    if (r1 and r2) == false then
        break
    end
end
--

coroutine.yieldで関数を抜けて
coroutine.resumeで再開するんですが……

[実行結果]
A0
B0
A1
B1
A2
B2
A3
B3

おぉ……ちゃんと途中で切って途中からプログラムが走ってる……


風……なんだろう吹いてきてる確実に、着実に、俺たちのほうに!
なんだかおもしろいことができそうでwktkします。

--
[参照]
※スクリプト言語による効率的ゲーム開発 新訂版

第一回、合同技術勉強会を開催しました

はじめまして。
技術チームのtomochangです。

先日、ユーザベースとして初めて外部の方をお招きして技術勉強会を行いました!
社内外から5人のスピーカーにご登壇いただき、それぞれとても刺激的なテーマでお話いただきました。
プレゼン資料と当日の様子を載せておきますので、是非ご覧下さい。


1. 榎本 紘二(弊社インフラチームリーダー)
弊社SPEEDAの紹介と、過去経験した障害への対応策@インフラ

この発表の資料は検閲されました。
お察しください・・・


写真共有アプリSnapeeeのアーキテクチャ、がっつり使うAWS

この発表の資料は検閲されました。
お察しください・・・


3. 矢野 勉さん(株式会社シェルフ代表取締役)




4. Mr. X(某巨大BtoCサービスインフラチームリーダー)
大人の事情で非公開となります。


5. 竹内 秀行 (弊社チーフテクノロジスト)
広域不可分散ファイル配信システム KARATACHI-PORTUS




勉強会の後は場を移し、もつ鍋をつつきながらの懇親会へ。
やったお酒が飲め(ry

発表内容についてのディスカッションはもちろん、Snapeeeが全世界で大ヒットしている理由、某巨大BtoCサービスならではのデータセンターの選び方、Javaの今後や最適な開発体制のあり方などなど、超貴重でコアな話が飛び交う素敵な会でした。


今後もユーザベース技術チームでは、定期的に合同勉強会を行う予定でいます。
楽しそうだなと思った技術者の方は、是非一度遊びにきて下さい。
スピーカーとして話してやるぜ!という素敵な方も随時募集中です。


ご連絡は下記までお願い致します。
technology@uzabase.com