2011/09/14

翻譯:Xcode的建置設定Build Active Architecture Only(Xcode Build Active Architecture Only )by Keith Harrison

文章:Xcode Build Active Architecture Only(Xcode的建置設定Build Active Architecture Only)
日期:2010.04.21,
作者:Keith Harrison
作者的部落格:Use Your Loaf

作者簡介:
任職某IT公司,下班後在iPhone上開發,以及在mac上使用Ruby on Rails。


Xcode的建置設定Build Active Architecture Only

今天在Stackoverflow上看到某個問題,讓我想起在Xcode 3.2.2裡,有些新加入的建置設定,值得在這裡說明一下。隨著iPhone/iPod Touch新型機種推出,以及iPad的加入,你可以決定要將軟體編譯成哪一種處理器架構的格式,下面的設定,都放在target info的標籤Build之下(在target上按滑鼠右鍵然後選Get Info)。

Standard (armv6)

原先的armv6架構,現在以"Standard"字樣出現,產出的二進位檔案,可在所有機種上運行,如果你的軟體還需要在iPhone OS 2.x上跑的話,你應該選擇此設定,因為,根據一些報告指出,2.x的機子跟universal binary二進位檔有點不對頭。

Optimized (armv6 armv7)

若是選"Optimized"的話,這會建置出universal或稱為"fat"的二進位檔,裡面含有armv6與armv7兩套二進位檔,顧名思義,這樣的軟體檔會比較肥大,不過,當放到armv7機種上運作時,就能充分完整地利用處理器的能力。在實務上,使用者到底能不能感受到效能的提升,取決於應用軟體需要處理的事情與運算。如果你的目標對象是OS 3.x或之後的版本,一般來說,你應該選這個項目。

Other (armv7)

如果你的對象只有iPad的話(iPhone OS 3.2),你可以手動把架構設定為armv7,這樣就不會去建置armv6的部份。

Build Active Architecture Only

到目前為止,都很容易理解,但是,有件事要注意。在target的建置設定中,在Architectures那一部分裡有個叫"Build Active Architecture Only"的設定,這會影響二進位檔的建置方式,其預設值是,若是Debug組態,此設定值會被勾選,如下:



Xcode現在會偵測你有連接的機子,根據機型來設定此項目,所以,如果你插入iPod Touch二代的話,Xcode會將active architecture設定為armv6,此時,若你用上面的Debug組態來建置,那麼只會建置出armv6的二進位檔,以節省時間(除非你的專案很大,大到感覺不到,不過,我想你多多少少都能察覺出建置所需的秒數)。

當你新增Distribution組態來發佈軟體到App Store上時,你應該要確認一下,這個選項應該是"不勾選"的狀態,這樣才會建置出肥大的universal binary,如下:



每當蘋果公司推出新機型,建置流程就變得更加複雜,花時間留意一下Xcode裡出現的新選項設定是值得的,即使大家都有共識,Xcode在隱藏細節與複雜設定這一方面,做的還不錯。

2011/09/13

cocos2d-iphone的安裝、移除與Hello World

這篇是cocos2d-iphone的安裝與移除,我的環境是Mac OS X Snow Leopard(10.6.8)、Xcode 4.2 for Snow Leopard(Build: 4C199)。

安裝非常容易,先到這裡下載打包壓縮後的檔案,目前1.x版的最新穩定釋出版本是cocos2d-iphone-1.0.1.tar.gz,大小約32 MB;2.x版則為cocos2d-iphone-2.0.tar.gz版,大小約39 MB,不過cocos2d 1.x與2.x有所差異,可看這裡判斷。

(如果你想追求最新版本的話,cocos2d的最新原始碼放在GitHub上,其中分支develop是1.x版,分支develop-v2是2.x版。)

底下以cocos2d-iphone-2.0.tar.gz為例。

先解壓縮
$ tar zxvf cocos2d-iphone-2.0.tar.gz

解壓縮後會有一個目錄cocos2d-iphone-2.0,基本上,這是cocos2d開發人員的工作區,我們並不直接在裡面開發遊戲,不過你可以用Xcode開啟cocos2d.xcworkspace,裡面有非常多的範例與測試,請執行看看。

開啟此workspace後,在左欄看到三個project,cocos2d-mac(cocos2d-iphone也開始支援mac平台)、cocos2d-ios(顧名思義)、cocos2d-ios-PerformanceTests(測試效能)。


裡頭有很多建置目標,請隨便選、測試看看。


這是LabelTest。


這是ParallaxTest。


這是RotateWorldTest。


當然,這些是供測試用的範例,你可以到這裡看看以cocos2d開發出來的遊戲的畫面,大概了解一下cocos2d的能力。

接下來要安裝cocos2d的Xcode專案範本,先cd進之前解壓縮後的目錄,然後:

$ ./install-templates.sh
(可能要用 sudo ./install-templates.sh 以root權限安裝)

這支script會把cocos2d的專案範本安裝在/Users//Library/Developer/Xcode/Templates/cocos2d v2.x/之下,把檔案範本安裝在/Users//Library/Developer/Xcode/Templates/File Templates/cocos2d v2.x/之下。

