首页 热门攻略正文

如何用Box2D Library制作2D物理游戏_3

热门攻略 2024-11-25 0 游戏 可以 in

如何用Box2D Library制作2D物理游戏

大家好,今天我想和大家分享一下我在“如何用Box2D Library制作2D物理游戏”方面的经验。为了让大家更好地理解这个问题,我将相关资料进行了整理,现在就让我们一起来学习吧。

文章目录列表:

如何用Box2D Library制作2D物理游戏

2.我不是键盘车神!横评STEAM 模拟游戏

作者:Juan Felipe Belon Perez

从最热门游戏排行榜和flash游戏网站上,你能看到什么?许多2D游戏都有非常出色的物理学和美术设计。现在我们要学习那些游戏使用了什么物理学以及如何用Box2D制作它们。

除了知道是“什么”,更重要的是知道“如何做”,首先,我想问读者一个问题:如果你想复制物理游戏的机制或行为,你需要什么技术和方法?

一年以前,我问了自己同样的问题,《6 Dimensi 》就是问题的答案。这款游戏是一个创意的盒子,每一面都包含一组使用Box2D物理学再加上视觉美学技术制作的不同的游戏机制。在此,我将与大家分享这款游戏。我做这款游戏是为了改进游戏引擎Codea(是由Crabitron开发的),而我写了这篇教程是为了向大家介绍写实物理学、美术和游戏设计……共同提高我们的游戏开发水平。

在我的游戏中,我设计了6个面,借同样的思路,我将给大家介绍我运用了哪些从其他游戏中复制而来的物理、机制和美术技术。

1、形状

《Thomas was alone》、《愤怒的小鸟》、《蜡笔物理学》

crayon physics(from gamasutra)

在《蜡笔物理学》中,你可以在屏幕上用手指或鼠标作画,比如画圆、三角形、矩形等,当你松开鼠标/拿开手指,线条就会变成立体物理对象(在虚拟 中)。

这是怎么做的?

事实上相当简单,你要把鼠标/手指从开始到结束的绘画路径的各个坐标点保存起来,当释放事件发生,你就调用Box2D的一个根据这些点生成多边形的功能:

local body=physics.body(POLYGON, unpack( points ) )

你得先认识一下Box2D中的有什么形状:

POLYGON(多边形):

用于封闭形状如基本几何图形(非圆形),它使用一系列按各个API 的顺序排列的顶点(x,y)

CIRCLE(圆):

可以做球、水珠、星体,等等。

EDGE(边):

用于制作墙、地面、只有起点和终点的线段。

CHAIN(链):

与边相同,但你可以闭合它(像多边形但不是凸多边形)或不闭合它(像边但点超过2)

知道了刚体形状(body shape)后,你还要了解它们的不同行为,或叫作刚体类型(body types):

STATIC(静态):如名称所示,这种刚体会在 的x,y(地面、墙、柱基或绳基,等等)上保持静止不动。

DYNAMIC(动态):它与其他对象碰撞并移动

KINEMATIC(运动):碰撞但不随着动态对象移动,你只能通过改变它的x,y或者赋给它一个线性速度或对它施加力来使它移动。

真正的含义要在API的执行中理解,在本文中我使用这个是因为它是我能找到的最简单的代码了。但改变成任何语言的代码都非常简单,Box2D有几乎所有的语言版本(Flash as3、c++、objc、java、javascript、java+processing,等等)。

你得保存那个功能的结果为自定义变量如body.position(位置)、body.radius(半径)、body.linearVelocity(线性速度)、body.angularVelocity(角速度)、body.mass(质量),等等。

当刚体制作出来时,你可能想给它定义一些属性如restitution(恢复)、gravityScale(重力大小)和damping(衰减)等,这些属性可以赋给物理对象弹跳或漂浮状态。

Box2D的复杂度当然不止这些,具有这种物理游戏机制的其他游戏(《Magic Pen》)也比较复。在《Magic Pen》中,你可以画一些东西看起来像“node(节点)”的东西,但开发者叫它们“joint(关节)”,它们是用于连接刚体的,有若干种,取决于你想要的机制;还可以用于制作连接着的刚体之间的行为:

