1.1 关于游戏编程

 1.1.1、游戏中客户端和服务器的交互

游戏通常采用客户端-服务器模式‌。在这种模式下,服务器负责处理游戏的核心逻辑、数据存储和玩家间的交互,而客户端则负责呈现游戏画面、接收玩家输入并与服务器通信‌。

客户端和服务器的作用和功能

  1. 客户端‌:客户端是玩家直接交互的界面,负责呈现游戏的图形、音效等多媒体内容。玩家通过客户端发送操作指令到服务器,同时也接收来自服务器的反馈,如战斗结果、玩家状态更新等‌。
  2. 服务器‌:服务器是网游的“大脑”,处理游戏的所有逻辑,包括角色控制、资源分配、战斗计算等。服务器还负责存储游戏数据,确保即使玩家离线,游戏世界仍在运行。此外,服务器处理玩家之间的交互,如组队、PK、交易等‌。

客户端-服务器架构的特点

  1. 高度灵活性和可扩展性‌:游戏开发者可以在服务器上部署各种功能,如社交系统、交易市场等,而客户端的升级和维护相对简单‌。
  2. 支持大量玩家同时在线‌:这种架构确保游戏的稳定性和流畅性,能够处理高峰时段的玩家并发访问‌。

1.1.2、游戏客户端安装包和服务器安装包 

游戏客户端安装包和服务器的安装包不一样‌。游戏客户端软件是指安装在玩家电脑上的程序,用于提供本地服务,通常包括游戏美术、情节、界面等最终效果,直接为用户提供服务‌。而服务器端软件则安装在游戏提供商的服务器上,负责运行游戏数据并向客户端发送数据代码,确保客户端正常运行,从而为玩家提供服务‌。

客户端和服务器端软件的区别

  1. 编写方法和语言‌:客户端软件和服务器端软件采用不同的编写方法和语言。
  2. 安装载体‌:客户端软件安装在用户电脑上,而服务器端软件安装在游戏提供商的服务器上。
  3. 作用‌:客户端软件使用游戏数据,而服务器端软件向客户端发送游戏数据,调用游戏资源。
  4. 目的‌:客户端为玩家呈现最终效果,直接为用户提供服务;服务器端通过客户端最终服务于玩家,并非直接服务于玩家‌。

安装包的区别

  • 客户端安装包‌:通常包含游戏的美术、情节、界面等最终效果,直接安装在玩家电脑上,供玩家使用。
  • 服务器端安装包‌:包含运行游戏数据并向客户端发送数据代码的程序,安装在游戏提供商的服务器上,确保客户端正常运行。

安装包的使用场景

  • 客户端安装包‌:玩家在连网状态下下载、注册、登录后使用,提供本地服务。
  • 服务器端安装包‌:由游戏提供商安装在服务器上,确保游戏的顺利运行和数据的互通。

通过以上区别和用途的详细解释,可以更好地理解游戏客户端安装包和服务器端安装包的不同之处。

1.1.3、客户端软件如何和服务端软件通信 

1、HTTP(超文本传输协议)和HTTPS(HTTP安全)是客户端与服务器通讯中最常见的协议之一,用于在Web应用程序中传输数据。HTTP是明文传输,而HTTPS通过SSL/TLS加密进行安全传输。

HTTP和HTTPS协议在请求数据时可以使用不同的方式,主要包括以下几种:

(1)GET请求:通过URL参数传递数据。GET请求将数据附加在URL的末尾,以键值对的形式传递,例如:http://www.example.com/api/data?param1=value1¶m2=value2。这种方式适用于传递少量数据,对于大量数据或敏感数据不太适合。

(2)POST请求:通过请求体传递数据。POST请求将数据放在请求体中,可以传递更大量的数据,并且对于敏感数据更安全。数据可以以表单形式(form data)或JSON格式等形式传递。

(3)PUT请求:类似于POST请求,也是通过请求体传递数据,但通常用于更新资源。PUT请求通常用于更新已存在的资源,需要传递完整的资源数据。

