>本文是Microsoft的Web开发系列的一部分。感谢您支持使SitietPoint成为可能的合作伙伴。 本文讨论:
基本游戏发展哲学
>代码下载(.zip)
快速开发:利用HTML,JavaScript和CSS中的现有Web开发技能来创建几乎任何带有浏览器的设备,使用Visual Studio和ASP.NET。
> Visual Studio作为工具:利用视觉工作室进行快速游戏开发和跨不同设备进行测试,确保兼容性和性能。
这个应用程序将不需要服务器代码,因此我首先在Visual Studio中创建一个新的,空的网页项目。我将通过选择文件后选择“ Visual C#”选项来使用空网站的空C#模板。新| ASP.NET空网站。
索引HTML文件仅需要三个资源:jQuery,主样式表和主JavaScript文件。我将一个空的CSS文件添加到名为style.css和一个空的JavaScript文件的项目中,称为ping.js,以避免加载页面时错误:
><span><span><!DOCTYPE html></span> </span><span><span><span><html</span>></span> </span><span><span><span><head</span>></span> </span> <span><span><span><script</span> src<span>="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js"</span>></span><span><span></script</span>></span> </span> <span><span><span><script</span> src<span>="ping.js"</span>></span><span><span></script</span>></span> </span> <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="style.css"</span>></span><span><span></script</span>></span> </span><span><span><span></head</span>></span> </span><span><span><span><body</span>></span> </span><span><span><span></body</span>></span> </span><span><span><span></html</span>></span> </span>
也不要忘记在浏览器和设备之间对此应用进行测试(或任何其他)。虽然我编写的代码与Chrome,Firefox和Microsoft Edge等现代浏览器可互操作,但这始终是双重检查的最佳实践。现在,您可以使用免费的虚拟机和其他工具(例如http://www.browserstack.com。
基本设计>
>
<span><span><span><div</span> id<span>="arena"</span>></span> </span> <span><span><span><div</span> id<span>="score"</span>></span> </span> <span><span><span><h1</span>></span> </span> <span><span><span><span</span> id<span>="playerScore"</span>></span>0<span><span></span</span>></span> </span> <span><span><span><span</span> id<span>="opponentScore"</span>></span>0<span><span></span</span>></span> </span> <span><span><span></h1</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="player"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="opponent"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="ball"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="controls-left"</span>></span> </span> <span><span><span><div</span> id<span>="up"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="down"</span>></span><span><span></div</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="controls-right"</span>></span> </span> <span><span><span><div</span> id<span>="left"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="right"</span>></span><span><span></div</span>></span> </span> <span><span><span></div</span>></span> </span><span><span><span></div</span>></span> </span>>使用样式
>第二,我需要将竞技场填充整个屏幕,并应用了竞技场背景图像(请参见下图):
<span>body { </span> <span>margin: 0px; </span> <span>height: 100%; </span><span>} </span>
<span><span>#arena</span> { </span> <span>background-image: <span>url(arena.png)</span>; </span> <span>background-size: 100% 100%; </span> <span>margin: 0px; </span> <span>width: 100%; </span> <span>height: 100%; </span> <span>overflow: hidden; </span><span>} </span>接下来,我将记分牌定位。我希望这在其他元素上出现顶部和中心。命令位置:绝对让我将其放置在我想要的任何地方:50%将其放在窗口顶部的一半,但从记分板元素的最左侧开始。为了确保它是完全居中的,我使用转换属性,Z-Index属性可确保它始终处于顶部:
我也希望文本字体以复古主题为主题。大多数现代浏览器都让我包括自己的字体。我从Codeman38(Zone38.net)找到了适当的按下2P字体。要将字体添加到计分板中,我必须创建一个新的字体脸:
<span><span><!DOCTYPE html></span> </span><span><span><span><html</span>></span> </span><span><span><span><head</span>></span> </span> <span><span><span><script</span> src<span>="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js"</span>></span><span><span></script</span>></span> </span> <span><span><span><script</span> src<span>="ping.js"</span>></span><span><span></script</span>></span> </span> <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="style.css"</span>></span><span><span></script</span>></span> </span><span><span><span></head</span>></span> </span><span><span><span><body</span>></span> </span><span><span><span></body</span>></span> </span><span><span><span></html</span>></span> </span>
>现在,得分在H1标签中,因此我可以为所有H1标签设置字体。万一缺少字体,我将提供一些备份选项:
><span><span><span><div</span> id<span>="arena"</span>></span> </span> <span><span><span><div</span> id<span>="score"</span>></span> </span> <span><span><span><h1</span>></span> </span> <span><span><span><span</span> id<span>="playerScore"</span>></span>0<span><span></span</span>></span> </span> <span><span><span><span</span> id<span>="opponentScore"</span>></span>0<span><span></span</span>></span> </span> <span><span><span></h1</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="player"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="opponent"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="ball"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="controls-left"</span>></span> </span> <span><span><span><div</span> id<span>="up"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="down"</span>></span><span><span></div</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="controls-right"</span>></span> </span> <span><span><span><div</span> id<span>="left"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="right"</span>></span><span><span></div</span>></span> </span> <span><span><span></div</span>></span> </span><span><span><span></div</span>></span> </span>
对于其他元素,我将使用一张图像片。精灵表包含一个我在一个文件中所需的游戏所需的图像(请参见下图)。
>>在此表上具有图像的任何元素都将分配一个精灵类。然后,对于每个元素,我将使用背景位置来定义我要显示的精灵表的哪一部分:
<span>body { </span> <span>margin: 0px; </span> <span>height: 100%; </span><span>} </span>接下来,我将将Sprite类添加到所有将使用精灵表的元素中。我将不得不短暂地跳回HTML做到这一点:
>
<span><span>#arena</span> { </span> <span>background-image: <span>url(arena.png)</span>; </span> <span>background-size: 100% 100%; </span> <span>margin: 0px; </span> <span>width: 100%; </span> <span>height: 100%; </span> <span>overflow: hidden; </span><span>} </span>现在,我需要指示每个元素在纸板上的每个精灵的位置。同样,我将使用背景位置进行此操作:
<span><span>#score</span> { </span> <span>position: absolute; </span> <span>z-index: 1000; </span> <span>left: 50%; </span> <span>top: 5%; </span> <span>transform: translate(-50%, 0%); </span><span>} </span>>位置:玩家,对手和球上的绝对属性将让我使用JavaScript移动它们。如果您现在查看页面,您会看到控件和球上附有不必要的作品。这是因为精灵尺寸小于默认的128像素,因此我将其调整为正确的尺寸。只有一个球,所以我将直接设置它的大小:
<span><span>@font-face</span> { </span> <span>font-family: 'PressStart2P'; </span> <span>src: <span>url('PressStart2P.woff')</span>; </span><span>} </span>>有四个控制元素(用户可以按下按钮以移动播放器的按钮),因此我应该为他们做一个特殊的课程。我还会添加一个边距,以便它们周围有一点空间:
<span>h1 { </span> <span>font-family: 'PressStart2P', 'Georgia', serif; </span><span>} </span>添加此类课程后,游戏具有更好的外观控件:
>
<span><span>.sprite</span> { </span> <span>background-image: <span>url("sprites.png")</span>; </span> <span>width: 128px; </span> <span>height: 128px; </span><span>} </span>>我需要做的最后一件事是将控件放置,以便在页面在移动设备上运行时用户的拇指。我将它们粘在底部的角落:
<span><span><span><div</span> id<span>="player"</span> class<span>="sprite"</span>></span><span><span></div</span>></span> </span><span><span><span><div</span> id<span>="opponent"</span> class<span>="sprite"</span>></span><span><span></div</span>></span> </span><span><span><span><div</span> id<span>="ball"</span> class<span>="sprite"</span>></span><span><span></div</span>></span> </span><span><span><span><div</span> id<span>="controls-left"</span>></span> </span> <span><span><span><div</span> id<span>="up"</span> class<span>="sprite"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="down"</span> class<span>="sprite"</span>></span><span><span></div</span>></span> </span><span><span><span></div</span>></span> </span><span><span><span><div</span> id<span>="controls-right"</span>></span> </span> <span><span><span><div</span> id<span>="left"</span> class<span>="sprite"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="right"</span> class<span>="sprite"</span>></span><span><span></div</span>></span> </span><span><span><span></div</span>></span> </span>>关于此设计的一件好事是一切都设置为具有相对位置。这意味着屏幕可能是许多不同的尺寸,同时仍然使游戏看起来不错。
>
遵循弹跳球>
这是一个简单的概念。当您调用它时,球功能会产生一个新的球。无需使用新关键字。这种模式通过阐明可用的对象属性来减少该变量周围的一些混乱。而且由于我只有一个小时来制作这个游戏,所以我需要最大程度地减少任何令人困惑的概念。当我完成简单的球类时,这种模式的结构:
>为创建一个新的球,我只称其为已定义的此功能:
<span><span><!DOCTYPE html></span> </span><span><span><span><html</span>></span> </span><span><span><span><head</span>></span> </span> <span><span><span><script</span> src<span>="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js"</span>></span><span><span></script</span>></span> </span> <span><span><span><script</span> src<span>="ping.js"</span>></span><span><span></script</span>></span> </span> <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="style.css"</span>></span><span><span></script</span>></span> </span><span><span><span></head</span>></span> </span><span><span><span><body</span>></span> </span><span><span><span></body</span>></span> </span><span><span><span></html</span>></span> </span>
>现在我想使球移动并在屏幕上弹跳。首先,我需要以某个时间间隔调用更新功能来创建球的动画。现代浏览器提供了一种用于此目的的函数,称为requestAnimationFrame。这将作为一个参数函数,并将在下次运行动画周期时称之为传递功能。当浏览器准备好进行更新时,这使球可以平稳地走动。当它调用传递功能时,它将在加载页面后将其在几秒钟内提供时间。这对于确保动画随着时间的流逝至关重要。在游戏中,requestAnimationFrame的使用如下:
><span><span><span><div</span> id<span>="arena"</span>></span> </span> <span><span><span><div</span> id<span>="score"</span>></span> </span> <span><span><span><h1</span>></span> </span> <span><span><span><span</span> id<span>="playerScore"</span>></span>0<span><span></span</span>></span> </span> <span><span><span><span</span> id<span>="opponentScore"</span>></span>0<span><span></span</span>></span> </span> <span><span><span></h1</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="player"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="opponent"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="ball"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="controls-left"</span>></span> </span> <span><span><span><div</span> id<span>="up"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="down"</span>></span><span><span></div</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="controls-right"</span>></span> </span> <span><span><span><div</span> id<span>="left"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="right"</span>></span><span><span></div</span>></span> </span> <span><span><span></div</span>></span> </span><span><span><span></div</span>></span> </span>
请注意,随着球完成更新,函数中再次调用requestAnimationFrame。这确保了连续动画。
>虽然此代码可以正常工作,但在页面满载完整之前,脚本可能会开始运行。为了避免这种情况,我将使用jQuery:
<span>body { </span> <span>margin: 0px; </span> <span>height: 100%; </span><span>} </span>因为我知道球的速度(速度)和自上次更新以来的时间,所以我可以做一些简单的物理学来向前移动球:
<span><span>#arena</span> { </span> <span>background-image: <span>url(arena.png)</span>; </span> <span>background-size: 100% 100%; </span> <span>margin: 0px; </span> <span>width: 100%; </span> <span>height: 100%; </span> <span>overflow: hidden; </span><span>} </span>>尝试运行代码,您会看到球以一定角度移动并从屏幕上移动。这很有趣,但是一旦球从屏幕的边缘掉下来,乐趣就会停止。因此,下一步是使球从屏幕的边缘弹起,如图7所示。添加此代码并运行该应用程序将显示一个连续弹跳的球。
一个可移动的播放器
我现在可以创建两个玩家,并让他们移至屏幕上适当的一侧:
<span><span>#score</span> { </span> <span>position: absolute; </span> <span>z-index: 1000; </span> <span>left: 50%; </span> <span>top: 5%; </span> <span>transform: translate(-50%, 0%); </span><span>} </span>
键盘输入
<span><span>@font-face</span> { </span> <span>font-family: 'PressStart2P'; </span> <span>src: <span>url('PressStart2P.woff')</span>; </span><span>} </span>>因此,从理论上讲,您可以移动玩家,但是如果没有指示,它不会移动。在左侧的播放器中添加一些控件。您需要两种控制该播放器的方法:使用键盘(在PC上)并敲击控件(在平板电脑和电话上)。
> 为了确保各种平台上的触摸输入和鼠标输入之间的一致性,我将使用出色的统一框架hand.js(handjs.codeplex.com)。首先,我将脚本添加到HTML中:
><span>h1 { </span> <span>font-family: 'PressStart2P', 'Georgia', serif; </span><span>} </span>然后,当您按键盘键A和Z时,或者点击控件时,我将使用Hand.js和JQuery来控制播放器。
<span><span><!DOCTYPE html></span> </span><span><span><span><html</span>></span> </span><span><span><span><head</span>></span> </span> <span><span><span><script</span> src<span>="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js"</span>></span><span><span></script</span>></span> </span> <span><span><span><script</span> src<span>="ping.js"</span>></span><span><span></script</span>></span> </span> <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="style.css"</span>></span><span><span></script</span>></span> </span><span><span><span></head</span>></span> </span><span><span><span><body</span>></span> </span><span><span><span></body</span>></span> </span><span><span><span></html</span>></span> </span>
随着球的反弹,我想让玩家抓住球。当它被抓住时,球有一个主人,并遵循该主人的动议。我将在球的移动方法中添加功能,允许所有者,然后球将遵循:
<span><span><span><div</span> id<span>="arena"</span>></span> </span> <span><span><span><div</span> id<span>="score"</span>></span> </span> <span><span><span><h1</span>></span> </span> <span><span><span><span</span> id<span>="playerScore"</span>></span>0<span><span></span</span>></span> </span> <span><span><span><span</span> id<span>="opponentScore"</span>></span>0<span><span></span</span>></span> </span> <span><span><span></h1</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="player"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="opponent"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="ball"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="controls-left"</span>></span> </span> <span><span><span><div</span> id<span>="up"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="down"</span>></span><span><span></div</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="controls-right"</span>></span> </span> <span><span><span><div</span> id<span>="left"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="right"</span>></span><span><span></div</span>></span> </span> <span><span><span></div</span>></span> </span><span><span><span></div</span>></span> </span>>当前,无法获得播放器对象的位置,因此我将getPosition和getside登录器添加到播放器对象:
>
<span>body { </span> <span>margin: 0px; </span> <span>height: 100%; </span><span>} </span>现在,如果球有一个所有者,它将跟随周围的所有者。但是如何确定所有者?有人必须接球。让我们确定一个球员精灵何时接触球。发生这种情况时,我将把球的所有者设置为那个球员。
>
<span><span>#arena</span> { </span> <span>background-image: <span>url(arena.png)</span>; </span> <span>background-size: 100% 100%; </span> <span>margin: 0px; </span> <span>width: 100%; </span> <span>height: 100%; </span> <span>overflow: hidden; </span><span>} </span>>如果您现在尝试玩游戏,则会发现球从屏幕顶部弹起,并且可以移动玩家捕捉它。现在,你怎么扔它?这就是右手控制的目的 - 赶出球。让我们为玩家添加一个“火”功能以及AIM属性。
>
然后,我们可以增强键盘功能以设置播放器的目标和射击功能。瞄准的工作方式略有不同。当瞄准键释放时,目标将恢复直接。<span><span>#score</span> { </span> <span>position: absolute; </span> <span>z-index: 1000; </span> <span>left: 50%; </span> <span>top: 5%; </span> <span>transform: translate(-50%, 0%); </span><span>} </span>>
最终添加将是所有控件的触摸支持。我将在正确的控件上更改玩家的目标。我还将在屏幕上的任何地方都触摸它:
<span><span>@font-face</span> { </span> <span>font-family: 'PressStart2P'; </span> <span>src: <span>url('PressStart2P.woff')</span>; </span><span>} </span>
>保持得分
<span>h1 { </span> <span>font-family: 'PressStart2P', 'Georgia', serif; </span><span>} </span>
>下面的代码对这些事件做出反应,以更新得分并交出球。将此代码添加到JavaScript文档的底部。
<span><span>.sprite</span> { </span> <span>background-image: <span>url("sprites.png")</span>; </span> <span>width: 128px; </span> <span>height: 128px; </span><span>} </span>
现在,当球超越对手时(这并不困难,因为对手没有移动),您的得分就会上升,球将交给对手。但是,对手只会抓住球。
<span><span><span><div</span> id<span>="player"</span> class<span>="sprite"</span>></span><span><span></div</span>></span> </span><span><span><span><div</span> id<span>="opponent"</span> class<span>="sprite"</span>></span><span><span></div</span>></span> </span><span><span><span><div</span> id<span>="ball"</span> class<span>="sprite"</span>></span><span><span></div</span>></span> </span><span><span><span><div</span> id<span>="controls-left"</span>></span> </span> <span><span><span><div</span> id<span>="up"</span> class<span>="sprite"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="down"</span> class<span>="sprite"</span>></span><span><span></div</span>></span> </span><span><span><span></div</span>></span> </span><span><span><span><div</span> id<span>="controls-right"</span>></span> </span> <span><span><span><div</span> id<span>="left"</span> class<span>="sprite"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="right"</span> class<span>="sprite"</span>></span><span><span></div</span>></span> </span><span><span><span></div</span>></span> </span>获得Smart
您几乎有一场比赛。如果你有一个可以和谁一起玩的人。作为最后一步,我将展示如何用简单的AI控制对手。对手会在球移动时试图与球保持平行。如果对手接球,它将随机移动并朝随机发射球。为了使人工智能感觉更加人性化,我将在所有事情中添加延误。请注意,这不是高度智能的AI,但这将是与游戏对抗的事情。
在设计这种系统时,在各州进行思考是一件好事。对手AI有三个可能的状态:遵循,瞄准/射击和等待。我将成为遵循添加更人性化元素的行动之间的状态。仅针对AI对象开始:
<span><span><!DOCTYPE html></span> </span><span><span><span><html</span>></span> </span><span><span><span><head</span>></span> </span> <span><span><span><script</span> src<span>="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js"</span>></span><span><span></script</span>></span> </span> <span><span><span><script</span> src<span>="ping.js"</span>></span><span><span></script</span>></span> </span> <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="style.css"</span>></span><span><span></script</span>></span> </span><span><span><span></head</span>></span> </span><span><span><span><body</span>></span> </span><span><span><span></body</span>></span> </span><span><span><span></html</span>></span> </span>
>根据AI的状态,我希望它采取不同的动作。就像球一样,我将在requestAnimationframe中进行更新函数,以根据其状态制定AI法案:
<span><span><span><div</span> id<span>="arena"</span>></span> </span> <span><span><span><div</span> id<span>="score"</span>></span> </span> <span><span><span><h1</span>></span> </span> <span><span><span><span</span> id<span>="playerScore"</span>></span>0<span><span></span</span>></span> </span> <span><span><span><span</span> id<span>="opponentScore"</span>></span>0<span><span></span</span>></span> </span> <span><span><span></h1</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="player"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="opponent"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="ball"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="controls-left"</span>></span> </span> <span><span><span><div</span> id<span>="up"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="down"</span>></span><span><span></div</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="controls-right"</span>></span> </span> <span><span><span><div</span> id<span>="left"</span>></span><span><span></div</span>></span> </span> <span><span><span><div</span> id<span>="right"</span>></span><span><span></div</span>></span> </span> <span><span><span></div</span>></span> </span><span><span><span></div</span>></span> </span>>以下状态很简单。对手沿球的垂直方向移动,而AI向等待状态转变,以注入一些缓慢的反应时间。下面的代码显示了这两个状态:
<span>body { </span> <span>margin: 0px; </span> <span>height: 100%; </span><span>} </span>> AI在必须跟随球和等待一秒钟之间交替。现在,将代码添加到游戏范围的更新功能:
<span><span>#arena</span> { </span> <span>background-image: <span>url(arena.png)</span>; </span> <span>background-size: 100% 100%; </span> <span>margin: 0px; </span> <span>width: 100%; </span> <span>height: 100%; </span> <span>overflow: hidden; </span><span>} </span>>运行游戏时,您会看到对手跟随球的动作,而不是在不到30行代码的情况下进行糟糕的AI。当然,如果对手接球,那将无能为力。因此,对于一个小时的最后一个技巧,是时候处理目标状态的动作了。
总结
到目前为止,您拥有一个完整的网络游戏,可在PC,智能手机和平板电脑上使用。该游戏有许多可能的改进。例如,它在智能手机上的肖像模式中看起来会有些尴尬,因此您需要确保在景观中握住手机才能正常工作。这只是网络及以后游戏开发的可能性的一个小表明。
<span><span>#score</span> { </span> <span>position: absolute; </span> <span>z-index: 1000; </span> <span>left: 50%; </span> <span>top: 5%; </span> <span>transform: translate(-50%, 0%); </span><span>} </span>感谢技术专家Mohamed Ameen Ibrahim回顾了这篇文章。
本文是Microsoft Tech传教士的Web开发系列的一部分,该系列有关实用的JavaScript学习,开源项目和互操作性最佳实践,包括Microsoft Edge浏览器和新的Edgehtml渲染引擎。
我们鼓励您在浏览器和设备上进行测试,包括Microsoft Edge(Windows 10的默认浏览器),并在dev.modern.ie上使用免费工具:>扫描您的网站以获取过时的库,布局问题和可访问性
>>远程测试您自己的设备上的Microsoft Edge
GitHub上的编码实验室:跨浏览器测试和最佳实践在Microsoft Edge上以及我们的工程师和传教士的Web平台上的深入技术学习:
我如何在Visual Studio中添加声音效果和音乐?在Visual Studio中为游戏的声音效果和音乐涉及使用System.Media名称空间中的Soundplayer类。您可以使用播放方法播放声音效果或音乐曲目,以及停止播放声音的停止方法。您也可以使用Playlooping方法连续播放声音。 Soundplayer类支持WAV文件,因此您需要将声音效果和音乐曲目转换为此格式。
>
虽然在技术上可以使用Visual Studio和asp.net开发游戏机,但这并不是这些最常见的用例工具。游戏机游戏开发通常涉及使用专用游戏开发引擎(例如Unity或Unreal Engine),该引擎为游戏机游戏开发提供了更高级的工具和功能。但是,您可以使用Visual Studio和ASP.NET来开发控制台游戏的服务器端组件,例如多人游戏配对服务或排行榜系统。>以上是使用Visual Studio和ASP.NET在一个小时内构建网络游戏的详细内容。更多信息请关注PHP中文网其他相关文章!