当前课程知识点:游戏程序设计 >  第十三章 《开发工具 》 >  13.2 开发环境 >  13.2 开发环境

返回《游戏程序设计》慕课在线视频课程列表

13.2 开发环境在线视频

下一节:13.3 腾讯开发组件介绍

返回《游戏程序设计》慕课在线视频列表

13.2 开发环境课程教案、知识点、字幕

然后先为大家

其实最近这三天的课程

大家应该也会体会到

服务器和客户端那些差别

所以其实先给大家看一下

别人家的开发环境什么样

是这样的

这样的还有这样的对吧

我看看我们自己家的开发环境什么样

就这样吧

这样的还有这样的

别人家那叫高端大气上档次

然后我们自己那个也是挺好的

我们叫低调奢华有内涵

就是我们不在意那些外表的表现

我们只在意内核就是逻辑

性能啊

这才是最重要的

所以其实

其实上面也能看到了我们的开发环境

主要就是Linux

Linux操作系统

所以作为一名服务器开发同学

一定要要学会在Linux

上面写自己的一些逻辑

也要去了解它

那Linux是一个自由开放的一个语言

其实做软件或者知识行业

如果能够把自己东西开放出去

把它开展出去

让全世界几代人去不断的去优化

和迭代它其实是一个非常好的思路

包括现在安卓也是这个套路

所以Linux发展到现在

已经变得非常成熟

还有比较稳定

那其实那我们怎么去跟它相处呢

其实在作为一个服务器的开发东西

我每天都有一个黑白的显示器电脑

在那里不挺抠的的时候

操作的时候其实跟我接触的

除了同事之外

那可能Linux

就是我最亲近的一个伙伴

所以我总结跟Linux的相处

就跟恋人实际上是一样一样的

就是首先我们要跟它保持好沟通

第二就是我们都对它多了解

但所谓沟通就是我们首先要非常熟悉

Linuux上面的一些简单的

一些操作命令和一些工具

它能够使我们彼此沟通的桥梁

我用这些命令和这些工具

才能更加好的跟它沟通

就像你有一个外国女朋友一样

你们俩是不是还是需要一种语言去沟通

然后所谓理解

就是我们大概也还是需要去知道

它都有哪些特点

而且每样的东西容量是怎么样的

而不要因为我们跟它接触的过程中

有些地方越了底线

让它不舒服了

所以那就是进一步的去了解一下我

我们这个女朋友

不是我们这个Linux就是它操作系统

里面主要的一些资源

其实大家桌子上都有笔记本电脑对不对

就是只要你把那显示器掰断了

然后扔开剩下的部分

你就可以理解成是一个Linux的状态了

主要的一个资源

我们需要关心的

首先第一点就是CPU

GPU

大家也很清楚了

中央处理器

它其实更多的一个角色是

解决了一个计算机反应速度的问题了

那我们在哪些方面

是需要关注Linuxcpu呢

其实更多的时候

我们要做一些例行计算的游戏的时候

要尤其注重CPU的使用

比如说我在做一款FPS游戏

在一个场景里面两人互相射击

那这个人究竟这一把子弹有没有打中我

这个肯定是不可能相应客户端的判断的

因为有很多外挂脚本

它可能会帮你去做判断

那作为最安全的一个方法

这个是要交给服务器做后台的校验的

但是在这里面会涉及到很多引擎

还有一些是否可见

或者是一些物理在里面的一个东西

所以这个每一把子弹都要去做这种校验

其实是一个比较高的一个

计算密集一个行为

而在这样的逻辑里面

我们就尤其注意它CPU一个使用率

如果CPU太高了

一台服务器只能跑十个场景

那你可以想象一下

就需要多少台机器

才能征支撑起王者荣耀这样东西

其实另外一块就是很多时候

大家不会注意到的一点

就是在网络层编码就是我发一个请求出去

实际上我是要把它编码成

我需要的那种协议

然后传给对方

对方需要解码它才能知道

我真正发给他的一些核心参数是什么

但是通常在这个过程中

实际上也是要大量消耗CPU的

那当我们这种上下行的情况特别多的时候

很有可能作为接入层的那个服务器

它的cpu会出现问题

