Miegakure Update November 2020: art direction in 4D

Development on Miegakure is going well.

Modeling the large buildings is very far along and will be done soon.

I polished many things across the entire game.

In July I recorded my SIGGRAPH 2020 Talk about my Technical Paper on n-Dimensional rigid body dynamics, and will post it publicly soon.

I started working with a new artist to *really* nail down the final look of the game and environments across the whole game in a more integrated way. In the process we finally fully switched the engine to Physically Based Rendering (It was an easy switch, actually, contrary to what could be expected!)… and it makes the game look even better.

These were my thoughts as we nailed down the look of the game, and about how 4D space constrains our art direction in Miegakure:

In Miegakure we procedurally generate many 4D meshes and 3D textures. Just like 3D objects have a surface that is 2D, 4D objects have a surface that is 3D! The game also has many regular 3D meshes (with 2D textures) which are embedded in the 4D world, by giving them 4D thickness.

At first it might seem difficult to generate procedural 3D textures which are as detailed as 2D ones made by hand. And we need both at the same time!

In order to have details that aren’t noisy during transition, for a while I was using a combination of a 2D texture and a 3D texture, where the 2D texture contained more detail but was not affected by the slicing, and was just projected onto the sliced object’s surface. This was a hack, which you can see in the trailers: the high frequency detail of the texture just either slides or streches.

However too much 3D texture detail looks bad during the “transition” anyway. (The transition is what I call the time when the slice rotates 90 degrees after you press the 4D rotate button.) If the slice goes through many tiny objects as it rotates, the time each tiny object will be visible will be very short. This would look like many appearing/disappearing objects. The smaller the objects, the quicker they will be appearing/disappearing. In this video of an MRI of a fruit, the tiny seeds look noisier than the larger overall shape as the slice changes (but the colors are all grayscale and the size is still fairly big so it doesn’t look bad). So if a 3D texture has too much small detail, even if it looks good as a static 2D slice, it will look very noisy during the transition. So actually we don’t want to generate too much 3D texture detail, even if we can!

By the way there is a noise issue in 3D too: when the 3D camera moves over quickly changing detail it can create aliasing (a “shimmering” effect). Much of our 3D handmade content (large buildings, trees…) was already made to be less noisy in that sense. Stylized games have an easier time avoiding this problem since they often contain large flat regions of color.

Also, note that we can replace texture detail by geometric detail. This is part of what happened in the games industry with the transition to Physically-Based Rendering. Textures in PBR are not supposed to contain lighting/shadow information, only material information. For example, a rock texture might just be a simple gray color, and if we want actual cracks in the stone we model them as geometry (or normal maps) instead of dark lines in the texture. One of the goals of PBR is to make sure that the props will look good under many lighting conditions: for example a texture where the dark shadows are already stored in the texture (as opposed to computed using the light source) makes it harder to do that. Here is an example comparison/explanation.

Traditional and PBR textures

So it is in some sense more correct to use geometric detail instead of texture detail anyway. And most of the time it is simpler to procedurally generate geometry, so!

Miegakure can display more 4D geometric detail now compared to when development started. But there is obviously a similar limit for geometric detail where too much looks noisy.

So we can’t have too much texture/geometry detail, but on the other hand I don’t want the game to have very large flat section of colors like so many games have these days. I think it doesn’t work very well with the dioramas seen from far away, where all the visuals are condensed in a small section of the screen. I think it’s fine for the visuals to be simple if they fill a large area like the entire screen, but if they don’t then it does not give enough interesting stuff to look at.

The slicing mechanic also forces upon the game a certain level of realism. For example the tree canopies need to look good when sliced. We could model the canopy with a small number of large flat planes to give a nice painterly/low-noise vibe. This looks good in a regular game, but not when sliced, because the inner structure of the planes is revealed. It just looks like a bunch of simple intersecting planes instead of many tiny leaves creating a canopy. So we need to model leaves more realistically, but we can always make them mostly the same color to reduce noise, as shown here:

So to summarize: we want detail (enough to look good when sliced, and in dioramas, etc…), but not so much that it looks noisy (in the 3D and 4D sense). Compared to texture detail, geometric detail is easier to make and more correct (in the PBR sense and in how it doesn’t require 4D hacks). The final result is a combination of these constraints. It looks much more polished than before. I can’t wait to show it!

