# 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:** 6

<div class="post-metadata">

**Author:** ![loganisdabest](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/loganisdabest/32/20151_2.png) [@loganisdabest](https://forum.makecode.com/u/loganisdabest)\
**Post date:** [May 1, 2026, 7:25pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/102 "2026-05-01T19:25:03Z")

</div>

I wonder if you can make 3d sprites like then you have mobs in Minecraft!

---

<div class="post-metadata">

**Author:** ![loganisdabest](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/loganisdabest/32/20151_2.png) [@loganisdabest](https://forum.makecode.com/u/loganisdabest)\
**Post date:** [May 1, 2026, 7:25pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/103 "2026-05-01T19:25:06Z")

</div>

what about slabs like half 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:** [May 1, 2026, 7:40pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/104 "2026-05-01T19:40:09Z")

</div>

the player is static, also it needs to be updated a bit (@woofwoof thanks for thinking of enums! (I know how to use them from looking at mixer.ts or some sound related file))

---

<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:40pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/105 "2026-05-01T19:40:18Z")

</div>

currently everything in the player class is static, so it doesn’t need to be created. the only issue that I can see right now is the getters and setters. In the next update it will become a namespace again, and will hopefully fix the getters and setters.

---

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

</div>

hey I noticed that the blocks have .player= if you have function name like this

```typescript
//%block
export function .player=(...): void {

}

```

you can have a = on the block command like this

```typescript
//%block="Set $voxelengine player $xy to $n"
export function .player=(...): void {

}

```

which lets you add spaces I just thought it was not supposed to be like “.player=” but if it is suppsed to be like that nevermind

---

<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:43pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/107 "2026-05-01T19:43:14Z")

</div>

I will finish meeting then actually work right, then create a project with a small example of it

---

<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:45pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/108 "2026-05-01T19:45:50Z")

</div>

maybe in the future!

---

<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:45pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/109 "2026-05-01T19:45:53Z")

</div>

yes but what I made looks coloor to me

---

<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:45pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/110 "2026-05-01T19:45:58Z")

</div>

I don’t, I think it’s makecode being weird with getters/setters

---

<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 3, 2026, 12:37am UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/111 "2026-05-03T00:37:37Z")

</div>

first example!! [https://arcade.makecode.com/S17056-69251-90166-49747](https://arcade.makecode.com/S17056-69251-90166-49747)  
bleghghhg its so tiring making an extension…

anyways, if anybody finds a bug, or wants something added, please say! I cannot think of everything everybody wants so actually do!

also if youre in javascript the extenion should be named “arcade-voxel-engine - Copy” (idk why) and the version is 9943da6 (`@richard` now im interested in the hex values…)

@WoofWoof the blocks are breaking and i dont know why 😭 😭 😭

---

<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 4, 2026, 7:07pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/112 "2026-05-04T19:07:20Z")

</div>

```typescript
function cast<T>(v: any): T {
    return v as T
}

```

is there a way to turn this into a block, or do something like it as a block? @richard

---

<div class="post-metadata">

**Author:** ![richard](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/richard/32/5417_2.png) [@richard](https://forum.makecode.com/u/richard)\
**Post date:** [May 4, 2026, 7:09pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/113 "2026-05-04T19:09:01Z")

</div>

nope!

you can add blocks for individual types, for example:

```ts
//% block="$a as sprite"
function castToSprite(a: any): Sprite {
    return a
}

```

but generics and type arguments are not supported in blocks and probably never will be

---

<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 8, 2026, 4:52pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/114 "2026-05-08T16:52:28Z")

</div>

it’s not an issue with they work, but it’s more about the //% things

---

<div class="post-metadata">

**Author:** ![Player\_246](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/player_246/32/36273_2.png) [@Player\_246](https://forum.makecode.com/u/Player_246)\
**Post date:** [May 8, 2026, 6:34pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/115 "2026-05-08T18:34:07Z")

</div>

_starts partying for 2 minutes straight_

 ![Screenshot 2026-05-07 9.35.49 PM](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/3X/a/a/aa394c16777a3ec77080af6f294ded07344924c4.png)

---

<div class="post-metadata">

**Author:** ![KawaiiGoddess](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/kawaiigoddess/32/33722_2.png) [@KawaiiGoddess](https://forum.makecode.com/u/KawaiiGoddess)\
**Post date:** [May 8, 2026, 11:37pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/116 "2026-05-08T23:37:13Z")

</div>

HOW??? HELPPPPPP.

🤯

---

<div class="post-metadata">

**Author:** ![KawaiiGoddess](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/kawaiigoddess/32/33722_2.png) [@KawaiiGoddess](https://forum.makecode.com/u/KawaiiGoddess)\
**Post date:** [May 9, 2026, 7:10pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/117 "2026-05-09T19:10:47Z")

</div>

Oh nvm!!! It is kinda easy to me!

 ![Screenshot 2026-05-08 211844](https://us1.discourse-cdn.com/flex020/uploads/makecode/original/3X/c/e/ce002b8982225818fac4eacd3c3c50d73a99be45.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:** [May 11, 2026, 3:01pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/118 "2026-05-11T15:01:46Z")

</div>

@richard , i am still trying to add more stuff to my voxel engine, and it has been lagging recently (~12 FPS). I’ve been noticing that purposefully making it lag actually makes it get faster (~50 FPS). Why does this happen, and is it possible to “set it up” before the user actually starts playing, like part of the init function?

---

<div class="post-metadata">

**Author:** ![richard](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.makecode.com/richard/32/5417_2.png) [@richard](https://forum.makecode.com/u/richard)\
**Post date:** [May 11, 2026, 4:51pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/119 "2026-05-11T16:51:54Z")

</div>

i’m not sure what you mean by purposefully making it lag?

---

<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:** [May 11, 2026, 5:57pm UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/120 "2026-05-11T17:57:02Z")

</div>

> [@VoxelMaster64](#):
>
> purposefully making it lag

what do you mean by that also you could just try to render what is only in view if that’s possible

---

<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 13, 2026, 12:23am UTC](https://forum.makecode.com/t/3d-voxel-rendering-engine/42425/121 "2026-05-13T00:23:43Z")

</div>

might send a video later, but also, is there anything specific that makecode is faster with? it’s hard to explain exactly what i mean, but an example is that hex buffers are faster than number arrays. Another example is Math.min vs |0, or if/else vs switch, if/else vs ?/:, and other things like that. I also know that objects make it slower (if I’m wrong plz tell me).

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

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