自製貪吃蛇遊戲

最近完工了一個計劃已久的遊戲:貪吃蛇。 要說這東西有什麼實際用處?其實就是滿足個人愛玩的心態,做個遊戲來玩。 當然,別人玩的是遊戲的內容,而我玩的則是開發的過程。

這個貪吃蛇與經典的貪吃蛇老遊戲基本沒什麼不同, 不過既然是新開發,只是復刻老遊戲顯然不能滿足我的願望, 於是我在重製老遊戲的同時,還加入了一些個人的設計。

playing

這個遊戲的最大特點就是:它是多人連線版的貪吃蛇, 也是這遊戲的最大樂趣之所在。 它最多可以支援八個人一起遊戲,讓八位朋友可以互相競爭、互相廝殺!

本來還想說這個東西應該不是什麼困難的程式, 結果一做下去,就從去年(2020)二月做到現在(2021-05), 足足花了一年多,編寫超過一萬兩千行的 C++ 程式碼, 實在是……常常腦子想的和實際發生的不一樣啊!

遊戲使用說明

把遊戲下載下來解開後會看到, 整個遊戲程式只有三個檔案:

  • snakes: 是主要的用戶端程式,一般執行這個就可以了;
  • snakesd: 另一個帶 ’d’ 結尾的 snakesd 是伺服器程式,主持遊戲時用的,一般放著不管就好;
  • example-scene.snksc: 最後一個結尾是 .snksc 的是遊戲場景檔案, 它本身是個純文字檔,包含了範例和說明,如果想要自製遊戲場景的話可以參考使用。

main entry

當遊戲程式一執行起來,首先會看到的是上面這個主選單畫面。 這個遊戲是以終端機為操作介面,之後的其他操作畫面風格大約都是長這個樣子, 值得注意的是畫面最下面有一行反白的部份,它會顯示一些重要的操作提示, 當你在任何時候不知道應該要怎麼按的時候,就要記得往下面看一下,通常就會有一些解答提示。

回到主選單,這裡有兩個重要的功能:Join Game 和 Create Game。 其中 Join Game 就是搜尋並加入網路上其他人開的同一個遊戲, 而 Create Game 自然就是讓你自己開一個遊戲給別人加入。 然而就算找不到朋友一起,還是能玩遊戲的。 雖然遊戲設計是以多人連線為基礎,但也支援只有一個人連線玩遊戲的情況。

scan servers

若進入 Join Game 選單,就會顯示上面的頁面, 程式會自動搜尋並顯示同一個區域網路有沒有人開了遊戲, 然後就可以使用上下鍵選擇,並按下 Entre 來加入某個遊戲。 其中要注意的是遊戲列表中的 Status 欄位,只有顯示為 Joinable 的場次才能夠加入, 正在進行遊戲的場次是不接受新玩家加入的!

manual add remote

除了區域網路之外,程式也支援網際網路的連線, 按下 Ctrl+A 就可以手動輸入連線 IP 或網址。 只是網際網路的連線和伺服器架設部份,因為牽涉到一些一般人可能比較不熟悉的網路專業, 所以這個功能比較不常用就是了。 這個功能對於懂的只要這樣提點就會用了,而對於不懂的也很難三言兩語解釋明白, 結論就是一般人通常還是推薦使用區域網路連線就好了!

preparing

當成功的加入了某個遊戲後就會顯示上面這樣的畫面。 這時候遊戲還尚未正式開始,基本就只能聊天而已,只要按下 Ctrl+T,即可輸入文字訊息, 然後按下 Entre 送出訊息,送出去的訊息就可以被所有的玩家看到。 只是這個訊息功能並不支援中文文字,只能夠使用英文!

另外注意很重要的一件事:在這個畫面裡,若沒有其他考量的話, 請儘快按下 Ctrl+G 按鈕, 只有當全部的人都這麼做以後,遊戲才會真正啟動。

playing

在整個遊戲進行的過程中,除了聊天功能以外, 基本上只能使用鍵盤方向鍵來改變自己所控制的那條蛇的行進方向。 如果花花綠綠的畫面讓你搞不清楚誰是誰的話,只要記清楚一個最重要的事情就好: 鮮綠的那條蛇一定就是你! 遊戲程式的設計是這個樣子的,每個玩家都有一個顯示的顏色, 但不管玩家到底是什麼顏色,自己看自己永遠都是鮮綠色的。

如果你問我說你的終端機不支援顏色顯示的話怎麼辦? 這個……那個……我也不知道,就自己看著辦吧! 終端機的表現能力就是這樣而已,已非我的能力所能彌補。

此外,遊戲畫面右上角會顯示每一位玩家的積分和排名, 對遊戲本身沒什麼影響,就是作為一個參考資訊的存在,讓玩家們有互相較勁的依據而已。

lose game

win game

當場上僅剩最後一條蛇還活著的時候(或者在單人遊戲的情況下把自己玩死了以後), 遊戲就會暫停並呈獻上面這樣的結束畫面。

除了聊天功能依舊提供以外,可以按下 Ctrl+G 來要求再玩一次, 若所有玩家都這麼做的話,遊戲就會重新開始。

主持遊戲

setup server

在主選單選擇 Create Game 之後就會進入如上圖的畫面, 除了預設的空白場景之外,還可以使用上下鍵在程式掃描到的場景檔當中選擇一個來使用, 沒有意外的話,列表中應該會有一個遊戲隨附的範例場景可以使用。 選擇了場景後按下 Entre 鍵即可進入遊戲, 實際上就是程式會在背景執行 snakesd 程式,然後自動連線加入這個伺服器。

除了直接啟動遊戲之外,還可以按下 Ctrl+N 來設定別人會看到的遊戲名稱 (預設是顯示伺服器 IP); 也可按下 Ctrl+D 來設定加入遊戲的密碼, 這樣要加入遊戲的人會被要求輸入密碼,只有密碼正確才能加入, 這麼做可以防止一些預期之外的閒雜人等加進遊戲。

play the example map

關於遊戲場景的部份,這個遊戲非常鼓勵玩家發揮創意自製遊戲場景。 遊戲場景檔基本就是一個副檔名為 .snksc 的純文字檔案, 玩家可以在檔案裡面添加一些特殊物件如牆、滑塊、和隧道等,添增遊戲趣味。 具體檔案內容要怎麼編寫,可以直接參考範例場景檔案內的說明,基本上非常簡單! 自行製做的遊戲場景檔案只要放置於程式所指定的搜尋路徑下 (或是在 Windows 上直接與主程式放一起), 下次要開遊戲的時候就會被程式搜尋到了。

相關網站位置