2012年11月22日 星期四

寫遊戲還是寫程式

用Cocod2d-x刻了老半天才寫出一點東西,用Unity三兩下就搞定了,是不是不要沒事找事做比較好呢....

2012年11月20日 星期二

Unity的播放影片還有debug message

基本上一定要有pro版才能撥影片。

在PC/Mac上用的是MovieTexture,是解開影片的圖後可以讓你自由的指定給GUI甚至是model上。但在iOS上就要用Handheld.PlayFullScreenMovie(),別以為他文件上說明沒有說這是Pro專用就好了,一般版本的Unity iOS build完後跑起來依然告訴你這是pro的功能。

在iOS 6.0.1為止,xcode的organizer依然不能看到debug message,但別忘了我們還是可以在xcode上面直接看console,unity的Debug.Log是可以看到的,前提是你要用xcode直接執行程式而不是在iOS上自己跑起來。

2012年8月29日 星期三

看Stanford iOS影片碰到的問題

iTunes U的影片字幕沒辦法開啟,要到"視訊"應用程式裡才能打開字幕。
(2012.11.05:新版的iOS據說已經修好了,在iTunesU裡就可以看到字幕)

2012年8月23日 星期四

[翻譯]五個提高程式設計師生產力的提示

久違的翻譯啊....


1.擁抱即時原則
如果有什麼事在五分鐘內可以完成,就立刻完成它。

這聽來像個偷懶的選擇,但推遲事情實際上需要許多額外的工作。它得寫下這個任務,然後追蹤並且跟其他的事項排定優先權。你可能會在實際上做完之前想起它很多次,而且你還必須搞清楚當你寫下它的時候是什麼意思,並且想辦法回到當下的思考狀態。

對於小任務來說這並不值得。

取而代之的,直接完成它。在你已經想到這個問題時就當下修掉,這比較快、簡單而且省掉你跟一堆越來越長的代辦事項清單搏鬥的苦惱。


2.解決病因而不是症狀
不要只是解決問題。解決讓問題發生的流程,這樣同樣的問題就不會再度發生。別只把bug當作討厭鬼,要把它當作是加強流程與增進程式碼品質的機會。

當美術告訴你碰到了一個"編譯單元錯誤"的訊息時,不要只是丟一個對話框告訴他"這是因為你有兩個node是同一個名字,這樣不合法"。最起碼要把錯誤訊息改成"編譯單元錯誤:bed。兩個node有同樣的名稱:pillow。其中一個需改名以確保名稱唯一"。要做得更好的話,在exporter或tool裡作修改,讓美術無法建立有兩個同樣名稱的node。

如果你發現當下這個錯誤可能在assert中攔截的話,就加入這個assert,這樣下次錯誤再度發生時就可以找到了。

如果有人問"我要如何設定動畫壓縮?",不要只是跟他說而已,要同時寫下簡短的文字說明其原哩,並且加到文件中。

這樣子,你不會只是補破網,而是積極的改善事情。這不只是取悅那些發生問題後來找你的人,同時也是讓你的工作感覺更有意義。


3.當電腦運轉的時候,試著不要中斷注意力
程式工作充滿了許多奇怪的短暫停頓:程式碼在編譯、console重開機、關卡讀取中、client端連結中等等。

理想狀態中這些停頓都將不存在,盡你所能的去消滅掉他們,讓code build快一點、即時重新讀取資料與script、做個工具可以快速設定一大堆PS3來做網路測試等等。

但是即使做了再好的努力,依然有些時間空檔會留下來,問題在於我們如何利用它。誘惑在於我們會去短暫地從編寫程式中休息,轉而去檢查一下mail、回應一下Skype、讀兩段有興趣的文章、更新twitter狀態等。

對我來說,這些不斷的心理狀態切換是生產力的阻力,它們使得保持在心流狀態(flow)變成是不可能的事。

這些簡短的瀏覽並不會真正讓你放鬆,當你一邊瞄個兩眼看另一個螢幕的進度條一邊讀個兩篇網頁並不會真的讓你的心神平靜下來。正好相反,這會比你一直保持在”禪”狀態中更加有壓力。找個時間真正休息下來會比上百個短暫的休息來的更好。

