这是一篇严肃的联机游戏开发入门介绍,本文所述代码开源,文末可获得地址。
关于游戏的实时联机对战,目前是很多游戏开发者研究课题,也延伸出了很多概念,如“状态同步”、“帧同步”,目前很多游戏开发框架也提供了这样的开发一些理念和组件,比如unity的The High Level API等等。
本文不希望传授如何用框架、服务端引擎等来搭建一套商业级的框架。而是希望从最基本的网络通信原理开始,一点点的进行朴素的分解和搭建,旨在从原理上概述联机游戏的设计思路以及抽象于计算机网络的通信框架如何设计和构建。
我个人编写这套DEMO包括完整的客户端和服务器,也是用于调研工作室游戏《汉家江湖》后续的实时联机部分如何搭建和开发,并且后续作为我们自己的一个实时联机通信框架的测试程序。
实际完成的DEMO如上,每个玩家是一个点,只有一个操作:使用左下的虚拟摇杆进行方向控制。在移动过程中不断喷射子弹,命中对方即可扣血,在规定时间内比谁的击杀的人数多。由于是一个简单的DEMO,我们不在美术上做太多东西(请原谅我的五毛钱PS技术),主要是为了讲解程序如何来设计。
工具部分,客户端我们使用unity开发,服务端我们直接从0开始写一个基于socket的服务器。
我们使用状态同步来做这个DEMO(理论上帧同步机制是更加适合这种IO类游戏的,我们为了逻辑清晰简单,先用状态同步来做,后续有时间我再补帧同步的方案。)