physics.joint(REVOLUTE,bodyA, bodyB,)

刚体围绕着一个固定点(anchor)旋转

例如:小车的车轮、《蜡笔物理学》和《Magic Pen》中的红色节点

physics.joint( PRISMATIC, bodyA, bodyB, anchorA, direction )

在刚体各自的固定点之间保持固定距离。两个joint之间的初始距离取决于虚拟空间中的这两个固定点之间的初始距离。给joint设置frequency率和damping率可以使它产生软弹簧的行为。

physics.joint(DISTANCE, bodyA, bodyB, anchorA, anchorB )

旋转joint迫使两个刚体沿着某两个固定点之间的轴作运动。允许伸缩运动,但限制两个刚体之间的相对旋转。

physics.joint( WELD, bodyA, bodyB, anchor )

接合joint限制两个刚体之间的运动和相对旋转,实际上使它们变成一个刚体。因为求解器的迭代性质,当置于压力之下时接合joint可能会变形;当承受的力太大或几个接合joint被链接成一个更大的对象时,接合joint可能会完全失效。

physics.joint( ROPE, bodyA, bodyB, anchorA, anchorB, maxLength )

绳子joint限制两个刚体之间的最大距离

例如:《割绳子》中的绳子

概述:

1)创建:带有触点刚体或盒子或任何其他多边形几何体(一组2D点:x,y),给它设置我们需要的物理属性(如《Thomas was alone》中的不同行为),比如,如果刚体是static类型,那么就可以设置它的质量、密度、重力大小,等等。

2)可选属性:依附(attach)到另一个刚体上,比如说,你可以把一个刚体依附到另一个被设置为传感器的static刚体(不影响游戏 的物理,但有碰撞事件),然后激活REVOLUTE joint的enableMotor(能动)属性,这还需要motorSpeed(速度)、maxMotorTorque(转矩)和maxMotorForce(力量),才能确定这个对象的旋转情况。

3)美术(Visual Art):有了刚体后,如果你想绘制它,不是作为形状绘制出来,而是具有颜色或纹理的实体,你就要把这些点三角化生成多边形网格模型(mesh)并给它设置颜色和贴材质。

例子:

Box2D_POLYG (from gamasutra)

thomas Was Alone Boxes(from gamasutra)

对于《Thomas Was Alone》中的盒子的行为,你可以设置一个简单的“juice”系统动画(从“中间帧”演化来的),这样,当你选择方块并按下跳跃键(或它与其他不同的物理刚体发生碰撞),它就会触发“juice command=animation”命令——产生挤压、摇晃等动画效果,各个动作都有自己的动画参数,比如质量、线性速度和衰减等物理属性。

box Examples(from gamasutra)

对于《愤怒的小鸟》,你可以通过给盒子定义不同的属性来制作一个关卡,绘制不同的子画面或制作不同材质的mesh,这样,在碰撞事件中,盒子刚体就会更加生动,通过改变盒子的纹理使之与当前状态更加协调(断掉的木头、快碎的玻璃,等)。

你可以用简单的刚体 lyForce(vec2(x,y)) 函数做出小鸟的发射。各种小鸟也都有自己的质量、衰减等属性……

2、水体

《Where is my water?》、《Sprinkle Ilsands》……

当你问网上的代码达人,如何制作上述游戏那样的水体物理时,他们会跟你谈Metaball(变形球):

Metaball_contact_sheet(from gamasutra)

但在游戏中使用Metaball技术既麻烦也不容易,而且要进行大量计算,除非你发现一些技巧和给它贴上一些美术材质。

那就是为什么运用水体物理学的游戏并不多见。几个月前我谈到这个问题,多亏了许多人的帮助,我得到了一个很棒的水体物理模型。在那个模型中,我用Box2D lib中的CIRCLE刚体做出动态球。