為了同時保持生產力與心理上的平靜,我做了個有意識的努力使得"電腦工作時"我依然能專注在目前的問題上。我有個另外的不受IDE實行時中斷的文字編輯器,讓我可以作些相關的工作,像是:

  • 加上文件說明

  • 重構與程式碼review

  • 計畫下一個要實做的步驟

  • 寫測試系統用的script
這依然是個對抗上網誘惑的無止境戰鬥,但我發現當我管好自己保持專心時,我會同時更有效率也更加放鬆。


4.比你認為需要的更加多使用版本控制系統
版本控制不是只用在程式碼。現代的分散式版本控制系統像是Mercurial與Git,要建立一個原始資料庫然後push到server以便備份或共享實在是簡單的要死。

你有文字編輯器/IDE的組態檔和設定檔吧?把它們放到版本控制中,這樣就可以很容易的在不同機器中使用同一個設定。這些檔案需要被安裝到特定的位置的話,把處理安裝程序的script連同它們都放到版本控制中吧。

你是否有使用第三方的程式庫像是zlib、LuaJIT或stb_vorbis?把他們放到版本控制中。這樣一來如果你有對他們作任何的更動(修bug、修掉warning、平台修改或是自己作效能提昇)就可以很明確的知道你改了些什麼。如果有新版本的程式庫釋出,你可以用版本控制系統來比對哪些部份有修改,並且將它合併到你的版本中。

API有提供範例程式嗎?在你開始把玩它之前先放到版本控制中。這樣一來你可以隨時把範例檔恢復到原始的狀態中而不必再次安裝API。而一旦你發現了API的bug時想要重現在一個簡單的範例檔時,可以使用版本控制工具來產生一個給該sample的patch檔附在給API製造商的bug report上。這會讓雙方都會很開心的。





5.監控你的編譯


設定好一個build server好持續的build出在所有平台的所有組態(debug, development, release) 的所有執行檔(引擎、工具、exporter等),這樣你就可以儘快知道哪邊有問題了。當場就修好問題比起兩個月後才作好多了。

Build server不必要弄得很複雜,重要的是要有而不是弄得很花俏。如果你沒有時間作進階的處理,寫個script去compile所有的東西然後回報也行。你可以有時間再去加強它。

對資料內容也這樣做。寫個script讀取所有的關卡並產生所有的單位,

使用對你而言最好的回報工具。我們內部是用Skype作為即時通訊系統,所以對我們來說即實用Skype回報build壞了是很合理的。如果用e-mail或是IRC對你來說比較好,就改用它們吧。

2012年7月3日 星期二

Gamebryo 4.0

Gamebryo 4.0多了一些DEMO影片....我得說實在不吸引人。

"Gamebryo 4.0是一个基于Gamebryo 2.6核心运行中的引擎, 支持高级渲染功能。"

那我繼續用2.6就好了啊......

http://gamebryo.com.cn/tech_videos.html

2012年6月19日 星期二

新macbook pro入手!

不過是13吋的啦~還沒錢去衝Retina,希望新電腦可以幫我賺到可以直衝mac pro的錢嘍~

2012年5月31日 星期四

Cocos2D-x有HTML5版本了


http://www.cocos2d-x.org/news/56

還是要用JS來寫啦,API跟概念當然就是跟原來的cocos2D相近。

只是說我在想這樣子要跨平台時到底要做多少事呢?可能要試試看才知道,
畢竟以前用cocos2D-x在iOS<->Android時基本上可以都用C++來寫,這下
不同程式語言要怎麼做才方便就真的要想看看了。

教學範例:
http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Getting_Started_with_Cocos2d-html5

2012年5月24日 星期四

亂預測一下

前陣子有在考慮學一下網頁開發,追一下HTML5的流行,不可避免的就會碰到後台要
學哪個framework比較好的問題。同事給我的回答是ROR比Node.js來得好用,且Node目
前還是進步中,但是Node前後端統一語言所以很多人有興趣云云。他沒有給我明確的
答案,我自己當時看來覺得是去學ROR應該比較OK。

不過今天想想......人都是懶惰的,我相信基於這個原因不必再另外學新語言的Node.js應
該會有比較好的未來可能吧!

隨便想想,做個紀錄。

2012年5月23日 星期三

Diablo 3 目前為止對遊戲設計的一些想法

打寶比較重要,所以條列一下比較快,就不做長篇大論的寫法了。

