2022年10月1日 星期六

XR MMO: The Players' Privacy

We value the players' privacy. However, the following feature is necessary for XR MMO system. If you cannot accept, please do not install and execute the app.


1.Camera usage
The AR function requires the camera usage. And the camera is only for AR. The app would never collect or uplaod your camera image .

2022年1月28日 星期五

幻夢時刻: 隱私權政策

在優先考慮玩家個人隱私的前提下,本程式仍會需要使用玩家相機影像等資訊,因此下列的個人資訊及功能是使用程式期間必須用到的,若您不同意請勿安裝與使用本程式。
本遊戲會使用到的個人資訊和功能如下

1.相機影像: 本程式使用相機影像來實現擴增實境(AR)與人體骨架追蹤效果,程式不會在任何情況下上傳或紀錄您的相機影像


2.定位權限: 具環境辨識與互動能力的AR體驗需要定位權限,程式不會在任何情況下上傳或紀錄您的定位資訊

2021年2月5日 星期五

2020 年度報告

 分貝貓貓

2020.1.11 

那天下午我在某間住家附近的咖啡廳進行程式架構設計,突然覺得為什麼咖啡廳會那麼吵雜呢?

觀望一下四周,發現原因大概要分成兩個,首先是大家開心的跟友人聊天時,很容易不自覺就忘記注意自身音量,而氣氛歡騰的時候對方或是第三者也很難提醒,其次是惡性循環,當某一桌開始很大聲,其他桌就容易聽不清楚,就會也不自覺變大聲,最終就導致整個咖啡廳變得很吵雜

所以我抽出一張新的白紙,想著能不能有甚麼方式,可以在某桌客人聊天音量增大時,友善的提醒,於是就畫了分貝貓貓的設計稿


主要是希望能設計一隻可愛的貓,平常在箱子裡面,如果有人講話很吵就會打開蓋子,對客人施壓,因為貓是一種可愛又任性的生物,所以我想像客人會心甘情願的放低音量,然後說:

"噓,我們吵到貓貓了"


後來去書局買了必要的材料,然後又買了一隻貓布偶,分貝貓貓就誕生了


主要原理是利用麥克風偵測音量,如果一段時間的累計音量超過閾值,貓貓就會出來壓迫性凝視

但幾次和親友吃飯都帶分貝貓貓去實驗後,發現有兩個問題,其一是環境差異太大,有些環境雖然有音量但可能因為開闊不會覺得很吵,但是分貝貓貓可能太敏感就會一直跑出來,甚至該桌成員都沒有說話的情況

其次我主要架構使用Arduiono 加上 伺服馬達,但那時候透過Arduino供電的馬達力量很不足,以致貓貓常常出不來,或是出來了就回不去


2020.6.11

決定開始升級分貝貓貓,首先我幫分貝貓貓加上LCD面板和搖桿,讓分貝貓貓變成可以根據現場情況調整敏感度





並且再幫分貝貓貓的伺服馬達加上外接的電池盒,分貝貓貓出來和回去的穩定性頓時提升到非常理想的狀態


馬達力量很足夠之後,也可以讓貓貓的出來和回去有變化,例如慢慢的回去

"嘿! 我會,一直,一直,一直盯著你們"




不過這個專案基本上是做好玩的,每當在咖啡廳覺得很吵,就會想推動這個企劃,最後幾個問題就是我自製的雛型分貝貓貓體積有點太大了,還有就是咖啡廳到底會不會希望使用這種產品,還有分貝貓貓有讓第一次見到的使用者想要主動喚出貓貓的反向傾向

目前是有個有興趣的學弟正在嘗試能不能用體積更小,又更雅致的設計,實現同樣的概念


Evolver紅蓮

Evolver系列研究一直在研究是否能使用ML,來自動生成可以和使用者互動的物理性物件

出發點有二,其一是XR(AR/VR/MR)未來的UX傾向一定是使用肢體或手勢來控制,也就是說很容易不是鍵盤之類可預測的固定輸入,而是會產生不可預測的手勢軌跡等

所以以遊戲為例,以往遊戲開發很容易使用固定的人物招式動畫,配上固定的物理結果,例如按下"S"鍵,遊戲角色會揮出右拳,擊退對手1公尺,精緻的遊戲根據打的部位或時機不同,對手的反應動畫可能會不同,但最終也在有限的範圍內,因此不論多精緻的遊戲幾乎玩久都會膩

然而XR遊戲可能是讓使用者自己揮拳,如果揮很小力或很大力,打的部位或軌跡不同,對手卻不能自然的反應承受的物理現象,會是很大的實作缺憾

其二就是承上述,隨著使用者的輸入介面改變,輸入組合與變化急遽增加,如果用傳統的方式製作和玩家互動的動畫,遊戲開發的時間和成本應該都會劇烈提高,並且AI理論上難以實作,因為如果是寫死的程式,很容易被玩家找出固定模式就流於單調或套招


