博文

目前显示的是 二月, 2023的博文

从零开始写多人足球游戏【Log.001】

图片
第一章   说明    本文是选修 Linux 操作系统后,完成结课大作业时编写的报告。     在完成结课大作业的过程中,我编写了一个游戏服务端程序、一个对应的游戏客户端程序。    在编写服务端程序的过程中,我使用 Linux 系统调用实现了全部游戏 逻辑、交互协议、多用户并发访问和基本的状态/故障指示。     该服务端程序运行于 Linux 操作系统上,部署在位于新加坡的 CentOS 服务器上,可在互联网上直接访问。该服务器配备了 10Gbps 网卡,但由于服务器的地理位置在海外,网络连接会受到主干网出口的影响。    $ vi server.c   $ cc -lm -lpthread server.c # 在x86机器上编译需要"-std=gnu99"    该服务端程序使用 C 语言编写,源代码采用 C99 标准,使用了 math 库和 pthread 库,在编译时需要额外指明连接这两个库;使用 aarch64 架构 Linux 系统接口,具体系统内核版本为 5.14.0-214.el9。 图 1.1: 客户端截图    该客户端程序使用 Java 编写,源代码采用 Java 1.8 SE,使用 JavaSwing 图形化接口. 图1.1展示了 10 个玩家同时游戏时,其中一位白方玩家的客户端状态。 第二章  成果介绍    我编写的是一款多人足球游戏,给它的名字是 football 1922,代表该游戏来自一百年以前,象征这是一款画质和玩法上古的游戏。游戏默认支持最多 10 人同时在线游玩,可以通过调整源代码中的宏定义来修改最多游戏人数。游戏服务端按照玩家的进入顺序,将他们分为两队相互对抗。    由于 COVID-19 肆虐全国,本人也不幸中招,我在完成大作业时,不得不遵循非必要不设计的原则,以在本就不富裕的清醒时间中完成任务。双端从设计到编写完成一共花费了 16hr,仅持续工作了不到两天,论其速度,也算得上是我个人历史上的工程奇迹了。 2.1   玩法介绍    玩家可以在球场上移动、转向、碰撞、抢球、传球和冲刺。    首先需要用鼠标点击聚焦客户端左下角的文本输入框,使 Java Swing能