這個專題分成兩部分,在第一部分裡面我們實作Spline,然後在第二部份中用Spline算出軌道,然後使用Ogre3D作出雲霄飛車。
  在這個專題裡我主要負責場景。首先用Ogitor編輯器來製作整個場景,包括地形、材質、靜態物件位置等。接下來設定軌道的控制點,將Spline算出來的結果繪製出來,並且加上鐵軌的模組。場景完成後使用DotSceneLoader,在執行程式的時候先產生場景。最後加上動態的特效、Particle systemHydrax水體效果及Caelum的天空效果。



在這個專題裡因為負責的是場景的部分,從場景規劃開始我就是以製作遊戲的想法進行,可惜最後時間不足沒辦法將原本構想的遊戲內容做出來,只來得及完成一整圈的軌道以及場景。製作的過程中我加入了大量的特效,其中水體和天空的特效花了最多時間研究,得到的結果也很值得。但是由於沒有考量到整體效能的問題,最後Demo的時候順暢度沒有自己在家裡的狀況好,這是在之後做類似的專題需要想辦法解決的。





這個遊戲是學校的產學合作專案,特點是使用雙點觸控的觸控螢幕,做出爵士鼓的節奏音樂遊戲。
遊戲內容分為音樂教室舞台表演套譜計分三個部分,
音樂教室:讓玩家自由打擊,並且有可以錄音、播放、編輯的功能。
舞台表演:模擬玩家身處Pub或海灘表演場合,台下觀眾會隨著玩家的表演而有動作反應。
套譜計分:玩家配合音樂及畫面上的鼓譜打擊,在演奏後依照玩家的表現計分並排行。

  在這次專案中了解到如何和廠商溝通協調,還有與美工人員的進度互相配合。在開發遊戲的過程中,由於是第一次和廠商接觸,剛開始往往需要好幾次的修改才能達到雙方都可以接受的要求及成果。因此在程式的製作上就需要更有計劃的進行,盡量減少在需求變更的時候需要修改的程式碼。
  另外這也是第一次在遊戲的輸入端用觸控螢幕來代替傳統的滑鼠鍵盤。在寫程式的過程中,觸控螢幕和Glut的不相容,以及觸控偵測的方式等等都花了很多時間研究解決方法。





使用的技術
輸入:使用觸控螢幕傳送的座標訊號。
繪圖:由於考量到在不同平台上的相容性,所以使用OpenGL
音效:使用外部的函式庫 - Irrklang






  我們小組選擇這個主題的靈感來源是網路上的一部動畫,描述一隻不會飛的奇異鳥在懸崖的岩壁上釘上一棵棵的樹,最後往下跳讓自己體驗飛行的感覺。我們的目標是重現往下跳的片段,並且將它實做成遊戲。
  在這個小組中我主要負責處理影像的部分,例如影子、雲霧、場景配置,以及各種遊戲中的特效。在製作出基本遊戲架構的同時,我們還希望成果畫面盡量接近原影片,讓有看過原本影片的使用者可以更深入地融入遊戲內容。

  在這次的製作中,因為是第一次接觸圖學的領域,在學習製作遊戲的同時也了解到很多圖學相關的知識。而協調組員的工作進度,把各自負責的AI、場景、模型等等整合起來也是挑戰之一。
  我們最後成功的在期末投票得到了第一名,不過我認為在遊戲性和整個程式的完整性都還不足,很多有趣的構想也因為時間限制沒有實做出來,是在之後的專題需要加強的部分。

使用的技術
遊戲本身使用的繪圖引擎是OGRE (Object-oriented Graphic Rendering Engine)
在影像方面使用了:  Shadow volume: 樹木及Kiwi本身的陰影效果。
                                      Fog: 整個場景的雲霧效果。
                                      Sky Plane: 遠距離的天空背景。
                                      Radial Blur Shader: 使用放射狀模糊模擬出高速飛行的速度感。
在遊戲系統使用了:  Bounding Box: 判斷玩家與障礙物的碰撞。
                                      AI (A*): 遊戲中障礙物使用的追蹤路徑AI




  本專題的目標是將科學繪圖軟體SigmaPlot網路服務化,讓使用者不需要在本身電腦安裝,只須經由我們提供的網站頁面就可以使用軟體,藉此打破單機軟體在使用人數及系統環境上的限制。

系統架構