所以这些都是我们需要关注它的点

第二块就是内存

其实内存大家也很熟了

它就更多像

计算机的记忆力

就是通常在什么情况下我们要注意

Linux的内存其实有一个思维

就是设计思维叫做用空间来换时间

那这里面实际关系到是一个缓存的设计

那当你在这种场景下用的多的时候

那你就要去关心它的内存

就刚刚我跟大家举例的时候说

QQ农场有一个核心算法

就是好友列表那个状态

那我们当时是怎么做的呢

就是用空间换时间的思路

我用空间来换取你每次计算的时间

举个简单例子

就是比如第一次拉我自己的好友列表的时候

我第一次肯定是要

把每个人的数据都拉出来了

而且要经过一些计算的对吧

那我得到了当时一个状态

但这种状态我可能可以把它存起来

然后比如说加个时间戳

五分钟之内我不重新计算它

那五分钟之内再有同样的请求

我直接用之前那个备份直接返回给客户端

其实在某些程度上

大概已经解决了这个快速的问题

那准确其实还有另外有其他的技巧

但是跟这个没有关系

我只是说我们用空间来换取它计算的时间

在这种设计

用缓存设计的时候

实际上我们是需要考虑内存的

内存是不是够

另外也就是单局类的

比如说我玩王者荣耀

我进入到一个单局的时候

单局里面所有的素材

场景

包括NPC配置

这可能都全都是在内存中的

那就是资源加在一起有多大我们要计算的

我们要计算好一个进程

大概能承受多少的房间

那就要推算出来

哪个房间它所占用的内存大小是多少

第三个就是硬盘了

这边应该很多同学都很敏感

因为

你学习资料能存多少对不对

然后其实真正硬盘这一块目前来看

其实它更多的是体现再存入层

它能够存入层的一些设想

比如说Log统计

这个Iog不知道大家 有没有概念

Log我就是服务器

在运行状态中

我会根据它的一些情况

定时的打出来一些文本

在本地

那这个文本是用来帮我们定位外网问题

或者做一些统计

所以这种东西叫Log

那它一般都是存在磁盘上面的

包括我们的战斗录像

就是不管你真的down机也好

但我想回放之前所有的状态的时候

其实我是需要把每一个状态存在一起的

那这个有可能就是一个二进制文件

但是它通常会很大

那这个如何就把它做一个本地化管理

是不是要定期的把它们存在一起

然后做一个归档

还是说定期的清空一下

这都是你本身对磁盘的一个理解

和做的一些处理

第四个网卡

其实这网卡如果我们这次假如说

课程设计做的是个单机游戏的话

就是很多人就不用再关心它了

但是如果我们做的是一个网络游戏的话

通常我们会怎么判断网卡

就是它上下行的一个频率

乘以每个包的大小

基本上就决定它的流量

那它流量本身

跟网卡的自身的一个条件约束

之间是不是匹配的

我们通常会觉得如果一个系统

它所有的瓶颈最终是在网卡的话

那它的CPU和内存包括磁盘这一块

那性能是做的很好

因为网卡法师一般是

受到物理的一个硬件的影响

但其他方面我们都做足了

最终它的瓶颈网卡

会觉得这个系统

它设计的性能会比较高一些

其实就是我这里没写

但是

可能现在有一个趋势

就是云游戏就是云游戏

可能我不知道你们有没有讲过

其实他很有可能未来会有一些

GPU图形计算的东西

也需要放到服务器云端

所以那个会在未来越来越重要

那那刚刚已经说到了解

了解的时候

我们可能有的时候会出现问题

就是你跟你的恋人在一起

可能会出现一些问题

但其实面对这些问题

我们怎么去解决它

其实还是要借助一些Linux上

一些性能的分析工具了

其实这个过程是特别好玩的

就是作为一个服务器开发

一方面是在刚刚设计的时候

一般是在实现它的时候

但是另外一方面的成就感会来自于

当它出现问题的时候

你如何能快速准确的找到它的问题

立马解决就是一点

所以在这个过程中

我们就类似于像是一个医生

或者侦探我们抽丝剥茧的根据一些工具

跑出来的性能指标

然后去找到它们之间的映射关系

