返回 Discover
Field DispatchHacker News7 · 2026-05-31

Voxel Space (2017)

s-macke.github.io

Points
230
Comments
48
日榜排名
#7
Host
s-macke.github.io
痛点分析发布于 2026/05/30

痛点为 AI 基于上游原始证据的初步提炼;未包含额外中国市场检索。

痛点

用户讨论的核心是1992年Comanche游戏使用的Voxel Space渲染技术,这是一种基于高度图和颜色图的2.5D引擎,通过射线投射实现地形渲染。从评论看,技术爱好者关注的是该算法与真正体素(voxel)的区别,以及如何在现代环境中复现或改进。但这里没有直接指向用户痛点——因为这是一个技术回顾/展示项目,而非解决某个现有问题。用户可能只是出于怀旧或技术兴趣浏览,并不存在明显的任务卡点或摩擦。因此,基于现有证据,无法识别出明确的用户痛点。

External Article

External article summary

Terrain rendering algorithm in less than 20 lines of code

External Article

External article source

Article title
Voxel Space
Host
s-macke.github.io
§ Dossier

Selected HN comments

Technically this is not related to voxels ("volumetric pixels", so to say), which split the 3D space equally along all three axes. This is just a height map, a set of prisms, not entirely unlike a Doom map. Every prism has a regular fixed-size square base. For 1992, this was mind-boggling though.

nine_k

C++ version of this game, using exactly the same original Comanche map and rendering algorithm: https://codeberg.org/Lew_Palm/voxelcopter

snickerer

When this was first posted I made a game with a port of this approach to AGS Engine. Nowadays AGS is much faster since we have improved a lot of things, but this wasn’t the case at the time, so I had to make a few little tricks to make the rendering work well with the engine at the time. https://github.com/ericoporto/i_rented_a_boat

a1o

I used this approach in one of my demos: https://www.youtube.com/watch?v=xjbDxvboOjo . Plot twist: the highmap is dynamically-generated.

Panzerschrek

Previous discussion (2017): https://news.ycombinator.com/item?id=15772065

