What have you found for these years?

2009-07-18

cubeat 回顧 (0)

洗澡洗著洗著,想著我太執著的問題,(那篇真的一針見血啊)
忽然就想檢討一下 cubeat 的開發流程。說是檢討,
其實我個人是覺得做得相當好了... 所以變得比較像回顧?
總之大概寫一下再去睡,反正也不是說要急著睡,
回顧類的東西太晚打也都會忘記...

不過那段時間也是我記憶有點混亂的日子,
因此很多地方想不太起來,或是記錯...
有錯的話可以麻煩糾正一下,感謝

*

一開始好像是我用 flash 寫最初的 prototype,
當然啦,遊戲設計是在這之前,不過就略過了,
因為我想不太起來了.....

後來有一些 bug, 還有最後的收尾是跟老林一起完成的
不過我不記得武器是不是在這邊加的?
如果是的話應該是老林完成的...

接著就是把東西搬上 Virtools, 用他的 SDK,
做出自己的 building block. 銜接的部份都由老林完成的。
其他 model 的部份則由我移植,再接老林做的銜接層。

這邊做滿久的,不過細節我都想不太起來了。
很多 shared_ptr 的使用細節,object_pool 等等,
只在這邊慢慢試出一條路的。啊,不過 object_pool
好像是用我自己寫的 XD 事後證明,還是直接用 boost 的比較好...
不過這是後話啦。而事實上我也不知道這 ObjectPool,
是否真的有提昇多少效能?這邊搞不好只是賺經驗值而已...

anyway, 做到後期後,遊戲規則有稍微調整一點。
不過基本上遊戲結構上沒什麼改變,所以也不算什麼規格改變?
而這時候我好像已經做不太下去了,原因是什麼我忘了
只是現在回想起來,我真的做過很多東西,是後來就沒力了,
然後要不是拖很久,就是靠其他人協助最後才完成 @@
真不好意思啊.........
也因此,我現在都不會想開口說要接什麼東西了 @@
反正做到最後無力率太高了,避免麻煩就不要開始了...

離題了,後來就變成協助老林完成最後的一些東西。
那時候搞不好是我最能體會到,所謂 pair programming 是
什麼感覺的時候?其實邊討論邊寫,很多時候真的會變得很快。
比方說,我沒力時就很容易看成螢幕發呆。
這時候如果有討論的話,就很容易可以繼續進行下去。
碰到什麼瓶頸,也不會說一卡住就卡死了這樣。
「太執著」的問題也可以繞過去。

Virtools 完成後,中間穿插了一個 flash 的網路版。
做了連線雙人對戰,拿之前的 prototype 改的。
server 的部份是我照老林的規格,用 ruby 很快寫好的。
很快是因為很規格單純,沒什麼特別的原因 XD
其餘都是老林獨立完成的。(吧..?)

接著就是最後的 Irrlicht 版了。與 Virtools 相同的是,
model 部份由我負責,其於由老林負責。
這邊正式引用 boost object_pool, 搭上 custom deleter +
shared_ptr 做 gc. 另外還有一個 ruby 的 preprocessing
處理 forwarding problem 的部份。boost 是用 m4,
不過我不太會用那種東西,所以就用 ruby 手刻一個出來,
現在放在 gem ludy 裡面,一直說要抽出來還沒抽...

其餘則是 getter/setter 和 debug message 的 preprocessing.
前幾天在 build ruby trunk 時注意到,其實他們也很多東西
是由 ruby 寫成的。build 過程中,會先做好 miniruby,
接著很多東西就由 miniruby 處理,做出 .c 檔。

Irrlicht 版最後一堆東西也都是變成老林獨立完成了...
我頂多參與討論之類的吧?細節也不太記得了

喔對,還有同時在進行的 flash AI 版。
這部份由外套進行,最後應該算是滿成功的,
也有部份移植至 C++ 了?
我忘記這是在展出前還是展出後的事...........

我逐字翻譯那部份應該沒用上吧?翻得很粗糙...

*

