New Engine, New Screen Shot.
April 27, 2009 – 4:13 pm剛剛看到日子,有一年零四日沒有更新.. :)
最近看到同事和朋友的Blog中,大家也在開發自家的遊戲引擎,心想不如我也參與其中吧。
而且,發覺自己真的開始老了,寫程式的進度很慢很慢,或許是時候自我進修一下。
所以…. 好,去片:(我還不懂Cap 片..)
From |
內容只是十分簡單,不過實作了三樣想寫很久的東西:
1. Lua based framework with coroutines
Lua 最最強大的地方是,實入了coroutines。由於在實際上寫script 的人,多數是game designer,
Event driven based 的script system對他們來說是比較有一點難度。
但若引入了Coroutines,Script 的編寫就會變得直線很多:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | -- Create an window Window { title = "Lua Framework", x = 30, y = 30, w = 800, h = 600, fullscreen = true } -- Create the camera Camera { eye = {-5.0,5.0,1.0}, target = {0.0, 0.0, 0.0}, } --Create Objects objects = {} r = 5.0 n = 10 for i=1,n do local theta = ((2.0 * math.pi) / n ) * i; if i < 4 then objects[i] = Object { Movable(), Renderable(geom.cube, 2.0) } elseif i < 7 then objects[i] = Object { Movable(), Renderable(geom.sphere, 1.0, 20), } else objects[i] = Object { Movable(), Renderable("teapot.obj") } end objects[i].movable.position = { math.sin(theta) * r, 1.0, math.cos(theta) * r, } objects[i].movable.orientation = { 0, 1, 0, theta + (math.pi * 0.5), } end offset = 0 -- start our main game loop while true do -- tell the system to we are idle, to let system do its work idle() for k, v in pairs(teapots) do local theta = ((math.pi * 2.0) / #objects) * k + offset; v.movable.position = { math.sin(theta) * r, math.sin(theta) * math.cos(theta) * r, math.cos(theta) * r, } v.movable.orientation = { 0, 1, 0, theta + (math.pi * 0.5), } end offset = offset + 0.001 p1 = objects[1].movable.position p2 = objects[2].movable.position -- Print some text on screen print(string.format("%f,%f,%f, %f,%f,%f", p1[1], p1[2], p1[3], p2[1], p2[2], p2[3], #objects)) end |
以上是一個簡單的script ,只是會看到幾個Box, Sphere 和 Teapot 在移動。
但特別的地方是那個 idle() ,它是一個coroutine ,會把Lua 的運行suspened了,把運行的權利交會給system,
直至system 呼叫 lua_resume 這個 C Api 。
2. No C++, Only C
原因有很多,最簡單的原因是,compile 的時間快了十倍 :)
3. Meshless Deformations Based on Shape Matching
幾年前看到了它的demo後,便很想把它實作出來,
而由於我想開發的新遊戲,需要有一個deformable 的physic engine,所以便試它一下。
暫時只實在了Linear Deformation,和沒有 object to object collision ,
不過還是很好玩 :)
最後,原本想upload 那個demos上來,但不知道為什麼,upload 不了,
等我問問橙先生後,再放上來 :)
2 Responses to “New Engine, New Screen Shot.”
已email 了新的ftp account 給你~ please check~
By SOrange on Apr 27, 2009
Emailed up the new FTP account
By SOrange on Apr 27, 2009