文章相关引用及参考:mozvr

本文来自Mozilla的Josh Marinacci

(映维网 2019年02月06日)在倡导新技术时,我总是尝试采用现实世界开发者的方式,而对于WebVR,开发一款游戏则是目前最好的方法之一。所以在假日季期间我制作了一款游戏《Jingle Smash》。下面我将概述我是如何将其开发出来。

1. ThreeJS

我是用ThreeJS编写了《Jingle Smas》,而我在所有demo中都有采用一些常见的模板。我选择直接使用ThreeJS而不是A-Frame的原因是,因为我知道我会添加自定义纹理,自定义几何和自定义控件方案。尽管你可以用A-Frame做到这一点,但我需要在ThreeJS level编写非常多的代码,这样我可以更轻松地处理middle man。

2. 物理

《Jingle Smash》是风格类似于“愤怒的小鸟”,你可以把一个物品扔向方块,击倒它们以摧毁目标。一旦摧毁了目标,你就可以进入下一个关卡。我从学校里掌握了足够的例子物理,足以帮助我编写一个简单的2D物理模拟器,但3D碰撞远远超出了我的水平。我需要一个物理引擎。

在进行了一番评估之后,我选择了Cannon.js,因为它是100%的Javascript,并且对UI没有要求。它只是计算空间中物体的位置,并允许你的代码负责单步调试。这使得它很容易与ThreeJS集成。它甚至提供了一个示例。

3. 图形

在之前的游戏中,我都是使用了一位美工创建的3D模型。对于《Jingle Smash》,我用代码开发了所有一切。背景,方块和装饰都采用了标准的或生成的几何。除了天空背景之外,所有纹理也都是用2D HTML Canvas生成,然后再转换为纹理。

我选择了纯粹生成的方法,因为这允许我轻松调整UV值以创建不同的效果和使用我想要的颜色。在以后的博文中,我将深入探讨它们的工作原理。以下是生成装饰纹理的快速示例:

4. 关卡编辑器

大多数方块游戏都是2D。玩家可以看到整个游戏板。但一旦你进入3D,方块就会遮盖背后的方块。这意味着关卡设计将完全不同。查看观看的唯一方法是实际跳转到VR。这意味着我真的需要一种提供玩家视觉的方法来编辑VR中的关卡。

为了完成这项工作,我在VR中构建了一个简单(丑陋)的关卡编辑器。这需要为编辑器控件构建一个小型2D UI工具包。得益于HTML画布,这个过程并不太难。

5. 下一步

我对《Jingle Smash》的效果非常满意。很多人都在Mozilla All-hands进行了体验,并表示自己玩得很开心。我进行了一定的性能优化,能够将游戏提升到大约50fps。但显然,我仍有更多的工作要做。

《Jingle Smash》证明我们可以开发出能在WebVR中运行的有趣游戏,并且加载速度非常快(网络良好的情况下,整款游戏的加载时间不到2秒)。你可以通过GitHub查看《Jingle Smash》的完整(但很混乱)代码。

文章《研发实践:Mozilla分享如何开发一款WebVR小游戏》首发于映维网.