26 Responses to “Miegakure Update November 2020: art direction in 4D”

  1. James G says:

    Sounds like great progress! Excited to see it in action!

  2. Dane says:

    Been following this for a while and very excited to see these updates. 4D toys is one of my favorite mind benders to show to people in VR, and a whole game around that concept would be incredible.

  3. Ivan Braidi says:

    Can’t wait for Miekagure! I dream about the mind-bending puzzles that await us in this gem.

  4. Spencer says:

    To what extent do you make the art anisotropic in 4D? Since the models are mostly viewed at 90 degree angles, it seems like aligning models to the axes would be important.

    I’m also curious how lighting is implemented. Do you use 4D point lights, or is the 4D “sun” actually something like a spherinder so that the 3D surface is a sphere in each projection? If there’s a proper 4D light source I could imagine that there would be more opportunities for shadows, so does this have to be compensated somehow (e.g. more ambient light)? Do the material properties (or the bidirectional reflectance distribution function itselft) need to be adjusted significantly for physically-based rendering in 4D?

  5. Emil says:

    You’ve shown us a lot of 4D-polytopes, but have you made any Klein bottles yet?

    • Sam says:

      This is an important question… I think that he’s said yes to this… but I would like to hear it again, lol

    • marc says:

      Klein bottle are 2D objects, not 3D, so they slice are a bunch of ljnes, so I have to add projections to 4D Toys first, which I just did.

  6. csha says:

    Hey marc!
    I’ve been a huge fan of this project for many years now, and I can’t wait when I finally put my hands on it! Do you have any (at least vague) idea, when will Miegakure release? Is it in order of months? Years? Or even decades? 🙂 We (fans) have waited for quite some time, so we can obviously wait some more, but having some approximate idea about the release date would be awesome.
    Thank you <3

    • Interstellar says:

      As the steam page says: “when it’s done”. There have been many estimated vague release dates over the years, and they’ve all long since gone by. I think Marc doesn’t want to say anything more, because otherwise he may disappoint the fans.

  7. Sam says:

    Curious to step through these transitions and look at each frame ?

  8. joão says:

    amazing. take your time, man. this is going to be a beautiful game

  9. Timothy Bennett says:

    Man, I’m so excited for this!!!! Thanks so much for the comment

  10. grin says:

    How I wish, secretly and quietly that it wouldn’t be a windows™ only stuff. It would be so awesome not to. *sigh*

  11. Ashiq says:

    Awesome! Thanks for the update 🙂

  12. Jasper says:

    Very cool! I still have trouble wrapping my brain fully around the visual manipulation of 4D objects, even if I understand them conceptually. I’m excited to see the result of your hard work!

  13. Leo says:

    impressing work! cant wait the game releasing

  14. Dean says:

    I don’t think I have ever been so keen for a game in my life. I like so many others have been waiting for soooo long. Really glad it is still actively in development though and I hope I get to play it someday. Really wish there was, even just a year in Steam instead of “When its done”. That makes it feel dead in the water.

  15. Keani says:

    In 3d games people often take 2d ortographic photos of 3d stuff(the real world), make them seam-less and use it as a 2d texture.

    If is easy to make geometric detail, Couldn’t you take a 3d ortographic photo of a 4d scene and use it as a texture? Making it seamless would be just a matter of repeating objects at certain positions. Just a thought.

  16. ilone says:

    I’m probably missing something, please help me understand.

    The reason shaders and textures are used instead of geometry is, to my limited knowledge, performance (and maybe also to save some work building polygons). I’m interpreting “using geometry” as building more polygons to represent the cracks and bolts of the bodies (please correct me if I’m wrong). It is much easier to draw a cube, then make it look like it has cracks using shaders, than to actually draw a cracked cube, with cracks defined by polygons.

    Doesn’t the move to PBR has an affect on performance?

    • marc says:

      Yeah, I think in 4D it’s harder to generate textures than polygons. And in terms of performance, because our scenes are so small, there is not as much need to reduce the number of polygons. Reducing the number of polygons is more important for large scenes.

      Yeah PBR is slower.

  17. Ren says:

    Have you considered using an AI to generate multidimensional continuations to your 2d textures?