如果你之前有安裝過舊版,可加上參數-f強制覆蓋。


接下來,讓我們用安裝後的專案範本弄出一個基本的Hello World。

執行xcode-File-New-New Project...,選擇cocos2d這個專案範本,


取個名字、選個目錄存放後,你可以看到:


不多說,將執行對象改為模擬器後,直接按Run執行:


哇,已經出現Hello World啦。你可以試試看其他兩個專案範本,那是跟物理引擎有關的。

接下來,就請你看看這篇cocos2d-iphone的學習資料,動手開發你的遊戲吧。


如果你想移除的話,很簡單:
1. 刪除目錄cocos2d-iphone-2.0,這是解壓縮cocos2d-iphone-1.0.1.tar.gz後得到的。

2. 刪除專案範本與檔案範本,路徑是 /Users//Library/Developer/Xcode/Templates/cocos2d v2.x/與/Users//Library/Developer/Xcode/Templates/File Templates/cocos2d v2.x/。

3. 刪除你自己建立的Xcode專案。

2011/09/12

cocos2d-iphone的學習資料

cocos2d這套開放原始碼的遊戲引擎,最初是以Python寫的,後來有了各平台和程式語言的移植版本,有Java的Android版、有C++跨平台版有JavaScript的瀏覽器版cocos2d-html5,以及Objective-C的iPhone版,也就是這裡要講的cocos2d-iphone,以Objective-C寫的,目標平台是iOS(現在也開始支援Mac OS X)。所以,底下提到cocos2d時,指的都是這一套。



這是cocos2d-iphone的logo,快樂的圖案給iOS用,生氣的給Mac用。


cocos2d-iphone的學習資料:

1. cocos2d-iphone的官方網站原始碼在GitHub上文件(API、常見問答集、等等)、論壇、開發出來的遊戲列表

2. 討論遊戲開發的論壇:iPhone Dev SDK討論遊戲的板面Stack Exchange的遊戲開發QA論壇、等等。

3. 書,Learn iPhone and iPad Cocos2D Game Development,Apress 2010年12月出版,作者Steffen Itterheim。書中用的版本應該是cocos2d 0.99.3。作者不是只出本書就算了,出書前就有專門發表cocos2d遊戲開發的網站、還架設了論壇、錄製教學影片,另外,還把cocos2d與Wax(Lua on Objective-C)、iSimulate、cocos2d-iphone-extensions、cocos3d、SneakyInput、Chipmunk SpaceManager等等整合起來,名為Kobold2D,用起來就更方便了。

更新:這本書的第二版,Learn cocos2d Game Development with iOS 5,2011年11月出版,更新為cocos2d 1.0.1、iOS 5、Xcode 4。

更新:這本書的第三版,Learn cocos2d 2: Game Development for iOS,2012年9月出版,更新為cocos2d 2.0、iOS 5與6、Xcode 4.3與4.4、ARC。似乎會有中文翻譯本。

4. 書,Learning Cocos2D: A Hands-On Guide to Building iOS Games with Cocos2D, Box2D, and Chipmunk,Addison-Wesley 2011年7月出版,作者Rod Strougo與Ray Wenderlich。書中用的版本似乎是cocos2d 0.99.5。作者Ray的部落格在此,上面有很多iOS軟體開發與cocos2d遊戲開發的文章。這本書的官方網站

中文翻譯本:Cocos2D 遊戲程式開發攻略-動手撰寫你的第一支 iOS 遊戲

5. 書,Cocos2d for iPhone 0.99 Beginner's Guide,Packt 2011年1月出版,作者Pablo Ruiz。書中用的版本應該是0.99.5之前的。

以上書籍裡所使用的cocos2d版本,多少會跟目前最新的穩定釋出版本不同。請注意,cocos2d有些類別與方法的名稱會改變,譬如在0.99.5裡,CCLabel改名為CCLabelTTF、CCBitmapFontAtlas被CCLabelBMFont取代,所以如果你使用的cocos2d版本與書中不同的話,會遇到這些煩人的差異,詳情請看各版本的release note。不過,1.x已經進入維護狀態,應該不會再有大改變。

6. 書,Cocos2d for iPhone 1 Game Development Cookbook,Packt  2011年11月出版,作者Nathan Burba。

這本稍微進階一點,好書。

7. 書,Learning iOS Game Programming: A Hands-On Guide to Building Your First iPhone Game,Addison-Wesley 2010年9月出版,作者Michael Daley。