然后从而推断出这个服务器

它可能出现那些问题

就像我刚刚说的他有可能是CPU的问题

有可能是内存的问题

有可能是磁盘的问题

也可能是网络问题

所以它出现问题的可能性很多

那如何去好好的掌握这几个工具

然后把它们综合的运用在一起

这里面是需要一些学习和经验的存在

然后也是很好玩的东西

所以这里面我不会展开

但是会列在这里让大家去自己去了解

就像刚刚我说的一样

我们又回到了 切换回

minigeme的状态

就是我们已经知道了语言了

知道了设计了

然后已经领到了自己的对应的

一台虚拟的Linux连接服务器了

用你自己账号登陆上去

那我们就开始怎么设计怎么个做法呢

其实举个最简单的例子吧

因为这里面不确定有很多同学都写过代码

所以我只能举了一个登陆接口

一个设计

就是说它的输入的话

就只需要我家这个框里面

写上我的QQ号和密码

输出的话就要求是输出

整个玩家的所有的QQ Game的信息

那对客户端说很简单

它只要把这两个数据点击发送过来就行了

而对于服务器上它大概是怎么个划分呢

其实第一个模块就是我首先要有一个进程

在那里监听

就是我要不停的看别人有没有发东西给我

所以我需要一个监听的一个模块

然后第二个就是当它收到了这个消息时候

它会给到别人去处理

所以会有一个处理的模块

那刚刚收到的登录校验

有可能本身不是我的能力

我要去用别人的能力去校验对吧

因为现在

QQ和密码是不可能直接发给每个业务

所以这里实际上是有一个公共的一个

接口需要调用的

那就是请求别人

然后第四呢

就是当我确定这个人是我自己

我登陆它也校验通过了

那我就要去我自己的服务器里面去拿东西

然后返还给他

这就整个这个过程

但是这里面其实已经涉及到了很多个角色

如果大家还不理解的话

我们可以想象一个场景

就是我们在大众点评上找到了

三里屯的一家网红店

走到店门口很多人在排队

然后你走到了那个小面门口

他问什么

他说

先生几位

然后那个三位

然后拿个号过去

所以其实

还有监听的这个人就特别像门童

就是他负责去收到别人的信息

你说来这个服务员把他领进去

但具体做执行的其实就是这个服务员

那你在服务员点餐的过程中

有可能你本身是没有这个菜呢

但是顾客要了

那我就订外卖嘛

对不对

就是给别的店下个单

然后别的店来响应这个事情

当外卖拿回来之后

也不可能直接称上来

所以我还得给后续处理一下

后厨在给我热一热

然后放在转盘等我拿回来给到客人

所以这个过程就是

你可以理解成门童收到了请求

然后给服务员让它去带进去做一些执行

但遇到不是我们自己的事让别人做

那我就订个外卖

然后拿回来

如果是我们自己的事情

我们还是要要放到存储里面去做

所以这里面会说到几个角色

去到服务器架构上的话

我们就会把它更加理论化

比如说门童就是接入层

然后服务员就是逻辑层

然后后面的后厨就是数据层

实际上很多时候这三层就够了

但有的时候还是需要外面提供一些API的

但是除此之外

其实这里面容易很容易被忽视的一点就是

模块模块之间的一个沟通

实际上还关系到一个组件

就是数据通道

就是这些模块之间怎么进行数据的交互

是更高效

更快速的

其实是很重要的一个环节

那这里面其实也是非常非常的

怎么说有设计在里面的一个东西

游戏程序设计课程列表:

第一章 《游戏开发导论》

-1. 1什么是游戏(上)

--1.1 什么是游戏(上)

--选择题

-1.2 什么是游戏(下)

--1.2 什么是游戏(下)

--选择题

-1.3 游戏是如何开发出来的

--1.3 游戏是如何开发出来的

-1.4 游戏引擎(上)

--1.4 游戏引擎(上)

-1.5 游戏引擎(下)

--1.5 游戏引擎(下)

--单选题

-1.6 如何成为一个游戏开发者

--1.6 如何成为一个游戏开发者

--多选题

第二章 《游戏服务器概述 》

-2.1 什么是游戏服务器

--2.1 什么是游戏服务器