只先寫個大概,所以編號 0, 看看哪天寫 1, 再來針對細節。
好,重點來了,開發流程有什麼問題嗎?
除了我容易無力化以外,其實感覺都還不錯。
可怕的規格修改 => 都是小東西修改,無妨
細節、錯誤的問題 => 其實很少,有些寫不好的,
影響真的不是很大,有空再修就好了。
例如 puzzle generator 的部份,雖然稱不上亂寫,
但寫得很沒有彈性就是了。

*

前一陣子我在回想相簿的事,
然後就忽然驚覺,就開發流程而言,cubeat 好過相簿萬倍啊!
............
想到這裡就覺得其實 cubeat 開發應該算很成功...

*

我真的覺得開發 cubeat 的大家都很厲害
(其實也說過很多次了,在很多不同場合與對象)
雖然個人是不太喜歡這種遊戲類型...
但很多原先我認為很有困難的東西,倒真的都完成大半了
這時再看就會覺得那時候實在是滿悲觀的

well, 原因很多啦
我知道的,我不知道的,我說過的,我沒說過的,許許多多...
下一篇,如果有的話,就針對開發細節
例如 svn 轉 git, mac 版 X11 等等

==
應該還是算早睡

2 retries:

老林 said...

> 當然啦,遊戲設計是在這之前,不過就略過了,
> 因為我想不太起來了.....

遊戲設計的話,其實基本規則當初就是 sega 一個人提出的,
而我一開始就不想在純粹討論 idea 的情況下拖太久,
在當時許多不成熟的提案中,算是我獨斷地認為這個企畫
可行性最高,因此就只有針對當時一些 device 的問題
拿出來討論,然後就全力開始推動它了;
這個階段早在 2006 年的暑假就完成了,詳細的紀錄在
X 板的精華區還有舊文保留區可以看看。

現在回頭看看,當時還確實是想了不少有的沒的遊戲 idea。

> 後來有一些 bug, 還有最後的收尾是跟老林一起完成的
> 不過我不記得武器是不是在這邊加的?

那時的 bug 最主要就是所謂的 1 frame gap,本來該同時
落下的方塊在特定情況下有些會晚 1 frame 落下。
這部份有天晚上一起討論,一個晚上就解決了。
武器的話,確實那時候就有加,是我加上去的,當時還寫得頗醜..。

> 接著就是把東西搬上 Virtools, 用他的 SDK,
> 做出自己的 building block. 銜接的部份都由老林完成的。
> 其他 model 的部份則由我移植,再接老林做的銜接層。
> 這邊做滿久的,不過細節我都想不太起來了。

我做的部份主要就是測試 Virtools 的 building blocks
要如何自己開發,還有怎麼對應那組光線槍。
還有一些不怎樣的美術效果等等。嚴格上來說當時根本
沒有什麼 model 的銜接層 XD,整個都直接和 Virtools SDK
的醜 code 軋在一起 ......

當然是感覺做很久,但說真的比起後來自己研究 Irrlicht 的
時間,Virtools SDK 至少很多現成的 BB 可以使用,
當時又沒啥在管 code 好不好看,才用了一個多月就讓
移植過去的東西可以跑,和後來相比算是時間很短了,
只是趕工出來的東西大家都馬不太滿意,
更別提在某燈的期末展時,一開始進度還沒到可以展出的狀態,
第一天根本就完全放空城 .........

細節的話,以 model 的部份來說,這時最大的修改
應該是重新寫過連鎖消除的搜尋演算。其他部份則真的算是
flash prototype 的直接搬移。

第二次在某羞的期末展上,展出完成度高不少(包括圖像和音效那些),
不管是修了 bug 還是增加特效,(以及製造出新 bug)
當時最慘的就是到最後一天還有一些不該出現的 bug,
delete 到不該 delete 的東西,導致出現空的幽靈方塊 ...
幸好除了幽靈方塊這小插曲,這次終於能感覺出整體表現不差
的樣子,儘管當時的 presentation 根本是在幽靈方塊的 bug
還沒解決的情況下就報告完了 ......................... XD

不過我赫然發現這部份好像已經無紀錄可查,
當時用 VC6 寫的 code 已經全殺了 lol