因此Evolver研究就是希望製作純物理性的角色,也就是不是靠動畫師去細膩的模擬被碰撞或打擊的動作,而是角色本身就有自然的物理屬性,這個技術行之有年,物理性人物在Unity被稱為Ragdoll

但下一階段是現行尚不成熟的領域,"讓物理性角色自行動起來",這個實作難度很高,以人體來說光是雙足平衡的站立就是奇蹟般的技巧,想用程式寫出能操作物理性肢體的人物是極端困難,原本主流形式是虛擬人物一般是動畫人物,直到被玩家打擊或擊飛才切換成物理性人物

但這樣在XR互動就是不夠浪漫,例如如果一個虛擬角色攻擊你,你無法根據你和虛擬角色互相的出力,呈現自然的反應,就用Wii的拳擊遊戲為例,相信很多人都發現只要出拳就好,不管力道,敵人被打後仰程度都相同,更不會出現卡住對方或力量抵消的情況

因此為了實現能理想使用在XR的人物,並且期待降低未來遊戲或XR開發者的工作量,當知曉ML技術後就開始自行嘗試這個研發計畫

"Evolver紅蓮: 使用ML讓物理性人物能自行學會指定互動"



2020.3.23

初期的時候連站立都是問題,因為不知道怎麼誘導或是允許ML控制物理性骨架的設計不恰當,但這影片也記錄了,物理性人物可以做出很複雜的動作,而且全部動作都是透過設法如同人類一樣"物理性"的控制肢體來實現

2020.4.7


開始能夠訓練紅蓮跑步了

2020.4.25


紅蓮能夠自行移動並追擊目標物件,並且使用了AR技術讓其出現在現實世界



自拍合照,後來還有請路人幫忙拍一張合照,真的不清楚路人是什麼心情,但是可以肯定我心情超好


現階段各種紅蓮研究仍然在進行中,不過近期幾次想把研究複雜度提升上去,例如虛擬人物對打,都一直遭遇硬體限制,也就是我目前能用來訓練ML的電腦效能不夠,嗚嗚

目前暫時都回歸進行一些細部研究,例如腳踝可動性對ML成果的差異,或是如何引導靜止站立等等,希望2021也能訓練出有趣的新成果來和大家分享


窗外桃源

暑假和朋友組團去參加XR開發者競賽發想的題目,主要構想是讓捷運車廂變成VR的載體,車廂窗戶會投放不同程式或是異國風光,讓乘客搭著捷運的時候就宛如在世界各地旅行

那時候為了拍概念影片,畫了一張分鏡稿



然後最終概念影片成品


這個構想雖然評審說很喜歡,但最後沒有得獎,可能實務方面太困難了,但對我來說最大收穫是發現了一個剪片很厲害的學妹,多虧她後來另一側的行銷影片才能循環出產


另一側

這個企劃我是當作新創來挑戰,可以說是我2020近乎全力投入的專案,發展的太過劇烈,所以就切成幾個向度,記錄一下進程

簡介

這是一個要在現實世界遊玩的遊戲,他的核心設計是玩家要設法在現實世界的人群中找出誰是其他玩家,並且進行互動的遊戲


遊戲的起點是6年前參加的黑客松,那時候我們就發想了很接近的概念,我們稱之為實境生存(AR Survival),並且有幸在黑客松得獎,但是後續實作發現幾個大問題
  1. 那時候Unity開發Android和iOS要付對學生來說極端高額的年費
  2. 那時候GPS定位很不穩定
  3. 那時候我技術很不成熟

因為我真的很喜歡這個企劃,他不只是個遊戲,他會是一個讓你出門運動的理由,他也會是一種社交,讓你和朋友真的一起玩或認識新朋友,也會是一種顛覆,有這個遊戲的存在,你會對現實世界的其他人很感興趣,尤其那些拿著手機走路的族群,其他人的存在會對你變得有意義

因此我幾乎每年有空都會嘗試或是調查之前卡關的部分,有沒有更好的解決方案或是在不同專案中累積需要的技術

直到兩年前慢慢湊齊了條件,並且製作了雛型版本確認了核心體驗,最後在我研究所一畢業就開始投入這個企劃


功能

2019.10 基礎功能

基礎功能是定位和地圖,還有暴露與互動,所謂暴露就是玩家每隔一段時間或發動攻擊,當下位置會立即被公開在所有玩家的地圖上,因此玩家互相可以透過暴露資訊,慢慢鎖定誰是現實中的其他玩家

2020.1 空投


為了讓玩家有移動和相遇的誘因,在遊戲內設計了資源和空投系統,玩家可以空投物資,隨機出現在自己附近,而因為所有玩家都看的到,都可以撿,所以有可能在撿空投的時候和其他玩家不期而遇

"等等,那個人也拿著手機走進這條暗巷,他會不會是個特務?"


2020.1.26 特斯拉頻道



為了讓玩家間可以溝通和合作,製造了名為特斯拉頻道的系統,基本上是個像是無線電,要對應波長的文字聊天系統,但是特殊功能是玩家可以設置頻道保護,會讓自己的攻擊不會傷害同頻道的其他玩家