模型的代码很容易理解,球就是物理刚体,这些刚体具有使它产生水滴行为的参数如estitution(复原)、friction(摩擦)、damping(衰减)、linear elocity(线性速度),然后,我们用着色器(GLSL)的技术和材质绘制这些球,需要一个mesh,就像波纹fx或使用材质的其他GLSL着色器样本,我们把这个mesh的宽和高设为整个屏幕,从中间开始:

mesh:addRect(WIDTH / 2, HEIGHT / 2, WIDTH, HEIGHT)

这样,我们可以使用各个球的位置(x,y)在虚拟空间中绘制它们,各个球都有渐变的纹理效果。

for k,b in ipairs(balls) do

sprite(ballTexture, b.x, b.y)

end

然后,你得使用额外的扭曲模式,给这些着色的球添加材质,并与背景混合。

例子:

Box2D_water Physics(from gamasutra)

正如我所说的,各个球都有纹理(程序生成的渐变),可以与其他使用低级过滤器的球材质相融合。

where is my water(from gamasutra)

《Where is my water?》

你可以对各种行为使用不同的层,或者把所有液体或所有动态地形做成同一层来做出相同的水体fx,然后在着色器中改变过滤值和颜色(水体、岩浆,等等)。

举一个碰撞的例子,当两个刚体发生碰撞时,你必须查看碰撞的bodyA和bodyB是什么类型的刚体,如果一个是气体(gravityScale/mass/density值实际上是0,所以它会飘浮)而另一个是“冰”,那么你就把这个球变成水……

再举一个例子,如果bodyA是岩浆,那么bodyB就变成气体……就像改变球的属性一样简单,所以它会改变在box2d中响应,你要重新绘制游戏状态。

地形的例子:

静态地形可以是一个POLYGON刚体,它是用一个读取整个地形图象和建立一系列非透明像素的x,y (vec2)的函数制作的,然后返回给box2d函数。

动态地形可以只是一个mesh,当你碰它时,你会移除座标x,y上的触点,你必须用新的mesh重制这个物理刚体。

例如,当一个水滴(物理刚体CIRCLE)溅到一只 (具有激活的传感器的物体刚体),你必须删除那个水滴,并改变 的动画,使新状态呈现,直到它完全被水充满,然后删除 并记录结果。

水滴有很小的痕迹,这些是用linearVelocity和angularVelocity属性绘制的,你可以得到方向和速度,这样你就可以计算痕迹的角度和距离。

事实上,你想要什么行为都有。

sprinkle_islands_boss(from gamasutra)

在《Sprinkle Ilsands》中,水体着色器跟我们所学习的那个是不同的,它除了使用粒子fx,还多了linearVelocity属性。但行为可能还是一样的,当水球(刚体CIRCLE)击中火传感器,那么火就会熄灭,海里的水mesh也一样。至于岩石,你可以添加一些细节如颗粒效果等。

在这一面,我们找不到任何joint,那就是为什么它可能不必要,在《Sprinkle Ilsands》,软管就是绳子,这是我们在下一面中要分析的。

3、橡皮筋

《Contre Jour》、《割绳子》、《水果忍者》

我花了一个月时间才做出上述游戏的绳子原型,但我做完绳子后,我就觉得软刚体很容易做了,因为我更加理解接头了。

要制作一个逼真的绳子,你得创建一组刚体(CIRCLE或者POLYGON都行),把它们都依附在作为基座的STATIC刚体上。用于结合这些绳子刚体的joint有两种,DISTANCE或者REVOLUTE,但处于最末端(DYNAMIC)的连接基座(STATIC)的joint只能是制作弹力绳的ROPE joint。通过restitution 和frequency属性来调整resp e(反应)/damping(衰减)/elasticity(弹性)。

例子:

Box2D_ElasticRopes(from gamasutra)

为了制作一个软刚体,你得围绕另一个中心刚体(可以是STATIC或DYNAMIC)制作一系列CIRCLE刚体,它当然会影响其他刚体,如果你改变joint的类型,你会发现这个刚体会自动变形,你必须用mesh绘制整组刚体。

Contre-Jour(from gamasutra)

《Contre Jour》