--单选题

-2.2 游戏服务器的和分类发展

--2.2 游戏服务器的和分类发展

--单选题

-2.3 核心技术和实现难点

--2.3 核心技术和实现难点

--单选题

-2.4 设计原理与方法论

--2.4 设计原理与方法论

--单选题

第三章 《《三维几何学基础》 》

-3.1 三维坐标系统

--3.1 三维坐标系统

--多选题

-3.2 向量与运算

--3.2 向量与运算

--单选题

-3.3 矩阵与线性变换

--3.3 矩阵与线性变换

--双选题

-3.4 四元数

--3.4 四元数

--多选题

第四章 《游戏循环及实时模拟》

-4.1 游戏循环概述(上)

--4.1 游戏循环概述(上)

--多选题

-4.2 游戏循环概述(下)

--4.2 游戏循环概述(下)

--单选题

-4.3 《无尽之路》的实现

--4.3 《无尽之路》的实现

--单选题

-4.4 支撑游戏的功能

--4.4 支撑游戏的功能

--选择题

-4.5 支撑游戏的机制与系统

--4.5 支撑游戏的机制与系统

--多选题

第五章 《随机数在游戏中的应用》

-5.1 基本介绍

--5.1 基本介绍

--单选题

-5.2 随机数生成器

--5.2 随机数生成器

--单选题

-5.3 随机数分布与应用

--5.3 随机数分布与应用

--单选题

第六章 《游戏性系统》

-6.1 什么是游戏玩法开发

--6.1 什么是游戏玩法开发

--单选题

-6.2 建立愿景 Vision

--6.2 建立愿景 Vision

--单选题

-6.3 划定边界 Scope

--6.3 划定边界 Scope

-6.4 迭代 Iteration

--6.4 迭代 Iteration

--单选题

-6.5 迭代 Iteration+抛光Polish

--6.5 迭代 Iteration+抛光Polish

--单选题

第七章 《实时图形渲染管道》

-7.1实时图形渲染管道 宏观渲染系统

--7.1实时图形渲染管道 宏观渲染系统

--单选题

-7.2实时图形渲染管道 应用阶段

--7.2实时图形渲染管道 应用阶段

--单选题

-7.3实时图形渲染管道 几何阶段

--7.3实时图形渲染管道 几何阶段

--单选题

-7.4实时图形渲染管道 光栅化阶段

--7.4实时图形渲染管道 光栅化阶段

--单选题

-7.5实时图形渲染管道 总结 参考

--7.5实时图形渲染管道 总结 参考

第八章 《材质着色与光照》

-8.1 物理回顾1

--8.1 物理回顾1

--单选题

-8.2 物理回顾2

--8.2 物理回顾2

--单选题

-8.3 材质 1

--8.3 材质 1

-8.4 材质 2

--8.4 材质 2

-8.5 材质3

--8.5 材质3

-8.6局部光照

--8.6局部光照

--单选题

-8.7 全局光照

--8.7 全局光照

--单选题

第九章 《游戏动画》

-9.1 动画介绍

--9.1 动画介绍

--多选题

-9.2 游戏动画介绍

--9.2 游戏动画介绍

-9.3 动画技术类型

--9.3 动画技术类型

--多选题

-9.4 骨骼蒙皮动画

--9.4 骨骼蒙皮动画

--多选题

-9.5 动画流水线

--9.5 动画流水线

--多选题

-9.6 动画前沿趋势

--9.6 动画前沿趋势

--多选题

第十章 《网络同步技术》

-10.1 .基本概念

--10.1 .基本概念

--多选题

-10.2 设计目标

--10.2 设计目标

--多选题

-10.3 传输数据分析

--10.3 传输数据分析

--多选题

-10.4 常用同步方案 1

--10.4 常用同步方案 1

-10.4 常用同步方案 2

--10.4 常用同步方案 2

-10.4 常用同步方案 3

--10.4 常用同步方案 3

-10.4 常用同步方案 4

--10.4 常用同步方案 4

--多选题

-10.5 方案对比

--10.5 方案对比

--多选题

第十一章 《游戏常用几何学》

-11.1 基本图元

--11.1 基本图元