但也因此允許了間諜和竊聽的可能性,玩家如果設法得知其他玩家隊伍使用的頻道波長,就可以竊聽別人的討論,和讓對方隊伍難以傷害自己

2020.2.3 相機



和朋友用雛型玩了幾次之後,真心覺得發生互動的瞬間都很有趣,就覺得如果能截圖、錄影,甚至直播會很好玩,就做了相機功能

而且為了讓他酷一點,花了一點心思做開啟鏡頭的特效,甚至還有對焦功能

不過很多玩家誤以為這有AR,會問我為什麼看不到敵人,這是令我有點困擾的地方,要如何傳達 "現實才是你應該關注的" 這個理念,我還要多想想辦法

至於有些玩家覺得有AR會很好,這裡也是多年的試作發現,做成AR實在太耗電了,而且由於現階段GPS定位還是沒有精準到零偏差,有了AR鏡頭反而會很明顯覺得難以瞄準

當然我也希望未來有AR,但我猜那要等手機效能和續航力都更高,或是AR演算法更輕量,並且最理想是有革新且更適用的裝置,那是另一個我默默在研究的計畫這裡就先不贅述了XDD

2020.2.4 熱更新



由於iOS對APP把關很嚴格,如果每次遊戲內容異動都要走一次更新流程會很不方便,因此一直以來都有程式碼以外,可以熱更新的技術,也就是可以更改一些動態載入的檔案,就幫遊戲換封面圖或是增加關卡

剛好Unity出了名為Addressable Asset System的新技術,又有一位名為Kelvin Lo的超厲害Unity講師拍了簡單好懂的影片,我就在遊戲內加入了這個功能,以便可以在遊戲推出新活動時,迅速又簡約的發布活動情報,和更動遊戲內任務內容

2020.3.17 SafeArea

iPhone系列的瀏海一直是我很頭痛的問題,因為會遮住UI,但如果為了iPhone系列留空,在沒有瀏海的手機版面又很奇怪,再加上也有一些Android手機又各種不同的瀏海

不過原因是我知識不足,開始正視這個問題後進行了搜尋,發現其實瀏海手機皆有名為SafeArea的規格,標註了不會被瀏海遮到的顯示範圍

藉由引用SafeArea的處理技術,並將UI設計成響應式,成功讓任何不同手機都能正確的顯示UI

2020.3.24 任務系統


希望能讓玩家有行動的理由、樂趣和回饋,所以設計了任務系統,會提供一些目標和獎勵,讓玩家可以選擇玩法

例如說單人的時候可以打一些虛擬敵人,或是設法拾取指定物件

多人的時候可以試圖暗殺指定對象或是保護指定對象


2020.5.1 商店


製作了讓玩家可以購買武器的地方,讓玩家如果賺了錢,就可以購買新武器,感受不同武器能造成的玩法或戰略變化

由於這個遊戲是要在現實中遊玩,因此光是射程不同就能造成很大的差異,而遊戲也設計了種類不同的武器,例如陷阱,放置在現實中的特定位置,自動攻擊經過的人

通常放了陷阱的玩家,常常都會故意露面引誘別人追擊他,搞得像在拍特務電影一樣


2020.5.12 諮詢系統


主要是設計成讓玩家可以跟遊戲內神秘組織的成員說說話,了解一些新手入門的資訊或是遊戲人物的因緣與故事

2020.5.22 武裝研發


因為這個遊戲是以在現實中遊玩為核心,因此也希望能實現"讓玩家可以參與選擇和推進遊戲內容"的理想,設計了武裝研發的系統

這個系統一言以蔽之就是玩家可以贊助自己希望未來出現在遊戲中的武器,而作為回饋,當一個研發項目籌備到指定金額,有達成某個贊助額度的玩家都可以搶先其他玩家使用這個武器

由於金額都很高,希望能讓玩家感受到 "和其他人一起完成某個目標" 這種樂趣和成就感

2020.6.5 種族


新增了種族的系統,玩家未來可以選擇不同種族,來成為戰略定位不同的特務,但目前玩家可以選擇種族,獲取種族的管道卻極端有限,是後續活動和開發的優先向度之一

2020.6.5 排行榜


可以讓玩家挑戰成為最強特務,或是看到誰是戰爭中的英雄或傳奇殺手,類似這種感覺的系統XDD

2020.6.21 異常狀態攻擊



遊戲原本只有直接攻擊這種形式,增加了讓敵人中毒或是持續暴露行蹤等負面狀態,期望可以增加玩家的戰略豐富度

2020.6.25 登入介面



重製了遊戲的登入介面,並增加獨立的註冊、驗證信和忘記密碼頁面,這裡不得不說,Google Firebase套件實在太完整太好用了


2020.7.3 註冊人數