在这款游戏中,你可以找到软刚体:可变形的地形;两种类型的绳子:弹性绳和固定绳。这些固定绳使用的技术比弹性绳的更高级。

snotDiagram(from gamasutra)

js Rope Segmented(from gamasutra)

《割绳子》

cut-the-rope(from gamasutra)

这是Box2d物理做绳子的最佳案例。游戏中的绳子也是动态的,你可以看到沿着基座到球的mesh,球的一端是连着糖果的。

你可以像上一个例子一样做出这种绳子,设置球(糖果)的物理属性—-mass、density、gravityScale,可以做出泡泡效果。你可以用多层混合模式绘制出泡泡。另一种方法是把刚体变成传感器,并且你自己的重力算法移动它,但我们到第五面时才学习这种技术。

如果泡泡-刚体-球与青蛙或蜘蛛碰撞,或者玩家触击到泡泡,泡泡就会爆炸,为此你要给泡泡添加爆炸动画并再次改变糖果的物理属性……

案例代码:

if (vec2:distance( bFrog_Mouth, bCandy ) < maxDistance) then

– 把青蛙的动画从“空闲”改为“吃”

– 暂停输入

– 补间并触发游戏结束动画

end

4、重力

在这一面,我们可以发现许多使用力来对抗重力的游戏,但这是一种游戏玩法。例如,你可以根据box2d的正弦函数生成简单的地形,它会返回链或边形状的STATIC刚体。

tiny wings 2(from gamasutra)

你可以用Box2d做出你自己的《Tiny Wings》。基本原理就是,球(CIRCLE刚体)在重力的作用下下落,你可以通过触击屏幕增加下落的linearVelocity(线性速度),当触击在山丘合适的部分(你可以查看你的正弦函数的高度)释放时,下落速度会增加……另一种方法是只使用力。

例子:

Box2D_JumpRun(from gamasutra)

为了绘制循环,给拾取、发热状态等添加颗粒效果。材质可以用程序成生随机颜 像做出来,用高斯噪声添加细节、边界,等等……

Jetpack-Joyride(from gamasutra)

《Jetpack Joyride》

你可以看出这款游戏的特征吗?如果你已经读过前面的例子了,那么你应该知道角色刚体球有相同的行为,你一定是用力对抗重力、各个飞行器的不同物理属性、导弹和各种交通工具,等等。

《Madcoaster》、《Rocket Chicken》、《Whale Trail》等游戏都是一样的。

但这个面还有其他机制,如行星物理、引力。

你可以使用简单的公式来模拟零重力physics.gravity(0,0),行量的吸引力如下图所示:

Box2D_Forces_Gravity(from gamasutra)

function Planet:attract(m)

– Direction of the force

local force=self.body.position – m.body.position

local d=force:len() —=m.body.position:dist(self.body.position)

force=force:normalize()

local dir=ec2(self.mass/m.body.mass, self.mass/m.body.mass)

– Magnitude of the force

local strength=(GRAVITY * self.mass * m.body.mass)/(d*d)

force=force * strength

m.body: lyForce(force)

stroke((1+math.floor(force.y))*110, (1+math.floor(force.x))*110, 10, 255)

– draw line between attractor/mover

line(m.body.x+force.x, m.body.y+force.y, (self.body.x), (self.body.y))

end

这个函数会使角色球绕着行星转。

5、线面

《拯救种子》、《蜡笔物理学》……

只有线:通过绘制线条,你可以做出形状类CHAIN的刚体和刚体类STATIC或DYNAMIC。

对于关卡设计,障碍物也是STATIC,可以是EDGE或POLYGON……

saving-seeds-hd-doodle-physics-screenshot(from gamasutra)

用那种结构,你可以复制出一款像《拯救种子》一样的游戏。

Box2D_Lines(from gamasutra)

代码和 面的是一样的,但你必须改变游戏的规则,你要从暂停的物理引擎开始,然后绘制和生成CHAIN静止形状,当玩家按下开始键时,游戏必须生成玩家的球(以及恢复、重力、质量等参数),重新开启物理引擎,只要一个指令(physics.pause() and physics.resume())就能完成了。

