Skip to main content

On Sale: GamesAssetsToolsTabletopComics
Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Tomwol

17
Posts
16
Followers
1
Following
A member registered Jan 04, 2023 · View creator page →

Creator of

Recent community posts

Sorry, about that.  https://discord.gg/Hxr7FPAn

I'll update it

Unfortunately that is still tbd, so right now you would have to just copy+paste.  I’ll be adding a mechanism for that soon since I’ll need to do the same for my better intersection functions anyway.

I added some steps to the bottom of this article.  Basically, you can navigate to the assets/geometry_elements folder to add some shape definitions and then create levels in an existing .ron file.

Yep, the projection function is supposed to give the closest point, although it doesn’t always have to be exact.  The sphere, plane, and box projection functions are exact, outputting the closest point on the surface of the object to the input.  Other functions are more approximate, like the möbius strip, intersection, and interpolation functions which give a somewhat close point (because the real projection fn is too complex).  I usually look at a shape’s 3D sdf first to get an idea of what the fn should roughly look like, then play around in 3d desmos and then extend to 4d from there.

Thanks!  Right now I'm planning on doing something very close to that, likely a speedrunning/platforming focused game inspired by Marble Blast Ultra with multiplayer and sandbox modes.  I hadn't actually seen monkeyball before, but I tried an online emulator version and it was really fun.

I uploaded the version I had in this video to the google drive here: https://drive.google.com/drive/folders/14UXYHcIoFhr9kYHzdlgCnf-XlHYUd3h5?usp=sha... .  I also added some instructions for it to the top of this post, enjoy!  : )

Here is a video with the Duocylinder, wormhole, and a few other manifolds.  The womhole between parallel planes is actually what I did in the previous video.  Also, I think the closest I can get to the Klein bottle right now however is the Mobius strip in the previous video since the Klein bottle has a 2D surface despite requiring 4 dimensions to embed.  To show it off with a 3D surface I think you would need 5?


So far I've implemented a basic 3D map as shown in the video.  Finding a way to create 2D (assumably top-down) maps of arbitrary 3D surfaces might be a bit tricky, but it's definitely worth trying.  Maybe if I can get that to work I can give the player the option to switch maps like in Hyperbolica.


Once I work on the menus and settings I'll allow the player to toggle gravity and free cam.

It'll likely be a while before I can get to different kinds of manifold descriptions (alternatives to proj fn), but it is something I'll try eventually.  Rendering general geodesic equations would definitely be interesting.

I believe if you tried to take these areas of local hyperbolic geometry and extend them, you'd end up with a lot of self-intersections (unless you're in 6D and have extra dimensions to extend into).  You can see this visually in this part of this video by CodeParade, creator of Hyperbolica.  The crocheted hyperbolic plane gets really cramped as it is extended outwards and would continue to get more cramped if it were larger.

I also could theoretically try to deal with self-intersection, but it might be difficult, especially in the case of the hyperbolic 3D-plane.

It's hard to make a good estimate, but I should have a decent amount of time coming up so my pessimistic guess would be early May/late April, but hopefully sooner.

hahaha, I'll keep it as an option in settings lol

Unfortunately even 2D hyperbolic geometry embeddings use up more than euclidean 4D (source).  I could probably make this happen in the future if I generalize the embedding code to allow for an Nd embedding.  The game still has a lot of small areas with local hyperbolic geometry like the inner part of the wormholes: InnerWormhole

Inner part of a wormhole

I implemented the tiger, sphone, and duospindle here (specifically at 7:03):

The Duo-spindle was really cool.  I didn't have to round the manifold to get a good result which was surprising, and it had some interesting features.  

It got cut off in the video, but here's the projection function I used for the duospindle in the video:

Proj::proj(vector: vec4) -> vec4 {
    let xy: vec4 = vec4(vector.x, vector.y, 0, 0);
    let xy_len: f32 = length(xy);
    let zw: vec4 = vec4(0, 0, vector.z, vector.w);
    let zw_len: f32 = length(zw);
    let d: f32 = clamp(xy_len - zw_len, -r, r);
    let xy_component: vec4 = select(
        normalize(xy),
        vec4(0, 0, 0, 0),
        xy_len == 0
    ) * (r + d);
    let zw_component: vec4 = select(
        normalize(zw),         
        vec4(0, 0, 0, 0),
        zw_len == 0
    ) * (r - d);
    (xy_component + zw_component) / 2
}

The rest of the basic shape code is at 14:31

I'll try some of the other manifolds soon, the pinched duo-cylinder looks interesting.

It's a side project.  I am hoping to get back to it this holiday season, but that's why it's been on the back burner.  Also, trying to get rotation to work reliably without exploding has been very challenging which has also slowed progress when I've tried to work on it (although I'm slowly getting closer to it working, I think).

Good to hear it works on linux, hopefully the lag will be better once I shift focus towards optimizing everything, but looking at the sky will likely always make the lag a little worse (because all of the marched rays will step forwards the maximum number of times since they don't hit anything).  It definitely can be improved though.

The version uploaded here has the levels hardcoded so it's not an easy fix, but the version I'm working on right now not only has the level files exposed (in the assets folder using RON: https://github.com/ron-rs/ron), but also the geometry descriptions written in a small wgsl-like language I made (https://github.com/TomjWolcott/scaffold_scripting) and some limited scripting written in rhai (https://rhai.rs/).  Here's a small post showing off the various scripting files: https://tomwol.itch.io/arbgeom/devlog/781405/scripting-files-for-arbgeom-august-...

Thank you, it's great to hear that it's working on rtx!!!

I haven't given up, I've just been busy recently which I believe (hopefully) should change soon.  I now have rotational physics seemingly working and I'm trying to get friction working too.  Once I have those I'll upload a video demonstrating them across some cool new geometries I haven't shown off yet   : )

Yay!  Thanks