> 不過基本上遊戲結構上沒什麼改變,所以也不算什麼規格改變?
> 而這時候我好像已經做不太下去了,原因是什麼我忘了
> 那時候搞不好是我最能體會到,所謂 pair programming 是
> 什麼感覺的時候?其實邊討論邊寫,很多時候真的會變得很快。

雖然可能還有些其他因素,但總歸一句應該可以說是
當時趕工趕過頭了,死線又很近 ..
和後來使用 Irrlicht 與重新摸索建構整個開發流程,
Virtools SDK 版本在短短不到兩個月的時間開發完畢,
基本上是很逆天的一件事。另外當時在不重視程式品質的情況下
,解決程式上的問題不怎麼會有高興的感覺,
只會有想趕快交差了事的心態。

> Virtools 完成後,中間穿插了一個 flash 的網路版。
> 做了連線雙人對戰,拿之前的 prototype 改的。
> server 的部份是我照老林的規格,用 ruby 很快寫好的。

現在我回頭來看還蠻感謝那位 C++ 教得有點胡扯的張某某老師,
就是當時教我們用 TC Explorer 的那位。
最扯的是期末成績還被他算錯 ..........不過反正沒被當,
只是大家的成績都很難看。
不過至少因為他的規定讓我留下了完整的網路傳輸相關 protocol 文件,
現在完整版的 Cubeat 最缺的 major feature 其實也就是
網路對戰了,有這份資料可查至少不會是從零開始 ..

不過當時因為有點懶得處理武器規則增加到網路協定上的複雜
度,所以這個 flash prototype 是沒有武器道具的版本。
(題外話,當時也因為期末的趕工起了一點爭執。)

> 接著就是最後的 Irrlicht 版了。與 Virtools 相同的是,
> model 部份由我負責,其於由老林負責。

這時名字也重新定名為 Cubeat;
因為各種因素,我在這個階段完全把美術的工作交了出去,
除了 Wiiremote 的應用與研究 Irrlicht 之外,
當時最大的挑戰大概就是正式做出 view-presenter-model
的架構;puzzle generator 的部份其實也算寫了好一陣子。
另外就是還有非常多小細節本來 Virtools SDK 有處理的,
變成要自己動手做(最明顯的例子是 TrueType Font 處理)

開發流程與架構雖然變得穩定、程式碼在很多地方也都變
得很好看了,但整個時程也就意外地拉了非常長,
最後在校內展時我還記得被李大刀唸了一頓 ...。

不過因為這邊真的有用心在開發,其實值得一提的地方也就
變得很多,只是全部講完篇幅大概會太長 XD。

> Irrlicht 版最後一堆東西也都是變成老林獨立完成了...
> 我頂多參與討論之類的吧?細節也不太記得了

主要變成剩我一個人 coding 是後來在做選單的時候 ..
其他基本上就都是展出以後的事了。

> 喔對,還有同時在進行的 flash AI 版。
> 這部份由外套進行,最後應該算是滿成功的,
> 也有部份移植至 C++ 了?
> 我忘記這是在展出前還是展出後的事...........
> 我逐字翻譯那部份應該沒用上吧?翻得很粗糙...

外套寫下了算是蠻完整的 AI 思考流程,可惜的是後來他的
code 不太能夠移植,因為原本有很多可以 reuse 的 code
當時他不曉得怎麼 reuse,於是自己寫了一套,
要翻譯成 C++ 時就造成了很大的負擔。

所以我在今年二月才實裝上去的初步 AI 部份確實是我自己寫的,算一算這已經是展出後好久的事囉 ...
對了,另外也寫好了初步的雙滑鼠功能。

* * *

以開發的品質來說,後面的「Cubeat 階段」比起之前的
「Shooting Cubes 階段」,各方面來說都做了相當程度
的改善。但真要通盤檢討起來的話,很多地方都還是可以提出
來討論。而且我們這邊只講了「程式開發部份」,
以「遊戲開發」為軸心來討論的話,那又有更多事可講了。

