# U3D Engine - Walls, Floors, Pillars, Textures, and More!

**URL:** <https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656>\
**Category:** Show & Tell\
**Tags:** graphics-and-math\
**Created:** [June 22, 2026, 5:58pm UTC](https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656 "2026-06-22T17:58:10Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Unique](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/unique/32/32724_2.png) [@Unique](https://forum.makecode.com/u/Unique)\
**Post date:** [June 22, 2026, 5:58pm UTC](https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656/1 "2026-06-22T17:58:10Z")

</div>

# **U3D: a 3D voxel heightmap engine for MakeCode Arcade**

* * *

 ![u3d_banner](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/3X/8/3/83de13fefa3f09569ef63dd97e0c5728e917791e.png)

* * *

U3D is a raycasting engine that renders a 3D world from a heightmap and colormap image pair, with tilemap-based textured walls on top. It runs as an extension.

What it does:

- Heightmap terrain with vertical scale and smooth camera stepping
- DDA raycaster with perspective-correct wall texturing, distance shading, and a lava/floor texture layer
- Billboard sprites with bob, velocity, bounce, scale, animations, and pathfinding to the player
- Per-tile height overrides at runtime: lets you animate doors, moving floors, collapsing platforms without touching the tilemap
- Height-based collision so those dynamic tiles actually block the player
- `spinAround` for orbit-cam cutscenes
- Block extension with full visual block support

This has been a long build. There were some genuinely tricky bugs along the way (perspective metric mismatch causing wall shear, texture clamp-stretch at close range, literally sooooo many others) that took real work to track down. Posting this partly because I think other people might find the heightmap+raycaster combination interesting, and partly to get feedback before I keep going.

> Runs at 40-50+ FPS in the MakeCode simulator on my iMac 2019 (Intel i5, AMD Radeon 570X). Physical hardware performance will vary, though the engine has gone through several rounds of optimization specifically with hardware constraints in mind.

# Demo Project - Boiler Lab:

* * *

> **[U3D - Boiler Lab Demo - v.0.4.0 (beta)](https://arcade.makecode.com/S49951-86970-57009-39470)**
>
> An engine for 3D rendering, with heightmap, wall texturing, sprites, and mode 7 texture capabilities.

* * *

# Extension Link (v0.4.0+):

* * *

> **[GitHub - projectsbyunique/u3d: An engine for 3D rendering, with heightmap, wall...](https://github.com/projectsbyunique/u3d)**
>
> An engine for 3D rendering, with heightmap, wall texturing, sprites, and mode 7 texture capabilities.

* * *

> **Sources**
>
> [Raycasting 3D render -- Blocks Edition](https://forum.makecode.com/t/raycasting-3d-render-blocks-edition/12921)  
> [Mode 7 Engine](https://forum.makecode.com/t/mode-7-engine/44560/)

---

<div class="post-metadata">

**Author:** ![SmolderDev](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/smolderdev/32/33112_2.png) [@SmolderDev](https://forum.makecode.com/u/SmolderDev)\
**Post date:** [June 22, 2026, 7:03pm UTC](https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656/2 "2026-06-22T19:03:33Z")

</div>

YES! YOU MADE IT AN EXTENSION! Now I gotta finish mine and make a game with both.

---

<div class="post-metadata">

**Author:** ![VoxelMaster64](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/voxelmaster64/32/32075_2.png) [@VoxelMaster64](https://forum.makecode.com/u/VoxelMaster64)\
**Post date:** [June 22, 2026, 7:04pm UTC](https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656/3 "2026-06-22T19:04:53Z")

</div>

why does that look so cool 😭

---

<div class="post-metadata">

**Author:** ![xInsqne1](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/xinsqne1/32/34060_2.png) [@xInsqne1](https://forum.makecode.com/u/xInsqne1)\
**Post date:** [June 22, 2026, 7:05pm UTC](https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656/4 "2026-06-22T19:05:08Z")

</div>

Are we sure we are using the same game engine? Sure doesn’t feel like it…

---

<div class="post-metadata">

**Author:** ![Astro](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/astro/32/35479_2.png) [@Astro](https://forum.makecode.com/u/Astro)\
**Post date:** [June 23, 2026, 2:26am UTC](https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656/5 "2026-06-23T02:26:12Z")

</div>

Unique you are the goat @UnsignedArduino get this on awesome arcade right this instant

---

<div class="post-metadata">

**Author:** ![Rune](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/rune/32/18951_2.png) [@Rune](https://forum.makecode.com/u/Rune)\
**Post date:** [June 23, 2026, 2:30am UTC](https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656/6 "2026-06-23T02:30:26Z")

</div>

DROP EVERYTHING IM DOING THIS TODAY!

---

<div class="post-metadata">

**Author:** ![GoObErsandwichdude64](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/goobersandwichdude64/32/34178_2.png) [@GoObErsandwichdude64](https://forum.makecode.com/u/GoObErsandwichdude64)\
**Post date:** [June 23, 2026, 2:41am UTC](https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656/7 "2026-06-23T02:41:40Z")

</div>

wow how long did it take to make?

---

<div class="post-metadata">

**Author:** ![IAmMyGuy21th](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/iammyguy21th/32/16978_2.png) [@IAmMyGuy21th](https://forum.makecode.com/u/IAmMyGuy21th)\
**Post date:** [June 23, 2026, 2:44am UTC](https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656/8 "2026-06-23T02:44:19Z")

</div>

YES! now we can make DOOM.

---

<div class="post-metadata">

**Author:** ![redSprite](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/redsprite/32/34262_2.png) [@redSprite](https://forum.makecode.com/u/redSprite)\
**Post date:** [June 23, 2026, 2:44am UTC](https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656/9 "2026-06-23T02:44:24Z")

</div>

Is this it? The 3D Renaissance? It has come…

---

<div class="post-metadata">

**Author:** ![Unique](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/unique/32/32724_2.png) [@Unique](https://forum.makecode.com/u/Unique)\
**Post date:** [June 23, 2026, 2:52am UTC](https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656/10 "2026-06-23T02:52:39Z")

</div>

Might be releasing an AMAZING demo game for this soon so stay tuned. But this is fully usable right now so definitely give U3D a shot.

---

<div class="post-metadata">

**Author:** ![Unique](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/unique/32/32724_2.png) [@Unique](https://forum.makecode.com/u/Unique)\
**Post date:** [June 23, 2026, 7:27pm UTC](https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656/11 "2026-06-23T19:27:34Z")

</div>

YES! Just the kind of response I was hoping for.

Just keep in mind that updates will be released today and tomorrow for the extension. As of now, the latest release is v0.4.6. The next few updates will expose some functionality from the actual engine (sky color, FOV, player speed, etc.)

---

<div class="post-metadata">

**Author:** ![Unique](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/unique/32/32724_2.png) [@Unique](https://forum.makecode.com/u/Unique)\
**Post date:** [June 23, 2026, 7:27pm UTC](https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656/12 "2026-06-23T19:27:38Z")

</div>

Genuinely. Nice that the raycasting goat sealed the deal 😉

---

<div class="post-metadata">

**Author:** ![Unique](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/unique/32/32724_2.png) [@Unique](https://forum.makecode.com/u/Unique)\
**Post date:** [June 23, 2026, 7:27pm UTC](https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656/13 "2026-06-23T19:27:49Z")

</div>

I’ve had bits and pieces of projects over the years, experimenting with allot of the components required to make an engine like this. So when I saw @SmolderDev 's code for heightmapping, I got really excited, since it’s a great way to add a floor and depth, which really transforms the normal Wolfenstein-esque raycaster.

---

<div class="post-metadata">

**Author:** ![Unique](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/unique/32/32724_2.png) [@Unique](https://forum.makecode.com/u/Unique)\
**Post date:** [June 23, 2026, 7:27pm UTC](https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656/14 "2026-06-23T19:27:52Z")

</div>

No YOU’RE the goat Astro.

---

<div class="post-metadata">

**Author:** ![YamJam](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/yamjam/32/29681_2.png) [@YamJam](https://forum.makecode.com/u/YamJam)\
**Post date:** [June 23, 2026, 7:27pm UTC](https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656/15 "2026-06-23T19:27:56Z")

</div>

Just reminding yall it’s finally time to make a fully 3D Minecraft in makecode arcade? 😉

---

<div class="post-metadata">

**Author:** ![NeverStopTheCoder](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/neverstopthecoder/32/21194_2.png) [@NeverStopTheCoder](https://forum.makecode.com/u/NeverStopTheCoder)\
**Post date:** [June 23, 2026, 7:28pm UTC](https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656/16 "2026-06-23T19:28:41Z")

</div>

You deserve this I… I.. speachless

ok so Nice check this out **[Breaking Makecode! [Contest] [Badges]](https://forum.makecode.com/t/breaking-makecode-contest-badges/42563)**

but

**Congratulations You Have Now Won A**

[![Screenshot 2026-03-07 11.34.03 AM](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/3X/2/9/2906442835214524a11dc233160545fdd150230e.png)](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/3X/2/9/2906442835214524a11dc233160545fdd150230e.png "Screenshot 2026-03-07 11.34.03 AM")

**1st Place Badge in the Holy Cow Section**

Note: more than one person can have the same badge in the same section its more like 1st place is just a ranking like 100% or 100 points

---

<div class="post-metadata">

**Author:** ![happyhappyhappy](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/happyhappyhappy/32/32933_2.png) [@happyhappyhappy](https://forum.makecode.com/u/happyhappyhappy)\
**Post date:** [June 23, 2026, 7:28pm UTC](https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656/17 "2026-06-23T19:28:48Z")

</div>

please make this an actual game! movement is buggy, but this is just insane

---

<div class="post-metadata">

**Author:** ![Rune](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/rune/32/18951_2.png) [@Rune](https://forum.makecode.com/u/Rune)\
**Post date:** [June 23, 2026, 7:29pm UTC](https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656/18 "2026-06-23T19:29:00Z")

</div>

Okay, I tested it a little yesterday, and here are my thoughts:

- First and most important: pretty cool!
- It would be nice if there was a way to change the sky color, unless I’m missing something.
- Could you not use another tilemap to put floor textures on every tile?
- The Distance Shading turns all of the floors 1 color down, which makes it hard to have the color you want.
- The Distance Shading might benefit from being able to adjust it, like changing the distance it takes to shade.
- I don’t know how this could possibly be fixed, but taking the height map and color map and then attempting to tile the right spots in the tilemap is really hard, expecially on bigger maps and more natural looking areas.

---

<div class="post-metadata">

**Author:** ![Luke](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/luke/32/32519_2.png) [@Luke](https://forum.makecode.com/u/Luke)\
**Post date:** [June 23, 2026, 7:29pm UTC](https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656/19 "2026-06-23T19:29:03Z")

</div>

So cool!! Gonna try this out for my backrooms game

---

<div class="post-metadata">

**Author:** ![Astro](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/astro/32/35479_2.png) [@Astro](https://forum.makecode.com/u/Astro)\
**Post date:** [June 23, 2026, 7:29pm UTC](https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656/20 "2026-06-23T19:29:06Z")

</div>

You can see billboards through walls. Is that supposed to happen?

[Next page](https://forum.makecode.com/t/u3d-engine-walls-floors-pillars-textures-and-more/44656.md?page=2)
