Fork me on GitHub 打赏

游戏开发中的专业术语

本文整理了网络/游戏/编程相关的专业术语,作为游戏开发中的辅助参考资料,后期如果遇到其他的术语还会更新。

16毫秒 / 帧速率

Frame Rate。

电子游戏使用的光栅显示器是普通电视时,图像一般每秒更新60次。图像更新的时间叫做帧,1秒60次即1次16毫秒(0.0167秒 = 16.7毫秒)。

16毫秒是玩家可以识别的游戏画面改变的最短时间间隔。

 

ARPG

Action Role Playing Game。

角色扮演类游戏中动作性较强的实时游戏,也指包含冒险游戏特征的游戏。

 

bot

外挂。模拟游戏玩家自动访问游戏服务器、高效率地进行游戏、积累分数以及进行恶意的经济欺诈的程序。

测试外挂是指开发者准备的用来自动化测试的客户端程序。

 

CPU周期

CPU Cycle。

CPU处理操作的最小单位。1GHz的CPU一秒有10亿个CPU周期,以执行的命令数而言,1秒可以执行10亿次。

根据命令类型的不同,执行需要的CPU周期少则不到1个周期,多则有几百个。

 

FPS

First-Person Shooter。

第一人称射击游戏。

 

I / O

Input / Output。

输入 / 输出。包括网络 I / O、磁盘 I / O等。服务器程序的I / O基本都是网络I / O。

 

MMO

Massively Multiplayer Online。

大型多人网络游戏。也叫MMOG。

 

MO

多人网络游戏。也叫MOG。

 

RPC

Remote Procedure Call。

远程过程调用,是指调用其他计算机的处理。

例如,当客户端需要命令服务器做某个处理然后得到返回结果时会使用该技术。

 

RPG

Role Playing Game。

角色扮演游戏,根据游戏背景设定,由玩家扮演特定角色的游戏。

 

TCP

Transport Control Protocol。

传输控制协议,支撑整个互联网的可靠数据通信协议。可以根据需要续传IP的数据包,确保大的数据可以正常传输。但是,在连接速度较慢时,为了提高传输效率需要占用大量的内存。

 

并行

Parallel。

包括物理上的多个处理同时进行,以及时间上的并发(Concurrent)处理。就像CPU中的命令和任务之间的区别。通过并行处理提高速度比较困难,所以基本方针是充分考虑处理器计算能力,通过在策划层次进行讨论,或者在算法上下功夫减少计算量。

 

部署

Deploy。

是指部署应用程序。服务器部署是指将最新版服务器程序安装到各个服务器上来更新版本的相关操作。

 

持久性

Persistent。

在数据库中,持久性是指需要持久化的时间长度,包括游戏玩法中必要的时间和游戏进行所需的时间。竞速游戏的数据一般只需要保持几分钟,之后就可以丢弃,所以持久性较低,需要保存的数据量也比较小,但是MMORPG等不断进行的游戏需要较高持久性,数据量也比较大。根据持久性需求的不同,数据应该以什么形式、用什么物理介质来保存也会有所区别。

 

带宽 

Bandwidth。

是指网络传输数据的传输速率。也叫带宽幅度。

 

多进程编程

Multi-Process Programming。

灵活使用多个进程的编程方式。同时运行多个进程可以有效利用多核CPU的处理能力。

 

辅助系统

Additonal System。

相对于游戏主体内容以外的辅助功能系统,例如玩家匹配、玩家成绩管理(积分管理)、排名以及通信功能等。

多数情况下可以使用第三方的程序或者服务。

 

负荷

Load。

是指CPU或者网络等承载的工作量。例如,处理复杂计算时CPU的负荷比较高。发送和接收大量数据时网络的负荷较高。许多场合都可以使用,例如CPU负荷、I/O负荷以及服务器负荷等。

 

负载均衡

Load Balancing。

是指分散负荷。例如将一台数据库承担的负荷分散到多台数据库。

 

共享内存

Shared Memory。

是指在多个进程间共享内存数据。例如共享运动物体的坐标、种类以及运动方向等信息。

 

缓存

Cache。

为了高速读取数据而把数据暂时放在特殊区域。

例如,磁盘访问比较慢时,可以把文件内容放在(缓存在)内存中,这样就可以高速读取数据。

该机制被广泛应用在CPU缓存、缓存内存、浏览器缓存以及缓存服务器等地方。

 

进程

Process。

进程是指操作系统运行的程序的实体,和其他程序相分离,独立运行。进程与进程之间可以访问的资源(内存、Socket等)也是分离的。

 

进程间通信

Inter-Process Communication。

在多个进程间通信。是指多个进程间传送数据或共享数据的技术。

 

竞态条件

Race Condition。

是指同一个资源(内存地址等)被两个以上的使用者访问时发生的程序状态。会引起死锁(Dead Lock,互相等待对方处理结果的情况)等问题。

 