--单选题

-11.2 图元距离(上)

--11.2 图元距离(上)

--单选题

-11.2 图元距离(下)

--11.2 图元距离(下)

--单选题

-11.3 图元相交测试+ 其他几何方法

--11.3 图元相交测试+ 其他几何方法

--单选题

第十二章 《游戏物理模拟》

-12.1 著名物理引擎介绍

--12.1 著名物理引擎介绍

--单选题

-12.2 物理引擎原理(上)

--12.2 物理引擎原理(上)

--单选题

-12.3 物理引擎原理(下)

--12.3 物理引擎原理(下)

--单选题

-12.4 游戏中的物理体

--12.4 游戏中的物理体

--单选题

-12.5 物理引擎使用入门

--12.5 物理引擎使用入门

--单选题

第十三章 《开发工具 》

-13.1开发语言

--13.1开发语言

--单选题

-13.2 开发环境

--13.2 开发环境

--单选题

-13.3 腾讯开发组件介绍

--13.3 腾讯开发组件介绍

--单选题

-13.4 网络通信+业务框架介绍

--13.4 网络通信+业务框架介绍

--多选题

第十四章 《分布式系统设计 》

-14.1 进程间通信(上)

--14.1 进程间通信(上)

-14.2 进程间通信(下)

--14.2 进程间通信(下)

-14.3 通信格式

--14.3 通信格式

-14.4 并发模型

--14.4 并发模型

-14.5 超时处理

--14.5 超时处理

-14.6 大系统小做(上)

--14.6 大系统小做(上)

--多选题

-14.7 大系统小做(下)

--14.7 大系统小做(下)

-14.8 架构层面的技术支持(上)

--14.8 架构层面的技术支持(上)

--单选题

-14.9 架构层面的技术支持(下)

--14.9 架构层面的技术支持(下)

-14.10 分布系统的关键能力

--14.10 分布系统的关键能力

--多选题

第十五章 《游戏人工智能》

-15.1 游戏人工智能综述

--15.1 游戏人工智能综述

-15.2 人工智能在游戏中主要方法 上

--15.2 人工智能在游戏中主要方法 上

--多选题

-15.3人工智能在游戏中主要方法 (下)

--15.3人工智能在游戏中主要方法 (下)

-15.4 人工智能在游戏制作中的应用领域1

--15.4 人工智能在游戏制作中的应用领域1

--多选题

-15.5 人工智能在游戏制作中的应用领域2

--15.5 人工智能在游戏制作中的应用领域2

-15.6 人工智能在游戏制作中的应用领域3

--15.6 人工智能在游戏制作中的应用领域3

--多选题

-15.7 人工智能在游戏运营中的应用实践(上)

--15.7 人工智能在游戏运营中的应用实践(上)

-15.8 人工智能在游戏运营中的应用实践(下)

--15.8 人工智能在游戏运营中的应用实践(下)

--多选题

第十六章 《游戏支撑系统 》

-16.1 游戏支撑系统(1)

--16.1 游戏支撑系统(1)

--单选题

-16.2 游戏支撑系统(2)

--16.2 游戏支撑系统(2)

--单选题

-16.3 游戏支撑系统(3)

--16.3 游戏支撑系统(3)

--单选题

-16.4 游戏支撑系统(4)

--16.4 游戏支撑系统(4)

--单选题

-16.5 游戏支撑系统(5)

--16.5 游戏支撑系统(5)

第十七章 《游戏逻辑服务器和反外挂》

-17.1 游戏逻辑服务器(上)

--17.1 游戏逻辑服务器(上)

--单选题

-17.1 游戏逻辑服务器(下)

--17.1 游戏逻辑服务器(下)

-17.2 外挂与反外挂(上)

--17.2 外挂与反外挂(上)

-17.2 外挂与反外挂(下)

--17.2 外挂与反外挂(下)

--多选题

第十八章 《运行环境和运维 》

-18.1运行环境

--18.1运行环境

--多选题

-18.2物理部署

--18.2物理部署

--多选题

-18.3系统的可运维性

--18.3系统的可运维性

--多选题

-18.4运维案列分析

--18.4运维案列分析

--多选题

13.2 开发环境笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。