MultiplayerKit 0.1.2

MultiplayerKit 0.1.2

João Paulo Sabino 维护。



  • 作者
  • jonhpol

MultiplayerKit

Version License Platform

示例

要运行示例项目,请首先将其克隆,然后从 Example 目录中运行 pod install

需求

安装

MultiplayerKit 可通过 CocoaPods 获得。要安装它,只需将以下行添加到您的 Podfile 中

pod 'MultiplayerKit'

设置

首先需要使菜单场景和游戏场景符合 MKMenuScene 和 MKGameScene 协议。示例

final class MenuScene: SKScene, MKMenuScene {
    var matchmaker: Matchmaker?
    
    func didAuthenticationChanged(to state: Matchmaker.AuthenticationState) {
        
    }
    
    func willStartGame() {
        //Presenting Scene example:
        view?.presentScene(GameScene(), transition: SKTransition.crossFade(withDuration: 1.0))
    }
}

class GameScene: SKScene, MKGameScene {
    var multiplayerService: MultiplayerService 
    func didReceive(message: Message, from player: GKPlayer) {
        //Your Implementation
    }
    
    func didPlayerConnected() {
        //Your Implementation
    }
}
! MenuScene must be final class

在 GameViewController 中实例化 Matchmaker 和菜单场景

if let skView = view as? SKView {
  let matchmaker = Matchmaker(authenticationViewController: self)
  let menuScene = MenuScene(matchmaker: matchmaker)
  skView.presentScene(menuScene)
}

创建自定义消息

创建一个符合“消息协议”的struct。示例:

struct Position: Message {
    var point: CGPoint, angle: CGFloat
}

发送消息

在你的GameScene中调用MultiplayerService的send(_ message: Message)方法。示例:

let position = Position(point: playerPosition, angle: playerAngle)
multiplayerService.send(position)

接收消息

GameScene中的didReceive(message: Message, from player: GKPlayer)方法负责接收所有消息。示例:

  func didReceive(message: Message, from player: GKPlayer) {
        guard let playerNode = allPlayersNode[player] else { return }
        switch message {
        case let position as Position:
            playerNode.changePlayer(position: position.point, angle: position.angle)
        case let startGame as StartGame:
            //Start game Logic
        case let attack as Attack:
            //Player attack Logic
        default:
            break
        }
    }

作者

jonhpol, [email protected]

授权

MultiplayerKit遵循MIT授权。更多信息请参阅LICENSE文件。