用Swoole來寫個聯機對戰遊戲呀!(一)前言

寫程式的趙童鞋發表於2019-04-22

簡介

話不多說,我們先上一個遊戲的最終效果圖給大家看看:

用Swoole來寫個聯機對戰遊戲呀!(一)前言

沒錯,就是緊張刺激的捉迷藏小遊戲。

本課程的原始碼在 github.com/Zhao-666/Hi… 上面,童鞋們可以提前在自己的機器上執行遊戲,體驗一下游戲的感受,或者參考一下程式碼。

技術預備需要有如下幾點:

  • 熟悉PHP基礎語法
  • 使用過CentOS,懂得安裝PHP開發環境
  • 看過Swoole文件但缺乏專案經驗
  • 瞭解VueJs基礎語法或有其他前端框架經驗
  • 開發工具推薦使用PHPStorm

專案使用瞭如下技術:

  • PHP 7.2
  • Swoole 4.3.0
  • Swoole WebSocket Server
  • Swoole Task Worker
  • Swoole Static Handler
  • Vuejs
  • HTML WebSocket
  • Redis String
  • Redis List
  • 少量演算法邏輯

實現了:

  • 捉迷藏遊戲邏輯(邏輯) ★★
  • 匹配機制(快取) ★
  • 聯機對戰(網路程式設計、快取) ★★★★
  • 遊戲結束判定(邏輯) ★

可擴充套件功能(比較懶就沒做):

  • 當前線上人數:使用Redis Set儲存線上人員(快取) ★
  • 排行榜:使用Redis SortSet(快取) ★
  • 觀戰模式:在遊戲管理者Game中增加Watcher陣列,訂閱遊戲訊息(邏輯) ★★
  • 邀請對戰:往被邀請人發一條訊息確認開戰(網路程式設計) ★★
  • 多人模式:參與時不限制人數(網路程式設計) ★★★
  • 隨機地圖生成:暫時只想到了多點隨機路線拼接(演算法) ★★★
  • 優化地圖展示:手機適配(前端) ★★★★★★★★★★★★(這個真不會。。)

大綱

本次教程將會分為兩個部分。

  • 第一部分佔用三章的幅度,主要講解遊戲邏輯的編寫,我們會先製作出一個單機版的服務端邏輯,讓電腦隨機行走測試程式碼有沒有問題。
  • 第二部分佔用六章的幅度,這裡將會分為兩個主要功能,分別是:接入Swoole作為網路層和使用Vue寫一個簡單的前端頁面,讓遊戲能夠滿足兩個玩家聯機對抗。當然,並不是直接就把服務端全部程式碼寫完,然後再跑去寫前端這麼粗暴,兩個部分的程式碼都是按照專案的開發流程一點一點往裡填。

課程最後只實現了上面寫的已實現功能,可擴充套件功能也列了幾項並附註了溫馨提示,相信學完後童鞋們自己就能實現可擴充套件功能啦。

本次課程的主要目的就是好玩,並且還能順便學習一下SwooleWebSocketVue的使用,希望童鞋們看完會有一絲收穫。

學習方法

大部分的程式碼編寫我都會預先把功能需求用文字羅列出來,再給出程式碼實現,像下面這樣:

  1. 這個類需要有XXX功能
  2. 這個類需要儲存XXX變數
  3. 這個類XXXXX
<?php
class XXXXX
{
    private $xxx;
    
    public function xxx()
    {    
    }
}
複製程式碼

童鞋們儘量嘗試通過趙童鞋給出的需求自己動手編寫程式碼,而不是一上來就整段整段的複製,這樣學習效果會好很多,變數命名、方法命名不一樣是沒關係的,只要能夠滿足功能,當然,想不出的時候偷瞄一眼也是可以的๑乛◡乛๑。

在Github上程式碼有兩個分支,master分支為趙童鞋開發時的提交分支,teach分支為課程每章結束時提交的程式碼分支。為什麼會區分兩個分支呢?就像上面說的,實際專案開發的時候都是往一個大方向走,總有考慮不周的情況,所以程式碼就會刪刪減減的,用來教學就會前後程式碼不一樣。但是這樣的程式碼提交卻更加真實,有興趣的童鞋可以試著看看master分支。

下一章節開始正式學習,童鞋們準備好了嗎?

用Swoole來寫個聯機對戰遊戲呀!(一)前言

相關文章