Pico3D is a powerful and fast 3D engine for pico-8. It aims to make 3D rendering as easy and accessible as possible. The engine comes in the form of functions. The main one being draw3d(...), that takes a large set of inputs and parameters and outputs a complete 3D render.
Pico3D documentation: https://drive.google.com/file/d/12Pk3I02xKy9S6b5hwFmr43ppXQLS7jYm/view?usp=drive_link
Pico3D standalone
Example of a render
esdf or arrow keys to move in relative directions
qw or x plus arrow keys to move up or down
mouse or z plus arroy keys to look around

A small game I made with Pico3D, a 3d engine I am making for pico 8. Its pong, but 3D!
controlls:
⬆️ player 1 paddle up
⬇️ player 1 paddle down
➡️ or mouse 1 move camera forward
⬅️ or mouse 2 move camera backwards
e player 2 paddle up
d player 2 paddle down
❎ restart game
🅾️+❎ turn on ai for player 2
🅾️+⬆️ move camera up
🅾️+⬇️ move camera down
🅾️+⬅️ move camera left
🅾️+➡️ move camera right
can also use mouse.
Pico3D is a 3d engine I have been working on. The engine is mostly finished. What is missing is proper documentation for use (there is some present in tab 3 of the carts but it needs to be better worded and more explanatory). The intent is for anyone to be able to use it for 3d rendering in pico 8! Its highly optimized and feature packed. It includes drawing of polygons, lines, spheres, textures in 3d space and textured polygons as well as angle based lighting or distance based fog, custom resolutions and fov. A bunch of functions that are necessary to make the 3d rendering work are included as separate functions that can easily be reused. It should be stated though that there are some drawbacks/faults. Firstly the way faces are sorted may lead to incorrect drawing order, there is not a better alternative that i have found that would fix the problem without presenting other drawbacks, what can be done is manually splitting the scene up so that its drawn in correct order. Second is that there is bad texture warping for textured polygons, done this way for the sake of speed. Third, if polygons get to big they stop being drawn correctly because of integer overflow, can be overcome by scaling everything down or splitting larger faces.






6 comments