Using WebXR types in Typescript

     

I’ve recently taken my hand made type definitions for WebXR (for use in my Mesh Game Engine) and submitted them to DefinitelyTyped (DT). Lazily, I hadn’t switched the game engine over to using the DT version. The definitions just got their first update from a new PR so it seemed like the perfect time to swap over. There were a number of gotchas in doing so, so I thought I’d post about how I got it working and some pitfalls you might run into if you’re into this kind of thing.


Fun with Matrices

     

This post is a little bit contrived. Since I’ve been playing around with 3D graphics and GPUs, I’ve become fascinated with matrices (and maths in general). On top of that, I’ve been looking for a reason to play with Jupyter Notebooks. I’ve become interested in literate programming as well - it seems like a fantastic teaching tool. So instead of doing what I was supposed to be doing this lovely Saturday, I decided to try to write a super basic (non compatible) version of Jupyter Notebooks for Javascript posts (I call it Kale).


You Don't Need All That JS. Diffy.

     

I find the simplest solution is often the best one. When it’s not, it’s often on the right path. I’ve been helping a mate try to get his startup running. He is a seasoned (and exclusively) back end engineer who is now thrust into the new 2020 front end world. He hates it. He bemuses, “nothing makes sense and everything is overly complicated.” Humorously timely, there as a video put out by the goto; event: You Really Don’t Need All That JavaScript, I Promise.


Getting Makefiles Working on Windows 10

     

As you might know from some posts on here, I’ve been getting into 3D programming AR / VR / spatial computing as well as dabbling in machine learning and parallel algorithms using GPUs. For the past few years, I’ve been doing this on hardware from like 2011. I needed an upgrade, and I couldn’t find an offering from Apple that fit the bill. So I’ve had to byte the bullet and leave the Apple ecosystem for the first time since… what… 2003.


WebGl, WebVR, Webcomponents Oh my

     

Now that I’ve started porting my Javascript game engine https://mesh.robrohan.com/?#level:sound to Go, I’ve started using the javascript version for some fun experiments. The first one, you should hopefully see above. It’s the game engine in a webcomponent. I haven’t fully tested it, but it should work in the latest versions of the popular desktop browsers (on recent OSs). I think putting the engine in a webcomponent is an intresting idea. It allows one to basically just do:


Go + OpenGL 2.1 + Shaders + VertexAttribPointer

     

Wow, that took a while. I decided to port my little JavaScript + WebGL 3d game engine to Go. Everything was going along quite well until I decided to put together a little test renderer to see how it was all shaping up. It’s fun to watch unit tests pass and all, but I wanted to see some 3d on the screen. Go has bindings for OpenGL via cgo, and the library has a few examples of how to use OpenGL with Go.


3d Game Engine Retrospective

     

NOTE This is a work in progress. Demo links on here depend a lot on your system and video card. But give them a go - you’ll know if they work. I’ve finished some of the key features of my little 3d engine. The list includes Basic Levels, sprites, sounds, and basic interactions between objects. Enough features to build a small game - which, arguably, is the hardest part. I’ve started cutting down my original idea into some much smaller and far less ambitious.


Running Physics in a Webworker

     

Anyone who knows me knows I wont shut up about this “game engine thing” I am working on. I admit it, I’ve been a bit obsessed. The reason I am obsessed, I think, is because I get to solve problems that I’ve never really had to solve before. This weekend, for example, I need to make some sort of grid system (or binary space partition) to limit the number of objects I am tossing around in the engine - this kind of stuff never comes up in day to day life!


Mesh 3d Engine Progress

     

NOTE Demo links on here depend a lot on your system and video card. For example, Firefox 60 on my desktop doesn’t work, but on my laptop it does. Chrome works on my desktop, but not my laptop. And Safari, well, yeah. But give them a go - you’ll know if they work. I’ve been obsessed for the past few days trying to get my little 3d game engine closer to useful.


It is time to get into Webassembly

     

I’ve been keeping an eye on webassembly for the past few years, but it hasn’t felt ready to be used yet. However, over the weekend I took another look, and, to me, it seems baked enough to start using it “for reals” now. If you don’t know, webassembly is an attempt to create an assembly like language for the web. Instead of writing JavaScript, you’d write in an assembly language which would get your code base to run much faster (sometimes 30x faster from what I have read).