扩展性

Scalable。

是指可以扩展系统性能。

在网络游戏中需要应对用户的增长和饱和,所以希望性能和功能可以轻松扩展。

 

浏览器

Browser。

浏览软件。网络游戏中的游戏浏览器范围较广,泛指将服务器网站管理的游戏进度信息展示给玩家的软件。

例如使用C++语言开发的面向3D游戏的专用程序,或者Flash游戏使用的Google Chrome等Web浏览器。和一般浏览Web服务器数据的Web浏览器有所区别。

 

轮询

Polling。

定期询问数据是否送达或者是否接收到的机制。太过频繁的轮询会无端增加CPU的负荷。

 

瓶颈

Bottleneck。

系统中性能最弱的部分。系统的其他部分即使再快,如果有一个地方(瓶颈)处理比较慢,就会影响整体的性能。

 

冗余

Redumdancy。

作为预备而重复配置。

游戏数据的冗余是指将数据在不同地方重复保存(主数据和备份数据的关系)。

 

事件驱动

Event Driven。

在事件发生时进行处理的编程方式。事件的类型包括接收到数据、鼠标移动等。事件驱动的编程方式常用在网络开发和游戏开发中。

 

数据包

Packet。

数据的传输单位。数据包通信是指将数据分割并添加控制信息后发送、接收后再合并的通信方式。TCP协议的数据通信单位是数据段(Segment),UDP/IP协议为数据报(Datagram)。网络游戏开发会经常面临数据包延迟的挑战。

 

数据中心

Data Center。

安置提供服务的服务器设施。配备了维持服务器所必需的电源、空调和防灾设施。

 

套接字 API

Socket API。

处理网络文件描述符中的套接字 API。个别的函数/系统调用(socket、connect、accept)。

 

同时连接数

可以同时连接服务的用户数。

 

图元

Sprite。

是指电子游戏中使用的可以告诉显示的小图像。事先准备好玩家角色移动等状态的小图片,可以通过指定图像位置,在画面的任意位置显示角色。

 

吞吐量

Throughput

系统在一定时间内处理的数量。

 

网络拓扑

网络中所含的各个计算机以什么结构相连接。计算机是节点,连接叫做边界。包括星状结构、总线结构和网状结构等,可以帮助分析和设计网络结构。

 

文件描述符

在Unix系的操作系统中,除了文件以外,网络、块设备等操作系统管理的输入输出资源也采用了文件形式。

 

线程

Thread。

比进程更细分的程序执行单位。

 

延迟

处理所需要的时间。

 

游戏客户端

Game Client。

指玩家的PC或者游戏机等机器上安装的,启动后可以显示游戏画面、接受用户输入输出的软件。

 

游戏逻辑

Game Logic

指连接游戏进度信息和用户界面信息的算法。

 

云(Cloud)

在云计算中主要是指服务器端的计算机群。

在单纯的主机托管中,包括存储、负载均衡、付费系统、日志解析等服务器架构中的计算机资源可以根据需要即时调整。

 

在内存中

把数据放在内存中,可以在几个CPU时钟周期(几纳秒到几百纳秒之间)获取到数据的状态。

 

中间件

Middleware

将应用程序普遍使用的功能进行集成的专业化软件。

 

纵向扩展 / 横向扩展

纵向扩展是指增加内存、升级CPU等,通过提升单台服务器的性能来改善系统性能的方法。

横向扩展是指通过增加服务器台数来提供系统性能的方法。

 

阻塞/非阻塞

阻塞是指处理完成之前持续等待。

例如,收到数据前持续等待的程序(阻塞程序),在等待期间不能进行其他处理。

采用非阻塞(不持续等待)处理可以解决这个问题。也可以叫做同步调用和非同步调用。

 

posted @ 2018-08-19 20:10 Zoctopus_Zhang 阅读(...) 评论(...) 编辑 收藏
// function btn_donateClick() { var DivPopup = document.getElementById('Div_popup'); var DivMasklayer = document.getElementById('div_masklayer'); DivMasklayer.style.display = 'block'; DivPopup.style.display = 'block'; var h = Div_popup.clientHeight; with (Div_popup.style) { marginTop = -h / 2 + 'px'; } } function MasklayerClick() { var masklayer = document.getElementById('div_masklayer'); var divImg = document.getElementById("Div_popup"); masklayer.style.display = "none"; divImg.style.display = "none"; } setTimeout( function () { document.getElementById('div_masklayer').onclick = MasklayerClick; document.getElementById('btn_donate').onclick = btn_donateClick; var a_gzw = document.getElementById("guanzhuwo"); a_gzw.href = "javascript:void(0);"; $("#guanzhuwo").attr("onclick","follow('33513f9f-ba13-e011-ac81-842b2b196315');"); }, 900);