# 3D voxel rendering engine

**URL:** <https://forum.makecode.com/t/3d-voxel-rendering-engine/42425>\
**Category:** Show & Tell\
**Tags:** graphics-and-math, demo, art\
**Created:** [March 1, 2026, 1:55am UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425 "2026-03-01T01:55:02Z")\
**Posts on this page:** 20\
**Page:** 5

<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:** [April 28, 2026, 6:54pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/82 "2026-04-28T18:54:36Z")

</div>

it uses pointer lock, where your pointer stays in the middle of the screen, like it gets sent to the middle every frame, and it has a chance to move one frames amount. for a cool demo you can try it on turbowarp, it has a pointerlock extension, there you do enable pointerlock then you make a sprite forever goto mouse cursor, and youll understand what i mean.

---

<div class="post-metadata">

**Author:** ![WoofWoof](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/woofwoof/32/32523_2.png) [@WoofWoof](https://forum.makecode.com/u/WoofWoof)\
**Post date:** [April 28, 2026, 6:55pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/83 "2026-04-28T18:55:19Z")

</div>

Why are you using a class if it’s meant to only have a single instance? If you use it like this, you’ll have to put in the player every time you want to change its properties. Better would be to create a dropdown using an enum instead of the get/set dropdown functionality. You also never create the player, even in the init function, and you don’t have a block that creates a player, so there’s no way to create a player in blocks! Just get rid of the player class entirely and turn it into just variables and functions in the namespace, then use the enum stuff to make the drop down.

Here’s the guide to block definitions, scroll down to the Enums section to see how you can use them!

> **[Defining blocks](https://makecode.com/defining-blocks)**
>
> This section describes how to annotate your MakeCode APIs to expose them in the Block Editor.

And here’s a small example I made:

> **[enum blocks example](https://arcade.makecode.com/S97080-47727-01640-94396)**
>
> Look in the example.ts function and see how that looks in blocks.

---

<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:** [April 28, 2026, 9:01pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/84 "2026-04-28T21:01:55Z")

</div>

i used a class with everything being static because it allows getters and setters, and doesn’t need instances

---

<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:** [April 28, 2026, 9:04pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/85 "2026-04-28T21:04:37Z")

</div>

using [https://www.youtube.com/watch?app=desktop&v=ztkh1r1ioZo](https://www.youtube.com/watch?app=desktop&v=ztkh1r1ioZo)

---

<div class="post-metadata">

**Author:** ![CodingGrizzlyBear](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/codinggrizzlybear/32/14838_2.png) [@CodingGrizzlyBear](https://forum.makecode.com/u/CodingGrizzlyBear)\
**Post date:** [April 29, 2026, 12:13am UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/86 "2026-04-29T00:13:47Z")

</div>

@VoxelMaster64 Heres an idea  
Instead of the default picker, you should replace it with the shadow picker so that you can make your own tile, and it is 16x16 instead of a 120x160 background

 ![image](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/3X/b/2/b2bd5203ed88dd239df48db3b2d2e48cb9dc251e.png)

---

<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:** [April 29, 2026, 3:05am UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/87 "2026-04-29T03:05:57Z")

</div>

I kinda made Ai do that for me cuz I was in a rush. should probably also say this, the extension WILL BE PAUSED ☹. I am creating a… well… let’s not spoil anything, but it is a beautiful add on to the past voxel update

---

<div class="post-metadata">

**Author:** ![CodingGrizzlyBear](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/codinggrizzlybear/32/14838_2.png) [@CodingGrizzlyBear](https://forum.makecode.com/u/CodingGrizzlyBear)\
**Post date:** [April 29, 2026, 5:22pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/88 "2026-04-29T17:22:08Z")

</div>

Just wondering, how do I create a voxel sprite

---

<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:** [April 29, 2026, 5:23pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/89 "2026-04-29T17:23:51Z")

</div>

well if you want the create your own image here

```typescript
//% image.shadow=screen_image_picker
//% block
export function foo(image: Image): void {

}
}

```

It would look like this

 ![image](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/3X/1/1/11eba0d05e376f516c1d8b2b1910cdc8ed679fd6.png)

It would look like this in the blocks

![image](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/3X/0/8/08970b7bbafcda638d89c3a00fea5aba486cdb3b.png)

and if you need help with any more inputs let me know I made a entire Google doc about how to make a extension to help me remember

---

<div class="post-metadata">

**Author:** ![YamJamTheGoober](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/yamjamthegoober/32/29681_2.png) [@YamJamTheGoober](https://forum.makecode.com/u/YamJamTheGoober)\
**Post date:** [April 29, 2026, 11:24pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/90 "2026-04-29T23:24:54Z")

</div>

How do you make the code look like that in a message??? I’ve just been writing  
\*code code code  
And it looks terrible!

---

<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:** [April 29, 2026, 11:27pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/91 "2026-04-29T23:27:43Z")

</div>

what do you mean?

---

<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:** [April 29, 2026, 11:28pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/92 "2026-04-29T23:28:17Z")

</div>

what do you mean voxel sprite?

---

<div class="post-metadata">

**Author:** ![YamJamTheGoober](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/yamjamthegoober/32/29681_2.png) [@YamJamTheGoober](https://forum.makecode.com/u/YamJamTheGoober)\
**Post date:** [April 29, 2026, 11:28pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/93 "2026-04-29T23:28:50Z")

</div>

how do you make it look like real code with that font and the gray background and those fancy keyword colors

---

<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:** [April 29, 2026, 11:30pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/94 "2026-04-29T23:30:48Z")

</div>

oh you highlight text and click ![image](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/3X/c/a/ca492c3d0a0787ae30716df43438fc7a9859907e.png)and select what code it is to the right

---

<div class="post-metadata">

**Author:** ![YamJamTheGoober](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/yamjamthegoober/32/29681_2.png) [@YamJamTheGoober](https://forum.makecode.com/u/YamJamTheGoober)\
**Post date:** [April 30, 2026, 2:12am UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/95 "2026-04-30T02:12:19Z")

</div>

```auto
type or paste code here

```

oh thanks

---

<div class="post-metadata">

**Author:** ![CodingGrizzlyBear](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/codinggrizzlybear/32/14838_2.png) [@CodingGrizzlyBear](https://forum.makecode.com/u/CodingGrizzlyBear)\
**Post date:** [April 30, 2026, 2:15am UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/96 "2026-04-30T02:15:09Z")

</div>

There are so many blocks about the voxel player

 ![image](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/3X/b/a/babbddcaa91b4db630ef6574135c08f54f24205d.png)

How do I define the player tho

---

<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:** [April 30, 2026, 2:17am UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/97 "2026-04-30T02:17:52Z")

</div>

YEEEESSSSSSSSS

okay this has got to be the closest ANYBODIES gotten to Minecraft within makecode:

> **[voxels ??? block update!](https://arcade.makecode.com/S25534-04867-20523-41278)**
>
> Made with ❤️ in Microsoft MakeCode Arcade.

I MADE A FENCE POST

IT IS NOT MUCH BUT IT’S TOO COOL

also it took forever to optimize… it uses bit masking a bit, because for loops are too expensive

---

<div class="post-metadata">

**Author:** ![coppercode](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/coppercode/32/26022_2.png) [@coppercode](https://forum.makecode.com/u/coppercode)\
**Post date:** [April 30, 2026, 9:20pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/98 "2026-04-30T21:20:59Z")

</div>

how do you use the blocks in block code

---

<div class="post-metadata">

**Author:** ![Coderadventurer](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/coderadventurer/32/24824_2.png) [@Coderadventurer](https://forum.makecode.com/u/Coderadventurer)\
**Post date:** [April 30, 2026, 9:25pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/99 "2026-04-30T21:25:37Z")

</div>

I come back and I come back to a 3d game with working **physics.** I forsee doom running on this extention. Good luck with the minecraft UI and monster ai if you decide to add the jumping steves.

---

<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:** [May 1, 2026, 7:17pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/100 "2026-05-01T19:17:14Z")

</div>

also there is a slight rendering bug that I cant explain well

---

<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:** [May 1, 2026, 7:22pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/101 "2026-05-01T19:22:52Z")

</div>

also it is still pretty slow

[Previous page](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425.md?page=4)

[Next page](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425.md?page=6)
