tag:blogger.com,1999:blog-110358722024-03-07T22:11:48.114-05:00Midnight CoderfallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.comBlogger262125tag:blogger.com,1999:blog-11035872.post-78674358922870759582021-01-09T05:52:00.003-05:002021-01-09T23:19:06.789-05:00Stake Characters<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJyfL9MNZzdC8NnSszk9DnQHqT-xDfkr52bDy23o3K6n7GdltlQdw8Chk6gHaOb347wVUo1rM6e2sfLISPNGtUnTKghJQOHGpMLrHfGWuZveYvWcpV9Ct_46G9v5X_y3-euHuhJg/s2048/VoxelScene.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1795" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJyfL9MNZzdC8NnSszk9DnQHqT-xDfkr52bDy23o3K6n7GdltlQdw8Chk6gHaOb347wVUo1rM6e2sfLISPNGtUnTKghJQOHGpMLrHfGWuZveYvWcpV9Ct_46G9v5X_y3-euHuhJg/s320/VoxelScene.png" width="320" /></a></div><br /> <p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi79RZR-HiY20zNJ-IFfrcvlzRD1jFDqmX9PGsKFxJ5U3QWoV2Eg0zMz-x-vgE2TlIZI55oH1Z7mli0Cz4AHjBEbZhRdib8rbf2ZZ_zGRGhF1joRV-YJWH-KjUYJZsanZD56Tn1lQ/s222/Yen_Yen.gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="222" data-original-width="110" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi79RZR-HiY20zNJ-IFfrcvlzRD1jFDqmX9PGsKFxJ5U3QWoV2Eg0zMz-x-vgE2TlIZI55oH1Z7mli0Cz4AHjBEbZhRdib8rbf2ZZ_zGRGhF1joRV-YJWH-KjUYJZsanZD56Tn1lQ/s0/Yen_Yen.gif" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjm4z5-kAdzditd31PmNdlWK2efdn91R45QIfXx7JOLQv72UiFJ7dYfbZRJ9vxnt054IDvpETDY86wyEhC06FXWxTdjanZY9qra5LlupbQ67syUcTR9710HSuhoZrrIXBUzjTOsAQ/s215/Yen_Fan.gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="215" data-original-width="108" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjm4z5-kAdzditd31PmNdlWK2efdn91R45QIfXx7JOLQv72UiFJ7dYfbZRJ9vxnt054IDvpETDY86wyEhC06FXWxTdjanZY9qra5LlupbQ67syUcTR9710HSuhoZrrIXBUzjTOsAQ/s0/Yen_Fan.gif" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUeJNWeRXOQVj_o91GjLeeo__rUYGt4bC5wwCinFlB4x9LsgWoDsQ4-saCZdgTwq_6ERWXgnLV76CWtz21_InKtRQL2ArjOaLDAZy2gXGJAiXFuXQaCTREyXmsm1_VcReCqh5ptg/s186/Void_the_Monk.gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="186" data-original-width="156" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUeJNWeRXOQVj_o91GjLeeo__rUYGt4bC5wwCinFlB4x9LsgWoDsQ4-saCZdgTwq_6ERWXgnLV76CWtz21_InKtRQL2ArjOaLDAZy2gXGJAiXFuXQaCTREyXmsm1_VcReCqh5ptg/s0/Void_the_Monk.gif" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyF_j4R39hB9hCycqmHWgzVmSDEE4Y-lkubxi5ZfghMgYeO_yn8OiEhk7iNoIG23Q3QJCeHAUjVJnnCGEROb-fnkfLfRuxaVPgjBs93T6qPpLHbHjq2ZKrXv2rCgbmaZoZGsH-zA/s216/Pharo.gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="216" data-original-width="117" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyF_j4R39hB9hCycqmHWgzVmSDEE4Y-lkubxi5ZfghMgYeO_yn8OiEhk7iNoIG23Q3QJCeHAUjVJnnCGEROb-fnkfLfRuxaVPgjBs93T6qPpLHbHjq2ZKrXv2rCgbmaZoZGsH-zA/s0/Pharo.gif" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwA87YfEqyB-DtxeSxbbcoL4hzq39xCCYPCJ19E3IPft9aTnKKaPzyxu6pBIm-8-tOprF86vWjfcUo1e9T2BYQvP4CTxnJRq1Dg6ySRcj-OPAmxoFz30WyTK9i9UkNIyFMsNXn2w/s212/Habba_Kenji.gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="212" data-original-width="123" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwA87YfEqyB-DtxeSxbbcoL4hzq39xCCYPCJ19E3IPft9aTnKKaPzyxu6pBIm-8-tOprF86vWjfcUo1e9T2BYQvP4CTxnJRq1Dg6ySRcj-OPAmxoFz30WyTK9i9UkNIyFMsNXn2w/s0/Habba_Kenji.gif" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCIEMctOCYn0Xcw8_Jec140Iddmk0KkT9VkFjP6Di6218B0jU3JtdfXPZ33zzbtlACEgCezcvbFmAgVZ9ylB1w4vzMuJmwHe419yKaIT0j2hyphenhyphenJmRVYAPpSvqHVzMMgwHq_LaImyg/s182/Barty.gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="182" data-original-width="109" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCIEMctOCYn0Xcw8_Jec140Iddmk0KkT9VkFjP6Di6218B0jU3JtdfXPZ33zzbtlACEgCezcvbFmAgVZ9ylB1w4vzMuJmwHe419yKaIT0j2hyphenhyphenJmRVYAPpSvqHVzMMgwHq_LaImyg/s0/Barty.gif" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrl6RNTlq9PyC8jzQNfGQeOfKqxq9aBPGR90MroSdMuuvt2eu3_AhSC7YnyOP1cBf1I0lB1p-JrugDo2VJJy2jkIRl7jpnsRGy9ou-7xrrFVnvd3BV-qf5uaxXxUQ0oU2sLxlf3Q/s229/Baron.gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="229" data-original-width="123" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrl6RNTlq9PyC8jzQNfGQeOfKqxq9aBPGR90MroSdMuuvt2eu3_AhSC7YnyOP1cBf1I0lB1p-JrugDo2VJJy2jkIRl7jpnsRGy9ou-7xrrFVnvd3BV-qf5uaxXxUQ0oU2sLxlf3Q/s0/Baron.gif" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTroCgF3xC60nQLn8XNZyk2FHmnJHk8YN41Hdt_I8HyD3B6WfbjD-7N7_s828IENVmCKZVgpyxe06yfEgVdNRhNAfPd9mJhB5x5mhPr2kq4oFT5tiQkSITYEcSBzWWVl61Xywiow/s192/Anglesite.gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="192" data-original-width="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTroCgF3xC60nQLn8XNZyk2FHmnJHk8YN41Hdt_I8HyD3B6WfbjD-7N7_s828IENVmCKZVgpyxe06yfEgVdNRhNAfPd9mJhB5x5mhPr2kq4oFT5tiQkSITYEcSBzWWVl61Xywiow/s0/Anglesite.gif" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgB6lLjnIM5_PjkKd8s-hOW1Cxf1LtpVag3BnLaoZs_5Of4ebD2KDnJ6R4Zu6gX1xgXPn4whvQYxk_LFt2rOY7_Yg3cZ6eD_ooqMAjVjWpD4iCBXNv9-aEW2B8o3JiHgunW_AoR1g/s415/poster.gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="415" data-original-width="300" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgB6lLjnIM5_PjkKd8s-hOW1Cxf1LtpVag3BnLaoZs_5Of4ebD2KDnJ6R4Zu6gX1xgXPn4whvQYxk_LFt2rOY7_Yg3cZ6eD_ooqMAjVjWpD4iCBXNv9-aEW2B8o3JiHgunW_AoR1g/s320/poster.gif" /></a></div><br /><p></p>fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com0tag:blogger.com,1999:blog-11035872.post-22251634401626987952018-07-11T11:05:00.000-04:002018-07-12T02:57:28.148-04:00Development Updates<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/JqnQwf94zf0/0.jpg" frameborder="0" height="399" src="https://www.youtube.com/embed/JqnQwf94zf0?feature=player_embedded" style="clear: center; float: center;" width="480"></iframe></div>
<div class="" style="clear: both; text-align: left;">
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
因為已經很久沒有新文章,今天就來更新一下開發進度吧。</div>
</div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
六月將Switch繪圖底層移植的工作完成後,終於有時間回到自己的專案來工作。之前雖然已經在Unity上將 voxel系統做了一些嘗試,但一直都沒有時間將程式碼做一個整理以及最佳化,所以就趁著還沒辦法開始production的這段時間先來做一些前製的工作,將該準備好的技術都先整理完成。同時因為還是會用voxel的模型來製作遊戲,所以美術的製程跟一般傳統遊戲會有些不同,因此也需要將技術部分確定後建立起之後的美術製程。</div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
之前其實我用了兩種方法在Unity上實作voxel系統,一種是用內建的particle system,但由voxel system控制每一個分子的移動以及位移,因為底層是Unity自家最佳化過的,所以效能較好,但是缺點就是彈性較小。另一種方法則是使用material instancing,這種做法就跟我之前引擎是類似的,優點就是彈性更大,但是在之前實作中效能跟particle system還是有點差距。所以這次的任務就是優化material instancing based voxel system,同時還要設計一個新的檔案格式符合新的voxel system的新功能。</div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
分析了一下material instancing based voxel system,發現瓶頸是在每個update中的4x4矩陣相乘,不過這部分其實很單純,就是呼叫以下function</div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
<h4>
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;">static void InstanceTransformUpdate(ref Matrix4x4 o, ref Matrix4x4 p, ref Matrix4x4 t){o = p * t;}</span></h4>
</div>
<div class="" style="clear: both; text-align: left;">
<span style="background-color: black; color: white; font-family: "helvetica" , "arial" , sans-serif; font-size: 15px;"><br /></span></div>
<div class="" style="clear: both; text-align: left;">
於是我試著將移除矩陣相乘的operator overloading,將function改成如下</div>
<div class="" style="clear: both; text-align: left;">
<span style="background-color: black; color: white; font-family: "helvetica" , "arial" , sans-serif; font-size: 15px;"><br /></span></div>
<div style="margin-bottom: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>static void InstanceTransformUpdate(ref Matrix4x4 o, ref Matrix4x4 p, ref Matrix4x4 t)</b></span><br />
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>{</b></span><br />
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>o.m00 = p.m00 * t.m00 + p.m01 * t.m10 + p.m02 * t.m20 + p.m03 * t.m30;</b></span><br />
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>o.m01 = p.m00 * t.m01 + p.m01 * t.m11 + p.m02 * t.m21 + p.m03 * t.m31;</b></span><br />
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>o.m02 = p.m00 * t.m02 + p.m01 * t.m12 + p.m02 * t.m22 + p.m03 * t.m32;</b></span><br />
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>o.m03 = p.m00 * t.m03 + p.m01 * t.m13 + p.m02 * t.m23 + p.m03 * t.m33;</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>o.m10 = p.m10 * t.m00 + p.m11 * t.m10 + p.m12 * t.m20 + p.m13 * t.m30;</b></span><br />
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>o.m11 = p.m10 * t.m01 + p.m11 * t.m11 + p.m12 * t.m21 + p.m13 * t.m31;</b></span><br />
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>o.m12 = p.m10 * t.m02 + p.m11 * t.m12 + p.m12 * t.m22 + p.m13 * t.m32;</b></span><br />
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>o.m13 = p.m10 * t.m03 + p.m11 * t.m13 + p.m12 * t.m23 + p.m13 * t.m33;</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>o.m20 = p.m20 * t.m00 + p.m21 * t.m10 + p.m22 * t.m20 + p.m23 * t.m30;</b></span><br />
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>o.m21 = p.m20 * t.m01 + p.m21 * t.m11 + p.m22 * t.m21 + p.m23 * t.m31;</b></span><br />
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>o.m22 = p.m20 * t.m02 + p.m21 * t.m12 + p.m22 * t.m22 + p.m23 * t.m32;</b></span><br />
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>o.m23 = p.m20 * t.m03 + p.m21 * t.m13 + p.m22 * t.m23 + p.m23 * t.m33;</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>o.m30 = p.m30 * t.m00 + p.m31 * t.m10 + p.m32 * t.m20 + p.m33 * t.m30;</b></span><br />
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>o.m31 = p.m30 * t.m01 + p.m31 * t.m11 + p.m32 * t.m21 + p.m33 * t.m31;</b></span><br />
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>o.m32 = p.m30 * t.m02 + p.m31 * t.m12 + p.m32 * t.m22 + p.m33 * t.m32;</b></span><br />
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>o.m33 = p.m30 * t.m03 + p.m31 * t.m13 + p.m32 * t.m23 + p.m33 * t.m33;</b></span><br />
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>}</b></span></div>
<div style="font-family: helvetica, arial, sans-serif; font-size: 15px; margin-bottom: 6px; margin-top: 6px;">
結果效能顯著的提升,從75 fps直接跳到120 fps! 起初我以為是C#的數學運算效能問題,後來有朋友傳來Unity的C# 原始碼,一切才水落石出,以下是Unity的矩陣相乘原始碼</div>
<div style="font-family: helvetica, arial, sans-serif; font-size: 15px; margin-bottom: 6px; margin-top: 6px;">
<br /></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>// Multiplies two matrices.</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>public static Matrix4x4 operator*(Matrix4x4 lhs, Matrix4x4 rhs)</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>{</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b> Matrix4x4 res;</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b> res.m00 = lhs.m00 * rhs.m00 + lhs.m01 * rhs.m10 + lhs.m02 * rhs.m20 + lhs.m03 * rhs.m30;</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b> res.m01 = lhs.m00 * rhs.m01 + lhs.m01 * rhs.m11 + lhs.m02 * rhs.m21 + lhs.m03 * rhs.m31;</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b> res.m02 = lhs.m00 * rhs.m02 + lhs.m01 * rhs.m12 + lhs.m02 * rhs.m22 + lhs.m03 * rhs.m32;</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b> res.m03 = lhs.m00 * rhs.m03 + lhs.m01 * rhs.m13 + lhs.m02 * rhs.m23 + lhs.m03 * rhs.m33;</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b><br /></b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b> res.m10 = lhs.m10 * rhs.m00 + lhs.m11 * rhs.m10 + lhs.m12 * rhs.m20 + lhs.m13 * rhs.m30;</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b> res.m11 = lhs.m10 * rhs.m01 + lhs.m11 * rhs.m11 + lhs.m12 * rhs.m21 + lhs.m13 * rhs.m31;</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b> res.m12 = lhs.m10 * rhs.m02 + lhs.m11 * rhs.m12 + lhs.m12 * rhs.m22 + lhs.m13 * rhs.m32;</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b> res.m13 = lhs.m10 * rhs.m03 + lhs.m11 * rhs.m13 + lhs.m12 * rhs.m23 + lhs.m13 * rhs.m33;</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b><br /></b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b> res.m20 = lhs.m20 * rhs.m00 + lhs.m21 * rhs.m10 + lhs.m22 * rhs.m20 + lhs.m23 * rhs.m30;</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b> res.m21 = lhs.m20 * rhs.m01 + lhs.m21 * rhs.m11 + lhs.m22 * rhs.m21 + lhs.m23 * rhs.m31;</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b> res.m22 = lhs.m20 * rhs.m02 + lhs.m21 * rhs.m12 + lhs.m22 * rhs.m22 + lhs.m23 * rhs.m32;</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b> res.m23 = lhs.m20 * rhs.m03 + lhs.m21 * rhs.m13 + lhs.m22 * rhs.m23 + lhs.m23 * rhs.m33;</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b><br /></b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b> res.m30 = lhs.m30 * rhs.m00 + lhs.m31 * rhs.m10 + lhs.m32 * rhs.m20 + lhs.m33 * rhs.m30;</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b> res.m31 = lhs.m30 * rhs.m01 + lhs.m31 * rhs.m11 + lhs.m32 * rhs.m21 + lhs.m33 * rhs.m31;</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b> res.m32 = lhs.m30 * rhs.m02 + lhs.m31 * rhs.m12 + lhs.m32 * rhs.m22 + lhs.m33 * rhs.m32;</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b> res.m33 = lhs.m30 * rhs.m03 + lhs.m31 * rhs.m13 + lhs.m32 * rhs.m23 + lhs.m33 * rhs.m33;</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b><br /></b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b> return res;</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<span style="color: #b6d7a8; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>}</b></span></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
原來問題是來自於pass by value,如果直接使用Matrix4x4的乘法operator,每一次的相乘就會new出三個暫時的Matrix4x4,而這就是效能衰退的原因,同時還可能會造成GC的問題。不過我比較不理解的是為何Unity不另外增加一個static的數學lib是可以直接 pass by reference,讓需要效能的地方可以有個選擇,之前我的引擎雖然是C++,但是為了避免多一個copy動作,我就有設計另一組static的數學lib來給需要效能的地方使用。</div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<br /></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
之後我還嘗試了將矩陣相乘用C++寫成plugin,甚至用組合語言改寫並加上SSE加速,但效能提升很有限,所以最後我還是決定使用C#的static math function就好。不過即便如此,提升後的效能還是跟particle system有段差距。我想到如果能將矩陣運算丟入GPU的話,應該能提升更多效能,於是修改了rendering的code以及shader,終於可以得到跟Particle System差不多的效能,在某些情況下還可以超越。將來如果有時間,我大概會想辦法把剩下的CPU運算都丟進compute shader中,不過以目前的專案來說這樣的效能應該已經足夠,所以我就先在這裡打住了。</div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<br /></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
這次還做了一個之前一直想做的新設計就是將voxel data跟rendering的code分離,藉由將這兩個類別decouple讓整個系統更有彈性同時也可以得到更好的效能。</div>
<div style="margin-bottom: 6px; margin-top: 6px;">
<br /></div>
<div style="margin-bottom: 6px; margin-top: 6px;">
回到遊戲專案上,其實目前專案的進度有點卡住,主要是因為還沒有找到合適的美術人選,所以只能先從技術部分下手,但是關於rendering的部分因為沒有確定風格也無法展開太多的研究。這次的專案是一個以voxel為基礎的動作遊戲,<span style="color: #9fc5e8;">如果有對做voxel類型遊戲有興趣的美術高手我們可以聊聊喔 :)</span></div>
<div style="font-family: helvetica, arial, sans-serif; font-size: 15px; margin-bottom: 6px; margin-top: 6px;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
<span style="background-color: black; color: white; font-family: "helvetica" , "arial" , sans-serif; font-size: 15px;"><br /></span></div>
<div class="" style="clear: both; text-align: left;">
<span style="background-color: black; color: white; font-family: "helvetica" , "arial" , sans-serif; font-size: 15px;"><br /></span></div>
<br />fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com0tag:blogger.com,1999:blog-11035872.post-9023739272286531472018-03-21T11:36:00.001-04:002018-03-27T21:27:14.806-04:00Switch Hardware Experiment現在的遊戲程式們大概很難想像,在遊戲引擎變成免費之前,想要將遊戲移植到新平台,如果沒錢買引擎,唯一的方法就是花時間啃文件,然後紮紮實實的從無到有將系統一步一步實作出來。原本以為今後應該是沒有機會再幹這種需要硬功夫的工作了,沒想到最近在因緣際會下,接到了一份將OGLES的繪圖引擎移植到Switch原生的繪圖API之上的工作,而又有了一次摸到新主機硬體的機會。<br />
<div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg20sT4q-8KDxhcXzn8j0t8Z1f0LM6w40d8NO3706R9GlW38ZXrjtv26AhkLK1St0fk43mTtGCKzXxmeOOUGpCIYklDyPE1LRu3vSq4yRlHP1ywa_yidyYnfKbZVlUigOE2FSgNgA/s1600/IMG_9502.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg20sT4q-8KDxhcXzn8j0t8Z1f0LM6w40d8NO3706R9GlW38ZXrjtv26AhkLK1St0fk43mTtGCKzXxmeOOUGpCIYklDyPE1LRu3vSq4yRlHP1ywa_yidyYnfKbZVlUigOE2FSgNgA/s400/IMG_9502.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
通常在移植既有引擎到新硬體上時,我都會先完成memory,file system以及OS相關部分的移植,然後才開始動繪圖部分。這次因為只需要移植繪圖部分,所以輕鬆了一些,不過取而代之的就是要先讀懂別人的程式碼並推測出整個系統架構。而繪圖部分通常我會從幾個步驟來逐步實作<br />
<br /></div>
<div>
<ol>
<li><span style="color: #9fc5e8;">初始化device</span></li>
<li><span style="color: #9fc5e8;">將device與OS原生context串接,這部分有時還挺麻煩的</span></li>
<li><span style="color: #9fc5e8;">建立frame buffers以及swap chain. 到了這一步,基本上就可以看到畫面了。在fixed function的硬體上,到這一步後其實就能draw primitive了。但是現代支援shader的硬體就比較麻煩了,還要很多步驟才能開始繪出東西。</span></li>
<li><span style="color: #9fc5e8;">實作vertex attribute layout以及vertex buffer</span></li>
<li><span style="color: #9fc5e8;">了解shader語言以及如何Compile and load shaders</span></li>
<li><span style="color: #9fc5e8;">實作貼圖的生成以及載入,到這一步才能開始測試draw primitive</span></li>
</ol>
<div>
<br /></div>
</div>
<div>
理解硬體如何運作並實作其實並不難,看看文件以及範例其實就懂八九成了,真正麻煩的地方是要思考如何巧妙的把新的繪圖流程套到既有的系統架構上,讓系統可以跨平台執行,同時又不失效能,這部分就很需要經驗了,尤其是遇到架構大更新時(比如DX9進化到DX11)就更考驗功力了。這次Switch的原生繪圖API是類似Vulkan的架構,為的是減少driver的複雜程度以及負擔,而將大部分驗證以及command buffer、queue、記憶體等的管理工作都交由application來負責,藉此解決small batch的問題。也因為整個pipeline 完全不同了,要套用到原本的架構需要許多特別處理。</div>
<div>
<br /></div>
<div>
接下來兩個月大概都會忙這份工作而無法專心在新遊戲的開發上面,不過新遊戲的概念總算有些突破,接下來應該就可以花些時間來製作雛形了,不過恐怕就要犧牲些休息時間了。完成這份工作後,應該就可以投入更多的時間在新遊戲的開發上了吧。</div>
<div>
<br /></div>
fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com1tag:blogger.com,1999:blog-11035872.post-2242418231534456472018-02-02T08:15:00.000-05:002018-02-02T08:15:37.406-05:00New Chapter2018對我來說可能會是很特別的一年,因為去年結束掉一些事後,今年可以說是重新開始。前一陣子終於有時間靜下來回想一下過去幾年的生活,卻發現自己越走越遠離原本回國時想要的生活型態。因此今年開始,我便試著調整生活型態,看看接下來能走到哪裡。<br />
<div>
<br /></div>
<div>
首先最重要的當然就是做自己的遊戲了,不過光做自己遊戲沒有收入也是不行,再加上除了自己的遊戲也想做做其他有趣的東西同時多認識一些人,因此將目標訂在用40%時間做一些比較有趣或有技術挑戰性的工作來賺點奶粉錢,剩下60%的時間則用來做自己的遊戲。</div>
<div>
<br /></div>
<div>
所以今年一月開始參與一個有趣的專案,也因此開始更加深入的接觸了UE4。之前其實有開始試著將voxel的東西移植到UE4上,但因為種種原因做到一半就沒有繼續了,但是這次的專案卻得直搗UE4核心,改寫許多跟deferred shading相關的code跟 shader。這一陣子幾乎都是在trace UE4的原始碼,讓我回想起之前在AMD trace UE3原始碼的日子,不過那時修改的是global shader,相對起來不用對引擎架構了解太深入,只要了解RHI的架構就可以解決。這次因為要動到整個rendering pipeline,因此要對UE4整個架構有更深入的挖掘才有辦法植入一些新的shading模式。等專案結束後有時間我再來說說UE4的修改經驗。</div>
<div>
<br /></div>
<div>
而三月開始則要參與一個非常奇妙的專案,要直接跟某個console的繪圖底層對戰,幫新console硬體寫code是我覺得最有趣的工作之一了,所以我個人還蠻期待這個專案的。不過目前還不能透漏太多,等完成專案之後我再來分享一些經驗吧。</div>
<div>
<br /></div>
<div>
接下來則是自己的遊戲了,考量到時間以及人力,這次就決定使用Unity而不用自己引擎了。雖然改用了Unity,但我還是想繼續做voxel的東西,所以花了一些時間把voxel相關功能想辦法加入Unity之中了。因為Unity 5之後支援了hardware instancing功能,所以這一次我實際上implement了兩種不同的voxel renderer,一種是使用particle system,另一種則是使用了hardware instancing。而兩種voxel renderer也可以隨時更換。兩種voxel renderer的效能其實在不同狀況下各有優劣,可以視狀況選用。</div>
<div>
<br /></div>
<div>
有了voxel renderer後,一些voxel的特效也就能輕易地加入了,這次我還增加了對<a href="https://ephtracy.github.io/">Magic Voxel</a>檔案格式的直接支援,所以.vox檔可以直接拉入Unity中使用,這樣美術就可以直接用Magic Voxel來製作模型了。而為了增加同一個畫面中voxel object的數量,這次還使用了<a href="https://0fps.net/2012/06/30/meshing-in-a-minecraft-game/">greedy mesh</a>來做最佳化,同時還能自動產生LOD。</div>
<div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/N01FbQQ_7MQ/0.jpg" frameborder="0" height="320" src="https://www.youtube.com/embed/N01FbQQ_7MQ?feature=player_embedded" width="480"></iframe></div>
<br /></div>
<div>
至於遊戲的內容,其實都還在構思中,也還有很多問題尚未想出很好的解決方案,所以其實進度是有點卡住了..... 只好多玩玩電動看看能不能找到解答的靈感了 XD </div>
<div>
<br /></div>
fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com0tag:blogger.com,1999:blog-11035872.post-36253449134547843162017-12-09T08:41:00.002-05:002017-12-09T12:35:30.775-05:00Something About Me最近有空寫了一點回憶錄,但是不用擔心,我還很健康 XDDD<br />
<br />
<a href="http://midnightcoder.blogspot.tw/p/about-me.html">About fallingCAT</a>fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com0tag:blogger.com,1999:blog-11035872.post-86306146362446511132016-03-29T05:23:00.000-04:002016-05-09T20:12:17.557-04:00Qubot iOS版封測登記開跑!<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixk7Ktqg8tvOvbjnXRHbCgTRTIGXdGRLVH_fsJGcqQaeGtvlN3LF38pKbcQk_zD1TT16H9YDyLM0rKXfn52DzfXXDdhuIGDPD54MfnnVfo3ncRvifcfEIVAtXa71n7TTICHOPbow/s1600/cb_char_name.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="265" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixk7Ktqg8tvOvbjnXRHbCgTRTIGXdGRLVH_fsJGcqQaeGtvlN3LF38pKbcQk_zD1TT16H9YDyLM0rKXfn52DzfXXDdhuIGDPD54MfnnVfo3ncRvifcfEIVAtXa71n7TTICHOPbow/s400/cb_char_name.png" width="400" /></a></div>
本來應該要貼[秘辛]第一款國產XBOX遊戲製作回憶錄 - Part Two的,但是為了Qubot上市的事忙到不可開交,所以就留待下一次再分享了。<br />
<br />
今天要分享的是Qubot iOS版登錄終於於開跑了。回想2013年三月開始這個專案時預計是一年內要完成,結果這個專案花了我兩年多的時間,寫了20萬行程式碼(不包含引擎程式碼)@@.... 不過終於是快要上市了 。<br />
<br />
有興趣參加封測的朋友可以到<a href="http://www.qubitgames.com/qubot/cb">這裡</a>登記,到4/8截止,我們會選出500位玩家來參與封測。參加封測的玩家還有機會得到超稀有的活動限定機甲 「破空‧尤米尼斯」以及專屬駕駛員「墮影 青瀨隼人X」喔。<br />
<br />
<div style="text-align: left;">
<a href="http://www.qubitgames.com/qubot/cb">http://www.qubitgames.com/qubot/cb</a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="270" src="https://www.youtube.com/embed/QvpD-bI8pxU" width="480"></iframe>
</div>
<br />
另外,由於我一個人負責整個遊戲的Client端以及工具,已經快要爆炸了,所以我們也開始在找新的程式以及合作夥伴加入公司,有興趣的朋友可以參考一下<br />
<a href="http://www.qubitgames.com/#join">http://www.qubitgames.com#join</a><br />
<br />
以下是目前職缺,歡迎大家來apply :)<br />
<h2>
<b>營運企劃</b></h2>
具遊戲及活動關卡內容規則及設計能力<br />
善於分析遊戲結構<br />
善於溝通與統合意見<br />
熟稔遊戲社群的生態<br />
(額外加分)熟日本動漫文化, 具英/日語能力者<br />
(額外加分)活動策畫經驗者<br />
<br />
<h2>
<b>社群行銷經理</b></h2>
熟稔遊戲/ACG社群的生態<br />
有社群經營經驗者<br />
擅長數據分析,能從數據解析社群行為及活動成效者<br />
(額外加分)具英/日語能力者<br />
(額外加分)熟悉歐美獨立遊戲社群者<br />
<h2>
<b><br /></b><b>CLIENT端程式人員</b></h2>
俱備C++/C#程式寫作能力,熟悉物件導向程式設計<br />
熟悉STL以及Design Pattern<br />
具備遊戲系統設計/實做能力<br />
熟悉iOS/Android系統<br />
(額外加分)了解DirectX/OpenGL等繪圖API基本運作方式<br />
(額外加分)有第三方引擎(UE4, CryEngine...)開發經驗者<br />
(額外加分)喜愛voxel者<br />
<br />
<h2>
<b>美術設計人員</b></h2>
須兼具2D及3D造型及製作能力<br />
具良好商用向排版, 構圖, 色彩及設計概念<br />
具良好Maya或3D Max低模及貼圖製作能力<br />
具良好自我時間控管能力<br />
對pixel art及機器人題材ACG有愛<br />
(額外加分)有設計或動畫經驗者<br />
<div class="row" style="background-color: white; box-sizing: border-box; margin-left: -15px; margin-right: -15px;">
<div class="col-lg-12 text-center" style="box-sizing: border-box; float: left; min-height: 1px; padding-left: 15px; padding-right: 15px; position: relative; text-align: center; width: 1170px;">
<div class="separator" style="clear: both;">
<br /></div>
</div>
</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com0tag:blogger.com,1999:blog-11035872.post-63509609328428361752015-07-10T06:13:00.001-04:002015-07-10T15:08:15.710-04:00[秘辛]第一款國產XBOX遊戲製作回憶錄 - Part One之前整理硬碟時發現一些老檔案,是15年前製作的XBOX遊戲<魔武爭鋒(Stake)>的一些相關檔案跟影片,很令人懷念,所以就想說寫一篇文章來紀念一下在那個沒有Unity的年代,我們是如何辛苦的獨立製作出一款3D動作遊戲,並把它移植到XBOX上的。這些東西大概是現在開發遊戲的小朋友們沒經歷過也無法想像的艱苦過程吧 :)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/rzcujc4nCFE/0.jpg" frameborder="0" height="420" src="https://www.youtube.com/embed/rzcujc4nCFE?feature=player_embedded" width="540"></iframe></div>
<div style="clear: both; text-align: center;">
<b><span style="color: orange; font-size: xx-small;">遊戲最後在<span style="text-align: start;">XBOX</span>上的樣子</span></b></div>
<br />
話說2000年的時候,我跟大宇資訊合資成立了一家遊戲公司,當時我們打算開發一款3D的連線動作遊戲,可以讓最多八個人在場上戰鬥。遊戲除了死鬥模式還有組隊推塔模式,其實有點像現在的DOTA或LOL,但是沒有小兵只有英雄。當初設定的目標還包含一個遊戲編輯器,可以讓玩家自製地圖,甚至是自訂英雄外型及招式。在2000年時這是個相當大的目標,要知道那時候上的了檯面的的引擎就只有Quake3跟Unreal,而那時引擎授權價格都要上千萬,我們當然沒錢買只能自己研發。以一個六人團隊要同時研發遊戲加上引擎還有編輯器,幾乎是不可能的任務,而如果還只有一位工程師,那根本就是自殺啊 :)<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuXvBoUKh-cOlyRTb6ZHTySSUQS9DMpgVqDOvw6numAV_jwzDFv-ZlsqmTbQK8nZfZUgWb1lz6aCUVEu2pwYg4hUvWEIxiOdPi2ZXOPIN-Jv4Isw7W66C6ovonO7tN11jHCsqjSA/s1600/%25E6%258E%25A8%25E5%25A1%2594.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="379" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuXvBoUKh-cOlyRTb6ZHTySSUQS9DMpgVqDOvw6numAV_jwzDFv-ZlsqmTbQK8nZfZUgWb1lz6aCUVEu2pwYg4hUvWEIxiOdPi2ZXOPIN-Jv4Isw7W66C6ovonO7tN11jHCsqjSA/s640/%25E6%258E%25A8%25E5%25A1%2594.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b><span style="color: orange;">當年做的推塔地圖之一</span></b></td></tr>
</tbody></table>
<div style="text-align: center;">
<br />
<div style="text-align: left;">
在2000年的時候,想要做3D遊戲的人沒有足夠的資金就只能自己開發引擎了。不過由於我在前幾份工作中都一直在做建構3D引擎的工作,加上我下班後都有在維護自己的一個圖形引擎,這部分倒不是太大的問題。2000年的時候繪圖加速卡才開開始流行,D3D也不是那麼成熟,許多大作都是用OpenGL來當作繪圖API,尤其那時受John Carmack跟Chris Hecker這些大神影響很深,所以其實我一開始遊戲引擎也是採用OpenGL作為繪圖API。另一個影響則是我決定整個引擎採用C來撰寫而不是C++,因為除了JC跟CH大力鼓吹用C比C++有效率外,另一個因素是我前一個Dreamcast的引擎使用了SEGA的SDK但它卻沒有很完整的支援C++,所以到最後整個遊戲、引擎以及編輯器都是用C寫出來的,現在想起來還是覺得超猛的 XD 更猛的是因為用C所以無法使用MFC,結果整個編輯器是用Windows SDK硬幹出來的.....</div>
</div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP9QdHO8HB7nL-gL1Mpj_C74pasmPTEEefPiX9TC9KIKBsUmDHFwpUkUGBR-OWsD8-AjOJutDUC9ZqfT8HgMyvynw60fIH10V8_GizIrBHnl-HorPuc3Dm8E9Ym6Ui2S7_H4g9Ew/s1600/LevelEd3.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="382" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP9QdHO8HB7nL-gL1Mpj_C74pasmPTEEefPiX9TC9KIKBsUmDHFwpUkUGBR-OWsD8-AjOJutDUC9ZqfT8HgMyvynw60fIH10V8_GizIrBHnl-HorPuc3Dm8E9Ym6Ui2S7_H4g9Ew/s640/LevelEd3.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b><span style="color: orange;">特效編輯(包含碰撞範圍設定)</span></b></td></tr>
</tbody></table>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy_Z9AsrykUCe84B15UbQgAGGFtpK3wMuu6hVJJH1pqE3ePLKo_qjrDbZtyMnE3mR9y91HC6CRMWr_6R4_4ZfRRGQilA35FgLaQoIjagukmvBbMlQifASDtsQcCK0RRn0glqGh2w/s1600/LevelEd2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="314" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy_Z9AsrykUCe84B15UbQgAGGFtpK3wMuu6hVJJH1pqE3ePLKo_qjrDbZtyMnE3mR9y91HC6CRMWr_6R4_4ZfRRGQilA35FgLaQoIjagukmvBbMlQifASDtsQcCK0RRn0glqGh2w/s640/LevelEd2.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: 19.2000007629395px;"><b><span style="color: orange;">Windows SDK硬幹出來的遊戲編輯器</span></b></span></td></tr>
</tbody></table>
<br />
另一個問題則是角色動作了,在那個年代,bone&skin還是非常神秘而且高技術的東西。遊戲通常都使用segment animation。即使是Quake 3跟Unreal用的也是vertex animation而已。但是對FPS這種動作量很少的遊戲vertex animation不是問題,但像我們這種遊戲角色有許多招式的動作遊戲就是個大問題了。所以那時我決定要自己搞定bone&skin的東西。這不單是要了解bone&skin的運作原理,還必須要瞭解到bone&skin的資料在3ds max這類軟體中是怎麼被運算跟儲存的,也必須要了解這些軟體中animation key的原理跟運作方式,然後還要寫出exporter將必要的資料輸出。結果這部分花了好幾個月才完全搞定。<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifMibvSSthMqTM8v6JOo37SvmE2KegKWWUvYGJmDeSEBONiFtCBLn18Nks3U1XDJDDbO700OXGsQbp-KB0D-jlufq2AtHCwG5aJlRNK6x_e4Y4THyeD9Q0ReTE9kkqwBUGPjYoNA/s1600/CS-Model2.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifMibvSSthMqTM8v6JOo37SvmE2KegKWWUvYGJmDeSEBONiFtCBLn18Nks3U1XDJDDbO700OXGsQbp-KB0D-jlufq2AtHCwG5aJlRNK6x_e4Y4THyeD9Q0ReTE9kkqwBUGPjYoNA/s640/CS-Model2.jpg" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><br /></td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAwlAiovp02E3mL0H5o0Hgv7LIjFw0J43MVXmWKxrWzh-EKLq7-VxzbZScb3cuywd4PyuvjeKBnemkeJkPMI5smebAbVwsp_AY3JNC4Hzr7B4ov8RQ-V0vruokuzfiCys8bn2V3Q/s1600/CS-Model.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto; text-align: center;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAwlAiovp02E3mL0H5o0Hgv7LIjFw0J43MVXmWKxrWzh-EKLq7-VxzbZScb3cuywd4PyuvjeKBnemkeJkPMI5smebAbVwsp_AY3JNC4Hzr7B4ov8RQ-V0vruokuzfiCys8bn2V3Q/s640/CS-Model.jpg" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><b><span style="color: orange;">角色編輯</span></b></td></tr>
</tbody></table>
現在已經是標配的的物理引擎那時也都還沒生出來,自然碰撞部分也都得自己來搞定。而那時的顯卡繪圖能力也還很弱,所以計算PVS是一件很重要的事,那時最流行的是BSP,我也嘗試過使用portal來計算PVS。但是由於我們的遊戲是在開放場景中亂鬥,這兩個方式都不是很合適,因此我最後採用的是OSP八元樹的方式來分割場景。同時OSP也可以做於碰撞偵測的多邊形篩選以加速碰撞偵測。當然所有物件的碰撞偵測以及位移都得自己搞定。<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWPWiDi1YooepsKA8ifLo76z979SF6rJ2-O0CmxiQvh3mTa9frjFWD5S8m8njGAYk0qqMluS4vcUNKPGzuzo1hrKgF2vnn2OTsum8zoPVj86NBGG1yIFycoL8YW6x5PoFq_CiYKg/s1600/MAX-PREVIEW2.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWPWiDi1YooepsKA8ifLo76z979SF6rJ2-O0CmxiQvh3mTa9frjFWD5S8m8njGAYk0qqMluS4vcUNKPGzuzo1hrKgF2vnn2OTsum8zoPVj86NBGG1yIFycoL8YW6x5PoFq_CiYKg/s640/MAX-PREVIEW2.jpg" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="color: orange;"><b>3ds Max 中的Preview Plug-in</b></span></td></tr>
</tbody></table>
<br />
結果好像一篇文章寫不完.... 這次先到此為止,下一篇再繼續,keep tuned :)<br />
<br />
<br />
<br />fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com3tag:blogger.com,1999:blog-11035872.post-74652743102735191022015-02-21T07:49:00.000-05:002015-02-21T07:51:08.971-05:00新的一年因為剛從加拿大回來,所以還在jet lag中,頭好像要爆炸,無法專心工作,所以乾脆來PO新文章。
<br />
<br />
今天是農曆初三,回想起正好一年前,去年農曆年的時候Qubit Games的辦公室才準備要開張,那時三個人在公司組IKEA買來的廉價家具(因為底部沒有框架,桌子不靠牆的話超會晃的,我常常打程式打到一半還以為地震了:)),準備年後正式開張。經過了整整一年,我們活下來了,而且還長出了一點點肌肉,人數也從三人變成了六人(但是人力還是嚴重不足啊~~~~),算是站穩了第一步。而原先計畫中的專案也持續開發中,而且內容遠比一年前的規劃豐富許多。這一路來要感謝許多人的幫忙,而我們Qubit Games團隊也會在新的一年繼續努力把遊戲做到最好。<br />
<br />
至於未來,希望Qubit Games能夠依計畫穩定的成長,朝向製作更多平台,規模更大,品質更高的遊戲前進。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh11cipGTRiDPkjOinRTtLB6utmb8HUWBRe4wiMLjCi-F9opu3ROCoA0ZaKyS4YVeTbSBXT4f9uiVVmyr8p8U8rI4YyLiovuhM9BYA5yZtjbTMLIGj2Zz8l_9hueBbbG8TzXut-Cg/s1600/Presentation1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh11cipGTRiDPkjOinRTtLB6utmb8HUWBRe4wiMLjCi-F9opu3ROCoA0ZaKyS4YVeTbSBXT4f9uiVVmyr8p8U8rI4YyLiovuhM9BYA5yZtjbTMLIGj2Zz8l_9hueBbbG8TzXut-Cg/s1600/Presentation1.png" height="300" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="text-align: start;">Qubit Games成長預想圖 XD</span></div>
fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com0tag:blogger.com,1999:blog-11035872.post-66893691082496339522015-02-05T22:34:00.002-05:002015-02-05T22:34:51.718-05:00Qubot 第二彈, 紅魔鬼(仮)模型其實是用自己的編輯器作的,存的是voxel的格式所以超小,而且可以任意拆解,爆破等等,上傳的模型則是另外輸出的公用格式。
<iframe width="560" height="315" src="https://sketchfab.com/models/8720cc2c90f14e45a8d145563da71c02/embed?autospin=0.2&autostart=1" frameborder="0" allowfullscreen mozallowfullscreen="true" webkitallowfullscreen="true" onmousewheel=""></iframe>
<p style="font-size: 13px; font-weight: normal; margin: 5px; color: #4A4A4A;">
<a href="https://sketchfab.com/models/8720cc2c90f14e45a8d145563da71c02?utm_source=oembed&utm_medium=embed&utm_campaign=8720cc2c90f14e45a8d145563da71c02" target="_blank" style="font-weight: bold; color: #1CAAD9;">[Qubot] Robot # 2</a>
by <a href="https://sketchfab.com/qubitgames?utm_source=oembed&utm_medium=embed&utm_campaign=8720cc2c90f14e45a8d145563da71c02" target="_blank" style="font-weight: bold; color: #1CAAD9;">Qubit Games</a>
on <a href="https://sketchfab.com?utm_source=oembed&utm_medium=embed&utm_campaign=8720cc2c90f14e45a8d145563da71c02" target="_blank" style="font-weight: bold; color: #1CAAD9;">Sketchfab</a>
</p>
fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com0tag:blogger.com,1999:blog-11035872.post-45312694366510340112015-02-03T21:26:00.001-05:002015-02-05T09:09:51.582-05:00Check out Qubot in 3D!最近發現一個3D模型分享網站做得很不錯,就把Qubot模型丟上去試試。在網站是還可以微調燈光,材質等許多參數,而且應該是用WebGL作的,在手機上也跑得很順。
<iframe width="560" height="315" src="https://sketchfab.com/models/ac529d3649b146ee87c23add0901f92e/embed?autospin=0.2&autostart=1" frameborder="0" allowfullscreen mozallowfullscreen="true" webkitallowfullscreen="true" onmousewheel=""></iframe>
<p style="font-size: 13px; font-weight: normal; margin: 5px; color: #4A4A4A;">
<a href="https://sketchfab.com/models/ac529d3649b146ee87c23add0901f92e?utm_source=oembed&utm_medium=embed&utm_campaign=ac529d3649b146ee87c23add0901f92e" target="_blank" style="font-weight: bold; color: #1CAAD9;">[Qubot] Robot # 1</a>
by <a href="https://sketchfab.com/qubitgames?utm_source=oembed&utm_medium=embed&utm_campaign=ac529d3649b146ee87c23add0901f92e" target="_blank" style="font-weight: bold; color: #1CAAD9;">Qubit Games</a>
on <a href="https://sketchfab.com?utm_source=oembed&utm_medium=embed&utm_campaign=ac529d3649b146ee87c23add0901f92e" target="_blank" style="font-weight: bold; color: #1CAAD9;">Sketchfab</a>
</p>
fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com0tag:blogger.com,1999:blog-11035872.post-7637355053779454822015-01-18T08:34:00.000-05:002015-01-18T08:34:56.270-05:00進度管理工具<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgMDWgFB_oRLi9s1f5floN5a1fmBrYqPDLoaQ0zMEB6tYPnAgHYxWZqbnqKCp8EQWfhNjFyWgNhekpSOkrwQ34qzT9R2OBIB5iJxmrxIIKEb13FTcfSq4k-ZHO-EsvZ-GkBAIs-A/s1600/%E7%9B%B8%E7%89%87+2015-01-18,+8+51+14+PM.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgMDWgFB_oRLi9s1f5floN5a1fmBrYqPDLoaQ0zMEB6tYPnAgHYxWZqbnqKCp8EQWfhNjFyWgNhekpSOkrwQ34qzT9R2OBIB5iJxmrxIIKEb13FTcfSq4k-ZHO-EsvZ-GkBAIs-A/s1600/%E7%9B%B8%E7%89%87+2015-01-18,+8+51+14+PM.jpg" height="240" width="320" /></a></div>
今天聊一下我們在進度管理工具上的一些經驗。其實之前一個人開發引擎時,也想過使用Scrum的工具來管理開發進度,不過因為只有一個人,最後也就不了了之。Space Qube開發時基本上也只用了不同顏色的便利貼來管理。直到開始Qubot的開發後,因為團隊變成四人,才開始認真找尋一套工具來做進度管理。<br />
<br />
基本上由於我們很窮:(,所以都是找尋在一定人數以內可以免費使用的工具。好在我們團隊人很少,所以倒是有許多符合條件的工具可以選擇。我個人比較喜歡視覺化的工具,所以傾向使用那些能把每個backlog/task做成 card view的工具。本來覺得Trello用起來不錯,但是實際套用在Scrum上卻不是很好用,所以最後選擇了<a href="http://www.targetprocess.com/">Target Process</a>。Target Process事實上做得很不錯,在所有試用過的工具中沒有一套能跟他有得比的,同時又提供五人以下的團隊免費使用(但是後來他們加上1,000個entities的限制 :( ),無奈我們很快就突破他的免費使用限制,而USD 25/person的月費實在不是我們負擔的起的,於是我們只好繼續尋找其他的可行方案了。<br />
<br />
之後朝著在負擔範圍內的付費工具尋找,用了許多服務,都沒有滿意的,直到找到了<a href="https://www.scrumwise.com/">Scrumwize</a>,這套工具雖然沒有Target Process那麼好,但比起其他我所找到的工具卻是好上許多,在各種方面都如速度,視覺化設計,附加檔案,組員管理等等都算符合我的要求,USD 9/person的價格也勉強可以接受。不過因為它只有30天試用期,讓我有點猶豫,這時有很多人向我推薦<a href="http://www.asana.com/">Asana</a>協作平台,加上它的創辦人又是Facebook的前創辦人,所以我就決定嘗試看看。<br />
<br />
一開始我並不覺得Asana符合我的需求,因為它主要針對的是多人協作平台,並非 Scrum,所以很多Scrum需要的東西他都沒有,像是burn down chart跟sprint/backlog管理。一開始的感覺跟Trello很類似,覺得要拿來用在Scrum可能有點困難。不過實際用了以後,發現他在團隊協作的部分做得很不錯,介面設計非常簡潔實用,對於task的comment的功能我也非常喜歡,加上支援很多雲端檔案功能,讓附加檔案變得很容易。所以最後我們決定使用Asana來管理我們的Qubot專案,雖然他並沒有backlog/sprint這些功能,但是我們用section的功能來解決這一個問題。同時我們也把它用在會議紀錄以及bug list上面,用到目前為止我還算相當滿意 :)<br />
<br />
<br />fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com1tag:blogger.com,1999:blog-11035872.post-5510727009678959912015-01-10T13:36:00.001-05:002015-01-10T13:40:40.241-05:00變形效果測試<div style="text-align: left;">
這個元旦假期花了一點時間測試一個遊戲中要用到的變形效果,經過一些調整後,效果還不錯。</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/qTSnWyuWPcU" width="560"></iframe></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
另外搜尋影片時無意中搜尋到2013年時我們在<span style="font-family: arial, sans-serif; font-size: 0.9em; letter-spacing: -0.03em;">TGADC的分享,那次應該算是我回台後第一次公開分享吧,所以放在這裡紀念一下 :)</span></div>
<div style="text-align: left;">
<div style="text-align: center;">
<br /></div>
</div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/fpvnfjePZsM" width="560"></iframe></div>
<div style="text-align: center;">
我好像還是留長頭髮比較合適.......</div>
fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com1tag:blogger.com,1999:blog-11035872.post-49387974393267331852015-01-02T16:15:00.000-05:002015-01-02T16:41:35.709-05:00給所有還在努力前進的Indie Game Developer<div style="text-align: left;">
結果2014只貼了兩篇文章,本來是想在2014年底前貼出這篇的,結果因為在寫一個想做很久但一直沒時間做的遊戲效果所以拖到今天才貼 :P</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
轉眼間回台灣成為獨立遊戲開發者已經過了兩年多,這中間起起伏伏,心情也跟著不斷波動,幸運的是直到今天我還在這條路上努力前進,同時身邊還多了更多的夥伴一同前進。雖然前進的速度時快時慢,但我堅信只要每天持續前進一些,就能朝夢想更近一些。</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
2014年時Angela Aki的這個MV帶給我許多的感動,在2015年的一開始,希望分享這個MV給所有還在努力前進的獨立遊戲開發者,只要相信自己的信念,堅持前進,就沒有人能夠打敗你。</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/siQJhIp-UTU" width="560"></iframe></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
追求夢想的路從來都不會是容易的,大家都是在不斷的痛苦掙扎中慢慢前進。Danny Choo的這篇<a href="http://www.dannychoo.com/zh/post/27241/%E6%88%91%E5%9C%A8%E6%97%A5%E6%9C%AC%E7%9A%84%E5%89%B5%E6%A5%AD%E4%B9%8B%E8%B7%AF.html">我在日本的創業之路</a>詳細地記載了他的創業過程,很值得獨立遊戲看發者做為參考。我們在2013年推出<a href="https://itunes.apple.com/us/app/space-qube/id670674729/">Space Qube</a>遊戲之後其實也面臨了一段找不到方向的痛苦時期,記得那時每天起床時都很痛苦因為不知道今天能做些甚麼,所幸之後能夠及時找到方向,但是緊接而來的卻是趕工地獄 :) </div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzRqxpjBmQ9cT-a_ulJv1HMC1GoacfbGsIyo_X-A_NegWSApYf_DooTyZ6a3AqQ8HNbWwUHON6J9bZNlpa2gMyCGuzWtMd-OrrQStLBzjN-PJkVdiEFCwN3YgLOHgO29hl0U3dGA/s1600/10639428_10152697541192698_8957036070656075973_n.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzRqxpjBmQ9cT-a_ulJv1HMC1GoacfbGsIyo_X-A_NegWSApYf_DooTyZ6a3AqQ8HNbWwUHON6J9bZNlpa2gMyCGuzWtMd-OrrQStLBzjN-PJkVdiEFCwN3YgLOHgO29hl0U3dGA/s1600/10639428_10152697541192698_8957036070656075973_n.jpg" height="240" width="320" /></a></div>
2014年的TGS則是另一個轉捩點,在TGS之前,我們只能相信自己的直覺去做我們覺得最好的遊戲。2014 TGS是我們第一次將遊戲的雛型公開,也是我們花了最多預算參加的一個遊戲展,所以我們也很擔心如果展出的結果不如預期的話該怎麼辦。TGS前的兩個月每個周末都是在辦公室中度過的,不過意外的是這次TGS前一天我居然能有五小時的睡眠 ^^。TGS之後,我們的新遊戲<a href="https://www.facebook.com/Qubot">Qubot</a>得到了許多關注,也在TGS期間得到最佳新秀獎的提名,至此我們才確定了我們是走在正確的方向上。<br />
<br /></div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/AEmTdvPGBRc" width="560"></iframe></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
<a href="https://www.facebook.com/Qubot">Qubot</a>的配樂還是由前洛克人配樂松前真奈美所創作的,這也是之前完全沒預料到的發展。總而言之,接下來應該還有很長的路要走,不過我是絕對不會認輸的 :)</div>
fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com2tag:blogger.com,1999:blog-11035872.post-44947497761254224892014-12-17T09:42:00.000-05:002014-12-17T09:42:29.764-05:00 2014 TGS之前 <div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSEBQnt5z4W5F92bcH1fLzoyelv92a4wi-vqCAvjl69JwdQ5btT5dlXw0s1JBprmcwvo9-9p3M4MDZufRKc_VTgv7WcfDu-Yl_0JP7ewLrgLkO3gb1gWF_y-xbHNAHsd9ecuS1qQ/s1600/QubotWar_d+2014-08-31+02-55-16-14.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjs8ivsh000Z_aNBY-QelORBq8x7_Un05ByhCFE3z8YAL0CBx36DXV6gWpoQv5c1rA3yja3yyafDgEbOyrOfYJktSx6Yb6qc0LRHLhMckKUu7QE9Apps9vZnGWtb08X0XsESmY8Iw/s1600/QubotWar_d+2014-09-06+20-39-42-65.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjs8ivsh000Z_aNBY-QelORBq8x7_Un05ByhCFE3z8YAL0CBx36DXV6gWpoQv5c1rA3yja3yyafDgEbOyrOfYJktSx6Yb6qc0LRHLhMckKUu7QE9Apps9vZnGWtb08X0XsESmY8Iw/s1600/QubotWar_d+2014-09-06+20-39-42-65.gif" height="320" width="184" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSEBQnt5z4W5F92bcH1fLzoyelv92a4wi-vqCAvjl69JwdQ5btT5dlXw0s1JBprmcwvo9-9p3M4MDZufRKc_VTgv7WcfDu-Yl_0JP7ewLrgLkO3gb1gWF_y-xbHNAHsd9ecuS1qQ/s1600/QubotWar_d+2014-08-31+02-55-16-14.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSEBQnt5z4W5F92bcH1fLzoyelv92a4wi-vqCAvjl69JwdQ5btT5dlXw0s1JBprmcwvo9-9p3M4MDZufRKc_VTgv7WcfDu-Yl_0JP7ewLrgLkO3gb1gWF_y-xbHNAHsd9ecuS1qQ/s1600/QubotWar_d+2014-08-31+02-55-16-14.gif" height="320" width="180" /></a></div>
<br />
這是2014 TGS 參展前錄的兩段GIF,一直忘了放上網路。可以看到有許多東西都還是暫時代替的物件,蠻有紀念價值的 :)<br />
<br />
<!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2F4.bp.blogspot.com%2F-j1cOScFTuyE%2FVAsFbYw0obI%2FAAAAAAAAFiQ%2FWMapfJECcmk%2Fs1600%2FQubotWar_d%252B2014-08-31%252B02-55-16-14.gif&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSEBQnt5z4W5F92bcH1fLzoyelv92a4wi-vqCAvjl69JwdQ5btT5dlXw0s1JBprmcwvo9-9p3M4MDZufRKc_VTgv7WcfDu-Yl_0JP7ewLrgLkO3gb1gWF_y-xbHNAHsd9ecuS1qQ/s1600/QubotWar_d+2014-08-31+02-55-16-14.gif" -->fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com0tag:blogger.com,1999:blog-11035872.post-56215669067496389192014-09-06T04:29:00.001-04:002014-09-06T04:36:28.212-04:00重新啟動<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.blogger.com/blogger.g?blogID=11035872" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCnUStqWI998Zabx7fVFARquZ2YflPQFGfbNNMpP00vaQrvnC0bpr6eWRw51xXcop0bRdkGskGF7etU32MrXzoen3yf_4uo-xtorj21iBcS38hh3ospHTSnLMemShRRSg9JX2llw/s1600/iPhone_Icon3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCnUStqWI998Zabx7fVFARquZ2YflPQFGfbNNMpP00vaQrvnC0bpr6eWRw51xXcop0bRdkGskGF7etU32MrXzoen3yf_4uo-xtorj21iBcS38hh3ospHTSnLMemShRRSg9JX2llw/s320/iPhone_Icon3.png" height="200" width="200" /></a></div>
之前本來把這邊變成Qubit Games的dev blog因此後來貼的文章都用英文,不過現在既然公司的網站以及blog都已經建立好了,因此想把這邊再回歸成我個人平常記錄一些生活中發生的事情以及遊戲相關技術的地方。之前在加拿大時張貼的文章現在變成一個很好的回憶,因此我想之後即使再忙,也會找時間在這貼些東西,也可以為之後創作的遊戲做一個很好的紀錄。<br />
<br />
今天講講為何我的引擎叫做LynxEngine吧 :) 其實我本來的引擎是要叫做TigerEngine的,但是那時我想先做一個小的引擎試試,只有非常簡單的功能,然後才要開發完整的遊戲引擎 TigerEngine。所以我將這個小引擎取名為Lynx,也就是山貓的意思,一樣是貓科動物,比家貓大,但比tiger小,表示他是介於繪圖引擎跟遊戲引擎間的一個引擎 :) 但是後來得發展是LynxEngine功能越加越多,我也懶得再開發一套新的引擎了,所以最後Lynx的名字就一直沿用下去了...... 早知道一開始就叫做TigerEngine了,我比較喜歡Tiger這個名字 orz
<br />
<br />
我最早一個引擎叫做VedaEngine,全部是用C+Assembly寫的,沒有用任何C++,連D3D API都是透過vtbl來呼叫。VedaEngine還包含遊戲編輯器,也是純C + Win32 SDK寫出來得,當初XBOX上的遊戲就是用這引擎做出來的。Veda就是吠陀的意思,那時真的很假文青 XDfallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com1tag:blogger.com,1999:blog-11035872.post-68355932568083966472013-06-27T13:00:00.000-04:002013-06-29T05:40:18.906-04:00Making of Space Qube, Part OneI always want to write something about the process of making Space Qube but can't find time to do it. I uploaded few interesting videos today for an interview so I decided to write something today otherwise I probably will never do it :)<br />
<br />
<h3>
<b>Stage 1, Prototype</b></h3>
At the very beginning, I was working on the prototype using my spare time when I was working for AMD. I created the voxel editor first then I though it would be cool if I use it to make a shooting game. I choose space as background because the performance of rendering a lot of voxels on iPhone 4 was not acceptable. So I came up the idea to use space as the background then I can avoid rendering a lot of voxels :)<br />
<br />
The original idea is making a super simple endless game in short time because I didn't think I will be an indie at that moment, I just wanted to make a iOS game after work. The original gameplay is that the player just shoot and try not to collide the enemies. The enemies will try to hit the player and the speed of game becomes faster and faster until the player die.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='480' height='360' src='https://www.youtube.com/embed/Cd3KNauzT8w?feature=player_embedded' frameborder='0'></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
The editor and gameplay prototype</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<h3>
<b>Stage 2, Mock-up</b></h3>
<div class="separator" style="clear: both; text-align: left;">
After having the prototype, I thought I will need an artist to help me out. So I asked my old friend, Bic, to help me out. He also had a full-time job so he can only use his spare time to help me. At that time, I thought the casual art style should fit to our gameplay. So I captured few textures from Angry Birds Space to mock the game. The background layer system was pretty much done at this stage.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div style="text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='480' height='360' src='https://www.youtube.com/embed/m3NfpDWePTU?feature=player_embedded' frameborder='0'></iframe><br />
Mock-up game using the textures from Angry Birds Space<br />
<br />
<div style="text-align: left;">
<br />
<h3>
<b>Stage 3, Pre-Alpha</b></h3>
Then Bic made the textures according to my idea to replace the mock-up textures. The god-ray post-processing effect has been added to the game at this stage because iPad2 is powerful enough to render this effect. I was thinking 8-bits casual art style is a perfect match to Space Qube but I think I was wrong when looking back now :)</div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='480' height='360' src='https://www.youtube.com/embed/7C796iY9y-I?feature=player_embedded' frameborder='0'></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
The original art direction tried to emphasize the 8-bits pixel art</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<h3 style="text-align: start;">
<b>Stage 4, Alpha</b></h3>
<div style="text-align: left;">
At this stage, I was still working for AMD but Louis just quitted his full-time job to go indie. Louis knew I was working on Space Qube for a while but he can't help me out since he was busy. Now he had time to help me out. So we started working together on Space Qube and I also decided to quit my full-time job to focus on making Space Qube. After Louis joined, he made a big change on the art direction. The result is the current Space Qube and I think he made a good decision on the art direction and lift Space Qube to a higher level. At that time, we already had the idea of adding bosses at the end of each level but I didn't implement it yet.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='480' height='360' src='https://www.youtube.com/embed/8KMoLDg3vog?feature=player_embedded' frameborder='0'></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
Big art direction change after Louis joined</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
That's pretty much the evolving process of Space Qube and the game actually changed a lot since the first prototype as we keep polishing it. I actually didn't know we can walk so far when making the prototype but we did it. Although Space Qube is not perfect but I think we have done all our best to polish it as much as possible. It is really interesting when looking back the whole evolving process. We also learned many things during this period and it should help us to make a better game in the future. I also didn't know I will become an indie so quickly when making the prototype but I was very happy about being an indie so far and hopefully I will be happy about being an indie forever :)<br />
<br /></div>
</div>
fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com0tag:blogger.com,1999:blog-11035872.post-6709539818548835182013-06-24T13:29:00.000-04:002013-06-28T12:02:14.798-04:00The Qube System and Weapon Upgrades<div class="separator" style="clear: both; text-align: center;">
<object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i1.ytimg.com/vi/1xU-X_OLomI/0.jpg" height="360" width="640"><param name="movie" value="http://www.youtube.com/v/1xU-X_OLomI?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" /><param name="bgcolor" value="#FFFFFF" /><param name="allowFullScreen" value="true" /><embed width="640" height="360" src="http://www.youtube.com/v/1xU-X_OLomI?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" type="application/x-shockwave-flash" allowfullscreen="true"></embed></object></div>
<br />
Hello everybody, today I am going o share you some improvements of the gameplay since we made a lot of changes after the open beta. We collected some numbers fromm the players so we adjusted and changed many many thing according to the feedback from the players.<br />
<br />
1. Qube system. We created a new Qube system and you can think it's a in-game currency. So the players can use Qubes to create their own space ship, they can also use Qubes to upgrade their weapons or buy other itms. The most interesting part is that now the players can create space ships with different attributes. Before open beta, the player created space ships only have appearance difference but now all player created space ships are not only different in appearance but also in attributes. So the less Qubes the players use to create the space ship, the faster but weaker the space ship will be and vise versa. So every player can create a unique space ship which is the best fit to the player.<br />
<br />
2. The game is totally free now. Since we decided to use Qube system in game, we also decided to change the game to a total free to play game. So you can play all levels for free! You can earn Qubes by playing game then use the Qubes to create more space ships or upgrade your space ships. Of course if you don't have time to earn Qubes in the game, you can buy some Qubes in our store<br />
<br />
3. Weapon upgrade system. The most exciting changes we made is the whole new weapon upgrade system. In Space Qube, there are three different weapon power-ups you are able to use: bullet+, laser and missile. Now all of those weapons can be upgraded. For example, the first level missile can fire only 2 missiles at one time but the level 4 missile can allow you to fire 8 missiles at one time! It's very interesting to see your space ship to fire so many missiles and destroy the enemies like crazy<br />
<br />
Here is a video which basically shows off all the changes we made so check it out. We are welcome to any feedback, even we can't add it to the first build but we can always add it to the updates.fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com0tag:blogger.com,1999:blog-11035872.post-75234057269435254872013-06-15T12:24:00.001-04:002013-06-15T12:27:40.846-04:00New Printed Out ModelsWe just printed out few more Space Qube bosses and they look awesome! We sent out the order directly from Space Qube and the models shipped directly to my home, it's so convenient and fun. We probably will print out more models after submitting the game, it's just around the corner. <br />
<br />
If you are also interested in creating your own voxel toys, don't forget to give Space Qube a try when it's released and it's totally free.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1azKUgqOxY0zlCINfZ6OmK-nSLmYCd9y3Uk2-APYL9QMqwUwNMGoPIWW-cGTYQyUoKFOzIB7f3GHEH_mCDfWXO2FD-gEUcG8ogEJzZtww0IMBhwO4ruernsRnNui0UY2qg5i_EA/s1600/1015268_476870795722769_975734525_o.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1azKUgqOxY0zlCINfZ6OmK-nSLmYCd9y3Uk2-APYL9QMqwUwNMGoPIWW-cGTYQyUoKFOzIB7f3GHEH_mCDfWXO2FD-gEUcG8ogEJzZtww0IMBhwO4ruernsRnNui0UY2qg5i_EA/s640/1015268_476870795722769_975734525_o.jpg" width="424" /></a></div>
<br />fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com0tag:blogger.com,1999:blog-11035872.post-5568355334507341482013-05-30T22:23:00.000-04:002013-05-31T10:59:57.705-04:00Good News! The Final Build of Space Qube Has Been Sent to QA<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji_9eYHOXvSbMEjBRymOd6K1cY3_62rCF0nHdOaU9Z7VkDOI3GRPuA_D8qFxRCuRNRPFnVCN-hHBLAagBH_xgEjNYFtZx-XlZQngKtAnF2bk90aKbTleWUhBfsEaAo40LEj0kc4w/s1600/VoxelGame_ud+2013-05-29+18-20-57-98.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji_9eYHOXvSbMEjBRymOd6K1cY3_62rCF0nHdOaU9Z7VkDOI3GRPuA_D8qFxRCuRNRPFnVCN-hHBLAagBH_xgEjNYFtZx-XlZQngKtAnF2bk90aKbTleWUhBfsEaAo40LEj0kc4w/s400/VoxelGame_ud+2013-05-29+18-20-57-98.png" width="400" /></a></div>
<div>
<br /></div>
<div>
Are you ready to rock with Space Qube?<br />
<div>
<br /></div>
Good news! We just sent the final build to QA team and after this build pass the QA process, it will be submitted to Apple! We have scheduled it around mid June. We will launch the game in Canada, Taiwan and Finland first to test and tune the gameplay then launch it globally. So you may need to wait a little longer if you are not in these 3 countries, but we will do our best to launch it globally as soon as we can.<br />
<br />
We did a lot of changes on gameplay since open beta, we will share those changes later.</div>
fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com0tag:blogger.com,1999:blog-11035872.post-6472336280251626342013-05-15T22:19:00.000-04:002013-05-20T22:22:40.694-04:00Space Qube is finally about releasing!<br />
<b><span style="color: orange; font-size: x-large;">Good news! Space Qube is finally about releasing, we are planning to submit it to Apple iTunes store around early June. </span></b><br />
<br />
To celebrate it, I created a Link model Its look is basically from "The Wind Waker" which is one of my favorite Zelda game :)<br />
<br />
<div style="text-align: center;">
<embed height="320" src="http://www.lynxengine.com/games/spaceqube/facebookapp/SpaceQube.swf?mode=3d&modelID=1099" type="application/x-shockwave-flash" width="480" wmode="direct"></embed></div>
<br />
Please keep your eye on this blog, we will post the news when we submit it.
Keep tuned.
fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com0tag:blogger.com,1999:blog-11035872.post-76605301110281856432013-05-12T05:59:00.000-04:002013-05-12T06:07:13.802-04:00Qube Fighter II - Ryu & KenCheck out the charcters of Qube Fighter II :)
<br />
<br />
<br />
<br />
<div style="text-align: center;">
<embed height="320" src="http://www.lynxengine.com/games/spaceqube/facebookapp/SpaceQube.swf?mode=3d&modelID=1058" type="application/x-shockwave-flash" width="480" wmode="direct"></embed></div>
<br />
<div style="text-align: center;">
<embed height="320" src="http://www.lynxengine.com/games/spaceqube/facebookapp/SpaceQube.swf?mode=3d&modelID=1059" type="application/x-shockwave-flash" width="480" wmode="direct"></embed></div>
fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com0tag:blogger.com,1999:blog-11035872.post-40593290745967623182013-05-10T06:05:00.000-04:002013-05-12T06:06:14.580-04:00Space Qube Will Integrate 3D Printing Service<br />
Have you ever thought about creating some action figures by yourself? Yes, I do and now it's never been so easy to achieve by modern 3D printer. We have decided to integrate 3D printing service into Space Qube in the future. So you will be able to create any model you want using your finger on iPad/iphone then send it to print just by one click. The printed model will ship to your home directly and all of those are accomplished in one app!<br />
<br />
The picture shows some testing samples I just printed out and the result is better than I expected. We will add this feature in the first update of Space Qube so don't miss it if you want to print your own voxel models out :)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMGhtZE258WXyX2yv_iVAXBC617-ocRBRHXgq2KQLTOdRBRcUgpntZzk7VzDNGVST3DBfr-nVwatxvVx8h-bMP0QZo3fGTX6_xJ1oK7_mj0sPf3CwchwPrujwOJ1g-oFsn7d8Aag/s1600/3DPrinting.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMGhtZE258WXyX2yv_iVAXBC617-ocRBRHXgq2KQLTOdRBRcUgpntZzk7VzDNGVST3DBfr-nVwatxvVx8h-bMP0QZo3fGTX6_xJ1oK7_mj0sPf3CwchwPrujwOJ1g-oFsn7d8Aag/s400/3DPrinting.png" width="400" /></a></div>
<br />
<div>
<br /></div>
fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com0tag:blogger.com,1999:blog-11035872.post-38454261192537043822013-04-27T12:43:00.000-04:002013-04-27T12:43:12.628-04:00Video : Qubit Games at GDC 2013This is the video we took during GDC 2013. It was a nice experience and Qubit Games will attend more exhibitions to showcase our games and passions in the future.<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="360" src="http://www.youtube.com/embed/D0zDfHgCaJw" width="640"></iframe>fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com0tag:blogger.com,1999:blog-11035872.post-40705975838714542332013-04-07T09:06:00.000-04:002013-04-07T09:08:54.914-04:00After GDC 2013GDC 2013 was jsut over and we had a very unforgettable experience of attending GDC Play. We made few mistakes but also learned few things and knew many new friends. The most important thing is that we found many visitors like Space Qube :)<br />
<br />
Here are some pictures we took during GDC 2013, more pictures and movies will come later.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZWJxG84qjdcUNPDx-T_1MiUm9o-0Wzu0HrTvZ0vQowtqPsUbRhqC59uzQ5czwxPezXmPn-sQknHFZPulxwiWbfo27gwmzRTezA6hnT7TRI9tuFXiW9iNpjNEIRx_0D7s8X0xfFQ/s1600/GDCPlay_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZWJxG84qjdcUNPDx-T_1MiUm9o-0Wzu0HrTvZ0vQowtqPsUbRhqC59uzQ5czwxPezXmPn-sQknHFZPulxwiWbfo27gwmzRTezA6hnT7TRI9tuFXiW9iNpjNEIRx_0D7s8X0xfFQ/s320/GDCPlay_1.jpg" width="240" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhayMSolPTRZXvRZkwGH1iSAPjjRjzsuKeIFGW0nDE0VYrlvr8r1bXKI5WICV31eQXv5NsbUK2HwXS629hVklOb-I2iu8ydlNHbCcxNcwGAnkpixaxVvTRO1VGTNoFf3aOKTrrwCQ/s1600/GDCPlay_10.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhayMSolPTRZXvRZkwGH1iSAPjjRjzsuKeIFGW0nDE0VYrlvr8r1bXKI5WICV31eQXv5NsbUK2HwXS629hVklOb-I2iu8ydlNHbCcxNcwGAnkpixaxVvTRO1VGTNoFf3aOKTrrwCQ/s320/GDCPlay_10.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
In case you can't tell, this is Yu Suzuki :)</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo1fGIvx3FecG6rpgOZuGvTE-dzcyzie8SqZyT0apytnOQBrBF8U8Cx5LtYh4eb9XP-FB-mliKW-0o_SOHDcGiD7faqUfLhc_6s02JR2qzDXeQHd0FFpKTNN6UMdYJOlDnWhXHaQ/s1600/GDCPlay_3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo1fGIvx3FecG6rpgOZuGvTE-dzcyzie8SqZyT0apytnOQBrBF8U8Cx5LtYh4eb9XP-FB-mliKW-0o_SOHDcGiD7faqUfLhc_6s02JR2qzDXeQHd0FFpKTNN6UMdYJOlDnWhXHaQ/s320/GDCPlay_3.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9J8VFPNCyEpFOBKiqGkPK6GX1m8wgayn0_tJ2PsF7HemW7KY7grp-a1jj8Y0RIPLQBKxkMBLI5Ts0_LUmdPIFbtDIfGRfQTxBX8TbVUUCQDBR20VjvMVFJfZDgyFUaL3uYuCXpQ/s1600/GDCPlay_4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9J8VFPNCyEpFOBKiqGkPK6GX1m8wgayn0_tJ2PsF7HemW7KY7grp-a1jj8Y0RIPLQBKxkMBLI5Ts0_LUmdPIFbtDIfGRfQTxBX8TbVUUCQDBR20VjvMVFJfZDgyFUaL3uYuCXpQ/s320/GDCPlay_4.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUWc2buq9IwgXJ_EKRNIMJYZA-dw8E6d-ywxyD81DGCcZTIUlBtw_0GjyN1ftEUGpUoArdgpEVdcj3VzQ6SFDI0KMDadLwD55lj-eSpPARmp9IVRYBjTyUprGEQczN0XQAb9mXOQ/s1600/GDCPlay_2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUWc2buq9IwgXJ_EKRNIMJYZA-dw8E6d-ywxyD81DGCcZTIUlBtw_0GjyN1ftEUGpUoArdgpEVdcj3VzQ6SFDI0KMDadLwD55lj-eSpPARmp9IVRYBjTyUprGEQczN0XQAb9mXOQ/s1600/GDCPlay_2.jpg" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnvLBYhnOWcRRcgxd1B4ap0DBeOZ-Qh_jhhGZL9DF4LCcF9BXPlK8PQB3WfR4EQYUbyivEOj2y41_skVPG92qKomnXKE-mrKf3uNaTCt_X0JC-F-FdGgPiubYs00WawCf0Xtw2KA/s1600/GDCPlay_5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnvLBYhnOWcRRcgxd1B4ap0DBeOZ-Qh_jhhGZL9DF4LCcF9BXPlK8PQB3WfR4EQYUbyivEOj2y41_skVPG92qKomnXKE-mrKf3uNaTCt_X0JC-F-FdGgPiubYs00WawCf0Xtw2KA/s320/GDCPlay_5.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Brian Crecente is a friendly guy.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdLQFv0KZvPriDdo-4jtJ9dFP8E2kHiRnifAOHrJGE0-IzPtSrriFNf5ySEy_AA70LUR3P3weVAwjeegj-DZNpoXeWnyywdTAbPjDaS61_rcujwfi8fXSHBxgUfcWyY99OuC_LiQ/s1600/GDCPlay_6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdLQFv0KZvPriDdo-4jtJ9dFP8E2kHiRnifAOHrJGE0-IzPtSrriFNf5ySEy_AA70LUR3P3weVAwjeegj-DZNpoXeWnyywdTAbPjDaS61_rcujwfi8fXSHBxgUfcWyY99OuC_LiQ/s320/GDCPlay_6.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjB_6jt7BVx6RT9v4YKvVCBJ_4nNipgbokZqBcAqfjYR3zkmrGUIcEF5UFI7ZyMS9l0XYhOjPVSwj3YYzCPHc-d0Oe5G6qelviUOs4WwZ3cWDV2S-5BuDNWEW7kVbNaSpsF282zig/s1600/GDCPlay_11.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjB_6jt7BVx6RT9v4YKvVCBJ_4nNipgbokZqBcAqfjYR3zkmrGUIcEF5UFI7ZyMS9l0XYhOjPVSwj3YYzCPHc-d0Oe5G6qelviUOs4WwZ3cWDV2S-5BuDNWEW7kVbNaSpsF282zig/s320/GDCPlay_11.jpg" width="213" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9sST8fpfj9IlyuHOJRdwoKPqOtqDdXqCcuTevg8dLcwnSE8sJrKaErG_baPfYRPXgspgEqkKctCGgCd0iNvIXmmAsiKHkZ4jaI_GEbq6DwABhMKz0zqYgO4YpUqx5Na1j322uSg/s1600/GDCPlay_8.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9sST8fpfj9IlyuHOJRdwoKPqOtqDdXqCcuTevg8dLcwnSE8sJrKaErG_baPfYRPXgspgEqkKctCGgCd0iNvIXmmAsiKHkZ4jaI_GEbq6DwABhMKz0zqYgO4YpUqx5Na1j322uSg/s320/GDCPlay_8.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE2mvP7ZFWU8SgF9v8LBauuUNrNCnl6LHXnRgwvmbxfZ1J1unHLXBAWCAosj0aSC2hQnrHqk7yMq1IHj7roQpmxmcRKX4rFbhg4CkELqIz2hyphenhyphenj455_TF8qNXtLSyI7RJMh2ZsggQ/s1600/GDCPlay_9.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE2mvP7ZFWU8SgF9v8LBauuUNrNCnl6LHXnRgwvmbxfZ1J1unHLXBAWCAosj0aSC2hQnrHqk7yMq1IHj7roQpmxmcRKX4rFbhg4CkELqIz2hyphenhyphenj455_TF8qNXtLSyI7RJMh2ZsggQ/s320/GDCPlay_9.jpg" width="213" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj14nWrX-AnPtWRpCYuh527veY0W4AEZOw2BPGGgl60yMNb__4D8EetVI2OH_CH90FKFRRzPyFMl5umwlKgoJVHlHQMRNfakuORkUclOj4c98Z60gLXDg_R1e_SSJeq3CFZdoibw/s1600/GDCPlay_7.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj14nWrX-AnPtWRpCYuh527veY0W4AEZOw2BPGGgl60yMNb__4D8EetVI2OH_CH90FKFRRzPyFMl5umwlKgoJVHlHQMRNfakuORkUclOj4c98Z60gLXDg_R1e_SSJeq3CFZdoibw/s320/GDCPlay_7.jpg" width="320" /></a></div>
<br />fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com0tag:blogger.com,1999:blog-11035872.post-31553894941838408802013-03-02T10:01:00.000-05:002013-03-02T10:02:09.647-05:00Space Qube won GDC 2013 "Best in Play" award!<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr7MHX5H1PpBrTrKegIsB_9G0JwuzKjO1rYgVT6-bg7Axz9IgwBQODi38ZS_ZGcWOqw8uCOFf6uwASl0qihQ6J47EdUbyRkl21L4VLlZRM9jZsHpqrRNqxqvUep220iJV5qgqupg/s1600/facebook_cover_GDC.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="146" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr7MHX5H1PpBrTrKegIsB_9G0JwuzKjO1rYgVT6-bg7Axz9IgwBQODi38ZS_ZGcWOqw8uCOFf6uwASl0qihQ6J47EdUbyRkl21L4VLlZRM9jZsHpqrRNqxqvUep220iJV5qgqupg/s400/facebook_cover_GDC.png" width="400" /></a></div>
<br />
GDC just announced the winners of GDC 2013 "Best in Play" award and Space Qube is one of the winners. We would like to share this happiness and say thanks to everyone who has helped and anticipated Space Qube, we will work harder to polish Space Qube a better game!<br />
<br />
Thanks again for all your supports and feedback, I promise that Space Qube wouldn't disappoint you ^_^<br />
<br />
Here is the link of the official announcement.<br />
<a href="http://www.gamasutra.com/view/news/187581/GDC_Play_2013_Best_in_Play_game_winners_announced.php#.UTH3nzBkNLc">http://www.gamasutra.com/view/news/187581/GDC_Play_2013_Best_in_Play_game_winners_announced.php#.UTH3nzBkNLc</a><br />
<br />fallingCAThttp://www.blogger.com/profile/15395982567074185824noreply@blogger.com0