Wednesday, April 29, 2009

Milestone Postmortem

好久沒有update了, 除了自己懶以外當然忙也是原因之一
上個星期為了趕milestone從星期四一直crunch到星期一, 其中有兩天還做到天亮
稍微整理一下和我有關的問題根源, 免得以後再度發生慘劇

- 這個project cycle原本就超短, 加上這次milestone是1st playable, 要求的delieverable又特別多.

- 大家都忙著完成各自的task list, 導致快到deadline前才恢復multiplayer playtest, 測試中發現的bug沒有足夠的時間修理.

- AI programmer(就是我啦)和network programmer間的溝通不夠, 不知道進行中的multiplayer容許新玩家加入並take over一個AI以保持角色總數. 原先的design是遊戲一旦開始就不容許player加入, 所以我的一些clean up code放在AI的destructor裡. 但是新的design會導致遊戲進行中clean up機制被提早啟動.

- 太晚做framerate optimization, 所以optimization本身沒有經過足夠的測試而造成其它問題. 原本的design是所有的AI每個frame都會收到update, 但是timeslice後update的間隔太長, timescale後超過安全範圍, 例如有些AI轉身因delta time過長而轉太多導致無法轉到設定的角度範圍內, 然後subsequent action就被無限期延後.

2 comments:

  1. multiplayer常常有很多問題。我們先前也做過一個可以半途加入和離開的遊戲,問題是這個機制也是做了快半年以後才加入(you know, publishers...),於是我們被迫半路大改,而且在最後一兩個月不知道修了幾百個multiplayer產生的bugs... 光是"半途加入和離開"這個功能就應該產生了一兩百個吧,離開時東西沒清乾淨啦、加入的時候應該在哪邊出現啦、在不可以加入的時間狂按按鈕加入啦,不知道你們會不會也有相同的問題。

    這真的是一開始沒有設計好造成的啊~

    ReplyDelete
  2. 中途加功能這種鳥事在之前的公司幾乎天天上演, 原因通常是producer對自己工作範圍的認知有偏差, 分不出producer和designer的差別~ 哈哈

    現在的公司是比較沒有這種問題, 但是目前這個project是另一個ongoing project的port, 所以對方版本在功能上有什麽改變我們通常要到收到code drop後才知道. 由於publisher和對方developer的contract沒有包括support我們, 所以細節方面的修改都不會主動通知我們

    ReplyDelete