0 FPS
0fps.net · Personal blog · on HN since 2012
Mikola Lysenko writes technical articles on voxel engines, mesh generation, collision detection, and networked game design.
What HN saysCommenters recommend it as a source on voxel data structures and game networking, and call the author a genius who inspired them.
46HN people shared it
18linked it in comments
40stories submitted
944story points
10 months agolast shared
2012people per year2026
Most-shared posts
- 1An Analysis of Minecraft-like Engines (2012)6 people · 88 points · first shared 2015 · 13 comments on HN
- 2Peer-to-Peer Ordered Search Indexes6 people · 5 points · first shared 2020 · discussion on HN
- 3Smooth Voxel Terrain, Part 2 (2012)4 people · 145 points · first shared 2016 · 19 comments on HN
- 4An Analysis of Minecraft-like Engines3 people · 6 points · first shared 2012 · discussion on HN
- 5Homepage3 people · first shared 2016
- 6Collision Detection, Part 1: Overview (2015)2 people · 78 points · first shared 2015 · 8 comments on HN
- 7Meshing in a Minecraft Game (2012)2 people · 70 points · first shared 2013 · 17 comments on HN
- 8Conway’s Game of Life for Curved Surfaces - Part 12 people · 65 points · first shared 2012 · 1 comments on HN
- 9Collision detection benchmarks2 people · 45 points · first shared 2015 · 10 comments on HN
- 10A level of detail method for blocky voxels2 people · 39 points · first shared 2018 · 2 comments on HN
- 11Turning 8-Bit Sprites into Printable 3D Models2 people · 10 points · first shared 2012 · discussion on HN
- 12Minecraft meshing, Part 2 / 22 people · 9 points · first shared 2013 · discussion on HN
- 13MeshLife2 people · 5 points · first shared 2012 · discussion on HN
- 14Meshing in a Minecraft Game2 people · 3 points · first shared 2016 · discussion on HN
- 15Conway's Game of Life for curved surfaces (2012)1 people · 110 points · first shared 2024 · 16 comments on HN
What HN people wrote when they linked it
Lucasoato · 2025-12-26
If you’re marveled by these articles, I suggest you to read this blog:
https://0fps.net/
It inspired me so much back when I was graduating in mathematics, the author is a genius.
feross · 2022-03-02
The visualization is a custom component that our own Mik Lysenko (of https://0fps.net fame) made. I agree it's a super useful way to visualize package data.
IAmLiterallyAB · 2021-09-26
For a detailed look at picking a good data structure for voxel engines, I'd recommend this fantastic article https://0fps.net/2012/01/14/an-analysis-of-minecraft-like-engines/
wyqydsyq · 2021-02-04
Another great resource for learning about multiplayer game networking is this guide from Mikola Lysenko:
https://0fps.net/2014/02/10/replication-in-networked-games-overview-pa…
corysama · 2013-01-27
A wonderful feature of Timothy Lottes' blog is a continuously updated list of blog articles from other graphics programmers down the right side.
http://blog.selfshadow.com/ has several great articles and a great blogroll.
Meanwhile, here are a few favorites:
http://fgiesen.wordpress.com/
http://directtovideo.wordpress.com/
http://www.iquilezles.org/
http://0fps.wordpress.com/
maxogden · 2013-01-18
this and the follow-up post were most useful when developing the voxel.js components http://0fps.wordpress.com/2012/06/30/meshing-in-a-minecraft-game/
dcposch · 2016-10-09
This is pretty cool. Props for doing a massive amount of work and creating something open and extensible.
--
I just tried reading the code to learn how MineTest does voxel meshing, and it didn't go so well.
(Voxel meshing is about turning blocks into triangles efficiently, and it's surprisingly tricky. Mikola Lysenko wrote a great exposition of the problem and several solutions way back in 2012: https://0fps.net/2012/06/30/meshing-in-a-minecraft-game/ )
I was curious which approach MineTest chose, and I still don't know. I think I found the files where the meshing happens, mapblock_mesh.h/cpp. The code quality is... less than perfect.
There are 200+ line C++ functions. There's commented out code and preprocessor "#if 0" ignored code.
There's a struct that looks important, but it's called "MeshMakeData", and I don't know what it represents. The comment above just says "Mesh making stuff":
https://github.com/minetest/minetest/blob/0a16e53b40d347db7dcd04cb694d…
The file that seems to run everything, game.cpp, is almost 5000 lines long.
--
For an example of really clean game code, check out Quake or Doom 3. Both have:
* short and sweet main() methods
* comments that guide the reader and explain what does what
* clean decomposition
* short, readable functions, and...
* reasonably small files
So far, MineTest, at least in part, took the "big hairy ball of C++" approach.
Good luck with future development!
dmit · 2016-04-25
Here are some software engineering blogs from my RSS reader in addition to the ones listed in TFA. I honestly don't know how over or underrated they are, but I guess that varies depending on which communities you're closer to.
Mikola Lysenko https://0fps.net
Graphics programming, geometry and algorithms.
---
Steven Wittens http://acko.net
Not underrated in any sense of the word, but I have to include it in case there are people who haven't seen it yet. It's about math and graphics, but also about art and design. Amazingly educational.
http://acko.net/blog/how-to-fold-a-julia-fractal/ is a good starting point for new readers.
---
Mark Nottingham https://www.mnot.net/blog/
Networking and HTTP.
---
Jeff Preshing http://preshing.com
Efficient concurrent data structures.
---
Bruce Dawson https://randomascii.wordpress.com
Software efficiency, performance optimization, fractals and more.
---
Yann Collet http://fastcompression.blogspot.com
Modern compression algorithms.
---
Gil Tene http://stuff-gil-says.blogspot.com
Also definitely not underrated, at least not in the Java world. But any engineer who cares about latency and honest benchmarks will benefit. Low latency techniques, GC performance, lock-free programming.
---
Tony Finch http://fanf.livejournal.com
C and UNIX programming, and more.
---
Andy Wingo https://wingolog.org
Scheme, Compilers, JavaScript, and much more.
---
Aleksey Shipilёv http://shipilev.net
JDK internals, low-level optimization.
lelandbatey · 2023-09-15
A bit of searching implies that they are not stored as Octrees due to "performance reasons":
> [...] To understand why octrees are slower for Minecraft games, it isn’t really necessary to invoke such exotic explanations. The underlying reason for the worse performance is purely algorithmic: each time an arbitrary voxel is touched, either when iterating or performing a random access, it is necessary to traverse to the entire height of the octree. Since octrees are not necessarily balanced, this can be as much as log(maximum size of game world)! Assuming the coordinate system is say 32 bit, this brings an added overhead of 32 additional non-coherent memory accesses per each operation that touches the map (as opposed to the flat array, where everything is simply constant time).
https://0fps.net/2012/01/14/an-analysis-of-minecraft-like-engines/
dejv · 2022-02-02
There are few articles on 0fps blog: https://0fps.net/2012/01/14/an-analysis-of-minecraft-like-engines/
Readable implementation (in C) is this: https://github.com/fogleman/Craft
jpereira · 2021-01-20
For work in a similar vein, Mikeal Rogers has recently been working on IPSQL[0] based on peer-to-peer prdered search indexes[1] built on IPFS, which shares the content-addressed nature of BitTorrent.
[0]: https://github.com/mikeal/IPSQL
[1]: https://0fps.net/2020/12/19/peer-to-peer-ordered-search-indexes/
Asooka · 2021-01-08
A better algorithm than marching cubes is surface nets, which doesn't have ambiguous cases and isn't patented AFAIK. See: https://0fps.net/2012/07/12/smooth-voxel-terrain-part-2/
lgierth · 2020-12-28
Merkle Search Trees: Efficient State-Based CRDTs in Open Networks https://hal.inria.fr/hal-02303490/document
Peer-to-Peer Ordered Search Indexes https://0fps.net/2020/12/19/peer-to-peer-ordered-search-indexes/ (which adds useful context about the above)
Sorry for just dropping these links, I should already be asleep :)
baffo · 2017-09-23
If you have problems with lag and conflicts resolution of state, take a look at this article, it may be useful.
https://0fps.net/2014/02/17/replication-in-networked-games-latency-par…
bd · 2016-02-14
For few other approaches implemented for WebGL see here:
http://0fps.net/2012/07/12/smooth-voxel-terrain-part-2/
33a · 2015-03-18
This reminds me of a game I wrote for Ludum Dare a while back:
http://0fps.net/2011/09/13/ludum-dare-21-results/
The title of the game was "Help! I'm trapped in a compact riemannian manifold"
You can grab the source for it on GitHub, though the build process is pretty janky as I wrote it in 48 hours and wasn't very careful with the distribution:
https://github.com/mikolalysenko/ludum-dare-21
rlx0x · 2013-03-29
there already is http://voxeljs.com/
poxel rendering like in the python scribble is trivial, there many much more interesting problems to solve, like managing the geometry. If anyone is truly interested they should begin here: http://0fps.wordpress.com/2012/07/07/meshing-minecraft-part-2/
tommsy64 · 2020-04-21
I've had this exact same project idea on my mind for a year or so, largely driven by a desire to see beautiful, to-scale mountain ranges in game (Thousands of blocks of render distance rather than a measly ~256). I wouldn't consider myself a computer graphics guy either; however, I recently started to dive into the world of computer graphics to at least figure out what it would take to implement something like this.
As a sibling commenter mentioned, using a marching cube algorithm is one approach. 0fps [1] has a good blog post about using Progressively Ordered Primitive buffers to implement Level of Detail in Minecraft-like games. (There is an interesting comment on that blog replying to that post.) Another blog [2] shows a similar implementation in a Minecraft-like game call "SeaOfMemes".
On a side note, I've never heard of Terasology—and it's been around for 9 years(!) it seems. I'll definitely check it out.
[1] - https://0fps.net/2018/03/03/a-level-of-detail-method-for-blocky-voxels…
[2] - http://www.sea-of-memes.com/LetsCode64/LetsCode64.html and http://www.sea-of-memes.com/LetsCode67/LetsCode67.html