(4)DELETE请求:用于删除资源,通常不需要传递数据,但也可以通过请求体传递一些参数或数据来指定删除的条件。

(5)其他请求方法:除了GET、POST、PUT和DELETE之外,还有一些其他请求方法,如PATCH、OPTIONS等,它们也可以用来传递数据,但使用场景相对较少。

HTTP和HTTPS协议在请求数据时主要通过GET、POST、PUT和DELETE等请求方法,以及通过URL参数或请求体来传递数据。开发人员根据具体的需求和场景选择合适的请求方法和数据传递方式。

2、WebSocket是一种在单个TCP连接上进行全双工通信的协议,它允许客户端和服务器之间进行实时的双向数据传输。与HTTP不同,WebSocket是一个持久连接,可以实现服务器向客户端推送数据,而不需要客户端发起请求。

在WebSocket中,客户端和服务器之间通过建立WebSocket连接后,可以通过发送消息来实现数据传输。客户端和服务器都可以发送消息给对方,实现实时的双向通信。

WebSocket是一种不同于HTTP的协议,它是基于TCP的全双工通信协议,可以实现实时的双向通信。WebSocket的请求方法主要包括connect、send和recv等方法,用于建立连接、发送消息和接收消息。

3、RESTful API 是一种基于 REST 架构风格设计的 Web API,它使用标准的 HTTP 方法(GET、POST、PUT、DELETE)来对资源进行操作。在 RESTful API 中,数据的请求通常通过 HTTP 请求的方法和路径来进行。

RESTful API 请求数据的方式主要是通过使用标准的 HTTP 方法(GET、POST、PUT、DELETE)来对资源进行操作,同时可以通过请求的路径、参数和请求体来传递数据。开发人员根据 API 的设计和需求,选择合适的 HTTP 方法和数据传递方式来完成数据请求操作。

1.1.4、计算机之间的通信数据传送抓取(wireshark)

Wireshark是一款强大的网络抓包软件,它可以通过网卡抓取经过的数据包能够捕获并分析网络中的数据包。

1.1.5、关于游戏引擎

可见,引擎并不是什么玄乎的东西,无论是2D游戏还是3D游戏,无论是角色扮演游戏、即时策略游戏、冒险解谜游戏或是动作射击游戏,哪怕是一个只有1兆的小游戏,都有这样一段起控制作用的代码。经过不断的进化,如今的游戏引擎已经发展为一套由多个子系统共同构成的复杂系统,从建模、动画到光影、粒子特效,从物理系统、碰撞检测到文件管理、网络特性,还有专业的编辑工具和插件,几乎涵盖了开发过程中的所有重要环节,以下就对引擎的一些关键部件作一个简单的介绍。

首先是光影效果,即场景中的光源对处于其中的人和物的影响方式。游戏的光影效果完全是由引擎控制的,折射、反射等基本的光学原理以及动态光源、彩色光源等高级效果都是通过引擎的不同编程技术实现的。

其次是动画,游戏所采用的动画系统可以分为两种:一是骨骼动画系统,一是模型动画系统,前者用内置的骨骼带动物体产生运动,比较常见,后者则是在模型的基础上直接进行变形。引擎把这两种动画系统预先植入游戏,方便动画师为角色设计丰富的动作造型。

引擎的另一重要功能是提供物理系统,这可以使物体的运动遵循固定的规律,例如,当角色跳起的时候,系统内定的重力值将决定他能跳多高,以及他下落的速度有多快,子弹的飞行轨迹、车辆的颠簸方式也都是由物理系统决定的。

碰撞探测是物理系统的核心部分,它可以探测游戏中各物体的物理边缘。当两个3D物体撞在一起的时候,这种技术可以防止它们相互穿过,这就确保了当你撞在墙上的时候,不会穿墙而过,也不会把墙撞倒,因为碰撞探测会根据你和墙之间的特性确定两者的位置和相互的作用关系。

