网页游戏制作培训

来源:爱酷猪责编:网络时间:2024-12-28 18:24:11

解读:网页游戏主流开发技术与比较

本期解读将为广大玩家介绍几种网页游戏开发过程中应用最广泛的主流技术,并进行比较。

Flash

技术简介

Flash是一款由Adobe公司出品的创作软件。Flash支持动画创作与应用程序的开发,为创建数字动画、交互式Web站点、桌面应用程序以及手机应用程序开发提供了功能全面的创作和编辑环境。Flash可以包含简单的动画、视频内容、复杂演示文稿和应用程序以及介于它们之间的任何内容。

特性

Flash流行的主要原因是它使用了矢量图形。Flash通过对矢量图形的处理,产生出来的影片占用存储空间较小,即占用宽带资源较少。Flash被大量应用于互联网网页的矢量动画设计,十分适合页游的开发。能够大幅度减少游戏马赛克画面及网速饱和造成的卡顿现象。

局限

由Flash开发出的页游产品仍然具有一定的局限性。众所周知,游戏画面帧数越高,游戏流畅度越好;当Flash动画的帧率达到一定频率时,Flash向电脑CPU提交的图像处理重绘工作也就越多,占用电脑CPU资源越多,计算机的运行速度也会变得越来越慢。所以部分页游运行一段时间后,会出现电脑运行速度减慢,程序未响应的情况出现。

综述

虽然现今页游绝大部分基于Flash为框架而制作,现今页游产业处于高速发展阶段,页游画面及声音质量也随着发展而大幅度提高。对于现页游而言,Flash具备加载速度快,内容创作灵活度高,兼容性优异等特性,但部分基于Flash制作的页游对于游戏占用系统资源方面依然存在问题。虽具备一定的局限性,但Flash页游凭借着速度快,兼容性强等特点,依旧占据了绝对的市场优势。Flash依然是一种在页游开发领域中最常见、应用最广泛的开发技术。

Unity 3D引擎

技术简介

Unity是Unity Technologies开发的一款综合型游戏开发工具,是一款全面整合开发功能的专业游戏引擎。该引擎被广泛使用于网页游戏、手机游戏及单机游戏的开发及制作。Unity3D能够为开发的游戏实现从单人游戏到全实时多人游戏的游戏体验,使游戏具备联网功能;Unity3D支持所有主要文件格式,并能和大部分相关应用程序协同开发工作;物理特效内置的NVIDIA PhysX物理引擎为玩家提供了具有柔和阴影与烘焙的高度完善的光影渲染系统。

特性

Unity3D作为基于游戏平台框架而存在的游戏开发引擎,Unity3D具备良好的兼容性,在iphone等手机游戏市场取得了非常显著的成功,而作为一款面向游戏开发爱好者及小型工作室的游戏引擎,大幅度降低了游戏开发的成本。通过Unity web player插件发布的网页游戏,同样为3D画面的网页游戏开发提供了便捷渠道。2014年出现了大量的画面精美,动作流畅的国产3D页游,其中绝大多数都是基于Unity3D引擎开发的。

局限

从制作的角度上看,Unity3D则更偏重大型游戏的制作,制作出的游戏成品内容更丰富,系统构架更复杂。但不适合小型团队及游戏制作爱好者使用。Unity3D这种却需要消耗更多的时间去打磨游戏,随着游戏规模的扩大,内容增多,游戏的研发成本也将提高。以“低成本,小制作”为目标来看,Unity3D引擎并非一个良好的选择,但大型游戏研发团队则更加适用。

HTML5

技术简介

HTLM5是万维网的核心语言、 是替代HTML4.01(HTML)的第五次重大修改和 XHTML 1.0 标准的 HTML 标准版本。HTML 5强化了Web 网页的表现性能,追加了本地数据库等 Web 应用的功能。HTML5赋予网页更好的意义和结构,基于HTML5开发的网页APP拥有更短的启动时间,更快的联网速度,以及本地储存功能,具备设备兼容特性基于页面的实时聊天,更快速的网页游戏体验。可以给站点带来更多的多媒体元素(视频和音频)。在不牺牲性能和语义结构的前提下,CSS3中提供了更多的风格和更强的效果。此外,较之以前的Web排版,Web的开放字体格式(WOFF)也提供了更高的灵活性和控制性。

