Here is a .gif (jiff?) of the final game, click here to play the game. It uses the WebXR DOM Overlay API, and the WebXR Hit Test API. So right now the best way to play it is in Mobile Chrome or Samsung Internet Beta.
Here is a .gif (jiff?) of the final game, click here to play the game. It uses the WebXR DOM Overlay API, and the WebXR Hit Test API. So right now the best way to play it is in Mobile Chrome or Samsung Internet Beta.
IFrames are really useful for WebXR. Often WebXR web pages are large with a lot of code and many 3D frameworks default to taking up all the available space on the page. IFrames solve these issues by letting you put all the XR code into another webpage, which can even be on a different domain, they also let you choose exactly how much space they take up on the page and can be used with Flexbox and CSS Grid.
These tools are not ones I use everyday but they have got me out some really sticky situations. I hope you find them useful too.
I recently made a relaxing koi garden demo, where koi fish swim around a VR environment. The two most notable parts of the scene are the 3D positioned audio which I wrote about previously and the 100s of fish which appear to organically swim around the trees.
Audio is a fundamental way of adding important theming and immersion to games and virtual reality experiences on the Web. It’s not too hard to add but can do wonders for giving the user a wonderful experience. Resources like Freesound make it easier to find Creative Commons sound effects and music so there is no excuse to leave your experience silent.
HTML in the Web is often made of reusable components, composed by templates, making it convenient to edit the different parts that make up a website. There are many templating languages used in the web such as handlebars, Pug, Vue and JSX; these are primarily used for composing HTML. Modern JavaScript has templating syntax built in which can use for all kinds of purposes including composing HTML.
You know that thing where you go to a web site then before you can do anything you have to acknowledge the push notification request. Do you hate that? Yeah, me too.
This was a feature I had set aside an afternoon to implement but in the end it only needed a moment and made the experience significantly better.
Edit: This has now landed in Samsung Internet stable. You can download here.
Last time we introduced about Deno and discussed how it compares to node, like node, Deno is a server side code-execution environment based on web technology.
In ideal conditions the user will always maintain a good connection to the web but things are seldom ideal. Fortunately since we’re been building a web app we have a service worker which has the capability of caching network responses.
In VR, with an advanced headset, one can explore a scene by walking in the real world. We’re often limited to the size of the room we’re in but the VR world can go on forever!
A common misconception in Web Development is that the DOM is slow. The DOM, short for Document Object Model, is the structure of the Web Site which your code interacts with. If you were to ask me whether the DOM is slow I would answer that, like most things in computer science, it depends on the circumstances.
I built this demo as a quick experiment when we were working on an Internal Samsung product. One feature I implemented was the menu where items reveal themselves as you scroll down.
In the previous article we built a magazine style page layout of horizontal scrolling panes using only CSS and HTML, link to the demo. This works really well and is great experience with touch and mouse.
Isn’t it nice when the tools you work with get better and better when you’re not looking? That’s what it feels like working in the Web some days.
In the first part of this series we looked at generating the texture that goes on top of the water which looks like this, using SVG and canvas:
As desktop browser developer tools improve continuously, the responsive design modes are incredibly useful for testing out designs on other screen sizes such as tablets and mobile phones. For web developers, it can be tempting to rely on these tools for full end to end development, but I want to highlight the important of testing on real devices.
This is a 3 part breakdown of how this water effect works, you can view the finished demo here: https://a-toon-ocean.glitch.me/
You can have 6-8x more images in your WebGL scene by using Basis Universal textures which are very efficiently compressed. This article describes how to encode images as Basis files and read them with THREE.js
A mistake consistently made by some of the biggest websites shows they are thinking about responsive web design incorrectly.
The demo in this article show’s how to uses the Houdini paint API, which is a part of the larger Houdini spec. Houdini is still coming to browsers but is ready to try out.
I wrote this article whilst building a demo website which uses both expensive physics and an expensive SVG filter. It was important that it felt really tactile on mobile devices, so it had to run very smoothly.
Ever feel like you live in a terminal? This guide is to show how you can make your commandline apps more friendly.
Last year I wrote about how you can use a phone for web development using an Android Linux Terminal and a simple editor I’d made as a Progressive Web App. It worked pretty well but had some drawbacks, for example you couldn’t debug Samsung Internet on the DeX you had to use an external laptop.
This example shows what can be accomplished with the canvas like powers the Houdini paint methods by using Three.js to render 3D text as the background image of a DOM element.
A nice chat with Jo Balletti about what it's like mentoring at Codebar and experimenting with CSS.
In this episode, Ada Rose Canon tells us how she built a WebVR game in a week for the “Games Done Quick” event. She explains how she used A-Frame, Twinery, Archilogic, Glitch, Google Poly, binary, and a bit of JavaScript to create a game engine and a responsive virtual environment.
Earlier I demonstrated how to build a Single Page App which shares templates with the Server Side Code. We share the web app’s templates to enable the first page load to be pre-rendered on the server. This practice lets Web Apps start faster and be more resilient to network failure.
There are some exciting new developments happening in the web platform right now. New APIs such as CSS Grid, Web Components, Custom CSS Properties and the Web Animation API. Each on their own is a complex topic worth getting to grips with but what this talk aims to show is how they can be used with each other when used together the result is greater than the sum of its parts.
Live Coding a Single Page App with Server Side Rendering making use of ES Modules and HyperHTML for importing templates in the browser and in the node server.
I get asked this question a lot. I hope to give some advice in this article.
I tried to make a game mostly using tools available on the web. This is a guide to how I integrated these tools together to allow me to create a 3D RPG in a short period of time. With Twinery and AFrame.
This is based on a case study where we built a suite of web components to allow anyone to make music visualisations and VJ for nightclubs. Introductory article to this project.
Check out my very short game! No download, play it right in the browser. I made it to demonstrate integrating Twine with A-Frame to make a 3D visual novel in the web.
This article introduces some cool things I have been playing with recently that have excited me. The thread which ties them together is getting communities of sites to work together across domains, but powered by the front end.
Recently, there has been a proliferation of virtual reality (VR) web browsers and VR capabilities added to traditional browsers. In this article, we’ll look at the state of browsers in VR and the state of VR on the web via the WebVR APIs.
An introduction of upcoming web APIs, CSS Grid, Web Animation and Custom Properties. These new APIs when used together can bring a new way to use the web paltform to develop websites without the need for frameworks.
(If you are already familiar with HSL jump to the end for some fun tips.)
The Web has Native support for parsing and editing Binary data. This can be very efficient for example this is how I sync the state of 170 Virtual Reality users in the same venue without bringing down the network.
New Virtual Reality browsers means we need to consider how the web platform is going to need evolve to take advantage of the benefits that Virtual Reality can bring.
VR is here, there are VR web browsers and new APIs to enable VR across a wide range of devices. The WebVR APIs rely on WebGL to render an immersive environment. This interactive talk aims to introduce a way of writing and controlling WebGL scenes with just HTML, accessible to web developers of all skills; no knowledge of 3D rendering required!!
On setting an Android phone as a Desktop computer and using it for Web Development.
WebVR demo built with A-Frame
At the recent LDNWebPerf I had the entire audience sharing the same Virtual Reality being able to see virtual reality slides where I dynamically added content to demonstrate capabilities of VR.
New Virtual Reality browsers means we need to consider how the web platform is going to need evolve to take advantage of the benefits that Virtual Reality can bring.
Virtual reality has come to the web! There are now browsers which work inside Virtual Reality headsets. Ada explores how VR can make our websites better and what do we need to take into account to make immersive experiences on the Web. - Paris, 2016
With new web technologies enabling a new generation of install-able app-like websites it is important to ensure the web carries on working for everyone. This talk will discuss the P in PWA, progressive web apps should work for everyone and should not let their app-like approach divorce them from the web.
We invited Ada to chat with Chris Heilmann about the concept of Progressive Web Apps, what new technologies like Service Worker mean for the web and a few more of the technologies she explained in her article “The Building Blocks of Progressive Web Apps“. She had a lot of great insights into application development for the web and tips and tricks how to make them work for everybody.
The W3C WebVR workshop, in in San Jose, was the first workshop on WebVR and was an incredible experience, many of the leaders in VR for the web took part to discuss how WebVR will evolve in the future. This covers some of the points raised and the direction WebVR is growing in the future.
or: How I Learned to Love the Web.
On giving vanilla web tech a go and how there is more to the web than knowing JS frameworks. Encouraging a focus on Progressive Enhancement
One can greatly make reduce the load time of A-Frame textures by using imageOpim a CDN backed image service to optimise resources on the web which can dramatically reduce filesize and loading time.
A talk to get started building VR in the web A-Frame lowers the barrier for entry to Virtual Reality in the web for the developer AND end user. Rapidly prototype and have fun with Web VR.
Web apps can replace all of the functions of native apps and websites at once. They are coming more and more to the fore these days, but still not enough people are familiar with them or adopting them. Here, you will be able to find some do’s and dont’s on how to make a progressive web app, as well as resources for further research. I’ll also go into the various components and support issues surrounding web apps.
Equirectangular images can be used as sky boxes and reflection maps. This is a how-to and a bookmarklet for generating Equirectangular 360 image maps from A-Frame scenes.
I made my first PR to A-Frame, this to add support for Normal, Displacement and Ambient Occlusion maps, as well as support to allow one to use their sky sphere as an environment map.
Progressive Web Apps are in flux at the moment, these are the opinions of someone who has been working on web apps before they got conflated with Service Workers and new web tech.
A Progressive Web App "uses modern web capabilities to deliver an app-like user experience. They evolve from pages in browser tabs to immersive, top-level apps, leveraging the web's low friction." with Ben Kelly, Nolan Lawson, Henrik Joreteg, Kent C. Dodds and Ada Rose Cannon.
360 degree video spheres in the Web with Web VR. New cameras and the advent of VR heralds a new era of immersive video experiences.
Notes from talk at SDC, Introducing setting up progressive Web Apps with the Web App manifest, service workers & push notifications.
Push messaging powered messaging web app.
This is a bookmarklet to run on any page to analyse the contrast of the text on a page and highlight elements which may have readability issues.
Swing your phone around to make sounds with the Web Audio API, install with 'Add to homescreen'
A major Science Fiction blockbuster, in a Franchise I am a big fan of, hit cinemas a short while ago. In a furore of brand fan-girl-ism and being unable to afford to buy a Force-Effect lightsabre of my own, I did what any reasonable developer would do and I built my own. This was a quick one afternoon project and I wanted to break down what went into it.
This talk was initially based upon the talk I gave at the Extensible Web Summit but I have expanded it to encompass animation performance in general.
ES6 introduces the const
keyword. One issue I’ve seen raised a few times by people who are skilled with Javascript but unfamiliar with ES6 is confusion because when an object is defined using const it is not immutable.
I and someone from slack tried implementing an accordion with the techniques discussed in my previous post.
For my talk at the Extensible Web Summit I had limiited time because I had put off working on it until the last minute. I also wanted to run and pause javascript in the slides and because of these constraints, I figured it would be quicker to roll my own solution than to use a pre-existing presentation framework such as slid.es.
On Monday 20/04/2015 I gave a ligtning talk at the extensible on animation performance in the browser.
These are the notes from the talk prose-ified.
Link to the talk. Talk notes are displayed on mobile.
[Glitch Bunny] is an audio visualisation. It uses input from the microphone via webaudio and maps it onto a bunny.