新增註冊人數的系統,可以看到遊戲目前有多少玩家註冊,又有多少玩家在線上,因為我感覺見證一個遊戲發展是很難得的過程,我覺得讓玩家也看的到應該也蠻有趣的,遺憾的是時隔半年現在也增加到176人而已

2020.8.18 星輝等級


增加了星輝等級的設計,就是遊戲進一步改成,當有玩家暴露的時候,還會透露這個玩家有多強(有多有錢)

"喂喂喂,我們附近有個怪物啊"
希望能讓玩家能這樣子嗨起來

2020.8.26 遊戲開場動畫




製作了遊戲開場動畫,希望能讓玩家入門,能了解遊戲世界觀和遊戲大致玩法

做動畫真的,超累!!

因為不能像寫程式獨立出重複的部分,就用程式碼生成,反而要近乎每個視覺細節都要手動調整

但是在這過程中有實驗性的嘗試幾個視覺技術並成功,像人物的數碼感或是那種滋滋滋切換圖片的效果

但得說效果不算很好,還是很多玩家開了遊戲不知道怎麼玩,根據情況未來開場動畫有可能被我大改或砍掉

不過目前有我覺得相當有趣的彩蛋,建議玩家趁早體驗看看,記得按跳過

介面

介面其實時不時都會根據玩家回饋和靈感去進行優化,這裡就記錄幾個比較有趣的劇烈變化

2020.2.27 受傷特效



當玩家被攻擊,會根據武器的攻擊種類,在螢幕上留下特效,例如刀痕或彈孔,這是目前滿意度很高的設計,一目瞭然的知道自己被攻擊了,而且很帶感

2020.4.13 介面風格大更換


原本一言以蔽之就是很醜,後來多虧我的朋友陳韋至給了我很多建議,又去書局看了一些設計的書,最終掌握了兩個比較適合我的方向

1.維持簡約
不要嘗試設計裝飾,只要思考頁面的重點、必要元素,然後把這些東西擺的有邏輯和合理

2.使用專業設計師推薦的配色盤
配色實際上超乎想像的重要,這還包括使用者有沒有辦法長時間看著你的畫面,如果你使用太過刺眼或對比強烈的顏色就會容易讓眼睛疲勞,或者是一個App內有太多種顏色也會造成設計的混亂