特性

大部分浏器已经支持某些 HTML5 技术。HTML5技术可以进行跨平台的使用。比如你开发了一款HTML5的游戏,你可以很轻易地移植到UC的开放平台、Opera的游戏中心、Facebook应用平台,甚至可以通过封装的技术发放到App Store或Google Play上,所以它的跨平台性非常强大,可移植性好。优秀的本地缓存能力以及良好的跨平台性能,真正的做到了“一次开发,多端移植“。TML5现在更偏重的是页面,再者是游戏。几个游戏程序员,使用HTML5制作几天就出品一款小游戏。不然也不会出现微信朋友疯狂转发的“神经猫”这种3天破千万甚至过亿的访问量的小游戏了。

HTLM5与Flash对比

与Flash相比,HTLM5则具备了更良好的兼容性,将耗用更少的系统资源。作为一种页面构架,HTML5以更加友好亲切的姿态面向了游戏用户。更短的运算时间,更快的传输速度,页游移植手游、手游移植页游、页游手游多端同时公测,这种多端并行的策略,在近年也十分流行。如若使用HTLM5技术,这将大大的节约游戏的研发成本。这可能会加速HTML5替代Flash的进程,但Flash经过多年的发展,已经占据了市场的绝大多数份额,HTML5与Flash将会出现一个替代的过程,并不会一蹶而就。

页游其他开发技术

Fancy3D

Fancy3D网页游戏开发平台系统(简称Fancy3D)是北京青果灵动科技有限公司自主研发的3D网页游戏引擎,用于在浏览器中运行高质量的3D,并且能极大的简化美术制作人员和程序设计人员的工作量,提高游戏的开发效率。

NIREUS

NIREUS是一款由乐港发布的网页游戏引擎。NIREUS具备了快速开发编译、模块独立化、高在线支持、高效的UI和动画渲染、客户端请求快速响应等特点,其中乐港的页游力作《热血三国2》就是以NIREUS为核心引擎制作的。

Sun3D

Sun3D是由上海创图网络科技发展有限公司自主研发的网页上运行三维应用程序基础软件技术。Sun3D技术解决了三维数据的大比例压缩和网络传输问题,让三维技术可以在网页和移动终端上普遍应用。Sun3D可以用于开发各种三维网页应用项目,如在网页上运行的三维游戏、在网页上运行的虚拟店铺、以及在网页上运行的仿真培训系统等等。

除了三大主流游戏开发技术外,Sun3D、Fancy3D、NIREUS等我国自主研发的游戏开发技术也同样在市场上占据一席之地,这些技术各有优势及特点,但由于泛用性及运营推广等因素影响,这些页游开发技术,均不占据主流市场。

总结

Flash作为传统的页游开发技术,虽然占据了主流市场,但仍具备一定的技术局限性。而Unity3D更专注于高成本大制作的3D页游及微端游戏,端游引擎的血统注定Unity3D无法在页游市场成为领头羊。目前HTML5虽然尚在起步阶段,但优秀的兼容性和泛用性,使其具备了更加广阔的生存空间。随着时间的推移,通过HTLM5与Flash对比就不难得出一个理性的结论:在不远的未来, HTLM5将取代Flash成为网页游戏市场的主流开发技术。

程序员如何用Python编程创建Web游戏,完成这个案例轻松入门

今天小编教大家如何用Python编程语言创建Web游戏,如果你能完成,你就可以算是一个能力相当不错的Python初学者了。虽然还需要多读一些书,多写一些程序,不过你已经具备进一步学习的功底了。接下来的学习就只是时间、动力及资源的问题了。

在这个习题中,我们不会去创建一个完整的游戏,相反,我们会为习题42中的游戏创建一个“引擎”(engine),让这个游戏能够在浏览器中运行起来。这会涉及重构习题42中的游戏,混合习题47中的结构,添加自动测试代码,最后创建一个可以运行这个游戏的Web引擎。