html小游戏代码_研发实践:Mozilla分享如何开发一款WebVR小游戏相关推荐

  1. python人机猜拳游戏代码_实用宝典|如何用Python实现人机猜拳小游戏

    首先,解释一下人机猜拳,猜拳相信大家都了解,通俗讲就是"石头.剪刀.布"嘛!再简单不过的一个小游戏,而所谓人机猜拳其实就是猜拳的双方中一方是人另一方是计算机. 问题一 人的问题好解 ...

  2. 手牵手,使用uni-app从零开发一款视频小程序 (系列上 准备工作篇)

    系列文章 手牵手,使用uni-app从零开发一款视频小程序 (系列上 准备工作篇) 手牵手,使用uni-app从零开发一款视频小程序 (系列下 开发实战篇) 前言 好久不见,很久没更新博客了,前段时间 ...

  3. 实战:一天开发一款内置游戏直播的国产版Discord应用【附源码】

    游戏直播是Discord产品的核心功能之一,本教程教大家如何1天内开发一款内置游戏直播的国产版Discord应用,用户不仅可以通过IM聊天,也可以进行语聊,看游戏直播,甚至自己进行游戏直播,无任何实时 ...

  4. Second Dinner 工作室正与漫威合作,开发一款漫画改编游戏

    Kotaku 的资深舅舅报道说,由前炉石执行制作人朱仲英(Hamilton Chu)领衔的 Second Dinner 工作室正与漫威合作,开发一款漫画改编游戏.该工作室规模很小,但骨干成员全部来自暴 ...

  5. c++编写手机小游戏代码_只需22行代码,用python编写自己的小游戏

    假期最后一天,有些人在外面玩累了,有些人躺在家里快发霉了,闲暇时候不如动动手做个小游戏玩一玩吧! 本文实例为大家分享了python编写猜数字小游戏的具体代码,供大家参考,具体内容如下 1 import ...

  6. 记事本贪吃蛇游戏代码_如何用Python10分钟绘制贪吃蛇小游戏?

    贪吃蛇是一款经典的益智游戏,有PC和手机等多种版本,既简单又耐玩.玩家通过上下左右键控制蛇的方向,寻找食物,每吃到一次食物,就能得到一定的积分,而且蛇的身体会越来越长.随着蛇的身体变长,游戏的难度就会 ...

  7. python做游戏代码_利用Python基础代码语句,实现2G时代文字小游戏,世界如此简单!...

    相信许多80,90后都玩过2G时代的文字小游戏,它是来自QQ家园的专属回忆.偷菜,美味小镇,大乐斗,还有精武堂等等,虽然只是文字的输出,但是留给我们这一代的人的印象却是最深刻的.曾经流量很少,响应很快 ...

  8. python图形小游戏代码_手把手制作Python小游戏:俄罗斯方块(一)

    手把手制作Python小游戏:俄罗斯方块1 大家好,新手第一次写文章,请多多指教 A.准备工作: 这里我们运用的是Pygame库,因为Python没有内置,所以需要下载 如果没有pygame,可以到官 ...

  9. python迷宫小游戏代码_课内资源 - 基于python实现的迷宫游戏

    一.项目概述与编译环境 本次大作业选题为题目2,即小兔子找胡萝卜的迷宫问题,最终完成开发的游戏名为Caveman and Treasure(穴居人寻宝),游戏整体界面如下: 该项目在windows下编 ...

最新文章

  1. java 远程共享_【原创】(扫盲)远程共享对象SharedObject的用法
  2. 【MATLAB】符号数学计算(六):符号函数的操作
  3. 80%的人都不知道的排版利器,博士生都在用它!
  4. python3讨论交流地_讨论 - 廖雪峰的官方网站
  5. 【复习】使用 SQLiteDatabase 操作 SQLite 数据库
  6. cip协议服务器,控制及信息协议(CIP)
  7. 哈佛机器人,学会了轻功水上漂
  8. 李飞飞创建的AI4All启动首次mentorship计划
  9. vsftpd不支持目录软链接的解决办法
  10. 虚拟机启动时出现operating system not found如何解决?
  11. 360无痕浏览器_功能强大好用的浏览器
  12. BosonNLP情感词典 评论情感分析
  13. 天翼宽带怎么开虚拟服务器,怎么设置天翼宽带猫的无线路由器
  14. debian10上安装samba服务器
  15. 服务器存储位置,云储存位置及存储服务器
  16. git Pull Request 是什么意思?
  17. 利用Madmom识别和弦
  18. excel表格打印每页都有表头_excel打印如何每页都有表头 最常用的办公小技巧
  19. java 车牌号归属地_本地化JavaAnpr用于本地的车牌
  20. 颜值是第一生产力 - Windows Terminal

热门文章

  1. Java设计模式学习总结(15)——行为型模式之责任链模式
  2. Linux学习总结(27)——CentOS7及以上系统的systemctl命令使用介绍
  3. 软件实施提升效率的五个工具
  4. App后台开发运维和架构实践学习总结(1)——App后台核心技术之用户验证方案
  5. Java基础学习总结(44)——10个Java 8 Lambda表达式经典示例
  6. linux top功能,[每日一题]说说Linux top命令的功能和用法
  7. 计算机基础知识背诵口诀,内部资料--教育基础知识背诵口诀(一遍记住)
  8. babel css3新特性_前端总结(后续不断更新)
  9. 《Spring Boot官方指南》28.安全
  10. 《深入Ajax架构和最佳实践》读书笔记