本課程使用課本如左,老師我就是作者!
有書當然最好,跟著教學網頁學習也OK!
線上遊戲是最賺錢的遊戲種類,加油哦!

何謂線上遊戲? 

       所謂的線上遊戲就是可以經過網路與其他使用者互動的遊戲,與設計單機遊戲最大的差別,首先是必須處理網路的通訊問題;也因為遊戲的玩家不僅是自己而已,還包括遠端的其他玩家,使得遊戲內容可以更為豐富多變,但是設計遊戲時的程式邏輯也跟著更為複雜。相較於其他遊戲設計課程,本課程的重點包括:
一、遊戲如何『上線』的設計,也就是如何寫網路通訊的程式,使得玩家可以經過網路即時溝通遊戲進行的狀態。
二、如何將玩家操作的動作轉譯成網路訊息(發送給對手),以及如何將網路訊息解譯為程式需自動完成的對手的動作。
三、如何利用伺服端資料庫與公用變數紀錄必要的遊戲狀態,如客戶資料、誰在線上或遊戲進度等等。
這些課程重點會經過具體的範例從實做中一一讓大家學習!

有關網路通訊協定
        網路通訊的基礎就是網路通訊協定(Protocol),數位電子訊號以01的型態在網路線中傳遞,如同我們講話的聲音,但是必須有共通的語言才能真的互相溝通,甚麼訊號代表甚麼意義,如同甚麼聲音代表甚麼語意,通訊協定就是電子訊號的共同定義。目前網路最基本的通訊協定就是TCP/IP,基本上TCP協定(Transmission Control Protocol)代表規範網路訊號以有限長度的『封包』傳遞訊息,如同高速公路是大家共用的,每一輛車子都是一個封包,大家的訊息都可以趁沒車的空檔開上高速公路,但是當然還是會有塞車的時候必須慢慢等紅綠燈。相反的,傳統電話、有線電視或廣播電台就不是使用封包傳訊,所以每個通訊頻道就只有一個使用者完全佔用!比較像鐵路而不是高速公路。

         IP代表的則是地址系統定義方式,每個電腦乃至電腦中的每個網路程式都必須有定義位置的規則,這樣網路訊號就可以正確送達!有如實體信件的地址與收件人。一般來說,電腦以 IP 來識別,個別的程式則以使用的 Port 也就是通訊埠來識別。事實上Port才是網路通訊的真正端點,不只是不同電腦之間的Port可以通訊,同一電腦中的不同Port也可通訊,所以我們上這門課寫程式時未必需要兩台電腦來確定程式功能,在本機測試也是可以的,如下圖所示:

想知道你的電腦目前有哪些Port正在使用(對外通訊)嗎?可以到附屬應用程式打開命令提示字元的視窗,打入netstat指令,就可以看到,畫面大致如下,本機位址就是「IP:Port」,80通常是網頁(瀏覽器)專用的通訊埠。

你也可以試試看打入 ipconfig,可以顯示你的電腦IP與相關設定。主要內容大致如下:

可以看到這台電腦已經支援IPv6,但是我們比較熟悉的IPv4還是並存的,本課程的程式還是使用IPv4為主。

TCP/IP是基礎協定
         所有的網路通訊方式事實上都是建立在TCP/IP的基礎上,如FTP是專用來傳輸檔案的協定,HTTP專用於網頁傳輸,SMTP用於傳送Email等等。對於線上遊戲設計而言,主要是使用TCP與HTTP,前者效率高速度快,但是必須下載安裝專屬的程式才能使用,HTTP的通訊方式表示可以直接經過網頁瀏覽器執行,也就是網頁遊戲。至於行動裝置上的App程式表面上是必須下載安裝,但是內部很多其實是包含JavaScript程式的網頁,非網頁的則是用Java或C語言寫成。


UDP通訊模式
        事實上TCP通訊協定中還包括一種UDP的通訊方式,類似無線電廣播,程式只負責發送但不保證對方是否有收到(不檢查是否有連線),這種方式可以比較快速的通訊,通訊流程與程式邏輯也最簡單,多用於線上直播的影音傳播,缺點是部分封包可能會送不到目的地,如果拿來傳檔案或信件就不合適了!如果是需要較高精確度互動的線上遊戲其實也不適合,但是因為UDP具有網路通訊的基本元素,程式邏輯也比較簡單,本課程前段將以這種通訊方式建立數個遊戲範例,讓大家先熟悉網路通訊及線上遊戲程式運作的基本模式。


TCP通訊模式
        實際上商業運轉的線上遊戲多以標準的TCP通訊模式為主,這種通訊方式如同打電話,必須先撥號,等對方接聽(確認連線)之後才能通訊,通訊過程中也會隨時檢查確認每個封包是否正確送達?如果漏了任何一包就會立即重送!這種模式的執行需要嚴格區分功能的伺服器客戶端程式,程式當然較為複雜,是本課程第二階段要介紹的重點,會以一個伺服器程式為通訊轉接中心,據此建立數個線上遊戲的範例。它們的連線方式概略如下圖所示,左邊是單機測試,右邊是實際上線執行時的狀態。


HTTP通訊模式
        此外,由於網頁程式的進化,原本無法即時通訊的網頁,現在也可以互相通訊了!因此我們可以在類似 FaceBook 的社群網站與朋友即時聊天及玩互動遊戲。這是線上遊戲的一個新模式,使用的是HTTP通訊協定,雖然速度比TCP或UDP慢,但是由於不需要安裝程式,實體網路環境的速度也越來越快,對於日漸增多的智慧手機或平板電腦族而言吸引力很大,後勢看漲,市場占有率甚至可能超越傳統的TCP線上遊戲。這種程式主要是依賴新的網頁技術 AJAX 機制達成,網頁可以內藏 JavaScript 程式與伺服端保持持續的通訊,伺服端再將客戶間的訊息轉傳,如同傳統的線上遊戲伺服器一樣。這是本課程將介紹的第三個部分。它的網路架構與流程示意圖如下:

          事實上還有一個電腦演進趨勢讓網頁線上遊戲可能會更加風行,就是網頁語言進化到HTML5之後增加了完整的繪圖功能,讓以往必須借助Flash等等外掛程式設計的遊戲介面可以直接用HTML與JavaScript程式設計,這些非外掛的標準化程式語言也更容易與網站的伺服端程式通訊,而且安全性高,預期將可以讓網頁遊戲市場更加升溫。我們的課程單元也會涵蓋這個技術議題。