改變的部分
+簡化
少掉不必要的操作。D2會有血瓶占空間、辨認物品跟城鎮捲軸、放錢進儲物箱以
免死時噴掉。現在讓整個遊戲變得明快而不用一再中斷作瑣事。
把戰鬥跟整補的時間明確劃開,D2常會撿到東西後急著要看屬性就停下來辨認或
是回程買捲軸。
白色裝備現在不值錢,可以省掉撿了後發現有更值錢的東西要常整理背包的麻煩,
不過我會覺得這部分很難說,因為這樣幹嘛要設計白色裝備,只有一開始遊戲有人
要用,後面關卡又沒人要......

+親切不怕練錯,讓玩者勇於嘗試
儲物箱共通、寶石可拔、技能可一選再選不像技能樹、沒有基本屬性點數可
分配。赫拉迪姆方塊跟符文拿掉,改為可預測性的寶石商。
不像以前要同一角色練第二次才會知道技能跟屬性要怎麼選比較好,D2很多
人會到噩夢模式才發現以前愛用的技能不好用了,然後又無法直接改,只能
重練。
多了儲存點功能,撿屍不用跑太久(畫面跟復活後可移動這點跟WOW很像)

+自訂
以前是因為想要什麼樣的打法來決定要用哪個職業,遠程選法師,近戰選野
蠻人等。現在是用技能來自訂自己喜歡的打法,雖然不能到整個翻盤,但喜
歡的話還是可以當近戰法師之類的調整。更多的是在於不用再怕練錯,更方
便去做一些細部的嘗試,像是用瞬移來躲攻擊或是用吸收攻擊的方式硬吃下
來等等。

沒有自訂智力體能等屬性,但是這可能是方便他們調整遊戲難度。例如每關
Boss的難度就不會因為玩者只調高防禦而打不痛之類的。另外也是方便製作各職業
專用的裝備(加強其主要屬性)。同時也拿掉了裝備會被屬性值限制不能拿,玩者不
必去投資自身不感興趣的屬性。

新加的部分
+鐵匠
有點像日本禁掉的轉蛋湊好物方式,提供玩者一玩再玩的動力。但是這些製
作物應該可以在拍賣場上買到,應該會降低大家投資在這裡的興致。

+跟隨者
不會死掉後花很多錢復活、有一定強度所以會運用他,不像D2。因為不再是
免洗角色,有對話以加強故事背景。甚至同樣的跟隨者在碰到當初相遇的劇情
時會出現不同的對話。

大方向
+遊樂器的出發點,節奏明快
按鍵變少、避免無法挽回的錯誤、減少非遊戲的操作(整理與長時間調整是PC
玩者的習慣)、儲存點功能。強迫玩者多以即時操作的能力來獲勝,而不是以
分析背誦後切換技能的能力來獲勝。
但其實整體來說遊戲的自由度是降低了沒錯,應該是因應遊戲器玩家的習性。

+跟WOW學習
爐石、藥水CD、復活畫面與機制、拍賣場、多了很多對話跟背景故事。

+現金拍賣
鐵匠可做出好物,讓賣家除了刷寶外也有別的產生道具手段
伺服器只開三區,人多才有熱度

技術面
+節省資源
利用camera固定視角的好處,在一些岩石或細緻物品的邊緣是採用鏤
空貼圖來處理(1-bit alpha),可以有效節省面數。場景背面應該是完全
不做,反正看不到。
光源部分目前看起來並不明顯,甚至似乎場景看來像是只有在前面疊一
層亮圖,是否有用到deferred shading也看不太出來,但據說有用到SSAO?
也許是我沒有效能全開吧~但是將高低配備的畫面調整到不至於天差地遠
其實也是很札實的技術,只是一般狀況下大家不會為此讚嘆,大概只有遊
戲程式會在那邊眼睛裡都是星星吧....

+網路
雖然可以單人遊戲,但是朋友間可以即時對話,也可以直接加入遊戲一起
打,loading應該很重。

2012年4月18日 星期三

提早起床寫程式真不容易

試了兩個多月,還是很難每天提早兩小時起床寫code。比較有改變的是養成了每天七點前會自己醒來,而寫東西的速度雖然不如預期,卻也固定地在進行中。
有每天進步一點就是好事,現在至少先保持吧!別好高騖遠反而收手不做,我如此阿Q地想著。

2012年2月9日 星期四

[翻譯練習]五點起床寫程式(Waking Up at 5am to Code)





