TL; DR
WTVR engine is a set of tools created to create feature-rich games on the web, embracing the WebComponent ecosystem and the philosophy of the web, yet using modern and efficient Web APIs and technologies.
About the project
This project is a set of Open-Source tools aimed at making web games, first developed as a set of tools for WTVR games-related, yet undisclosed, projects.
It is made out of 2 main tools meant to work hand-in-hand :
- A 3D engine for the web, working with WebAssembly for performance with a JS API for scripting. The goad was to have something lighter and more efficient than ThreeJS with the same ease of use.
- A set of Webcomponents to handle UI and gameplay elements
As of yet, 2 components stand out :
- The 3D engine itself wtvr3d, displayed at the top of this page with a sample model that I made years ago
- A “progressive text” webcomponent,wtvr-expressive-text meant to provide RPG-style letter-by-letter text display, with theatrical pauses and letter effects meant to provide tone and character to dialogues
wtvr3d
wtvr3d
is an in-progress 3D engine using bare WebGL 2 and written in Rust , targeting WebAssembly .
You can see a static render of a 3D object at the top of this page.
This engine features :
- Loading of static 3D Meshes with separate textures
- Display of 3D meshes from a “classic” game-like camera with several parameters to influence rendering
- Normal mapping and custom GLSL shaders
- Several lights including directional lights and point lights
Missing features
In order to have a fully-functioning 3D engine, it’s still missing
- Shadows and shadow maps rendering
- Skinned mesh animation and handling of skeletons, animation blending
- Blend shapes
- Tools for transforming efficiently the file formats for use in the engine. ( some work has been done in the Editor repo)
Overall, this experience taught me a lot about 3D engines and 3D APIs, how they work under the hood and how to achieve efficient Optimization in 3D engines.
WTVR Expressive Text
wtvr-expressive-text
is a WebComponent for easy set-up of progressive letter-by-letter text, in use on the Home page of this website.
It can even yell!
The markup necessary to produce the above text is presented below :
<wtvr-expressive-text marker="" id="demo-text">
<span>
With only a few tags, you can generate letter-by letter text,
with automatic pauses for punctuation, and <span data-letter-effect="wavy-rainbow">fabulous</span>
or <span data-letter-effect="spooky">spooked</span> letter effects.
<br/>
<span data-letter-effect="yelling">It can even yell!</span></span>
</wtvr-expressive-text>
As a WebComponent, it provides attributes to control its behavior, including display speed and end marker, for instance, and is controllable via accessible Javascript methods.
I’ve stopped working on WTVR-engine for quite a while, and the project has become stale, but I still have the ambition to resurrect it one day, in order to use it in toy projects of mine, including Echoes of Elsewhere. Stay tuned!