天天看點

對MSRA-USTC 2010的MSRA_SE_TEAM的KOFLive項目的學習報道

2011年8月12日19:30,我們小組的成員與去年的MSRA-USTC 2010的MSRA_SE_TEAM的KOFLive項目的成員田飛進行了長達一個小時的采訪和學習。

對MSRA-USTC 2010的MSRA_SE_TEAM的KOFLive項目的學習報道
對MSRA-USTC 2010的MSRA_SE_TEAM的KOFLive項目的學習報道

他們的項目是一個格鬥遊戲,叫做KOFLive。特點是把現實中的真實人物的圖檔放在遊戲中進行操作。遊戲有五個固定的人物,分别是組裡的五名隊員:A Mi,Teacher Tian,程式猿,football Xin和gossip girl。每個隊員都有有各自的各種炫目的招數。遊戲裡有三種模式:雙人對打,人機對戰(涉及到AI設計)和練習模式。下面是他們的遊戲的兩張截圖。

對MSRA-USTC 2010的MSRA_SE_TEAM的KOFLive項目的學習報道
對MSRA-USTC 2010的MSRA_SE_TEAM的KOFLive項目的學習報道

對于他們的項目,我們組六名隊員總結提煉出一些問題并與田飛開會讨論,現在總結問題和回答如下:

PLANNING

Q:你們最終做的東西與最初的規劃差别大嗎?

A:很大。第一,一開始我們計劃做到使用者可以自己拍照、建立并設定自己的角色。後來發現這個太難做了,涉及到很多沒有解決的問題,例如如何從圖檔中把使用者的人體部分給提取出來(image segmentation)。第二,我們一開始計劃把遊戲做成3D的,後來發現工程量太大,并且實作起來難以做到,最後就做成2D的。【注:可以參考改組去年釋出的項目展望:http://www.cnblogs.com/MSRA_SE_TEAM/archive/2010/12/10/1902669.html】

Q: 你們是如何确定要做的項目?

A: 大家在一起提出各種想法,然後一起商量選出一個公認的合适的。

Q:如何一個項目是否有價值?

A:第一就是要難度适合,可以在規定的時間内實作。第二就是覺得會有一定數目的人喜歡用。

Q:你們是如何組織的?如何配置設定任務?組裡都有麼角色?這樣配置設定有作用嗎?

A:按照傳統的軟體工程的組織和配置設定方法:Program Manager,Designer,Developer和Tester。這樣配置設定很有作用,是被幾十年經驗證明的配置設定方法。

Q:團隊配合方面有什麼經驗?如何避免有人打醬油?

A:彼此要友好,一定要體諒對方的難處,每個人都有自己的難處,大家互相了解非常重要。

Q:你們是各自有自己明确的特定的任務,不互相影響,還是在一起做事情?對我們做項目的分組有什麼建議,像這樣兩種情況:1.每人做的東西會有一定交叉性;2.每人的任務基本沒有太大的交叉性。哪個更有利于團隊,或者有其他情況?

A:按照Program Manager,Designer,Developer和Tester各自應該負責的任務去做。

Q:整個過程中是不是所有人都實時地知道整個工程的進度?.

A:是的,而且是必須的。需要經常開會來交流最新進展。

Q:每一階段,是不是都要根據目前團隊進度,來調整方向和目标?

A:是的,而且是幾乎無可避免的。因為做的過程中會遇到很多之前沒有想到的問題。其中有些問題是很難在一定時間解決的,是以就必須調整方法,方向和目标。

Q:做的過程中,是不是要經常和鄒欣老師溝通?你們當時怎麼做的?

A:不同的組有不同的需求。如果技術方面确實需要幫助,是應該和老師溝通的。我們當時因為技術方面沒有什麼問題,是以溝通的并不多。但是如果做學術搜尋的項目,可能就會有一些東西需要請教老師。

Q:當幾個項目同時進行時,你們是怎麼配置設定時間的?能否分享下經驗?

A:我們當時是串行做的。如果是指自己工作的項目和課程項目同時進行,那就是好好配置設定時間,抓緊時間。我們當時很多人都是經常工作到半夜兩三點才回去的。

Q:如果遇到一些瓶頸性的困難導緻工程無法往下進行,你們會采取什麼措施?是遇到問題馬上降低目标難度還是鑽研一段時間之後再放棄原目标?

