最近,借着新項目的機會,我(英文原文作者)對過去在oculus launchpad項目中的經驗進行了總結。在本文中,我來和各位聊一聊我通常會以怎樣的方式開始新項目。
正常情況下,我手頭會有兩到三個項目同時進行。取決于規模與複雜度的差異,我在規劃階段所花費的時間也有所不同。從形成最初的想法,到最終完成demo,我通常會将整個流程劃分為以下幾個步驟。
剛剛有說到,規劃階段的工作量取決于項目自身的性質。如果打算研究一種新引擎或是開發技術,我甚至會跳過這一階段,直接上手代碼并盡快實作一些東西
出來。不過通常情況下,我還是會預先對整個項目的流程架構進行規劃。我手頭的項目多數來自于類似“我們需要在月底的大會上示範一段五分鐘左右的vr
demo,有沒什麼合适的想法?”這樣的需求,是以我在創意及技術運用等方面所擁有的自由度還是很高的。通常,我會制作一些不包含任何射擊元素的
fps(第一人稱射擊)類小遊戲,譬如讓玩家在vr環境中尋找或躲避一些東西,以此積分或記錄最長遊戲時間等等。
而對于較複雜的項目,我則會在規劃階段将具體的實施步驟及相關細節盡可能詳細的描述出來,例如遊戲模式、互動元素等等,進而使具體的設計與開發流程更加順暢。
我在規劃階段通常會采用的具體方法包括:
在小項目中,我會用普通的鉛筆在紙上簡單畫些環境結構和遊戲元素;而對于較大的項目,我會在草圖中加入多種顔色,使細節更加豐富和直覺。無論你想創
建機甲風格的科幻場景,還是美輪美奂的童話仙境,事先通過草圖大緻的描繪出來都能幫你在開發階段更加輕松高效的選用素材,尤其是當你在使用github一
類的雲基解決方案的時候。
對于比較複雜的項目,要言簡意赅的描述出你想做的事情其實并不容易。我時常會不由自主的将太多細節一股腦的端出,不過每一次也都在努力試着通過一句
話來言簡意明的指出項目的核心所在,例如“用于oculus rift的小貓找物遊戲”或是“用于google cardboard的機甲射擊遊戲”等等
– 總之是一些很基礎性的描述,但可以幫你對項目方向進行清晰而明确的定義,便于接下來進行任務分解。
我有時會迷失在各種有趣想法當中,甚至會慢慢背離自己最初的構想。在初期探索時,這還不算太壞,隻是一旦發生在實際開發階段,這種習慣就有可能帶來
非常嚴重的問題了。起草一份清單,将組成遊戲的各類元素,包括互動對象、行為規則、勝負條件等等按照不同的顆粒度劃分為獨立的子產品,并清晰的列出,根據不
同階段的具體情況而适時更新,讓一切保持在可控、可追蹤的範圍之内。
在這兩個階段裡,事情才真正變得有趣起來。對于小項目(三到五天的開發工作量),我會跳過正式的設計環節,直接開始程式設計工作,當然期間還是會通過草圖來明确玩家與遊戲元素之間的互動規則。取決于不同的平台,我通常會在兩種方式之間進行選擇:
在移動vr項目中,我一開始就會将平台提供的camera元件放置到場景當中(理論上講,我或許可以在所有的項目中都采用類似的做法,隻是目前對于
桌面vr平台,我仍然傾向于在搭建完整個環境之後再放入camera),然後開始建立最基本的環境(如果遊戲機制足夠簡單,我會直接使用現成的素材包),
接下來是編寫遊戲腳本,包括互動規則和控制器元件等等;最後是添加必要的動效和光影效果,然後進行測試。
對于桌面vr系統,方式會略為不同。相比于移動vr,桌面系統提供的主角元件通常會複雜很多,是以多數時候我不會從第一人稱視角相關的元件出發來開
始工作,而是首先打造出環境場景及遊戲機制,就像前面提到的那樣。我會從最小化的環境建立工作入手,使用最基本的構件來制作最為必要的環境元件,而不是使
用大而全的素材包。在此基礎上完成腳本編寫,然後再回過頭來補充和優化環境元素,最後将平台提供的專用camera元件放置進來,完成人機互動機制,然後
打磨光影和視效,優化調整,進行測試。
在複雜的大項目正式啟動之前,我會花些時間拟一份開發設計文檔,從較高的層面上将整個項目進行合理的分解,抽象出不同的元件和子產品,使接下來的設計和開發工作更加有章可循,便于管理。而對于那些通常隻會用到兩至三個腳本的小項目來說,這一步驟就沒那麼必要了。
目前的方式未必站得住腳 – 我會直接将項目釋出到github,或是在azure上自己做host。接下來我會試着在這一階段采用更加合理和細化的方式,屆時再與各位進行分享。
祝各位vr行動者玩得開心!
每次彩蛋時間總有一種最後一搏的感覺不知為什麼。像是終于可以在周日傍晚的跑步及美味晚餐之前完成一件重要的事情那樣。說起來,難道不是麼。
怎樣都要把這件事放在第一位。“人生大突破。與熟食only的宿命訣别。從零接觸到滿滿一大海碗散壽司(也沒那麼多),僅一念之間。班哉。”
過去的的确确從來不碰日料中的生鮮,有那麼一兩次即便被衆人圍觀着強行放入嘴中,最終也隻有尴尬的嚼到一半吐了出來。惡心是怪惡心的,那個樣子,想想看。
英文原文:
<a href="https://livierickson.com/blog/monday-musings-my-vr-dev-process/" target="_blank">https://livierickson.com/blog/monday-musings-my-vr-dev-process/</a>