它只留在游戏循环中,用于确认碰撞和线性速率、改变游戏状态……

你可以通过打开或关闭重力,来改变整个游戏的现实,就像《Thomas was alone》或《ibb and obb》那样。

6、交通工具

《小轮车冒险》、《登山 》

如果你已经看到这里了,那么做一款关于疯狂交通工具的游戏吧。

做交通工作,只要把接头和轮子想成CIRCLE刚体,用锚点正确的旋转接头把POLYGON(小车、自行车等的形状)和它们连接起来。

用带纹理的mesh绘制自行车/小车的主要刚体、车轮的子画面,除非你使用软刚体做这些,否则添加痕迹、颗粒fx等。

代码生成的例子:

Box2D_BezierRampage(from gamasutra)

对于道路,使用一些噪点或正弦,可以是STATIC或DYNAMIC,你可以使用Bezier曲线。

code example(from gamasutra)

《小轮车冒险》

我会知道这款游戏和它的物理,多亏看了某人的一篇文章。

但文章作者没有提到任何有关Box2D的东西,但我猜这款游戏就是使用了Cocos2d(和Corona SDK)。无论如何,你现在知道怎么制作交通工具和横冲直撞的效果了。

在《Canvas Rider》中,有两种自行车模型,你可以在游戏中改变,你会发现自行车的刚体是一个允许一定damping的接头结构,当你改变自行车时,这个动态刚体就被破坏了,然后游戏就生成新的自行车类型。

另外,你在游戏中的自行车可以触到的线是静态CHAIN,当你设计道路时,鼠标触击的是x,y……像我们之前做的那样。

以上。希望你能用Box2D做出一些成果。

当然,使用Box2D,通过不同的方法制作的游戏还有很多,但它们可能综合使用了上述几种,例如,《时空幻境》、《超级食肉男孩》等,用可以用合适的刚体、机制和着色器制作出来。

我不是键盘车神!横评STEAM 模拟游戏

游戏名称:跑跑卡丁车单机版

游戏类型: 小游戏

游戏大小:980K 如何开始

游戏加载完成后点击右下角的skip - 再选择喜欢的车子即可开始游戏。

操作方法

移动鼠标控制 移动,点击左键可以跳过障碍物,要尽量喝到饮料得分。

游戏目标

控制好卡丁车躲避障碍,在时间结束前抵达终点,并收集到更多饮料。

简单操作说明

方向键移动,shift漂移,ctrl用道具,alt切换道具使用顺序。

安装说明

这是朝鲜版的,所有需要把系统语言切换成朝鲜语才能正常运行

开始--设置--控制面板

进入后选择区域和语言选项选择朝鲜语

完成上叙操作后双击KartRider.exe进入游戏

单机版包括几张普通地图:

1、沙漠(EASY)

2、冰川(EASY)

3、公路(EASY)

4、丛林(NORMAL)

5、其他

五张地图,练习漂移,商店也是没有的,当然在车的方面也肯定是最普通的,单机版主要是用来练习用的

2002年,我小学二年级,家父给我买了人生当中的 个驾驶模拟器—— 一个现在看来质感堪忧的北通方向盘。当年,EA推出了 飞车的第六代作品——《 飞车:热力追踪2》。从莲花Elise开启生涯,到后面奔驰CLK GTR解锁,是我对电子游戏最初的也是最深刻的记忆之一。也让我在小小年纪就得以摆脱「键盘车神」的帽子。后来步入大学,进入了FSAE(大学生方程式)车队,从LFS(Live For Speed)开始拟真 游戏的训练。离「键盘车手」又远了一步。最终也成功在襄阳的梦想 场,在那场瓢泼大雨里,圆了自己的 梦。

如今, 模拟经历了这么多年的发展,也有了越来越多的线下店,几个模拟 竞技联盟的规模也是愈发壮大。同时,也有越来越多的 模拟游戏推出。这次,就来给大家盘点一下steam 里我所玩过的以单机为主的 模拟驾驶游戏。

▲北通方向盘

Kartkraft