Flat UI Colors 2(https://flatuicolors.com/) 這個網站推薦了幾種配色盤,推薦挑一種配色盤,並且只在App內使用配色盤內的顏色

起初我在某篇文章看到這個建議覺得很瘋狂,但是後來發現效果相當卓越,尤其對我這種沒有美感的人


2020.5.1 Logo

Logo我到要上架測試版才在困擾這個問題,但因為是測試版就上架了一個很醜的,等到要上架正式版的時候又重新開始困擾這個問題

我起初想要設計,"手機可以打破虛實界線",這種符合另一側概念的Logo,結果顯然是個悲劇


那幾天又去泡書局看各種設計的書,或是在網路上滑Logo設計的網站,最終設計了接近現在的版本


不過後來審查又被App審查團隊表示,Logo裡面不能包含iPhone,我就有點困惑的把裡面的手機改成完全不像iPhone的手機,最終就通過審查,成為當前的Logo


Apple審查

App審查其實相當嚴格,坦白說我記不得全部了,我只記得我初期常常被退回來,是近期才比較能一次過審查
但難得要寫年度報告,我想記錄我記得的部分,也許可以幫助一些開發者

1.不能含有Apple擁有的商標 (例如iPhone圖案)
2.不能擁有第三方收益的可能,例如提供序號來獲得虛寶,這樣程式可以販賣序號,只能讓使用者透過遊戲內容或In-App Purchasing來購買虛寶 (我知道有些遊戲有序號,我不知道他們怎麼過審查的,也許你們可以嘗試檢舉看看XDD)
3.不能包含現實存在的武器,例如AK47,這裡因為我不想把我的遊戲變成限制級遊戲,所以我是維持12+還是更低的分級,我不知道是不是更高的年齡分級就可以
4.有AR功能,要在程式內說明哪裡可以取得或購買AR Marker (但我其實沒有AR,只要回信說其實沒有AR就好)
5.他們看不懂的程式,會要求你寄Demo影片過去

最後他們好像只能回覆制式回覆,所以像他們提問幾乎是沒意義的,我很感謝台灣獨立遊戲開發者的社群,我有兩三次已經不知道蘋果到底在擋我甚麼,都是去社群發問才得到比較好的方向

行銷影片

2020.2.17 另一側簡介影片



那時候嘗試製作一個簡介影片,讓人知道這是一個怎麼樣的遊戲,感謝我表妹們演出和幫我拍攝,剪片軟體使用的是OpenShot,是一個免費軟體,功能很齊全,但是我用起來體驗很不好,很容易卡而且輸出和預覽很容易不一致

有可能是我電腦已經不夠好,因為是免費軟體,所以我也覺得沒甚麼好抱怨,反而蠻欽佩這些提供免費軟體的開發者,電腦好的人有興趣可以嘗試看看,說不定真的是個神軟體


2020.12 現實一旦開始改變就無法停止,只能失速狂奔 EP1-4

這個遊戲其實在7月就雙平台上架了,雖然至今還是很多朋友以為我還在測試階段,所以9月開始就覺得必須拍一些宣傳影片來當宣傳材料

最後拜託了一些朋友和學弟妹,拍攝了這個系列影片,剪輯和特效就是窗外桃源那個專案發掘的優秀學妹

設計成系列作,也是希望能讓玩家一同體驗,"進展"的感受,期間有泡書局看各種編劇和拍攝的書來惡補一下,也很感謝各方朋友幫我看我的分鏡稿給我意見,當前成品如下

EP1


EP2


EP3


EP4



我真的覺得這些影片拍攝和剪輯成果都很好,遺憾的是就現況來說宣傳效果不算太好,可能要等出現甚麼好的管道,但是拍攝過程也多掌握了很多技巧,而且拍攝4擊產生的素材也相當好用

希望未來有好的管道,讓這些影片能被看見,然後繼續製作有趣的續集


2021.1.2 擦身而過的女生,其實是個特務!? 10分鐘看懂特務遊戲【另一側】

開始推廣遊戲後,發現很多玩家還是會認為另一側就是看著手機在手機上玩的遊戲,也就是難以正確的理解另一側,所以以實際遊玩過程為核心,製作了一個新的簡介影片

這裡感謝生醫所的學妹,安排她朋友來和我戰鬥,我才能拍出真實的遊玩過程,然後感謝幫我掌鏡拍攝的學弟



為了這次剪片買了威力導演付費版,威力導演真的好用


2021.1.27 這一次的梅竹,你也能挺身而戰

開始製作行銷影片之後,我也更開始關注為什麼有些電影預告片很吸引人,例如天能

有一天突然有所領悟,大概是要善用配樂和蒙太奇,然後透過失速狂奔系列的素材,剪輯了新的影片


雖然還是沒甚麼社群回響,不過我感覺這應該是一個超越我以往能力的影片,而且我感覺抓住了一些技術和想法,我猜我後面能因此製作出更有趣迷人的影片,理論上就是過年那一周XDD

另外威力導演付費版有附贈一些音樂的版權,我起初覺得我不會用到,但是後來發現事物的價值是使用者決定的,有些音樂其實很棒,不用白不用,尤其我已經順便買了版權,這個影片的音樂就是出自威力導演提供的版權音樂

由於目前剪輯音樂的能力還未能到達編曲或疊加,我還只能做簡單的音效處理,但由於這個影片得到的靈感和技法,後續有可能改為先找到合適音樂再針對音樂編劇的情況


活動

這個遊戲的核心樂趣是要在現實中尋找其他玩家並與之戰鬥,但想必起點就是沒甚麼玩家玩,因為我或我的團隊還沒有這方面的威信或影響力

也就是說難以遇到其他玩家,遇不到其他玩家就不好玩,為了讓這個遊戲可以開始,我的策略其中之一是要有"由真人扮演Boss的活動"


2020.6.27 模擬次元民夏洛爾



地點在台中文心公園,最後有在FB留下直播,並且有記錄到我覺得非常棒的畫面


"死亡降臨了阿峻!!"

似乎這之後我的學弟就再也沒有登入過我的遊戲...


2020.8.21 松本清



由美少女學妹擔任強力Boss的活動,期間我施展了迅即的突襲,用華麗的二刀流砍的學妹到處逃竄,那個當下都有點搞不清楚誰才是Boss了



不過最後學妹上演了一個驚人的戰略,我跟攻略的玩家都被徹底的耍了,而且因為發生在現實世界,那個瞬間,在那條死路,在月下婆娑的樹影,在原本以為要取得勝利的最後一分鐘發生

看著學妹微微一笑的嘴角,真的內心不禁錯愕

"挖靠,我們沒有在拍電影吧"


2021.1.10 絕影



不會因為攻擊暴露的特殊敵人,是"失速狂奔"系列影片有出現的角色,當天沒有其他玩家,最終變成我和擔任絕影的工作人員單挑

因為我持續保持一個巧妙的距離狙擊絕影,只要絕影靠近我就遠離,絕影逃走我就接進,最終絕影一個憤怒把外套往路邊一丟,以百米衝刺的速度衝過來把我的代理人砍死

順帶一提那天是寒流,所以我被他的覺悟感動了

梅竹之爭

一部分是為了推廣遊戲,一部份是為了自己學生時代的心願,因為我真的覺得梅竹這個交清特有的文化超棒超好玩,而且我覺得一般學生只能以觀眾的形式參與太可惜了

某一年我看到交大火力班的某個男同學,脫了上衣對著清大怒吼,又把加油棒丟進球場內,我就覺得應該要讓一般學生也有地方大打出手

否則實在不夠暢快,一直以來梅竹都有一些有趣傳統,例如夜襲或是踏青或是整頓交通,但是要馬形式不夠直接,要馬就是做過頭,所以我一直都覺得應該好好有一個遊戲,讓兩校學生們可以互相戰鬥

尤其是,能跟朋友一起,入侵敵對校園,看到友校對手的臉,然後用自己身體去奔馳和戰鬥,這樣才夠青春和熱血

例如火力班班長組了軍隊,搖旗一吼:
"近戰的戰士們,跟我衝"

然後一起衝鋒攻擊清大的玩家,我想如果能創造這種體驗和回憶應該會是很棒的事

而另一側剛好能滿足這個需求,並且我希望活動能反覆增溫,這樣應該也能幫助梅竹的正式賽炒熱氣氛和興趣

因此梅竹主題活動設計成

0.雙方皆有代表學校的神明(Boss)
1.強化戰爭: 在梅竹以前,盡可能以兩周為周期,反覆進行的活動,活動中取勝的學校,神明可以獲得強化,而強化會一直累積
2.最終決戰: 在梅竹賽那個周末,發生的最終決戰

因此每次的強化都會影響後續的強化戰爭和最終決戰時,神明的力量平衡,並且當神明可以強化,會在FB讓玩家投票神明的強化選項,這也是想讓玩家可以"參與"自己和朋友共同達成的成果,努力讓自己的學校獲勝,然後一起決定發展方向


2020.10.31 望月韶光


第一次梅竹強化戰爭,類型是只要能擊敗對方神明就能取得強化機會,就算同歸於盡

但可能是遊戲的新手說明和引導設計不好,現場其實搞的清楚狀況的玩家很少,而且當天清大的神明鹿神選擇了遠離戰局的策略,以致玩家不分學校,大多開始攻擊交大的神明狐仙

最終交大狐仙無奈之下,也只好不分學校,把玩家都砍死,最後以雙方神明都存活落幕


2020.11.15 朔月時分

第二次梅竹強化戰爭,類型是神明只要存活就能取得強化機會,就算雙方都存活

那天剛好交大校園有演唱會,結果交大狐仙採取了很巧妙的策略,反覆混進演唱會觀眾的人群,又把場面搞得像電影一樣

鹿神在觀眾人群裡穿梭,尋找自己要暗殺的對象,而狐仙隔著人群也巧妙試圖暗殺鹿神

唯獨觀眾們甚麼都不知道,持續跟著舞台搖滾


2020.12.1 望月韶光

第三次梅竹強化戰爭,類型是只要能擊敗對方神明就能取得強化機會,就算同歸於盡

這次由於交大特務玩家們和交大狐仙漂亮的聯手,讓激烈的神明互毆變得對狐仙有力,最終由交大狐仙擊敗清大鹿神並存活


2020.12.16 朔月時分

第四次梅竹強化戰爭,類型是神明只要存活就能取得強化機會,就算雙方都存活

這次鹿神巧妙的遊走在清大的各種地形和建築,以致交大特務和狐仙都難以順利持續追擊鹿神,最終由雙方皆存活結束

2020.12.28 望月韶光

第五次梅竹強化戰爭,類型是只要能擊敗對方神明就能取得強化機會,就算同歸於盡


當天玩家很少,然而雙方神明以超乎尋常激烈的方式交戰,在時間到的瞬間,雙方其實都只剩500多天命,最終以雙方都存活結束

2021.1.16 朔月時分

原定,第六次梅竹強化戰爭,類型是神明只要存活就能取得強化機會,就算雙方都存活

這次是有史以來最嚴重的失誤,在活動前兩天更新的版本有異常,以致活動當天玩家無法正常遊戲

最終只能在活動開始後的10分鐘,同時使用遊戲雲端訊息廣播功能和FB公告,宣告活動臨時中止

2021.1.23 一線之間



第六次梅竹強化戰爭,類型是搶先擊敗敵對神明的學校獲勝,屬於當望月韶光或朔月時分因異常取消時(下雨/Bug),會出現的類型

本次活動交大特務人數眾多,最終以交大特務們和狐仙徹底包圍清大鹿神並圍攻,在短短的47分鐘取得壓倒性的勝利

2021.1.30 望月韶光

第七次梅竹強化戰爭,類型是只要能擊敗對方神明就能取得強化機會,就算同歸於盡

這次清大鹿神也是以飛速在清大遊走,但是交大特務使用了特殊的稀有武器,和交大狐仙在每次強化武技取得了追跡的能力,最終由交大狐仙和特務們擊敗了清大鹿神

本次活動出現一個強力的狙擊手,持續妨礙交大特務的行動,以超高效率狙擊擊毀交大特務,但最終發現他是交大校友,但是他本人表示他不隸屬任何勢力,他的行動和意志都只為了抹除地圖上所有的特務




結語

真是有史以來最難寫的年度報告,我光整理就花了好幾天

總之就希望能繼續推廣另一側,並解決另一側的不足之處,根據我自己的體驗和玩家的回饋,我認為這個遊戲是一個能推廣的遊戲,因為他不只是一種遊戲,他會是一種嶄新的社交形式和讓現實變有趣的運動

面對問題,定義問題然後設法解決問題,就算失敗也要累積能提升下次嘗試成功率的要素

現階段大概最要處理的是,缺少梅竹活動宣傳的管道,其次是新玩家入門的新手教學


有興趣歡迎給我建議,我未必都能採用,但我會很感謝XDD


//註: 新玩家入門新手教學的難度,多次嘗試都在於 "要在現實戰鬥,找出現實的玩家" ,這個核心概念除了實際體驗,自行體驗的玩家似乎超過9成都覺得這是一個比喻或包裝,尤其越在初期就讓玩家和虛擬物件互動,玩家就越會覺得只要看著手機就能玩這個遊戲

2014年11月23日 星期日

[Unity] Platform & Build


Unity可以開發和輸出到很多平台的遊戲

但是電腦很明顯和滑鼠操作模式不同,那關於同一種遊戲怎麼開發呢?


C#腳本:

可以使用定義(define)去為不同平台做區隔,好像會只有在輸出此平台時才會compile這段

ex:
#if UNITY_WEBPLAYER
        //do what only on webplayer
 #endif


UnityScript腳本:

沒有定義,但可以用if去判斷

ex:
if (Application.platform == RuntimePlatform.Android )
{
        //do what only on Android
}


至於操作方法手機觸控等,Unity也有方便的存取方法這邊先不提了



輸出部分幾個心得:

1.Player Setting裡,Bundle Identifier不同,會使手機OS判斷APP為不同APP
所以如果手機上想要有同專案但不同版本的輸出,就是修改Bundle Identifier去實現

2.Android 可以輸出 android 專案 或直接輸出安裝檔

3.IOS 輸出必須要有 MAC電腦、Xcode工具、和IOS開發者付費帳號


但關於輸出Unity官方最近似乎再做很神的東西

Cloud Build:
http://unity3d.com/unity/cloud-build


要不是Pro一次要至少買一年
我真的就馬上要催錢下去了

Unity的領導團隊我還沒研究是誰
不過真的是我會感到害怕和五體投地的人物^ ^|||

[Unity] Facebook SDK


竟然離上次發文快一個半月了= =
這陣子比較主要的收穫首先大概就是FB和Unity的結合應用吧


開發網站教學:
https://developers.facebook.com/docs/unity/getting-started/canvas


一言以蔽之,開發網站的說明影片,好好看完
去載範例專案,上手就差不多了


剩下會遇到的問題主要是
1.FB APP 除了

LOGIN PERMISSIONS
email
Provides access to the person's primary email address. This permission is approved by default.
public_profile
Provides access to a person's basic information, including first name, last name, profile picture, gender and age range. This permission is approved by default.
user_friends
Provides access to a person's list of friends that also use your app. This permission is approved by default.

以上幾種權限資料,其他資料想取得都要另外申請權限,審核過程還想當嚴謹= =|||

這邊要另外注意user_friends 能取得的好友,只有已授權給你FB APP的好友


2.如果想未經核准就使用需要權限的功能,就只能將使用者加入test uesr之類的

3.結論: 目前覺得用來做登入功能算很方便,但要進行甚麼社交分析就會非常麻飯

2014年10月12日 星期日

[Unity] MonoBehaviour,腳本類別

一直提到可以幫物件附加自己建立的腳本(Script),而MonoBehaviour就是所以腳本必須繼承的父類別,定義了每個腳本應該有個基本變數和函數

其中腳本可以用三種語言撰寫C# and Boo 和 UnityScript

using UnityEngine;
using System.Collections;

public class MainPlayer : MonoBehaviour {
    public string myName;
    
    // Use this for initialization
    void Start () {
        Debug.Log("I am alive and my name is " + myName);
    }
    
    // Update is called once per frame
    void Update () {
    
    }
}
這是C# 的簡單範例,Boo(我不知道這是甚麼)好像形式也類似,都要自行引用UnityEngine等,還要宣告類別去繼承MonoBehaviour
另外一種是UnityScript,會自動完成繼承和引用,相比之下就精簡很多
#pragma strict var myName: String ; function Start () { Debug.Log("I am alive and my name is " + myName); }function Update () {}

UnityScript在語法上其實跟JavaScript一模一樣,連檔案格式都是JS,但是因為多了很多Unity自己增加的類別和新功能,所以其實之前就覺得要說是JavaScript又怪怪的,又是因為寫文章查官網才發現原來他們自己也稱呼成UnityScript


關於腳本怎麼用,還是建議找會的人親自教最快,其次就是看圖文並茂的書或官網(http://docs.unity3d.com/Manual/ScriptingConcepts.html),這邊就不多解釋了

一樣只講比較心得和自己之前沒注意的地方
就是update系列function的應用 (如果還沒用過腳本,但還是想先了解,請點上方連結)

update function基本上都會根據硬體和需求有一個自己的更新頻率,並在遊戲期間不斷被執行
因此例如code

function Update () { transform.Translate(Vector3(0, 0, 1) * Time.deltaTime);}

遊戲執行時就會不斷執行transform.Translate(Vector3(0, 0, 1) * Time.deltaTime)使物件持續前進
這裡就可以解釋Time.deltaTime了,如上面所說,update有自己的更新頻率,並且這種更新頻率其實對於遊戲環境硬體或資源不同時,更新頻率並不會永遠一致
(假設Translate(Vector3(0, 0, 1)代表走一步,FPS30的環境一秒會有三十,FPS60的環境一秒會走60,造成同遊戲在不同環境和條件有速度感上的不同)


因此利用呼叫Time.deltaTime會回傳:  1秒 / (update更新頻率)
因此當Update的參數乘上Time.deltaTime,就會變成一秒的量 ,而成為一個不受FPS影響的值
(假設Translate(Vector3(0, 0, 1)代表走一步,FPS30的環境一秒會有三十步 * (1/30) = 一步,FPS60的環境一秒會走60 * (1/60) = 一步,使同遊戲在不同環境和條件的速度感一致)


而update的function有三種

1.Update: 就是最基本的update大部分的功能都會直接寫在這裡
2.FixedUpdate:由於物理引擎的計算和普通Update頻率不同,而FixedUpdate正是以物理引擎頻率為更新頻路的Update Function,因此跟物理特性有關的程式如: rigidbody.AddForce()等,會建議寫在FixedUpdate以取得比較精準的結果
3.LateUpdate: 在Update和FixedUpdate結束後被呼叫,LateUpdate主要用途是用來將輔助先先後順序的程式碼可以更好的被分開,官方舉例是攝影機要追隨物體移動,那好的設計是物體在Update裡計算完移動後,才在LateUpdate更新攝影機在物體後的位置


這邊真的蠻重要的
不然之前都傻傻的混在一起寫,平白浪費了很多資源,程式碼也容易冗長混亂^ ^|||

[Unity] Collider

官網教學:
http://docs.unity3d.com/Manual/CollidersOverview.html


因為官網沒有圖,這次就不貼介紹了,畢竟都英文的
所以就由我來直接解釋吧

Collider就是碰撞框
物件附上碰撞框屬性之後就會賦予它偵測與其他物件碰撞的範圍和能力
有了碰撞框才能做出例如地面、牆壁、砲彈等等,能阻礙或擊中物體的效果

而碰撞框有好幾種形狀
主要有長方形、球形、膠囊型、圓柱形,比較異類的有地形碰撞框、Wheel Collider 、Mesh Collider(不知怎翻譯才好),一個物件可以利用多個碰撞框組成複雜的碰撞框,這邊想知道詳情請點上方官方教學連結

A real-world Compound Collider setup


而碰撞框自身又有兩種類型
Trigger(觸發器)和非Trigger

在設計上觸發器類型的碰撞框通常用來做事件出發的應用(簡單來說就是用來偵測玩家或物件進入指定區域)

而非觸發器類型通常就是配合Rigidbody去實做物理現象的碰撞效果(兩顆球相撞)


觸發器碰撞過程會觸發
OnTriggerEnterOnTriggerEnter is called when the Collider other enters the trigger.
OnTriggerExitOnTriggerExit is called when the Collider other has stopped touching the trigger.
OnTriggerStayOnTriggerStay is called almost all the frames for every Collider other that is touching the trigger.
非觸發器碰撞會觸發
OnCollisionEnterOnCollisionEnter is called when this collider/rigidbody has begun touching another rigidbody/collider.
OnCollisionExitOnCollisionExit is called when this collider/rigidbody has stopped touching another rigidbody/collider.
OnCollisionStayOnCollisionStay is called once per frame for every collider/rigidbody that is touching rigidbody/collider.
而碰撞會不會發生其實還是有些條件的
以下是官方的碰撞發生表,不過這等到實際開始用Collider,已經有些實際上試用後的理解或困惑,再來看會比較看得懂^ ^|||

Collision detection occurs and messages are sent upon collision
Static ColliderRigidbody ColliderKinematic Rigidbody ColliderStatic Trigger ColliderRigidbody Trigger ColliderKinematic Rigidbody Trigger Collider
Static Collider Y    
Rigidbody ColliderYYY   
Kinematic Rigidbody Collider Y    
Static Trigger Collider      
Rigidbody Trigger Collider      
Kinematic Rigidbody Trigger Collider      
Trigger messages are sent upon collision
Static ColliderRigidbody ColliderKinematic Rigidbody ColliderStatic Trigger ColliderRigidbody Trigger ColliderKinematic Rigidbody Trigger Collider
Static Collider    YY
Rigidbody Collider   YYY
Kinematic Rigidbody Collider   YYY
Static Trigger Collider YY YY
Rigidbody Trigger ColliderYYYYYY
Kinematic Rigidbody Trigger ColliderYYYYYY
Rigidbodies