这是一个很庞大的习题。预计你要花一周到一个月才能完成。最好的方法是一点一点来,每晚完成一点,在进行下一步之前确认上一步已经正确完成。

你已经在两个习题中修改了gothonweb项目,这个习题中会再修改一次。你学习的这种修改的技术叫做“重构”,或者用我喜欢的讲法来说,叫“修理”。重构是一个编程术语,它指的是清理旧代码或者为旧代码添加新功能的过程。你其实已经做过这样的事情了,只不过不知道这个术语而已。重构是软件开发中经历的最习以为常的事情。

在这个习题中你要做的是将习题47中的可以测试的房间地图和习题43中的游戏这两样东西合并到一起,创建一个新的游戏结构。游戏的内容不会发生变化,只不过我们会通过“重构”让它有一个更好的结构而已。

第一步是将ex47/game.py的内容复制到gothonweb/map.py中,然后将tests/ex47_tests.py的内容复制到tests/map_tests.py中,然后再次运行nosetests,确认它们还能正常工作。

注意

从现在开始,我不会再展示运行测试的输出了,我假设你会回去运行这些测试,而且知道什么样的输出是正确的。

将习题47的代码复制完毕后,就该开始重构它,让它包含习题43中的地图。我一开始会把基本结构为你准备好,然后你需要去完成map.py和map_tests.py里边的内容。

首先要做的是用Room这个类来构建地图的基本结构。

map.py

你会发现Room类和地图有一些问题。

1.我们必须把以前放在if-else结构中的房间描述做成每个房间的一部分。这样房间的次序就不会被打乱了,这对我们的游戏是一件好事。这是你后面要修改的东西。

2.原版游戏中我们使用了专门的代码来生成一些内容,如的激活键码、舰舱的选择等,这次我们做游戏时就先使用默认值好了,不过后面的附加练习里,我会要求你把这些功能再加到游戏中。

3.我为游戏中所有错误决策的失败结尾写了一个generic_death,你需要去补全这个函数。你需要把原版游戏中所有的场景结局都加进去,并确保代码能正确运行。

4.我添加了一种新的转换模式,以"*"为标记,用来在游戏引擎中实现“捕获所有操作”的功能。

等把上面的代码基本写好以后,接下来就是你必须继续写的自动测试tests/map_test.py了。

map_tests.py

你在这个习题中的任务是完成地图,并且让自动测试可以完整地检查整个地图。这包括将所有的generic_death对象修正为游戏中实际的失败结尾。让你的代码成功运行起来,并让你的测试越全面越好。后面我们会对地图做一些修改,到时候这些测试将用来确保修改后的代码还可以正常工作。

在Web应用程序运行的某个位置,你需要追踪一些信息,并将这些信息和用户的浏览器关联起来。在HTTP协议的框架中,Web环境是“无状态”的,这意味着你的每一次请求和你的其他请求都是相互独立的。如果你请求了页面A,输入了一些数据,然后点了一个页面B的链接,那你发送给页面A的数据就全部消失了。

解决这个问题的方法是为Web应用程序建立一个很小的数据存储,给每个浏览器进程赋予一个独一无二的数字,用来跟踪浏览器所做的事情。这个存储通常用数据库或者存储在磁盘上的文件来实现。在lpthw.web这个小框架中实现这样的功能是很容易的,下面就是一个这样的例子。

session.sample.py

为了实现这个功能,需要创建一个sessions/文件夹作为程序的会话存储位置,创建好以后运行这个程序,然后检查/count页面,刷新一下这个页面,看计数会不会累加上去。关掉浏览器后,程序就会“忘掉”之前的位置,这也是我们的游戏所需的功能。有一种方法可以让浏览器永远记住一些信息,不过这会让测试和开发变得更难。如果你回到/reset页面,然后再访问/count页面,你可以看到你的计数器被重置了,因为你已经关掉了这个会话。

你需要花点时间弄懂这段代码,注意会话开始时count的值是如何设为0的,另外再看看sessions/下面的文件,看能不能打开。下面是我打开一个Python会话并解码的过程:

