预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

DISProject PUSHINGICECUBE 指導教授 莊裕澤教授 蔡益坤教授 第十二組 資管所碩一R92725009吳書福 資管所碩一R92725040黃子龍 動機與目標 動機 增加專案開發時的樂趣 在選擇專案的題目時,我們兩位組員經過不斷的討論,最後決定開發一款小遊戲,藉由開發好玩的遊戲,增添專案開發的樂趣,讓整個專案的開發過程不再是那麼的枯燥、乏味。 熟悉的遊戲流程 我們選擇的遊戲,在任天堂遊戲中,是屬於一款人人都聽過,玩過的遊戲,遊戲的規則不複雜,一般人只要經過一兩次的訓練,就能順利的啟動遊戲,在網路上尋找喜歡玩的玩家一起來對戰。我們小組組員覺得,這樣的一款遊戲,適合三五好友平常打發時間,實用性、娛樂性都會很高。 簡單的遊戲操作 玩家啟動遊戲後,只要單純的使用「上、下、左、右」,四個方向鍵,移動畫面中的角色,沒有複雜的操作指令,對於玩家而言,可以很快上手,對我們開發者而言,也可以用較少的時間開發遊戲,把部分的精力用於撰寫、處理網路問題,容錯、擴充性等等較進階的問題。 目標 體會分散式系統程式設計之重點 因為我們選擇開發的是一款小遊戲,改寫原有的單機版的遊戲,變成可以在網路上對戰的網路遊戲,藉由實際的開發出一個網路遊戲,可以讓我們小組組員在處理網路問題,各玩家之間的問題,體會到分散式系統程式設計中,需要考慮的種種問題。 學習設計遊戲類型程式的使用者介面 這是我們兩位組員第一次撰寫遊戲的程式,我們也希望能從中學到遊戲的程式設計的相關技巧和能力。 增加團隊合作及專案管理之經驗 我們也希望從這次的專案開發的過程,學到團隊之間如何協調、合作等等的議題,培養以後參與大型專案開發的能力和經驗,學到專案管理的學問和技巧。 遊戲內容 遊戲方式 遊戲採取回合制 每一回合結束才能再開始下一場的比場 遊戲人數 人數最少為兩人,不設上限 決定好參加的玩家人數之後即可以開始一場比賽 遊戲操作 玩家利用「上、下、左、右」鍵來移動所操控的角色 玩家可以透過推動一塊冰塊來壓死路徑上的一位敵人 被冰塊壓到的玩家會被判定出局,喪失繼續比賽的資格 遊戲終止 畫面上最後剩下的那一位玩家即為贏家 或者是全部的使用者退出比賽,比賽即宣告結束 遊戲畫面 開啟本程式 看看是否有人開局 自己開一局等別人加入 加入別人開的局 Server決定遊戲開始 遊戲結束 玩家是否已經斷線或者所操控之角色在遊戲中死亡 遊戲進行 Server初始遊戲地圖並傳給所有玩家 Yes No 遊戲流程圖 SHAPE\*MERGEFORMAT 【說明】 程式執行之後,先檢查是否已經有人已開好遊戲等待玩家加入 玩家可以選擇加入他人開啟的遊戲(若有存在的話),或者自己新開一局 開局的人可以決定何時開始遊戲 遊戲過程中若有任何玩家不正常離線,並不會影響遊戲的進行,剩下可以正常運作的玩家仍可以繼續玩 當某一方消滅完所有的敵人之後,這一局便算是結束了 或者是當地圖中沒有冰塊了,遊戲也算是結束 玩家可以選擇繼續玩或者離開遊戲 Client Client Client Server joinrequest joinrequest joinrequest 遊戲架構 在程式啟動的一開始,所有的電腦都可以選擇加入別人開的局或自己新開一局等待別人加入,當某位玩家按下「Create」鍵時,它就會成為「Server」,接受其他玩家的連線要求。 Client Client Client Server LAN Server具有決定遊戲何時開始的權利(Server也有參與本局遊戲)。 當Server決定遊戲開始之後,就會隨機產生遊戲地圖,然後將此地圖以及所有玩家的資訊傳給所有參加者。 Client Client Client Server Client 在遊戲的進行過程中,因為每一位玩家都有其他玩家的資訊,所以關於遊戲操作的訊息就可以在玩家之間互相傳遞,而不必再透過Server來broadcast。 Client Server 在遊戲的進行中,Client要定期送訊息給Server,讓Server能知道Client仍然是正常運作中的。 若有某一台參加遊戲的Client未在固定的時間內傳送訊息給Server,Server會把這一台Client從參加者中移除,並告訴遊戲其他的參加者,目前剩下哪些玩家,讓它們接下來只對那些還活著的玩家送訊息。 若Client在一段時間內沒收到Server的訊息,Client會先Lock住,然後進行LeaderElection的動作,選出另一台Server來負責上述的工作。 新選出來的Server,會告知其它還存活的Client它是新的Server