我們的架構分為Client端和Server端兩部分:
  Client端:負責與使用者溝通的網頁頁面,接收指令後傳送給Server端處理。
  Server端:負責處理試用者的要求,控制SigmaPlot軟體產生結果。

首先,使用者透過網頁瀏覽器連接到網站伺服器首頁,選擇欲繪製的函數圖形。網站伺服器會將此請求存成一份Reservation.xml(預約檔),傳至SigmaPlot伺服器作處理。
Detective.exe偵測到指令後就會開啟ctrl_spw.exe,根據我們預先輸入好的動作腳本直接控制SigmaPlot,待圖形資料處理完成後再將圖表顯示在網頁端,回傳給使用者。


在專題中我負責的部分
1.      讀入Client端儲存的Reservation.xml
Reservation.xml中包含了使用者想要畫的圖表類型。
2.      Server端讀取SigmaPlot中檔案樹狀結構的功能。
這部分需要先抓取到SigmaPlot視窗以及樹狀結構元件的Handle,再藉由Windows所提供的API來將裡面的所有Node取出存成String
3.      Client端網頁中讓使用者輸入方程式以產生圖表的功能。
Client端輸入後存成Reservation.xml,然後在Server端使用Plot Equation功能繪製出圖表並回傳。
4.      製作讓Server端控制SigmaPlot主程式使用的動作腳本。
在腳本中包含了對於鍵盤、滑鼠控制的描述,我們利用這些動作腳本讓ctrl_spw.exe直接送出滑鼠及鍵盤指令,控制SigmaPlot完成使用者的需求。
5.      協助專題書面報告的撰寫
由於小組中只有我的工作同時包含ClientServer兩部分,所以被指派負責協助撰寫書面報告的同學,提供他需要的資訊。

專題中遇到的問題:
1.      工作銜接不良:
原本我們小組的分配是兩位負責Server端,兩位負責Client端,但是在第一學期結束之後有兩位因為學業問題而離開。因為沒有預期到會有這種情況,沒有在工作銜接上做準備,所以多耽擱了一段時間在接回原本的進度。
2.      沒有預先了解系統執行的環境
因為在開發的時候我們使用的作業系統是Windows Vista,但是到了最後廠商安裝的時候才發現廠商使用的都是Windows XP,測試之後才發現ctrl_spw.exe沒辦法在XP下運作。最後我們修改了程式編譯的環境等等才解決了這個問題。
3.      客戶需求超出系統可能做到的範圍
在我們最後Demo的時候,廠商告訴我們希望可以把每筆要求的處理時間降到兩秒以下。但是除了網路速度和系統的影響,光是SigmaPlot本身的圖表處理時間就超過30秒。導致最後我們的系統無法商業化,只能做為一般遠端使用。






  這套系統是在軟體工程課程中所做的Project。我們希望針對民宿管理的需求,做出能夠管理訂房資料、客戶資料等等相關訊息,讓民宿主人可以輕鬆管理的系統。
  和其他專案不同的是,我們採用了軟體工程學到的分工,將我們的小組五人分為五種不同工作:Project managerArchitectDesignerProgrammerTester。但因為程式的進度無法趕上,所以最後我負責ArchitectDesigner的部分,兩人負責Programming
Use Case 設計

Sequence Diagram設計

這次專案中我學到怎麼針對使用者的需求,藉由Use CaseSequence Diagram來建立起Project ManagerProgrammer之間溝通的橋梁,並且不斷的和Project Manager溝通以確保我所設計出的架構不會偏離預訂的需求,導致整個時程的延遲。同時我也協助Project Manager編輯最後的Software Requirements Specification文件,提供整個系統從時程規劃的甘特圖、執行環境、使用簡介,到架構、設計等等的詳細資訊。最後是在系統測試時協助檢察Test Case的設計,然後對於找出來的bug,逐項的和Programmer討論應該如何修改才能解決問題。
由於平常在學校課程所寫的程式都是獨立或小組完成,從來沒有機會接觸到像這樣規模較大,牽涉到管理層面的系統。我想這是在學校做專案和外面工作很大的差異。這個系統是個很難得的經驗,使用軟體工程課程所學到的來分配各人的工作,讓我們了解到在一個大專案中可能發生的種種問題,也體驗到預先規劃的重要性。在之後所做的專案中可以更有效率的去規劃時程及架構,在不浪費資源的情況下完成目標。