這本不是講cocos2d,而是在iOS SDK與OpenGL ES之上開發遊戲,舉個例子,在cocos2d裡,我們有CCLabelBMFont可用來繪製點陣字型,而這本書則是自己寫出程式碼來繪製文字。概略來說,這本書的內容是介紹遊戲開發時的各種概念(sprite sheet、tile map),開發出一套遊戲引擎(書中的程式碼),並實際寫一支遊戲做範例(寫出來的遊戲Sir Lamorak's Quest有放在App Store上)。

有中文翻譯本:學會 iOS 遊戲程式設計的 16 堂課─動手撰寫你的第一隻 iPhone 遊戲

8. 書,Beginning iOS 5 Games Development: Using the iOS SDK for iPad, iPhone and iPod touch,APress 2011年11月出版,作者Lucas Jordan。

這本不是講cocos2d,而是在iOS之上寫遊戲。

9. iPhone Game Tutorials上有非常多介紹cocos2d寫遊戲的文章,有入門的也有進階的。

10. Cocos2D Podcast,主持人為Mohammad Azam與Steffen Itterheim。

11. 到YouTube上找找cocos2d教學影片。

12. 其他,請留言告訴我。


除了cocos2d外,還有其他遊戲引擎可選,譬如Unity3DCoronaSIO2OolongTorqueBork3DShiVa 3DGalaxySparrowIrrlichtGame SaladUnreal Development KitPixelwave、等等,令人眼花撩亂,有2d的有3d的,有免費的有要錢的,有些只支援單一平台、有些支援多重平台。

挑選iOS遊戲引擎時,可以參考以下資料:

1. iPhone Game Engine Comparison – Open Source
2. The Commercial iPhone Game Engine Comparison (3D and 2D)
3. Review of 3D Engines for the iPhone
4. Thoughts on Unity3D
5. Best iPhone Game Frameworks
6. Cocos2d PodcastGame Engines and Frameworks as Alternatives to Cocos2d
7. Mobile Game Engines,根據你設定的需求找出合適的遊戲引擎。
8.  Steffen Itterheim的文章,The Game Engine Dating Guide: How to Pick up an Engine for Single Developers,講解如何挑選遊戲引擎。
9. Battle of the Lua Game Engines: Corona vs. Gideros vs. LÖVE vs. Moai
10. 其他。

以上資料僅供參考,請注意文章的時效性,某些遊戲引擎可能已經有了長足的進展,某些遊戲引擎可能逐漸式微。

2011/09/07

寫程式用的字型

2019.11.14更新:我在寫這篇文章時,並沒有考慮字型的授權問題,如商業使用是否要錢,可否在公司內使用。感謝熱心網友Karen Ferrer提供另一篇分享文70+ Best Free Fonts for Designers – Free for Commercial Use in 2019,可找到能用於商業的免費字型,等寬字型在第9節。


這裡列出一些等寬字型(fixed-width or monospaced fonts),主要用於撰寫程式時,以及終端機命令列模式下使用。喜歡與否,見仁見智,大家試試看,自己看的順眼最重要。

挑選時,有些注意事項:

  • 英文字母大寫O、小寫o、數字0,必須能夠清楚辨識。
  • 英文字母小寫l,大寫I、小寫i,數字1、符號|,必須能夠清楚辨識。 
  • 符號`與',必須能夠清楚辨識。
  • 字型的筆劃粗細適中。
  • 有些字型,設定在某種大小下時,非常漂亮,但可能在放大或縮小後,卻變差了。
現在作業系統各有其獨特的文字描繪技術,同一套字型在不同編輯器下看起來不盡相同,在我的環境下可能很棒,但在你那邊可能差強人意,更何況,每個人的感覺不同、偏好不同,所以請自己實際用用看,要注意各種相關參數的設定,譬如anti-aliasing、ClearType、等等。


Courier、Courier New
由IBM根據打字機的字型所設計的,因為沒有維護其專利,所以流傳廣泛。
我的感覺:Courier太難看。Courier New中規中矩,筆劃有點細。
下載:各系統上應該都有安裝此字型;Courier New可到這裡找找

Andale Mono 
很多系統預設安裝的字型。
我的感覺:比Courier New好,但有更棒的。
下載:請到這裡

Monaco、Menlo
Monaco是Apple的Mac作業系統內建的終端機預設字型,在Mac OS X 10.6被Menlo取代。Menlo是由Bitstream Vera Sans Mono改過來的。
我的感覺:不錯,在Mac上嫌麻煩的話就直接用這兩個字型吧。
下載:據我所知,只能在Mac OS上合法使用。

Source Code Pro
Adobe釋出的等寬字型,很不錯。
我的感覺:很不錯。
下載:請到這裡

ProFont
我的感覺:不錯,推薦。
下載:請到這裡

Bitstream Vera Sans Mono
我的感覺:整體看起來筆劃夠黑,我喜歡,但是符號*的位置偏上,我不喜歡。
下載:請到這裡

Deja Vu Sans Mono
由Bitstream Vera Sans Mono改過來的,免費。
我的感覺:很不錯,推薦。整體看起來筆劃夠黑,我喜歡,但是符號*的位置偏上,我不喜歡。
下載:請到這裡

Monofur
我的感覺:有點古老的味道。
下載:請到這裡

Inconsolata
我的感覺:很不錯,推薦。單引號與雙引號有點卷曲歪斜,有人不喜歡所以繼續修改,變成Inconsolata-g
下載:請到這裡

Anonymous Pro
Mark Simonson設計,免費。
我的感覺:很不錯,推薦。
下載:請到這裡


參考資料:
  1. Top 10 Programming Fonts
  2. Fixed-width fonts
  3. Monospace/Fixed Width Programmer's Fonts
  4. Font Survey: 42 of the Best Monospaced Programming Fonts
  5. 5 good programming fonts