本文只是對那篇老外部落格進行了翻譯,翻譯的不好,自己剛過六級.肯定有很多問題,歡迎同學指出.
回顧一下
這是以前的版本
在那時的ttl中,我們把綠色的點叫做核彈,
現在
遊戲很美觀,要多謝謝adam強大的美工(3a質量)。**卻有時感覺像大醜獸。通常,我會這樣來寫程式,先寫乙個原型,然後重新開始,對**進行重構,重新編寫,這樣使得**容易維護。然而ttl不是這樣的,這個遊戲的改進是直接從原型改成了產品級**。原始**經歷了大量的重寫,重構,和一些補丁,使得**開始變得健壯起來。好的是,我現在對可維護性**不應該是什麼樣的有了更清楚的認識,同時在編碼過程中,懂得更多設計架構,可以避免**以後出現混亂。
要明確指出的是,因為要把它做成乙個產品,所以最後,只要遊戲有趣,沒有人會罵它(除了作者)
tile 控制中的設計問題
在操控設計中,我們當前關注的主要重點是如何為使用者實現校準功能。整體上,我們對增加遊戲使用者的體驗有個非常簡單的方法。我們需要讓使用者進入遊戲花上最少的點選次數,一旦進入遊戲,你所做的就是傾斜裝置開始遊戲。這樣看來,讓校準自動進行看起來會是最好的使用者體驗。使用者甚至不知道自己做了什麼,只知道這只是個遊戲。那麼如何初始化校準工作呢?當遊戲計數」3,2,1」,「1」消失時,遊戲就在這個時間點即時在平衡位置進行了校準。同樣,當玩家取消暫停遊戲,校準也會執行。聽起來不錯,玩起來更好…如果你知道它是如何工作的。從遊戲測試中我們發現:
使用者可能會迷惑,當他們改變他們玩的姿勢時沒有暫停遊戲,校準沒有生效。這是乙個使他們困惑的情況。
有很多的聰明玩家會馬上找到校準的選項,因為他們在以前的iphone遊戲中用到過這種功能。如果沒有找到校準選項,他們會因為不能按照他們喜歡的方式去打遊戲而感到不爽。
在更多地社會環景中,而不是單獨的遊戲測試,那裡遊戲可以玩的很隨意。這可能會破壞我們的自動校準功能。玩家可能把iphone朝下,與同事交談時又把iphone擺到自己旁邊,當遊戲計數開始時,又馬上把iphone向後轉動後再玩,這個時候校準就亂了。這會對使用者產生不好的印象。
那麼我們是否要在玩家玩之前告訴他通過暫停和開始遊戲就可以對遊戲重新校準?我們快速模擬了客戶的反應.
對那些知道校準功能的使用者,他們可以立即的理解.
對其他人,他們很可能會說:"校準是什麼意思?".是的,全都帶著不好的口音.
好吧,因為我們要對那些最幼稚的iphone玩家有吸引力,做了以下測試:
1. 針對自動校準:沒有合適的反饋,使用者可能會錯誤的設定校準,使他們認為這個遊戲出問題了.
2. 針對使用者自定義的校準:有些使用者可以很好的使用,但是對使用者的無數種情況,很驗難預料到不怎麼玩遊戲的玩家會知道校準功能.
4. 尤其在ttl的設計方面:ttl的遊戲設定需要精確的tilt控制,否則,遊戲就會失敗.其它的不怎麼需要精確控制的遊戲,則可以使用自動校準.
因此,通過集思廣益,想到了很多種校準介面.相比其它基於tilt操控的遊戲,adam在那時想到了乙個獨一無二的好主意.
我們認為這是乙個好主意,同時測試也很好,我們沒有想到目前的這個選擇跟使用者會產生更多的共鳴.
「這是我發現的自定義tilt 控制最好的選項.」
「那些害怕手動校準的人,現在不用怕了」
「遊戲的不同之處在於他的校準選項,提供了三個預設操控,這樣可以滿足大多數人的遊戲姿勢.」
tilt控制的技術問題
除了設計上的問題,在實現tilt控制的技術上,我有很多問題要克服.第乙個也是最大的問題是如何計算tile的偏移限制.當iphone的校準出現完全豎直的情況時,那麼所能檢測到的水平移動幾乎沒有.為了解決這個問題,我加了乙個控制方案,當裝置在這個位置時玩家通過steering來控制遊戲中的飛船,而不是傾斜裝置來控制.這不是好的情況,但是隨著iphone4陀螺儀的出現,這也許可以緩解.已經有很好的方法來實現3g/3gs上的tilt控制,所以這不是乙個問題,我沒有太多時間來做這個實驗.當我做這些實驗的時候,我會發布更新的.
第三個但是比較小的問題就是取樣率.sss我設定的加速度計的取樣率是 30hz,那麼ttl執行也是30fps.但fps與加速度計的資料有點不同步,你會看到加速度資料會從幾幀中獲得,因而有點細小的變化.ttl沒有做太多管理不同幀時間的工作(不好意思),但是這個問題也沒有帶來太多的不好,因此我沒有覺得這個問題值得修.
是如何真正工作的?
對一直讀下去的讀者們,都會很想知道這是怎麼實現的,我新增了乙個xcode工程來實現.我寫了乙個glsprite demo程式,把其中的功能進行了分解,使它滿足了乙個簡單tile控制 的樣例.我的這個方法就是寫了乙個函式,用來實現 反轉操作杆 的功能.我不會試著去解釋wtf的意思,通過下面簡單的繪畫來描述.
我通過對加速度計資料進行插值,使它轉向的向量可以一直指向遠離裝置螢幕的方向.我通過這樣,找到這個向量和』neutral』位置(blue)的差,最後投影在螢幕的2d平面上,返回乙個速度值.綠色的箭頭就是玩家速度的方向.那麼,當neutral位置和反轉的加速度資料很接近時,玩家的速度值會趨近於0(盲區).
你可以從這個案例程式中發現,所有的加速度計算的邏輯**都在tiltplayer類的'accelerometer:didaccelerate"方法裡實現.在tiltplayer的update方法,做了對圖示方向的平滑處理,減少了抖動.其它的都是渲染程式或其它引用程式.因此這裡貼出了與本文相關的**,不用開啟xcode工程去檢視了.
- (void)accelerometer:(uiaccelerometer *)accelerometer didaccelerate:(uiacceleration *)acceleration多謝mikko mononen,使**更加簡潔,下面是mikko mononen改進後的**.
- (void)accelerometer:(uiaccelerometer *)accelerometer didaccelerate:(uiacceleration *)acceleration秀才坤坤出品
7開機自動校準時間 時鐘測試儀是如何校準的
時鐘測試儀是如何校準的 通過對 jjf 1662 2017時鐘測試儀校準規範 的認識,了解時鐘測試儀一般由波形整形電路 分頻電路 電子控制電路 顯示電路等組成,具有快速測量電能表內建時鐘訊號 顯示秒脈衝日計時誤差及頻率偏差等功能,時鐘測試儀廣泛應用於電能表生產企業及計量部門。syn5106型高精度測...
Unity簽名自動配置
不需要每次打包都手動配置簽名檔案.有時候,在unity啟動時,在專案中執行一些編輯器指令碼 是很有用的,而不需要使用者進行操作。可以通過將initializeonload屬性應用到具有靜態建構函式的類來實現這一點。靜態建構函式是與類同名的函式,宣告靜態,沒有返回型別或引數 using unityed...
google自動翻譯的實現
曾經,所謂的 全文翻譯 不過是一本大號的英漢詞典,將單詞乙個乙個翻譯成中文,然後再按照順序排在一起。google搜尋頁面上的 翻譯此頁 雖然文法依然一塌糊塗,但居然能讀懂其中的一些段落,有了長足的進步。目前最先進的演算法,是 統計式 翻譯演算法,其基礎是統計與分析某一單詞在這一語言環境中被運用的概率...