渲染是引擎最重要的功能之一,当3D模型制作完毕之后,美工会按照不同的面把材质贴图赋予模型,这相当于为骨骼蒙上皮肤,最后再通过渲染引擎把模型、动画、光影、特效等所有效果实时计算出来并展示在屏幕上。渲染引擎在引擎的所有部件当中是最复杂的,它的强大与否直接决定着最终的输出质量。

引擎还有一个重要的职责就是负责玩家与电脑之间的沟通,处理来自键盘、鼠标、摇杆和其它外设的信号。如果游戏支持联网特性的话,网络代码也会被集成在引擎中,用于管理客户端与服务器之间的通信。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/465688.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UML的另一个主角——用例图

顺序图和类图已经出过单集,本贴要分享的是用例图。 类图https://blog.csdn.net/jsl123x/article/details/143526286?spm1001.2014.3001.5501顺序图https://jslhyh32.blog.csdn.net/article/details/134350587 目录 一.系统 二.参与者 1.主要参与者 2.次要参与…

set和map的使用

目录 1.关联式容器 2.键值对 3.set 3.1set的模版参数列表 3.2对set的修改 3.2.1insert 3.2.2 erase 3.2.3clear 3.2.4swap 3.2.5 find 3.3set的迭代器 3.4set的容量 4.map 4.1对map的修改 4.1.1insert 4.1.2erase 4.1.3swap 4.1.4clear 4.2map的迭代器 4.3opera…

【5.10】指针算法-快慢指针将有序链表转二叉搜索树