游戏价格:? 66

史低:? 39 at-41%

游戏难度:★★★★

我们常说「卡丁车是 手的摇篮」,在2020年的 车坛,几乎所有的车手都清一色来自卡丁车运动。但一直以来,鲜有游戏厂商染指卡丁车模拟游戏,以至于一直没有与卡丁车相关的 模拟游戏出现,直到KartKraft这款游戏的推出。不同于其他GT游戏中所自带的卡丁车模型的照猫画虎,KartKraft是一款专门为卡丁车模拟开发的游戏,其驾驶手感与真实的卡丁车驾驶感觉极其相似。充分的体现 丁车「直接」和「粗暴」的驾驶特点。

Kartkraft这款游戏最大的优势就是「高拟真度」、「卡丁车游戏的稀缺性」以及「实惠的价格」,当然也是因为卡丁车游戏的小众,所以这款游戏也一直处于持续开发状态。后续会增添更多的赛道。如果你时常怀念二冲程发动机在你背后轰轰隆隆的感觉又对拟真度有很高追求,Kartkraft 是一款性价比很高的选择,它只需要你跑3分钟二冲程卡丁车的价格。

Assetto Corsa(神力科莎)

游戏价格:? 70

史低:? 17 at-76%

游戏难度:★★★★★

这是所有模拟器玩家的必玩游戏,也几乎是所有车辆动力学工程师玩家的必备。

不用多说,Assetto Corsa这款在2014年推出的游戏伴随着 模拟群体的不断壮大,已经成为跨时代的「神作」。在这款游戏推出之后,越来越多的线上游戏活动以及线下的诸如FSAE车队的日常训练,都从LFS或者GSC过渡到Assetto Corsa。关于这款游戏的优点主要有以下几点——

的物理引擎的驾驶手感。车辆动力学建模的拟真度很高,很好的反馈了真实车辆的动力学特性。游戏中对调校上的尝试,是实践车辆动力学知识的一个 。

玩家群体规模很大,较高的线上比赛的出场率。同时因为玩家众多,有很多 的免费Mod可以使用。

和Live For Speed一样具备键盘+鼠标组合的可玩度。对于许多玩家来说,键盘+鼠标的操作可能过于枯燥,但十分有利于你初步认识 运动,练习基本的走线等基础技能。

除了原作之外,《Assetto Corsa Competizione》作为最新的宝珀GT系列赛官方授权游戏提供了更新的玩法,也是值得十分值得购买的。

Project Car 2( 计划2)

游戏价格:? 305Base Price? 76

史低:? 76 at-75%

游戏难度:★★★★

如果从模拟驾驶的游戏角度来评判Project Car 2的话,其表现相比一代作品有了提升,但是相比Assetto Corse依然有明显的差距。我对于其物理拟真度的评价是:勉强达到对于这类 模拟类游戏的要求。但Project Car 2也有其 的地方。

丰富的载具。来自39个制造商,54种分类等级,总共197辆车(其中8辆在DLC内),其中有公路车、超跑、方程式、跨界拉力 等各种迥异的 类型,甚至包括福特的猛禽皮卡——可以说这次《 计划2》阵容十分可观。

丰富的赛道。在前作的基础上,增加了20条全扫描的高精度赛道,还改进了部分已有的赛道,总共60条 而各有特色的赛道,并且可以变种细分为最终的130多种场地配置。其范围涵盖场地、拉力、真实街道甚至是厂家的冬季冰雪驾校。

F1 2019

游戏价格:? 163

史低:? 48 at-71%

游戏难度:★★★★

相比其他模拟竞速游戏,F1 2019最大的特点是:与那些Big Name同场竞技的沉浸感。

如果你选择生涯模式,你会进入F2系列赛,首先跟兰多诺里斯、亚历山大·阿尔本这些近几年声名鹊起的超级新秀进行较量,当你继续推动剧情发展进入F1,又可以与汉密尔顿、维特尔这些未来的F1名宿进行角逐。除此之外,在事件模式当中,你还可以扮演「车神」埃尔顿塞纳与「教授」约翰普洛斯特共同回味那段传奇往事。作为一个车迷,你不光可以在游戏中锻炼车技,更可以通过游戏回顾那些光辉的历史。