整個 PSC 的開發過程對我而言大概就是不斷地在摸索,
因為實在太多東西實務上都第一次碰,經驗都是從 0 開始算。
如果人手與每天可運用的時間足夠、開發時程沒有斷斷續續的話,
(其實只以遊戲本體來考量的話 6 個人算是足夠的人力了,
而斷斷續續是指,我一下又要去忙畢籌的事一下又要去忙啥別的,
或是後來畢業、服役等等因素造成的阻斷)
我認為 PSC 這種規模的遊戲 3 ~ 6 個月應該就要能開發完,
當然前題是開發者的手邊要有足夠的相關知識、經驗和武器。

回頭想想,我記得作品集的老師(你沒上那門課)和我們講過,
畢製開發的東西要差不多以自己有六成把握的東西下去開發,
(其實我覺得做產品也是差不多程度),就是你要有相當份量
的已掌握部份,加上適當的重新摸索、研究與創發的部份。

說起來整個 PSC 的開發過程幾乎就是不斷地嘗試、不斷地摸索,碰到很多本來不知道的問題領域。最後能順利地交出
半成品實在可以說是諸多運氣與努力的成果。

以我們在某校某系所學的內容,如果想以「掌握六成」的程度
去開發遊戲,大概怎麼做也都脫離不了 mini flash game 的範圍吧;雖說實際上,最後大家(其他各組也都是)幾乎都
越級挑戰了,不過這也就是在某校某系畢製做遊戲的傳統,
就是做遊戲的幾乎都不得好死 XD。

扯太多了... 先這樣。lol

Lin Jen-Shin (godfat) said...

XDD 感謝如此詳細的補充,尤其用這麼難用的留言板 XD

> 在當時許多不成熟的提案中,算是我獨斷地認為這個企畫可行性最高

就像你說的,在當時許多不成熟的提案中
因此,我想這個選擇恐怕也是最好的
畢竟之後還有如此多不確定的因素在.... XD
選其他提案的話,我想恐怕會變得更恐怖...

執行與決斷對於專案前進,搞不好是最重要的一環
我實在沒什麼這樣的能力 :s

> 要如何自己開發,還有怎麼對應那組光線槍。

囧,我完全忘記外部裝置的存在了 XDXD
連後來的 wii mote, 雙滑鼠都忘了 @@

> 當然是感覺做很久,但說真的比起後來自己研究 Irrlicht 的時間

你這樣一提,我才發現好像真的有點差距,
那這個感覺恐怕是水深火熱之下造成的錯覺吧... XDDDD
另一方面時間點好像也是... 不過這我就得回頭去翻一下記錄了 XD

> 當時用 VC6 寫的 code 已經全殺了 lol

XD
如果我這邊有一份的話,應該找得到的某個時間點的
只是後來因為我備份都不整理了,
所以可能要用暴力法才找得到在哪...
e.g. find / -name "*.cpp"

> 最後在校內展時我還記得被李大刀唸了一頓 ...。

如果他有 follow development 不知道會說什麼?(遠目)
不過大概沒有人願意這樣做吧.. 畢竟是額外的 work

> 以「遊戲開發」為軸心來討論的話,那又有更多事可講了。

我都忘得差不多了 orz......
其實這也是為什麼這篇也只提程式部份的事 :s
記得的東西比較多一點...

> 我認為 PSC 這種規模的遊戲 3 ~ 6 個月應該就要能開發完,
> 當然前題是開發者的手邊要有足夠的相關知識、經驗和武器。

我同意,後來想想,有些遊戲超快就做好了,
應該是沒考慮到熟悉開發環境與開發流程的問題...
我想這邊可能就至少佔去一半以上的開發時間。
而這些都熟悉也都準備好了的話,各種資源都可以直接省去,
這樣做好的時間至少就可以直接減半...

> 大概怎麼做也都脫離不了 mini flash game 的範圍吧

我也這樣覺得 @@"
所以有時候總是會想,其實網路上這麼多很強的 flash mini game,
要能做到跟他們平起平坐,其實就很夠看了
但恐怕評審什麼的,就不能理解這有多難吧? XD

> 不過這也就是在某校某系畢製做遊戲的傳統,
> 就是做遊戲的幾乎都不得好死 XD。

我真不懂,既然如此為何不善待一點 XD
難道只認為這是一種魔咒嗎......

Post a Comment

Note: Only a member of this blog may post a comment.



All texts are licensed under CC Attribution 3.0