一、题目 给定一个单链表,其中的 元素按升序排序 ,将其转换为 高度平衡的二叉搜索树 。 本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。 示例: 给定的有序链表: [ -10 , -3 , 0 , …

dns服务器配置

主服务器 1.挂载点 mount /dev/sr0 /mnt 2.防火墙关闭 systemctl stop firewalld setenforce 0 3.下载bind软件 dnf install bind -y 4.进行正向解析配置 vim /etc/named.conf options { listen-on port 53 { 192.168.92.128; }; directo…

stable diffusion图生图

本节内容,给大家带来的是stable diffusion的图生图课程,我们在midjourney的课程中有学习过midjourney的图生图功能,即使用垫图的方式来引导AI绘制图片。图生图是AI绘图程序一个非常重要的功能,stable diffusion同样提供了类似的功…

论文阅读笔记:DRCT: Saving Image Super-Resolution away from Information Bottleneck

论文阅读笔记:DRCT: Saving Image Super-Resolution away from Information Bottleneck 1 背景1.1 问题1.2 本文提出的方法 2 创新点3 方法4 模块4.1 问题描述4.2 深度特征提取模块4.3 同任务渐进式训练策略 5 效果5.1 和SOTA方法对比 论文:https://arxi…

一周内从0到1开发一款 AR眼镜 相机应用?

目录 1. 📂 前言 2. 💠 任务拆分 2.1 产品需求拆分 2.2 开发工作拆分 3. 🔱 开发实现 3.1 代码目录截图 3.2 app 模块 3.3 middleware 模块 3.4 portal 模块 4. ⚛️ 拍照与录像 4.1 前滑后滑统一处理 4.2 初始化 View 以及 Came…

【论文精读】LPT: Long-tailed prompt tuning for image classification

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀论文精读_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 摘要 2. …

《重学Java设计模式》之 建造者模式

建造者模式所完成的内容就是通过将多个简单对象通过一步步的组装构建出一个复杂对象的过程 模拟装修公司对于设计出一些套餐装修服务的场景。 很多装修公司都会给出自家的套餐服务,一般有;豪华、轻奢、简约等,这些套餐的后面是不同的商品的…

Android Framework AMS(12)广播组件分析-3(广播发送流程解读)

该系列文章总纲链接:专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明: 说明:本章节主要解读广播组件的广播发送过程。关注思维导图中左上侧部分即可。 有了前面广播组件 注册和注销程分析的基础,基于此&#xff…

MongoDB笔记02-MongoDB基本常用命令

文章目录 一、前言二、数据库操作2.1 选择和创建数据库2.2 数据库的删除 3 集合操作3.1 集合的显式创建3.2 集合的隐式创建3.3 集合的删除 四、文档基本CRUD4.1 文档的插入4.1.1 单个文档插入4.1.2 批量插入 4.2 文档的基本查询4.2.1 查询所有4.2.2 投影查询(Projec…

MySQL基础-单表查询

语法 select [distinct] 列名1,列名2 as 别名... from数据表名 where组前筛选 group by分组字段 having组后筛选 order by排序的列 [asc | desc] limit 起始索引,数据条数 测试数据 # 建测试表 create table products (id int primary key a…

【pycharm jupyter】远程开发 启动报错

报错信息 upyter server process exited with code 1 ServerApp] A _jupyter_server_extension_points function was not found in jupyter_lsp. Instead, a _jupyter_server_extension_paths function was found and will be used for now. This function name will be depre…

CPU Study - Instructions Fetch

参考来源:《超标量处理器设计》—— 姚永斌 N-Way CPU 取指问题 如果CPU可以在每个周期内同时解码N条指令,则此类CPU为N-Way超标量处理器。 N-Way超标量处理器需要每个周期从I-Cache中至少取得N条指令,这N条指令成为一组Fetch Group。 为了…

掌握 PyQt5:从零开始的桌面应用开发

PyQT5——图形化界面 文章目录 PyQT5——图形化界面集成化图形界面工具为什么使用 \$ProjectFileDir$?示例场景其他 Varaiablespyuic参数解释整体含义示例使用PyQt5和pyuic 创建pyqt5的程序创建一个窗口app.exec\_()和sys.exit(app.exec_())的区别1. app.exec_()2. sys.exit(a…

论文阅读笔记:Image Processing GNN: Breaking Rigidity in Super-Resolution

论文阅读笔记:Image Processing GNN: Breaking Rigidity in Super-Resolution 1 背景2 创新点3 方法4 模块4.1 以往SR模型的刚性4.2 图构建4.2.1 度灵活性4.2.2 像素节点灵活性4.2.3 空间灵活性 4.3 图聚合4.4 多尺度图聚合模块MGB4.5 图聚合层GAL 5 效果5.1 和SOTA…

PMP–一、二、三模、冲刺–分类–7.成本管理–技巧–挣值分析

文章目录 技巧一模7.成本管理--4.控制成本--数据分析--挣值分析--进度绩效指数(SPI)是测量进度效率的一种指标,表示为挣值与计划价值之比,反映了项目团队完成工作的效率。 当 SPI小于 1.0 时,说明已完成的工作量未达到…

保姆级教程!!教你通过【Pycharm远程】连接服务器运行项目代码

小罗碎碎念 这篇文章主要解决一个问题——我有服务器,但是不知道怎么拿来写代码,跑深度学习项目。确实,玩深度学习的成本比较高,无论是前期的学习成本,还是你需要具备的硬件成本,都是拦路虎。小罗没有办法…

成绩管理系统软件体系结构设计

成绩管理系统软件体系结构设计 文档简介 1.1 目的 1.2 范围 1.3 定义、首字母缩写词和缩略语 1.4参考资料 1.5 概述体系结构表示方式软件体系结构的目标和约束 3.1 结构清晰 3.2 支持外包开发 3.3 可扩展性 3.4 系统安全性 3.5 可移植性 4体系结构模式逻辑视图进程视图…

单臂路由实现不同VLAN之间设备通信

转载请注明出处 本实验为单臂路由配置,目的为让不同VLAN之间的设备能够互相通信。 1.首先,按照要求配置两个pc的ip地址,以pc0为例子: 2在交换机创建vlan10和vlan20 3.划分vlan,pc0为vlan10的设备,pc1为vla…