WRC7

游戏价格:? 182

史低:? 27 at-85%

游戏难度:★★★★

WRC系列游戏是目前steam 几乎 可以接近Dirt系列的拉力赛游戏。在初期其较低的价格使其具备了一定的竞争力。其最大特点是游戏场景真实的还原了 拉力锦标赛。对于那种喜欢「代入感」的玩家来说有一定的吸引力。

Dirt4(尘埃4)

游戏价格:? 80

史低:? 24 at-70%

游戏难度:★★★★

尘埃系列作为《科林麦克雷拉力赛》(Colin McRae Rally)的继任者,无疑是最近十年间最出色的拉力赛模拟游戏。而其前作《科林麦克雷拉力赛》也可谓是21世纪前十年这个领域内最杰出的代表。

尘埃系列相比于尘埃拉力赛系列,有以下区别:

其拥有更多的比赛模式。比如巴哈(Baja) 。但同时意味着,就拉力赛 的种类来说,其车型数量相当有限。

My Stage系统,它可以让你自定义赛道,而且操作简单到令人不可置信,玩家只需要选择赛道长度和复杂度就能立刻生成一条新赛道,同时还能选择雨雪雾等等天气和比赛的时间。

与尘埃拉力系列相比,尘埃4更容易上手。但这也意味着其真实的物理引擎模拟要逊于尘埃拉力系列。

尘埃系列,从内容上来讲,更注重「广度」而非「深度」。

Dirt4 Rally 2.0

游戏价格:? 116

史低:? ? 46 at-60%

游戏难度:★★★★★

尘埃拉力系列就宛如一个潘多拉魔盒,打开了拉力赛模拟游戏的另一个 。当我作为一个颇有模拟 游戏经验的“老手” 次上手这款游戏时,我都对它的难度大吃一惊。

从本质上讲:

尘埃拉力系列和尘埃系列根本不是一个系列游戏。尘埃拉力2.0跟其他拉力游戏相比也完全不是一个量级。

在上手之前,一定要先对模拟器参数的设定,像steering saturation这样的参数要首先设定到自己认为舒服的一个值才能开始尝试「控车」。尘埃拉力2.0有以下几大优点:

载具异常丰富。这个时间维度横跨60年,从中古时期的Mini Cooper 1300Rally系列到80年代的B组时期,到Evo和Sti双雄争霸时代,再到21世纪初的拉力厂商的风云突变。几乎你能想起来的拉力锦标赛历史上的经典车型全部都可以在这个游戏中出现。甚至还包括Porsche 911 RGT Rally Spec这样的魔鬼拉力车型。

物理系统和手感力回馈大幅进步。相比前作抓地力过剩的问题,这代的物理更加真实。不像前作的相对「傻瓜式」的spin,这代需要在方向和踏板的配合上更加精进,从而达到该推则推,该甩则甩。这也是由于车辆的物理模型在重量分配感上的进步。另一方面,得益于物理系统的进步,不同道路和天气状况的拟真度都更高。柏油、冰雪、砂石的路面加上雨雪天气,反馈区分度更高,同样都是滑,雨和雪的差异也能从细微之处体现。与此同时,在画质上也比尘埃4高出了明显的档次。

如果你是「硬核」模拟器玩家,尘埃拉力2.0是必入游戏。

如果你是 历史车迷,尘埃拉力2.0同样是百分之百值回票价。

Mud Runner(旋转轮胎 泥泞飞驰)

游戏价格:? 78

史低:? ? 23 at-71%

游戏难度:★★★

如果你不知道这款游戏,你可以把他理解为越野版的欧洲卡车模拟。其游戏内容都可以简单概括为扮演卡车司机送货。

欧卡更加精细,旋转轮胎则更加粗狂,不拘细节。