blaze33
源数据· Raw Archive
source
Hacker News
upstream_source
hacker_news
upstream_item_id
48336564
daily_ranking_item_id
3f7b788b-a03a-4e74-8fc6-919f501eb93d
rank_date
2026-05-31
rank
7
name
Voxel Space (2017)
tagline
s-macke.github.io
votes_count
230
comments_count
48
created_at_on_source
2026-05-30T14:25:50.000Z
media / source-specific data
{
  "author": "davikr",
  "hn_item_id": 48336564,
  "external_url": "https://s-macke.github.io/VoxelSpace/"
}
raw_payload
{
  "by": "davikr",
  "id": 48336564,
  "url": "https://s-macke.github.io/VoxelSpace/",
  "kids": [
    48337375,
    48339207,
    48337081,
    48339362,
    48337654,
    48338611,
    48339302,
    48340072,
    48337006,
    48338727,
    48338627,
    48338515,
    48338476,
    48337316,
    48338888,
    48338280,
    48337392,
    48336871,
    48339201,
    48338380,
    48340063,
    48338370,
    48340255,
    48336638,
    48336758
  ],
  "time": 1780151150,
  "type": "story",
  "score": 230,
  "title": "Voxel Space (2017)",
  "descendants": 48
}
source_raw_snapshot
{
  "id": "40b1f3aa-7067-40c0-a6cd-86ad5649f319",
  "daily_ranking_item_id": "3f7b788b-a03a-4e74-8fc6-919f501eb93d",
  "source": "hacker_news",
  "external_id": "48336564",
  "fetched_at": "2026-05-30T22:01:15.405Z",
  "story_raw": {
    "by": "davikr",
    "id": 48336564,
    "url": "https://s-macke.github.io/VoxelSpace/",
    "kids": [
      48337375,
      48339207,
      48337081,
      48339362,
      48337654,
      48338611,
      48339302,
      48340072,
      48337006,
      48338727,
      48338627,
      48338515,
      48338476,
      48337316,
      48338888,
      48338280,
      48337392,
      48336871,
      48339201,
      48338380,
      48340063,
      48338370,
      48340255,
      48336638,
      48336758
    ],
    "time": 1780151150,
    "type": "story",
    "score": 230,
    "title": "Voxel Space (2017)",
    "descendants": 48
  },
  "stats_raw": {
    "time": 1780151150,
    "score": 230,
    "descendants": 48
  },
  "aux_raw": {
    "external_url": "https://s-macke.github.io/VoxelSpace/",
    "hn_comment_url": "https://news.ycombinator.com/item?id=48336564",
    "normalized_text": null,
    "external_article": {
      "title": "Voxel Space",
      "excerpt": "Let us go back to the year 1992. The CPUs were 1000 times slower than today and the acceleration via a GPU was unknown or unaffordable. 3D games were calculated exclusively on the CPU and the rendering engine rendered filled polygons with a single color.\n\nGame Gunship 2000 published by MicroProse in 1991\n\nIt was during that year NovaLogic published the game Comanche .\n\nGame Comanche published by NovaLogic in 1992\n\nThe graphics were breathtaking for the time being and in my opinion 3 years ahead of its time. You see many more details such as textures on mountains and valleys, and for the first time a neat shading and even shadows. Sure, it’s pixelated, but all games in those years were pixelated.\n\nComanche uses a technique called Voxel Space , which is based on the same ideas like ray casting . Hence the Voxel Space engine is a 2.5D engine, it doesn’t have all the levels of freedom that a regular 3D engine offers.\n\nThe easiest way to represent a terrain is through a height map and color map. For the game Comanche a 1024 * 1024 one byte height map and a 1024 * 1024 one byte color map is used which you can download on this site. These maps are periodic:\n\nSuch maps limit the terrain to",
      "final_url": "https://s-macke.github.io/VoxelSpace/",
      "fetched_at": "2026-05-30T22:01:12.062Z",
      "description": "Terrain rendering algorithm in less than 20 lines of code"
    },
    "selected_comments": [
      {
        "id": 48337375,
        "raw": {
          "by": "nine_k",
          "id": 48337375,
          "kids": [
            48340056,
            48339916,
            48338800,
            48338241,
            48338724
          ],
          "text": "Technically this is not related to voxels (&quot;volumetric pixels&quot;, so to say), which split the 3D space equally along all three axes. This is just a height map, a set of prisms, not entirely unlike a Doom map. Every prism has a regular fixed-size square base.<p>For 1992, this was mind-boggling though.",
          "time": 1780155529,
          "type": "comment",
          "parent": 48336564
        },
        "body": "Technically this is not related to voxels (\"volumetric pixels\", so to say), which split the 3D space equally along all three axes. This is just a height map, a set of prisms, not entirely unlike a Doom map. Every prism has a regular fixed-size square base. For 1992, this was mind-boggling though.",
        "is_op": false,
        "author": "nine_k",
        "raw_body": "Technically this is not related to voxels (&quot;volumetric pixels&quot;, so to say), which split the 3D space equally along all three axes. This is just a height map, a set of prisms, not entirely unlike a Doom map. Every prism has a regular fixed-size square base.<p>For 1992, this was mind-boggling though.",
        "created_at": 1780155529,
        "reply_count": 5
      },
      {
        "id": 48339207,
        "raw": {
          "by": "snickerer",
          "id": 48339207,
          "text": "C++ version of this game, using exactly the same original Comanche map and rendering algorithm:\n<a href=\"https:&#x2F;&#x2F;codeberg.org&#x2F;Lew_Palm&#x2F;voxelcopter\" rel=\"nofollow\">https:&#x2F;&#x2F;codeberg.org&#x2F;Lew_Palm&#x2F;voxelcopter</a>",
          "time": 1780165306,
          "type": "comment",
          "parent": 48336564
        },
        "body": "C++ version of this game, using exactly the same original Comanche map and rendering algorithm: https://codeberg.org/Lew_Palm/voxelcopter",
        "is_op": false,
        "author": "snickerer",
        "raw_body": "C++ version of this game, using exactly the same original Comanche map and rendering algorithm:\n<a href=\"https:&#x2F;&#x2F;codeberg.org&#x2F;Lew_Palm&#x2F;voxelcopter\" rel=\"nofollow\">https:&#x2F;&#x2F;codeberg.org&#x2F;Lew_Palm&#x2F;voxelcopter</a>",
        "created_at": 1780165306,
        "reply_count": 0
      },
      {
        "id": 48337081,
        "raw": {
          "by": "a1o",
          "id": 48337081,
          "text": "When this was first posted I made a game with a port of this approach to AGS Engine. Nowadays AGS is much faster since we have improved a lot of things, but this wasn’t the case at the time, so I had to make a few little tricks to make the rendering work well with the engine at the time.<p><a href=\"https:&#x2F;&#x2F;github.com&#x2F;ericoporto&#x2F;i_rented_a_boat\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;ericoporto&#x2F;i_rented_a_boat</a>",
          "time": 1780153770,
          "type": "comment",
          "parent": 48336564
        },
        "body": "When this was first posted I made a game with a port of this approach to AGS Engine. Nowadays AGS is much faster since we have improved a lot of things, but this wasn’t the case at the time, so I had to make a few little tricks to make the rendering work well with the engine at the time. https://github.com/ericoporto/i_rented_a_boat",
        "is_op": false,
        "author": "a1o",
        "raw_body": "When this was first posted I made a game with a port of this approach to AGS Engine. Nowadays AGS is much faster since we have improved a lot of things, but this wasn’t the case at the time, so I had to make a few little tricks to make the rendering work well with the engine at the time.<p><a href=\"https:&#x2F;&#x2F;github.com&#x2F;ericoporto&#x2F;i_rented_a_boat\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;ericoporto&#x2F;i_rented_a_boat</a>",
        "created_at": 1780153770,
        "reply_count": 0
      },
      {
        "id": 48339362,
        "raw": {
          "by": "Panzerschrek",
          "id": 48339362,
          "text": "I used this approach in one of my demos: <a href=\"https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=xjbDxvboOjo\" rel=\"nofollow\">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=xjbDxvboOjo</a>. Plot twist: the highmap is dynamically-generated.",
          "time": 1780166287,
          "type": "comment",
          "parent": 48336564
        },
        "body": "I used this approach in one of my demos: https://www.youtube.com/watch?v=xjbDxvboOjo . Plot twist: the highmap is dynamically-generated.",
        "is_op": false,
        "author": "Panzerschrek",
        "raw_body": "I used this approach in one of my demos: <a href=\"https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=xjbDxvboOjo\" rel=\"nofollow\">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=xjbDxvboOjo</a>. Plot twist: the highmap is dynamically-generated.",
        "created_at": 1780166287,
        "reply_count": 0
      },
      {
        "id": 48337654,
        "raw": {
          "by": "blaze33",
          "id": 48337654,
          "text": "Previous discussion (2017): <a href=\"https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=15772065\">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=15772065</a>",
          "time": 1780156867,
          "type": "comment",
          "parent": 48336564
        },
        "body": "Previous discussion (2017): https://news.ycombinator.com/item?id=15772065",
        "is_op": false,
        "author": "blaze33",
        "raw_body": "Previous discussion (2017): <a href=\"https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=15772065\">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=15772065</a>",
        "created_at": 1780156867,
        "reply_count": 0
      }
    ],
    "presentation_fields": {
      "title": "Voxel Space (2017)",
      "tagline": "s-macke.github.io",
      "website_url": "https://s-macke.github.io/VoxelSpace/",
      "canonical_url": "https://news.ycombinator.com/item?id=48336564"
    },
    "external_url_hostname": "s-macke.github.io",
    "selected_comments_raw": [
      {
        "by": "nine_k",
        "id": 48337375,
        "kids": [
          48340056,
          48339916,
          48338800,
          48338241,
          48338724
        ],
        "text": "Technically this is not related to voxels (&quot;volumetric pixels&quot;, so to say), which split the 3D space equally along all three axes. This is just a height map, a set of prisms, not entirely unlike a Doom map. Every prism has a regular fixed-size square base.<p>For 1992, this was mind-boggling though.",
        "time": 1780155529,
        "type": "comment",
        "parent": 48336564
      },
      {
        "by": "snickerer",
        "id": 48339207,
        "text": "C++ version of this game, using exactly the same original Comanche map and rendering algorithm:\n<a href=\"https:&#x2F;&#x2F;codeberg.org&#x2F;Lew_Palm&#x2F;voxelcopter\" rel=\"nofollow\">https:&#x2F;&#x2F;codeberg.org&#x2F;Lew_Palm&#x2F;voxelcopter</a>",
        "time": 1780165306,
        "type": "comment",
        "parent": 48336564
      },
      {
        "by": "a1o",
        "id": 48337081,
        "text": "When this was first posted I made a game with a port of this approach to AGS Engine. Nowadays AGS is much faster since we have improved a lot of things, but this wasn’t the case at the time, so I had to make a few little tricks to make the rendering work well with the engine at the time.<p><a href=\"https:&#x2F;&#x2F;github.com&#x2F;ericoporto&#x2F;i_rented_a_boat\" rel=\"nofollow\">https:&#x2F;&#x2F;github.com&#x2F;ericoporto&#x2F;i_rented_a_boat</a>",
        "time": 1780153770,
        "type": "comment",
        "parent": 48336564
      },
      {
        "by": "Panzerschrek",
        "id": 48339362,
        "text": "I used this approach in one of my demos: <a href=\"https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=xjbDxvboOjo\" rel=\"nofollow\">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=xjbDxvboOjo</a>. Plot twist: the highmap is dynamically-generated.",
        "time": 1780166287,
        "type": "comment",
        "parent": 48336564
      },
      {
        "by": "blaze33",
        "id": 48337654,
        "text": "Previous discussion (2017): <a href=\"https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=15772065\">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=15772065</a>",
        "time": 1780156867,
        "type": "comment",
        "parent": 48336564
      }
    ]
  },
  "selection_meta": {
    "discussion_depth": "top_comments_v1",
    "external_article": {
      "status": "ok",
      "final_url": "https://s-macke.github.io/VoxelSpace/",
      "status_code": 200,
      "content_type": "text/html; charset=utf-8",
      "failure_reason": null
    },
    "snapshot_version": "hn_story_v3",
    "selected_comments_count": 5,
    "external_article_resolved": true,
    "text_normalization_applied": false
  },
  "created_at": "2026-05-30T22:01:15.614Z",
  "updated_at": "2026-05-30T22:01:15.614Z"
}