1. 手机游戏是用什么开发的
手机游戏一般是用Unity、COCOS、java、C语言开发的,但也要看具体情况,有的手机游戏也可能是用HTML5开发的。
flash、java游戏俗称小游戏,基本上都是一些休闲类的、傻呆萌的情节和操作,这类游戏开发相对比较简单,会javascript、flash cs、java就可以进行开发了。
开发游戏我们经常听到的是游戏引擎,一个游戏引擎决定一个游戏最基本的东西操作和效果,那么一般的游戏开发架构从底到顶一般是Direct X游戏引擎。
Direct X可是大名鼎鼎相当于所有显卡的一个统一接口,为游戏提供一个利用硬件渲染的编程模型,但Direct X接口为了追求高性能功能非常简单基本的绘图功能,不利于游戏的高效开发。
此时就需要根据游戏特点对其进行适当的取舍和封装,实现一组更高抽象的游戏开发接口和框架,可以理解成游戏引擎中的图形引擎。这部分的开发一般使用的语言是C、C++和少量的汇编语言。
2. 游戏编程里面有哪些经典或者很酷的算法
我挑一些有趣的算法,希望尽量提及相关算法在游戏中的应用。
1、光栅化
Bresenham's line algorithm [1]:经典的绘画直线算法,后来还可以稍作修改用于绘画圆弧[2],都不用三角函数或除数,只需用整数加法、减法和乘法。
Perspective-Correct Texture Mapping [3]:透视正确的光栅化纹理贴图算法是1980才出现的。第一代Quake引擎引入后,才开始支持不垂直的墙、不水平的地面天花。
Polygon Rasterization with Edge Function [4]:Bresenham算法如果用来画多边形,两个多边形的共边会被重绘。后来发明了使用简单的edge function去解决这个问题,而且适合并行的硬件实现。现在的GPU都是使用这个算法。
2、全局光照
Precomputed Radiance Transfer (PRT) with Spherical Harmonics(SH)[5]:储存静态环境对于各个方向光源的漫反射数据,可以实现动态低频光源的全局光照效果。这种表示方式非常神奇。Halo 3也使用到这种技术[6]。
Screen-space Ambient Occlusion (SSAO)[7]:Crytek提出的首个屏幕空间环境光遮蔽算法,之后引来大量的研究及改进算法。也有用类似的概念去做近距离的反射,如SSDO[8]。
Light Propagation Volume (LPV)[9]:Crytek提出的首个动态全局光照算法,不需要预计算。但要在体积数据中计算传播,性能较慢,所以之后再优化成 Cascaded LPV [10]。
Voxel Cone Tracing [11]:也是不需要预计算的动态全局光照算法。把场景动态生成层阶式的体素数据(像mipmap那样的pre-filtering),从光源视角计算直接光照,然后逐像素追踪这组数据获取非直接光照。结果比LPV精确,也可以做到光泽反射(glossy reflection)。
3、阴影
Shadow Volume [12]:阴影体积是1977年发表的阴影技术,在屏幕空间光栅化阴影体积,可准确判断每个屏幕像素是否在阴影之内。可以处理平行光源和点光源的阴影。1991年[13]讲述如何用stencil buffer来实现此算法,适合在图形加速硬件(当时还没有所谓GPU)上使用。但很多人发现,如果摄像机在阴影体积内,就会出错。在1998至2000年有多人发现一种解决方法,需要把John Carmack在2000年的电邮[14]中提及这个想法,后来成为2004年《毁灭战士3(Doom 3)》引擎的重要特征,因他把这项技术发扬光大,即使他非首个发明人,此项技术通常被称为Carmack's Reverse。
Parallel Split Shadow Map (PSSM) [15][16] / Cascaded Shadow Map(CSM)[17]:虽然Shadow Volume很吸引,但它需要大量的内存频宽,而且通常不能实现软阴影。后来大部分游戏改为使用Shadow Map(阴影贴图),这更适合GPU,并且可以通过多次采样(Percentage Closer Filtering, PCF)来实现软阴影。然而,阴影贴图也有许多问题,例如远近景物都采用同一张纹理,就会令到近景的精度不足,出现锯齿。2006年香港中文大学的博士生Fan Zhang等人发表了一种 PSSM 算法 [15],为不同距离的场景渲染多张阴影贴图,在采样的时候按距离决定使用那一张。这个方法的变种CSM,在切割上和PSSM有点差异,被广泛使用于现时大部分游戏引擎中。
Variance Shadow Map(VSM)[18]:之前谈到用PCF做软阴影,它的坏处就是要做多次采样。那么可否把阴影贴图直接模糊化来实现软阴影?答案是否定的。但是在2006年有学者发表了VSM,它是一种用统计方式来逼近软阴影的效果。
3. 游戏中的常用的寻路算法有哪些
f(n)=g(n)+h(n) 从起始点到目的点的最佳评估值
– 每次都选择f(n)值最小的结点作为下一个结点,
直到最终达到目的结点
– A*算法的成功很大程度依赖于h(n)函数的构建
?;) = g(n? 在各种游戏中广泛应用 Open列表和Closed列表
– Open列表
A*算法
? h(n) = 从结点n到目的结点的耗费评估值,启发函数
?,程序返回n
else 生成结点n的每一个后继结点n;
foreach 结点n的后继结点n;{
将n’的父结点设置为n
计算启发式评估函数h(n‘)值,评估从n‘到node_goal的费用
计算g(n‘) = g(n) + 从n’到n的开销
计算f(n?? 在算法启动时,Closed列表为空 A* 算法伪代码初始化OPEN列表
初始化CLOSED列表
创建目的结点;称为node_goal
创建起始结点;称为node_start
将node_start添加到OPEN列表
while OPEN列表非空{
从OPEN列表中取出f(n)值最低的结点n
将结点n添加到CLOSED列表中
if 结点n与node_goal相等then 我们找到了路径;)
if n‘位于OPEN或者CLOSED列表and 现有f(n)较优then丢弃n’ ;) + h(n?? 包含我们还没有处理到的结点
? g(n) = 从初始结点到结点n的耗费
?? 包含我们已经处理过的结点
,处理后继n’
将结点n‘从OPEN和CLOSED中删除
添加结点n‘到OPEN列表
}
}
return failure (我们已经搜索了所有的结点?? 启发式搜索
– 在搜索中涉及到三个函数
??? 我们最开始将起始结点放入到Open列表中
– Closed列表
?
4. 游戏开发,需要学习什么编程语言
主要是C#。
游戏编程也是编程,都是需要敲代码的。所以基本的语言基本功是不能少的,比如C语言或者C++或者C#至少要精通其中一门。精通到什么地步呢,基本数据结构和基础的算法还有设计模式你得非常熟悉。这样算是入门了。
接下来你就可以选择一个游戏引擎了,市面上主流的游戏引擎有两种一个Unity3D一个虚幻四。但是这两款引擎的脚本语言并不一样,Unity是C#虚幻四是C++所以在学习之前要想好使用引擎开发什么类型的游戏。
主要学的内容如下:
1.游戏程序设计:C++程序设计入门;基本数据类型和输入输出;流程控制语句;数组、指针和引用、函数;程序结构和书写规;范结构体和联合体、类;继承与多态;异常处理与程序调试。
2.算法与数据结构:算法分析;数据结构;基本算法;STL的概念与使用;静态库与动态库;XML库的使用。
3.Win32程序设计:Windows程序入门;Windows消息;GDI绘图游戏工具与MFC;网络编程基础。
4.游戏数学和智能应用:游戏中的坐标系;矢量、矩阵;几何碰撞;物理模拟;人工智能与寻路算法。
5.2D游戏技术与应用:2D游戏技术概论;游戏地图系统;GUI系统;战斗系统设计;任务系统;优秀的声音引擎BASS;Cocos2D-X引擎;Box2D物理引擎。
互联网行业目前还是最热门的行业之一,学习IT技能之后足够优秀是有机会进入腾讯、阿里、网易等互联网大厂高薪就业的,发展前景非常好,普通人也可以学习。
想要系统学习,你可以考察对比一下开设有相关专业的热门学校,好的学校拥有根据当下企业需求自主研发课程的能力,能够在校期间取得大专或本科学历,中博软件学院、南京课工场、南京北大青鸟等开设相关专业的学校都是不错的,建议实地考察对比一下。
祝你学有所成,望采纳。
5. 一般迷宫游戏用到什么算法
状压DP,或者记忆化搜索。
一般的就是F[i,j,k]表示站在i,j点,当前已经得到了k的状态。然后转移。
6. 一般游戏编程用什么语言和软件
下面是游戏开发十大编程语言的列表。
1、C类#
C语言现在被广泛应用于许多游戏引擎中,是最流行的游戏开发语言之一。它有一个XNA框架、一套微软工具和运行时环境,使它特别适合Xbox或windows上的游戏。如果你想使用monogame在几乎任何平台上发布游戏,这是一种很好的语言。
2、C类++
C++是一种面向对象的语言,被认为是最难学习的语言之一,但它是游戏开发人员的重要语言。它允许对硬件和图形进程进行更直接的控制,这对行业很重要,是一些流行游戏引擎的流行语言。它还提供了对参数和内存管理的大量控制,从而提高了游戏的性能和用户体验。
3、Java
Java使用与C++相同的面向对象原则,但提供了更广泛的系统。Java代码通常在Java虚拟机(JVM)上运行,并转换为可在任何系统上执行的通用字节码。因此,Java是为数不多的能够让开发人员为任何给定系统开发游戏的游戏编程语言之一。它是最好的游戏编程语言之一。
4、JavaScript
JavaScript是最流行的游戏编程语言之一,尤其是作为一种在线交互语言。使用JavaScript,可以更容易地将代码与传统的网络技术(如HTML和CSS)集成,从而导致越来越多的跨平台移动游戏。
5、HTML5
HTML5已经成为互联网上最常见的游戏编程语言之一。你今天玩的大多数手机游戏都使用这种标记语言。使用JavaScript很容易创建复杂的基于web的游戏。该语言简单易学,不一定需要学习复杂的算法编程知识,因此成为游戏开发者的热门选择。
6、SQL语言
SQL被玩家用来访问后端帐户并在服务器上执行其他操作。有新的语言,库,框架,特别是AR,VR,图形,物理和游戏。
7、Python
Python是另一种提供OOP方法的语言,是游戏开发人员使用的最易于使用的通用编程语言之一。它有一个pyGame框架,允许程序员快速开发游戏原型。
8、Rust
铁锈被吹捧为C的继承者之一。它主要被Mozilla基金会用作系统编程语言。它具有面向对象到面向数据的方法,有助于游戏开发。
9、UnrealScript
Unrealscript是unreal引擎的本机脚本语言。它结合了面向对象、多重继承和功能丰富的游戏等复杂功能。该语言支持所有主要的游戏平台,如微软Windows、MacOS、Linux、steamos、Android和PlaystationVR。
10、Lua
由于语言结构和语法简单,Lua正成为游戏界最流行的语言之一。它是一种多平台脚本语言,许多现代游戏引擎都使用Lua作为主要的游戏设计编程语言。
7. 游戏开发中会用到哪些常用AI算法
游戏开发指利用计算机编程语言,如C编程语言、C++、java等,编写计算机、手机或游戏机上的游戏。 目前流行的游戏开发语言为C++编程语言,目前流行的游戏开发接口为DirectX9.0,还有OpenGL、SDL(Simple DirectMedia Layer)等。现在手机上玩的游戏分为Android与IOS两种不同平台,分别是用eclipse/MyEclipse和xcode。现在也流行一些跨平台的编程引擎,例如cocos2d-x、unity 3D等。
接下来,再看看游戏开发的课程,游戏开发的课程除了理论知识还包括软件的操作。
C++程序基础:通过学习C++语言,奠定编程基础。使用VS.net2005编译工具,高效构建代码。
算法与数据结构:通过学习算法与数据结构的基本概念,了解常用的数据结构及相关的抽象数据定义,认识计算机求解的基本思路与方法。
Win32程序入门:通过API和MFC的学习,熟悉Windows环境下程序设计基本方法。通过使用DirectX绘制2D图形。
游戏数学和智能应用:游戏中的坐标系,矢量、矩阵,几何碰撞,物理模拟,人工智能与寻路算法。
2D游戏技术与应用:2D 游戏技术概论,游戏地图系统,GUI 系统,战斗系统设计,任务系统优秀的声音引擎 BASS,Cocos2D-X 引擎,Box2D 物理引擎。
游戏开发的常用软件有C++、DirectX、Box2D、Cocos2d-x、Unity,不能说哪款最好用,因为这是游戏开发过程中都要用到的软件,必须都精通。
C++是在C语言的基础上开发的一种通用编程语言,应用广泛。
DirectX,(Direct eXtension,简称DX)是由微软公司创建的多媒体编程接口。
Box2D是一个用于模拟2D刚体物体的C++引擎。zlib许可是一个自由软件授权协议,但并非left。
Cocos2d-x是一个开源的移动2D游戏框架,MIT许可证下发布的。这是一个C++ Cocos2d-iPhone项目的版本。
Unity是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。
8. 各种类型的2D游戏里一般要用到什么复杂的算法
游戏类型(Game Genres),通常用于分类电子游戏,是一种分辨游戏之间区别的方法。世界上并没有统一的分类方法。游戏类型主要分为6类:动作、冒险、模拟、角色扮演、休闲、体育,他们各有几十种分支,形成了庞大的“游戏类型树”。 电子游戏分类 RPG=Role-playing Game:角色扮演游戏 由玩家扮演游戏中的一个或数个角色,有完整的故事情节的游戏。玩家可能会与冒险类游戏混淆,其实区分很简单,RPG游戏更强调的是剧情发展和个人体验,一般来说,RPG可分为日式和美式两种,主要区别在于文化背景和战斗方式。日式RPG多采用回合制或半即时制战斗,如《最终幻想》系列,大多国产中文 RPG也可归为日式RPG之列,如大家熟悉的《仙剑》、《剑侠》等;美式RPG如《暗黑破坏神》系列。 ACT=Action Game:动作游戏 玩家控制游戏人物用各种武器消灭敌人以过关的游戏,不追求故事情节,如熟悉的《超级玛里》、可爱的《星之卡比》、华丽的《波斯王子》等等。电脑上的动作游戏大多脱胎于早期的街机游戏和动作游戏如《魂斗罗》、《三国志》、《鬼泣》系列等,设计主旨是面向普通玩家,以纯粹的娱乐休闲为目的,一般有少部分简单的解谜成份,操作简单,易于上手,紧张刺激,属于“大众化”游戏。 AVG=Adventure Game:冒险游戏 由玩家控制游戏人物进行虚拟冒险的游戏。与RPG不同的是,AVG的特色是故事情节往往是以完成一个任务或解开某些迷题的形式出现的,而且在游戏过程中刻意强调谜题的重要性。AVG也可再细分为动作类(AAG)和解迷类两种,动作类AVG(AAG)可以包含一些格斗或射击成分如《生化危机》系列、《古墓丽影》系列、《恐龙危机》等;而解迷类AVG则纯粹依靠解谜拉动剧情的发展,难度系数较大,代表是超经典的《神秘岛》系列。 AAG=Act Adventure Game:动作冒险游戏 为冒险游戏的一个分支。但非常流行,自成一体,大有超过图形类AVG之势。故单独列出。 SLG=Simulation Game:策略游戏 玩家运用策略与电脑或其它玩家较量,以取得各种形式胜利的游戏,或统一全国,或开拓外星殖民地。策略游戏可分为回合制和即时制两种,回合制策略游戏如大家喜欢的《三国志》系列、《樱花大战》系列;即时制策略游戏如《命令与征服》系列、《帝国》系列、《沙丘》等。后来有些媒体将细分出模拟经营,即SIM(simulation)类游戏,如《模拟人生》、《模拟城市》、《过山车大亨》、《主题公园》等。TCG(养成类)游戏,比如《明星志愿》等。 SRPG=Simulation Role-playing Game:战略类角色扮演 原本角色扮演和战略应该不能结合,但是如《火焰纹章》之类的游戏,因为操控小队进行大地图回合制战斗极具战略型(还因此被称为战棋类游戏)而且对人物进行培养扮演参与剧情也是很重要的游戏内容因此被玩家划归为是SRPG,可以说喜欢玩的人不多,人气不够。 RTS=Real-Time Strategy Game:即时战略游戏 本来属于策略游戏SLG的一个分支,但由于其在世界上的迅速风靡,使之慢慢发展成了一个单独的类型,知名度甚至超过了SLG,有点像现在国际足联和国际奥委会的关系。代表作有《红色警戒》系列、《魔兽争霸》系列、《帝国时代》系列、《星际争霸》等等。后来,从其上又衍生出了所谓“即时战术游戏”,多以控制一个小队完成任务的方式,突出战术的作用,以《盟军敢死队》为代表。 FTG=Fighting Game:格斗游戏 由玩家操纵各种角色与电脑或另一玩家所控制的角色进行格斗的游戏。按呈画技术可再分为2D和3D两种,2D格斗游戏有着名的《街霸》系列、《侍魂》系列、《拳皇》系列等;3D格斗游戏如《铁拳》、《高达格斗》等。此类游戏谈不上什么剧情,最多有个简单的场景设定,或背景展示,场景、人物、操控等也比较单一,但操作难度较大,主要依靠玩家迅速的判断和微操作取胜。 STG= Shooting Game:射击类游戏 这里所说的射击类,并非是类似《VR特警》的模拟射击(枪战),而是指纯的飞机射击,由玩家控制各种飞行物(主要是飞机)完成任务或过关的游戏。此类游戏分为两种,一叫科幻飞行模拟游戏(Science-Simulation Game),非现实的,想象空间为内容,如《自由空间》、《星球大战》系列等;另一种叫真实飞行模拟游戏(Real- Simulation Game),以现实世界为基础,以真实性取胜,追求拟真,达到身临其境的感觉,如《Lockon》系列、《DCS》、《苏-27》等等。 FPS=First Personal Shooting Game:第一人称视角射击游戏 严格来说它是属于动作游戏的一个分支,但和RTS一样,由于其在世界上的迅速风靡,使之展成了一个单独的类型,典型的有使命召唤系列、DOOM系列、QUAKE系列、《虚幻》、《半条命》、《CS》……不胜枚举。 PZL=Puzzle Game:益智类游戏 Puzzle的原意是指以前用来培养儿童智力的拼图游戏,引申为各类有趣的益智游戏,总的来说适合休闲,最经典的嘛~就是大家耳熟能详的《俄罗斯方块》。 体育竞技 模拟各种体育赛事的游戏。比如《实况足球》等。 RCG=Racing Game:竞速游戏[也有称作为RAC的] 在电脑上模拟各类赛车运动的游戏,通常是在比赛场景下进行,非常讲究图像音效技术,往往是代表电脑游戏的尖端技术。惊险刺激,真实感强,深受车迷喜爱,代表作有《极品飞车》、《山脊赛车》、《摩托英豪》等。另一种说法称之为“Driving Game”。目前,RCG内涵越来越丰富,出现了另一些其他模式的竞速游戏,如赛艇的,赛马等。 CAG=Card Game:卡片游戏 玩家操纵角色通过卡片战斗模式来进行的游戏。丰富的卡片种类使得游戏富于多变化性,给玩家无限的乐趣,代表作有着名的《游戏王》系列,包括卡片中国游《武侠Online》,从广意上说《王国之心》也可以归于此类。 TAB=Table Game:桌面游戏 顾名思义,是从以前的桌面游戏脱胎到电脑上的游戏,如各类强手棋(即掷骰子决定移动格数的游戏),经典的如《大富翁》系列;棋牌类游戏也属于TAB,如《拖拉机》、《红心大战》、《麻将》等等。 MSC=Music Game∶音乐游戏 培养玩家音乐敏感性,增强音乐感知的游戏。伴随美妙的音乐,有的要求玩家翩翩起舞,有的要求玩家手指体操,例如大家都熟悉的跳舞机,就是个典型,目前的人气中国游《劲乐团》也属其列。 WAG=Wap Game:手机游戏 目前游戏随处可以玩,连手机也必带休闲游戏,中国民最喜欢手机游戏的种类,益智类比率最高,其次依次为动作类、战略类、模拟类、射击类。列举几个手机游戏例子:《金属咆哮》、《FF7 前传》等。 MUD=泥巴游戏 主要是依靠文字进行游戏的游戏,图形作为辅助。1978年,英国埃塞克斯大学的罗伊?特鲁布肖用DEC-10编写了世界上第一款MUD游戏—— “MUD1”,是第一款真正意义上的实时多人交互中国络游戏,这是一个纯文字的多人世界。(这可能就是MUD的命名来源吧)其他代表作有:《侠客行》、《子午线59》、《万王之王》
9. 游戏一般用什么编程语言开发
Unity。语言:C#,Lua。
UE4。语言:蓝图,C++
H5游戏,例如微信小游戏、网页游戏。主要用到JavaScript和相关技术
其他。独立游戏圈流行的MonoDevelop(C#)、Love2D(Lua)等等;还有大厂采用自研引擎的,但是近几年大量转向UE4和Unity。
现代游戏开发,绝大部分人都会采用成熟引擎来制作,并不是从0开始写起。
对游戏引擎来说,编程语言并不重要。学习编程和学习游戏开发有很大重叠,但并不是会编程就会开发游戏,反过来也还是不对。
客观的说,引擎的使用方法是必学的,编程技术也要基本合格。
10. 大鱼吃小鱼游戏中用到过哪些算法
大鱼吃小鱼游戏中用到过ZooKeeper的算法。
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现(Chubby是不开源的),它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户 。
Zookeeper一个最常用的使用场景就是用于担任服务生产者和服务消费者的注册中心,服务生产者将自己提供的服务注册到Zookeeper中心,服务的消费者在进行服务调用的时候先到Zookeeper中查找服务,获取到服务生产者的详细信息之后,再去调用服务生产者的内容与数据。
ZooKeeper 的架构图中我们需要了解和掌握的主要有:
(1)ZooKeeper分为服务器端(Server) 和客户端(Client),客户端可以连接到整个 ZooKeeper服务的任意服务器上(除非 leaderServes 参数被显式设置, leader 不允许接受客户端连接)。
(2)客户端使用并维护一个 TCP 连接,通过这个连接发送请求、接受响应、获取观察的事件以及发送信息。如果这个 TCP 连接中断,客户端将自动尝试连接到另外的 ZooKeeper服务器。
客户端第一次连接到 ZooKeeper服务时,可以接受这个连接的 ZooKeeper服务器会为这个客户端建立一个会话。当这个客户端连接到另外的服务器时,这个会话会被新的服务器重新建立。
(3)上图中每一个Server代表一个安装Zookeeper服务的机器,即是整个提供Zookeeper服务的集群(或者是由伪集群组成)。