所以,会话其实就是使用pickle和base64这些库写到磁盘上的字典。存储和管理会话的方法很多,大概和Python的Web框架那么多,所以了解它们的工作原理并不是很重要。当然如果你需要调试或者清空会话,知道点儿原理还是有用的。

你应该已经写好了游戏地图和它的单元测试代码。现在要你制作一个简单的游戏引擎,用来让游戏中的各个房间运转起来,从玩家收集输入,并且记住玩家所在的位置。我们将用到你刚学过的会话来制作一个简单的引擎,让它可以:

1.为新用户启动新的游戏;

2.将房间展示给用户;

3.接收用户的输入;

4.在游戏中处理用户的输入;

5.显示游戏的结果,继续游戏,直到玩家角色死亡为止。

为了创建这个引擎,你需要将bin/app.py搬过来,创建一个功能完备的、基于会话的游戏引擎。这里的难点是,我会先使用基本的HTML文件创建一个非常简单的版本,接下来将由你完成它。基本的引擎是下面这个样子的:

app.py

在这个脚本里你可以看到更多的新东西,不过了不起的事情是,整个基于网页的游戏引擎只要一个小文件就可以做到了。这段脚本里最有技术含量的就是将会话带回来的那几行,这对于调试模式下的代码重载是必需的,否则每次刷新网页,会话就会消失,游戏也不会再继续了。

在运行bin/app.py之前,你需要修改PYTHONPATH环境变量。不知道什么是环境变量?要运行一个最基本的Python程序,你就得学会环境变量,用Python的人就喜欢这样:

在终端输入下面的内容:

如果用的是Windows,那就在PowerShell中输入以下内容:

你只要针对每一个shell会话输入一次就可以了,不过如果你运行Python代码时看到了导入错误,那就需要去执行一下上面的命令,或者是因为你上次执行的有错才导致导入错误的。

接下来需要删掉templates/hello_form.html和templates/index.html,然后重新创建上面代码中提到的两个模板。下面是一个非常简单的templates/show_room.html,供你参考。

show_room.html

这就用来显示游戏中的房间的模板。接下来,你需要在用户跑到地图的边界时,用一个模板告诉用户,他的角色的死亡信息,也就是templates/you_died.html这个模板。

you_died.html

准备好这些文件就可以做下面的事情了。

1.再次运行测试代码tests/app_tests.py,这样就可以测试这个游戏。由于会话的存在,你可能顶多只能实现几次点击,不过你应该可以做出一些基本的测试来。