A:應該先鑽研問題,一段時間後發現很難實作或者解決就降低目标難度。例如我們一開始準備做3D和使用者自己輸入圖檔來建立人物,後來發現太難實作,就降低了目标難度。因為畢竟這是工程項目,不是研究。

CODING

Q:對沒有接觸過Silverlight和c#的同學有什麼建議,就是如何快速上手?

A:買書或者下載下傳手冊看。而且老師會安排人講課,這個課很好也很重要,一定要好好聽。

Q:程式設計方面有什麼經驗或者教訓嗎?例如如何選擇程式設計語言和程式設計環境?

A:最好用C#,因為大的工程使用比較“低級”的語言很有可能會造成記憶體洩露之類的問題。程式設計環境就是TFS,這個也會有人講,要好好聽。

Q:對于那些程式設計基礎不是很強的人,應該如何盡快融入組内工作?被安排些什麼任務比較合适?

A:讓所有人盡快容易組内工作很大程度取決于Program Manager的工作。對于任務量的安排,一定要人盡其能。有些人程式設計能力弱一些就不要讓他/她們做太多程式設計,例如可以做設計和測試。要發揮每個人的長處,互相體諒,這是非常重要的。

TEST

Q:你對測試的看法是什麼?它的重要性有多大?

A:測試是很重要的。但是我們沒有辦法做很專業的那種軟體測試。不過我們一定要有足夠的測試。而且整個項目過程中都需要測試,及時發現bug并且及時解決它。

Q:你們是如何設計你們的測試樣例的?

A:我們做的是遊戲,主要就是玩遊戲。這個問題可以問做學術搜尋的同學。

OTHERS

Q:你們的工程中,你覺得最大的失敗或者最後悔的事情是什麼?如果讓你們重做一遍,能否完全避免它再次發生?

A:第一個就是初期目标定的太高,沒有查詢足夠的相關資料和資訊。第二個就是初期的計劃中軟體架構一開始沒有想好,要做哪幾個子產品,怎麼實作等等細節沒有想好。你們設計的時候不要眼高手低,一定要設計好,越詳細越透徹越好。磨刀不誤砍柴工。如果再做一次也沒有信心做好,因為設計和架構這個東西,說起來容易做起來難,是以大家一定要用心做。你們如果第一次就能做好這個就太牛了。

Q:除了專業技能的提高,軟體工程還給你帶來了什麼啟示?

A:與人的合作技巧和能力。從這門課學到的與人的合作能力非常有用。這對我們現在在微軟亞洲研究的工作已經有了明顯的作用,對以後的學習和工作也一定會有很大幫助。

Q:如何吸引更多使用者?如何才能讓使用者更喜歡用我們的産品?

A:第一就是對自己的産品要自信。然後就是大力宣傳了,呵呵。【注:根據MSRA_SE_TEAM的博文KOFLive Beta 下載下傳情況及使用者回報,截止到2011/3/13 10:00 pm的下載下傳量為1631次(沒有計算通過U盤、網絡硬碟等裝置拷貝的部分)。是以僅從這個資料來看,使用者量還是比較客觀的。】

通過這些我們可以把我們學習到的東西總結如下:

  1. 前期的設計一定要做好。不能眼高手低,好高骛遠,也不能過于簡單。需要有足夠的細節,軟體的架構,實作的方法都要考慮清楚。
  2. 要注意團隊之間的合作,發揮每個人的長處,互相了解互相配合。安排任務時要考慮到每個人的不同情況。PM,Designer,Developer和Tester要各盡其能。
  3. 要好好聽課,聽課對于學新的知識(Silverlight,TFS等)很重要。

我們自己對該項目的一些想法:

  1. 這個項目最後發現自己本來的設想“使用者自己輸入接受使用者輸入的照片,從中提取出人的影像,加入到遊戲中,讓使用者可以操縱任何他想操縱的人來進行對打!“難以實作,最終放棄這個功能。根據田飛的描述,難度就在于難以提取照片中的人物影像。但是我覺得可否限制使用者輸入的圖像的内容,例如背景必須是白色的,影像必須是擺好的某種姿勢,這樣會不會容易很多?

在這裡感謝田飛抽出寶貴的時間和細心誠懇的回答!謝謝!

轉載于:https://www.cnblogs.com/meng-meng/archive/2011/08/13/KOFLive_interview.html