这款游戏是西伯利亚运木材老司机的救赎之路,是模拟驾驶游戏里的「中老年款」。我经常泡上一杯茶,拿出一包小零食,一个下午就在泥泞里度过了。这种轻松愉悦的一下午,没有玩尘埃拉力2.0和神力科莎时候的锱铢必较和大汗淋漓,更多的是一种休闲和放松。这主要取决的游戏的模式——在泥泞的西伯利亚开着卡车运木材。

但是休闲并不代表不硬核。从越野模拟游戏的角度来说,这款游戏是最高水准那一级别的。四驱、差速锁、绞盘、手挡;大河、泥泞深渊、森林。种种元素都能让你真正的体会到西伯利亚卡车司机的艰辛。这种困难程度与你在真实视 当中看到的并没有太大区别。 的区别在于,你可以完全不用着急,喝着茶,吃着点心,慢慢从泥泞中脱困,完成任务。当然也会有翻车之后原木丧失功亏一篑重头再来的沮丧。

当然,虽然原作地图不多,载具有限。但在创意工坊里有大量的大开脑洞的补充。

这是一款低调的佳作,以至于很多玩家根本不知道。但它与众不同,自身风格强力,游戏本身足够硬核,是我十分推荐的一款游戏。以及,它的续作《Snow Runner》马上就要来了。续作当中将有更丰富的模式和载具供玩家体验。

Euro Truck Simulator 2(欧洲卡车模拟2)

游戏价格:? 99

史低:? 21 at-81%

游戏难度:★★★★

你那熟练的单手搓盘,一定是在欧卡里学的。

同样是拉货,欧卡和泥泞奔驰的一大区别在于环境不同。一个是在欧洲的铺装道路上,一个是在西伯利亚无路可走的大森林里。另一个区别则是,欧卡的 度更高,玩家数量也更多。

我有个搞汽车试验的同学,得知第二天要开拖车拉实验器材后,仅凭当晚在欧卡里的练习,就在第二天轻松驾驭了开拖车的各种技能,最后颇受领导夸赞。

欧洲卡车模拟的核心竞争力是「真实」,真实的送货体验、真实的载具,真实的欧洲道路和风景。以及执行任务时车碰了,货没了,目的地找不到了所带来的沮丧。真实又有波折的游戏,一定是乐趣十足了。

没入欧卡的同学,现在玩还不晚哦。

BeamNG.drive

游戏价格:? 80

史低:? 52 at-33%

游戏难度:★★★

▲从某种意义上来讲,BeamNG Drive是模拟驾驶游戏里的「中保研」

BeamNG是模拟驾驶里的一个另类。它实际上是一个沙盒游戏,其最大的特点在于 的物理引擎和非常拟真的碰撞损坏效果。你可以搭建各种稀奇古怪的场景,使用各种各样的载具,但最后的结果都要回到这车碰撞之后会变成什么样子。

你可以像中保研一样模拟常规的正面25%偏置碰撞、侧面碰撞,也可以让载具坠入峡谷,或者冲向街道旁的建筑,只要你脑洞足够大,所有的场景都可以在游戏中被搭建出来。

我不能保证所有人都会喜欢这个有些另类的游戏,但是汽车安全工程师们一定会很喜欢吧。

结语:

这个横评,几乎囊获了STEAM 所有的主流的模拟驾驶类游戏,同时也包括一些颇为冷门的佳作。拟真度高的模拟驾驶游戏,不光能够让你体会到游戏的乐趣,同时可以实实在在的提高驾驶能力。如果你想成为一个业余的赛道日玩家甚至是职业车手,模拟器训练都是必不可少的。即便是你只是将汽车作为通勤工具,模拟器的训练也能够让你在遇到紧急状况时做出更加合理、更安全的应对。

当然最重要的是,当你能用模拟器开好车时,你至少可以理直气壮的说:我不是键盘车神啦!

文|圣安东尼奥小石

图|网络

本文来源于汽车之家车家号作者,不代表汽车之家的观点立场。

好了,关于“如何用Box2D Library制作2D物理游戏”的讨论到此结束。希望大家能够更深入地了解“如何用Box2D Library制作2D物理游戏”,并从我的解答中获得一些启示。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。