這篇文章是無意中看到,主要講工作之餘想開發自己有興趣的專案時,一般人會在下班後的晚上寫程式,但是他改用了一個不同的時間來開發。以下是他的經驗談.....


[翻譯開始]

我現在正在試驗每天五點起床,在上班前做我自己的專案。
有些在Hack News的人提到他們這樣做,而這點子在我腦中盤旋不去,所以我到目前為止已經這樣做了兩星期。

基本想法

在清晨五點跳下床並且寫上兩小時的程式,然後準備去上班。我每天都這樣做,包括假日。我會趁我晚上看電視的時候準備及維護一個線上版的Kanban board(任務看板,敏捷開發的方法),以確保我在隔天上午的時候可以快速進入狀況。

關鍵是享受工作

現在是清晨五點而我接下來將要整天投入工作。最重要的就是不要在這段時間內被壓力擊敗或感到挫折。做我喜愛且完全在我掌控中的個人專案確保了這一點。我目前只開始了兩星期,目前為止還沒有任何徵兆這會累死我,事實上完全相反,這樣做激勵了我。

優點

  • 在清晨五點是非常寧靜無聲的。沒人會在即時通訊軟體上,沒人會丟簡訊或寄email給我。我發現我非常的專心,察覺到只有兩小時可用激勵了我很專心且有效率地使用它。目前為止,我變得很有生產力。

  • 我有了一個明確界定的時間單位去做我的工作,我可以保證每星期最少有12小時、大多時候是14~18小時在這上面。(六日可以做更久)。這跟我以前要費盡心力去挖時間出來的狀況大不相同,這樣的工作架構使我有更好的整體時間運用。
  • 我只比以往更早一個小時上床睡覺。要這麼做我得要犧牲一點閱讀時間,然後我大概會睡上7-8小時。不過我目前對此一點問題也沒有。
  • 晚上的時候我心情更加的輕鬆-假日時更是如此。我可以放心娛樂放鬆自己,而不會有個聲音一直在我背後說得要對我的遊戲多做一些進展,如果是在晚上做我的專案就會這樣。但是目前為止我發現我一星期好好工作12小時,就足以在輕鬆的步伐下推進我的遊戲製作進度。滿足了創作的癮頭。
  • 我發現我在休息的時間可以不再一直想我的專案。
  • 當我要去上班時比以往更加清醒,而且因為已經有工作成效所以感覺不錯。

缺點

  • 第一次清晨五點起床超痛苦的。不過我已經在調整中。
  • 我或許已經過度消耗自己的精神而不自知。
  • 我不能像以前那樣聽音樂來提升我的效率,以免吵醒我女友。這也許慢慢變成是件好事....(我:這是說不會被女友抓去作其他事的意思嗎?)
  • 這可能會干擾到周末計畫。我有點懷疑這點,我已經不再年輕而且這些日子也不再是夜貓子了。
  • 在緊要關頭沒有任何進展,可能會拖累這些早起日子接下來的時間。希望它永遠不會發生,但是終究會。

為何週末也要這樣做?

我發現
如果我每天固定去做一件事,會更容易堅持。讓我週末時睡比較晚會讓我周一也想繼續睡。它可以被拆開來作,這只是我個人的想法。

任務看板

我真的超愛任務看板的,即使只有我一個人在用。我覺得這是關鍵。它讓我專注,專注在這些被分解到可被管理的任務碎片中(理想中可在兩小時內完成),而且確定我絕不會被想著接下來該做什麼給搞混。
我收到一些要求說要看看我的任務看板畫面節圖,就在這下面:(這邊請回原網站看吧)

其他想法

一開始的計畫是看看這是否真能堅持下去。對此我很樂觀。如果沒問題,我想會去找個適合我咖啡壺加上一個好的咖啡杯來等我起床。
我幹掉了站著工作的想法並且重回到坐下來工作。不過如果兩個小時地站立工作會不會比較理想?值得試試。

[翻譯結束]

我的想法:
我自己也這樣試了兩個星期,我得說還蠻難做到每天都提早兩小時起床的,不過一旦有做到整天的心情都還不錯。我的作法是提早起床然後到公司附近比較早開的咖啡聽寫程式,然後在NB快耗盡電源的時候也差不多就該上班了。裡面提到的專心跟有進展的心理安心感是我覺得這個方式最有幫助的地方。