2.删除sessions/*下的文件,再重新运行一遍游戏,确认游戏是从一开始运行的。

3. 运行python bin/app.py脚本,试玩一下你的游戏。

你需要和往常一样刷新和修正你的游戏,慢慢修改游戏的HTML文件和引擎,直到实现游戏需要的所有功能为止。

你有没有觉得我一下子给了你超多的信息呢?那就对了,我想要你在学习技能的同时有一些可以用来鼓捣的东西。为了完成这个习题,我将给你最后一套需要你自己完成的练习。你会注意到,到目前为止你写的游戏并不是很好,这只是你的第一版代码而已,你现在的任务就是让游戏更加完善,实现下面的这些功能。

1.修正代码中所有我提到和没提到的bug,如果你发现了新bug,你可以告诉我。

2.改进所有的自动测试,以便可以测试更多的内容,直到你可以不用浏览器就能测到所有的内容为止。

3.让HTML页面看上去更美观一些。

4.研究一下网页登录系统,为这个程序创建一个登录界面,这样人们就可以登录这个游戏,并且可以保存游戏高分。

5.完成游戏地图,尽可能地把游戏做大,功能做全。

6.给用户一个“帮助系统”,让他们可以查询每个房间里可以执行哪些命令。

7.为游戏添加新功能,想到什么功能就添加什么功能。

8.创建多个地图,让用户可以选择他们想要玩的一张地图来进行游戏。你的bin/app.py应该可以运行提供给它的任意地图,这样你的引擎就可以支持多个不同的游戏。

9.最后,使用在习题48和习题49中学到的东西创建一个更好的输入处理器。你手头已经有了大部分必要的代码,只需要改进语法,让它和你的输入表单以及游戏引擎挂钩即可。

祝你好运!

你需要阅读并了解带reloader的会话:http://webpy.org/cookbook/session_with_reloader。

错误路径,错误Python版本,PYTHONPATH没设置对,漏了__init__.py文件,拼写错误,都检查一下吧。

网页游戏如何开发网页游戏类型有哪些?

随着互联网的普及和技术的发展,网页游戏已经成为娱乐和休闲活动的重要组成部分。无需安装任何应用程序,只需打开浏览器,您就可以畅玩各种类型的网页游戏。然而,开发网页游戏并不是一项容易的任务,因为不同类型的游戏需要不同的开发方式和技术。在本文中,我们将探讨一些常见的网页游戏类型以及它们的开发方式。

1. 休闲游戏开发

休闲游戏通常以其简单的玩法和易于上手的特点而闻名。这些游戏包括匹配三消、点击放置、太空射击等类型。它们通常采用HTML、CSS和JavaScript等前端技术进行开发。对于初学者来说,休闲游戏是一个很好的起点,因为它们的开发相对简单,但仍然可以提供有趣的游戏体验。

2. 益智游戏开发

益智游戏侧重于解谜和问题解决。数独、拼图游戏和逃脱房间游戏是其中的代表。这些游戏需要复杂的逻辑和算法,通常使用JavaScript来实现。开发益智游戏需要精心设计的谜题和游戏机制,以挑战玩家的智力。

3. 动作游戏开发

动作游戏要求玩家具备快速反应和出色的手眼协调能力。平台游戏、射击游戏和跑酷游戏都属于这一类别。为了实现流畅的游戏体验,开发者通常使用HTML5 Canvas或WebGL等技术进行图形渲染,同时使用JavaScript处理游戏逻辑。

4. 角色扮演游戏开发 (RPG)

RPG游戏允许玩家扮演虚构角色,在虚拟世界中冒险、战斗和升级。这类游戏的开发涉及到角色管理、任务系统和战斗机制的设计。前端技术,如HTML、CSS和JavaScript,通常用于创建游戏界面,而JavaScript用于实现游戏逻辑。

5. 卡牌和策略游戏开发

卡牌游戏和策略游戏要求玩家制定策略和使用卡牌或资源来获胜。这些游戏的开发通常需要前端技术来创建游戏界面,同时使用JavaScript来处理游戏规则和逻辑。玩家需要思考策略,因此这类游戏往往具有深度和复杂性。

6. 多人在线游戏开发 (MMO)

MMO游戏允许多个玩家在线互动,通常包括多种游戏类型,如角色扮演、战略和社交互动。开发MMO游戏需要服务器端和客户端的开发,服务器端通常使用后端技术(如Node.js或Python),而客户端使用前端技术和游戏引擎来创建用户界面和游戏体验。

7. 体育游戏

体育游戏模拟各种体育运动,玩家可以参与并体验。足球、篮球、赛车等体育游戏通常使用HTML5 Canvas或WebGL来呈现游戏场景,同时使用JavaScript来实现游戏控制和逻辑。玩家需要运用战术和技巧来取得胜利。

8. 教育游戏开发

教育游戏旨在教育和培训。数学游戏、语言学习游戏和历史模拟游戏等类型的教育游戏通常使用前端技术和自定义逻辑来创建教育内容和互动元素。这些游戏可以帮助玩家学到新知识和技能。

总之,网页游戏的类型多种多样,每种类型都有其独特的特点和开发要求。开发者可以根据自己的兴趣和技能选择适合的类型,并学习相关的技术来实现各种令人兴奋的网页游戏。无论您是初学者还是有经验的开发者,网页游戏的开发都是一个创造性和有趣的过程,可以为玩家带来娱乐和挑战。在不断进化的互联网游戏世界中,创造和分享您的游戏是一种独特的乐趣。

猜你喜欢
最新游戏更多
热门专题更多
最新资讯更多