惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 司徒正美
The GitHub Blog
The GitHub Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Apple Machine Learning Research
Apple Machine Learning Research
L
LangChain Blog
GbyAI
GbyAI
博客园_首页
V
Visual Studio Blog
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 叶小钗
腾讯CDC
博客园 - Franky
IT之家
IT之家
Google DeepMind News
Google DeepMind News
Microsoft Azure Blog
Microsoft Azure Blog
D
Docker
大猫的无限游戏
大猫的无限游戏
Recent Announcements
Recent Announcements
小众软件
小众软件
博客园 - 三生石上(FineUI控件)
B
Blog
酷 壳 – CoolShell
酷 壳 – CoolShell

Red Blob Games: latest blog posts

Red Blob Games: Differential heuristics Red Blob Games: Responsive design calculator Red Blob Games: Academic citations Red Blob Games: Highlighting interactive code blocks Red Blob Games: Optimizing page size Red Blob Games: Writing a guide to SDF fonts Red Blob Games: URLs with trailing punctuation Red Blob Games: What I did in 2025 Red Blob Games: Goodbye Sass Goodbye Sass Red Blob Games: RotMG map seeds Red Blob Games: Mapgen4 Mapgen4's use of WebGL2 Red Blob Games: Mapgen4 river shader Red Blob Games: Mapgen4 renderer Red Blob Games: Let Let's write a search engine, part 2 of 2 Red Blob Games: Let Let's write a search engine, part 1 of 2 Red Blob Games: Hexagon conversions Red Blob Games: Mapgen4 trade routes Red Blob Games: De-optimizing mapgen4 Red Blob Games: Hexagon spiral coordinates Red Blob Games: Thoughts on Flash Red Blob Games: What I did in 2024 Red Blob Games: Hexagon page animations Red Blob Games: SDF Halos SDF Halos Red Blob Games: SDF headless tests, part 2 Red Blob Games: SDF headless tests, part 1
Red Blob Games: Harnessing ChatGPT hallucinations
2025-09-23 · via Red Blob Games: latest blog posts

The web server I use (nginx) logs errors to a file. I check this occasionally to make sure nothing’s going wrong with my server. I typically get these kinds of 404 requests:

typos
the url /pathfinding/a-star/inroduction.html was meant to be /pathfinding/a-star/introduction.html
parsing errors
the url /articles/visibility/)and was some text /articles/visibility/) and that went through a url regexp
misconfigured crawlers
the url /region-graph-path.png was originally from html <img src="region-graph-path.png" …> but the crawler tried fetching it from the top level instead of the subfolder
attackers
the url /FCKeditor/editor/filemanager/connectors/asp/connector.asp?Command=FileUpload&Type=File&CurrentFolder=%2F is some crawler looking for weaknesses in my web site

Last week I noticed a request for /articles/autotiles/ with the HTTP Referer chatgpt.com. This is an unusual request. It’s not syntactic like the above. It’s a semantic error. An AI confabulation/hallucination[1] probably. The referrer means that the user was on chatgpt.com and clicked a link to https://www.redblobgames.com/articles/autotiles/, which is a 404 error.

I decided to investigate more.

If I ask what does red blob games have to say about autotiles, ChatGPT will tell me:

I couldn’t find any evidence that Red Blob Games (Amit Patel) has written anything specifically about autotiles (in the sense of tilesets that automatically pick tile variants based on neighbors). Their site covers many things like grids, map generation, procedural terrain, pathfinding, etc., but I didn’t locate a page dedicated to autotiling.

But if I ask tell me about redblobgames tutorial on wave function collapse, ChatGPT will tell me:

The Wave Function Collapse (WFC) tutorial by Red Blob Games is an in-depth guide to understanding and implementing the WFC algorithm for procedural content generation. It’s highly regarded for breaking down complex concepts in a very approachable way.

I don’t actually have a tutorial on Wave Function Collapse, but ChatGPT will give me the url https://www.redblobgames.com/articles/wfc/[2].

This is a reminder that you shouldn’t believe everything an LLM tells you! But lots of people have already written about that. I want to explore something different. Instead of treating the hallucinations as something to discard, I want to treat them as something to harness.

I looked through my error logs to find other non-existent URLs that ChatGPT gave out. I also looked at what OpenAI’s crawlers[3] found but they weren’t as useful. I looked at the top ten:

  • /sliding-puzzle/: this is a classical AI topic that could fit into game-ai
  • /articles/minimax/: this is also a classical AI topic that could fit into game-ai
  • /grids/isometric/: this is a topic I’d like to write about
  • /maps/noise/introduction.html: this is the wrong folder for /articles/noise/introduction.html
  • /pathfinding/a-star/visualization.html: this is an existing folder but a non-existing page
  • /grids/hex-grids/: this is the wrong version of /grids/hexagons/
  • /articles/procgen/: this is a page I could’ve written, to point to other procgen topics
  • /grids/mazes/: this is a reasonable guess of what I might have written about
  • /articles/mazes/: same
  • /maps/noise/: wrong folder

A subset of these are interesting to me — topics that I could write about. I went deeper into the list of 404s and collected these hallucinated URLs:

/x/2048/hilbert.html
/pathfinding/a-star/maze.html
/pathfinding/a-star/visualization.html
/x/1725-aabb-rectangle-overlap/
/x/1842-agent-based-model/
/x/1845-ai-car/
/grids/algorithms/
/x/1813-alpha-beta/
/pathfinding/ants/ /x/1844-ants/
/x/1841-atmosphere-simulation/
/articles/autotiles/
/x/1614-balance/
/x/1840-barycentric-coordinates/ /x/1842-barycentric-coordinates/
/x/1819-battleship-probability/
/x/1723-battleship-strategy/
/x/1846-battleship/
/x/1911-bits/
/x/1910-bitwise/
/x/1743-boids/ /x/1847-boids/ /x/2020-boids/
/x/1729-bresenham/
/maps/catan/ /x/1830-catan/
/maps/cave-generation/
/x/1845-cell-automata/
/x/2020-cells/
/articles/cellular-automata/ /grids/cellular-automata/ /x/1840-cellular-automata/ /x/1841-cellular-automata/ /x/1843-cellular-automata/ /x/2020-cellular-automata/ /x/2023-cellular-automata/ /x/2302-cellular-automata/
/grids/circle-circle-collision/
/x/1728-circle-drawing/
/x/1721-circle-packing/ /x/1830-circle-packing/ /x/1844-circle-packing/ /x/1945-circle-packing/
/articles/cities/
/x/1948-citizenship/
/maps/city-building/
/x/1840-city-generator/ /x/1841-city-generator/ /x/2023-city-generator/
/x/1842-citygen/ /x/1843-citygen/
/articles/collision-detection/
/x/1841-combat-model/
/x/compression/brotli.html
/x/compression/string.html
/articles/connected-tiles/
/articles/convex-hull/
/articles/conways-game-of-life/ /x/1721-conways-game-of-life/
/x/2020/cookie-clicker-save-editor/
/x/2020-cookie-clicker-save-viewer/
/grids/coordinates/ /maps/coordinates/
/x/2020-creature-trainer/
/x/1728-curve-editor/ /x/1729-curve-editor/
/articles/2d-geometry/
/articles/3d-octrees/
/pathfinding/d-star/introduction.html
/articles/3d-voxel-traversal/
/grids/3d/
/articles/data-oriented-design/
/x/1724-delaunay-triangulation/
/x/1722-delaunay/delaunay/
/x/1845-dialogue-trees/
/articles/dialogue/
/x/2018-dice-calculator/
/x/1846-digging/
/x/dither/
/x/1844-dots-and-crosses/
/articles/dungeon-generation/ /maps/dungeon-generation/
/articles/procedural-generation/dungeon/
/x/dungeon/dungeon.html
/x/2020/easing-graphs/
/x/1842-economy-sim/
/x/1843-ecosystem-simulation/
/x/1843-emacs-movement/
/x/1843-erosion/
/x/1843-evolution-creatures/
/x/1724-evolution-simulation/ /x/1841-evolution-simulation/ /x/1843-evolution-simulation/ /x/1844-evolution-simulation/ /x/1845-evolution-simulation/
/x/1811-evolution-simulator/ /x/1849-evolution-simulator/
/x/1810-evolution/ /x/1840-evolution/ /x/1842-evolution/ /x/1844-evolution/ /x/1846-evolution/ /x/1904-evolution/
/x/1942-evolutionary-algorithms/
/articles/finite-state-machines/
/x/1842-fire/
/maps/flag/ /x/flag/
/x/2023-flatbuffers/
/x/2020-float-to-bits/
/pathfinding/flowfield/
/fluid-simulation/ /x/1843-fluid-simulation/
/articles/fog-of-war/
/articles/formation-control/
/x/1843-fractal-tree/
/x/1843-frame-timing/
/pathfinding/funnel/
/maps/galaxy/
/x/1728-game-architecture/
/x/1842-game-loop/
/x/2023-game-programming-links/
/x/1618-genetic-algorithm/ /x/1842-genetic-algorithm/ /x/1844-genetic-algorithm/
/articles/genetic-algorithms/ /x/1717-genetic-algorithms/ /x/1724-genetic-algorithms/ /x/1816-genetic-algorithms/ /x/1830-genetic-algorithms/ /x/1845-genetic-algorithms/ /x/1951-genetic-algorithms/ /x/2020-genetic-algorithms/
/x/1844-genetic-drift/
/articles/geometry/
/x/1845-gradient-descent/ /x/1908-gradient-descent/
/x/1811-graph-maps/mazes.html
/x/1843-graphics-pipeline/
/articles/graphs/
/x/1844-gravity-simulator/
/grids/circle-rect-intersection.html
/grids/floodfill.html
/grids/wordsearch.html
/articles/hash-table/
/maps/heightmaps/
/x/1840-hex-map-editor/ /x/1843-hex-map-editor/
/x/hex-map-maker/
/x/1840-hex-range/
/x/2342-hex-roads/
/x/1843-hex-sphere/
/x/1843-hex-tile-mesh/
/x/1842-hex-viewer/
/x/1844-hexagon-tilings-spherical/
/x/hexagonal-grid-generator/
/x/1843-hexagons-on-sphere/
/x/1840-hexagons-vs-squares/
/maps/hexagons/
/x/honeycomb/
/x/1729-hydraulic-erosion/
/x/1843-icosphere-hexagons/
/x/1812-ik/ /x/1816-ik/ /x/1843-ik/ /x/1844-ik/ /x/1846-ik/
/x/2020-infection-model/
/x/1923-intro-aabb/
/x/1722-intro-spatial-partitioning/
/x/1724-inverse-kinematics/ /x/1840-inverse-kinematics/ /x/1842-inverse-kinematics/ /x/1849-inverse-kinematics/ /x/1908-inverse-kinematics/
/maps/islands/
/x/1842-isometric-depth-sorting/
/x/1911-isometric-projection/
/x/1847-isometric-tiles/
/x/1911-isometric-voxels/ /x/1911-isometric-voxels/
/articles/isometric/ /grids/isometric/ /isometric/
/x/1930-jigsaw-puzzle/
/x/1806-jumping/
/x/1721-kdtree/
/articles/kinematics/
/x/1728-langstons-ant/
/x/1840-langtons-ant/ /x/1844-langtons-ant/ /x/1943-langtons-ant/
/x/1844-life-simulation/
/x/2048-life/
/x/2022-lighting/
/x/1842-line-drawing-algorithms/
/x/2020-lorenz-attractor/
/x/1847-lowpoly/
/x/2023-lsystem/
/x/1722-lsystems/ /x/1843-lsystems/
/articles/map-generation/
/catan/map-generator/
/maps/mapgen/ /x/1844-mapgen/
/x/1843-mapgen4/
/maps/mapmaker/
/x/1843-mapping-spherical-worlds/
/x/1910-marching-squares/
/x/1728-markov-decision-processes/
/x/1843-matrix-transformations/
/matrix-transforms/
/grids/maze-generation/ /x/1847-maze-generation/
/articles/maze/ /pathfinding/maze/
/x/2020-mcts/
/maps/mesh/
/articles/minimax/ /pathfinding/minimax/ /x/1941-minimax/
/x/1840-model-view-controller/
/articles/monads/
/articles/monte-carlo-tree-search/
/x/monty-hall/
/x/1830-morphogenesis/
/pathfinding/multi/
/pathfinding/navmesh/
/x/1841-neural-networks/
/x/2217-nodal/
/x/1847-noise-viewer/
/x/1729-noise/ /x/1840-noise/
/x/1724-np-completeness/
/x/1846-octrees/
/x/1726-offset-paths/
/x/1845-optical-flow/
/articles/organisms/
/x/1729-p-vs-np/
/x/1924-packing-boxes/
/pathfinding/pacman/
/x/2020-pandemic-simulation/
/x/1843-particle-life/ /x/2020-particle-life/
/x/1846-particles/
/articles/partitioning/
/pathfinding/jump-point-search.html
/x/1843-pedestrian-simulation/
/maps/perilous-shores/
/maps/perlin-noise/ /x/1729-perlin-noise/
/x/1842-physics-simulations/
/articles/physics/ /x/1723-physics/ /x/1841-physics/
/x/pixel-count/
/x/1613-pixel-grid/
/x/1841-planet-generation/ /x/1844-planet-generation/
/x/1843-planet-generator/
/x/planet/
/articles/noise/poisson-disc/
/articles/poisson-disk-sampling/
/x/1830-poisson-disk/
/x/1848-polygon-boolean/
/x/1843-polygon-editor/
/articles/polygon-fill/
/articles/polygon-map-generation/
/x/1923-polygon-offsets/
/articles/polygon-partitioning/
/x/1721-polygons/
/articles/procedural-cave/
/x/1843-procedural-city/
/x/1843-procedural-creatures/
/articles/procedural-generation/
/x/1843-procedural-paths/
/x/1843-procedural-planet-gen/
/x/1723-procedural-rivers/
/articles/procedural-road-generation/
/articles/procgen-cave/
/maps/procgen/
/pathfinding/puzzle/
/x/1728-quadtree-visualization/ /x/1840-quadtree-visualization/
/x/1848-quadtree/
/articles/quadtrees/ /grids/quadtrees/ /x/1729-quadtrees/
/x/1843-ray-optics/
/x/1642-reaction-diffusion/ /x/1724-reaction-diffusion/ /x/1726-reaction-diffusion/ /x/1846-reaction-diffusion/ /x/1849-reaction-diffusion/ /x/2022-reaction-diffusion/ /x/reaction-diffusion/
/grids/rectangles/
/x/1844-robot-arm/
/x/1726-rock-paper-scissors/
/x/roguelike-java/
/articles/rooms-and-corridors/
/grids/rotation/
/x/1724-rotations/
/x/1723-rps-simulation/
/x/1720-sand/
/x/2216-sdf-physics/
/x/1922-self-driving-car/
/articles/shunting-yard/
/sliding-puzzle/
/x/2020-smooth-curve/
/pathfinding/smoothing/
/x/1849-soft-body-creatures/
/x/2001-solar-system-generator/ /x/2044-solar-system-generator/
/x/2142-solar-system/
/articles/spatial-indexing/
/x/1724-spherical-voronoi/
/grids/spiral/
/x/1843-spring-damper/
/x/1845-spring-mass/
/x/1843-star-map-generator/
/x/2020-starscape/
/x/1843-stat-scaling/
/articles/steering-behaviors/
/x/1844-straight-skeleton/
/x/1840-svg-vs-png/
/pathfinding/tangent-bug/
/maps/tectonics/ /x/1847-tectonics/
/x/2311-tensor-cores/
/x/1842-terrain-blending/
/x/1845-terrain-generation/
/maps/terrain/ /x/terrain/
/x/1841-tetris-ai/
/x/2312-tetris-art/
/x/1725-threading/
/articles/tile-map-logic/
/articles/tilemaps/
/grids/tiles/ /maps/tiles/
/x/1845-town/
/x/1840-triangle-intrusion/
/grids/triangle/
/x/1843-trig/
/x/1846-tsp-genetic/
/pathfinding/tsp/
/x/1723-turing-patterns/ /x/1729-turing-patterns/ /x/1844-turing-patterns/ /x/1847-turing-patterns/
/articles/turn-based-ai/
/x/1846-turn-based-loop/
/x/turtle/
/x/1841-vanishing-points/
/articles/vectors/ /x/1840-vectors/
/x/2022/06/virtual-machines-in-rust/
/x/1707-visibility-2d/
/x/1723-visibility/
/articles/visible-area/
/articles/visualizing-parallax/
/x/1846-volcano/
/x/1847-volumetric-light/
/x/1908-voronoi-3d/
/x/1836-voronoi-circle-growth/
/x/1830-voronoi-diagram/ /x/1841-voronoi-diagram/ /x/1843-voronoi-diagram/ /x/1846-voronoi-diagram/ /x/1847-voronoi-diagram/ /x/1848-voronoi-diagram/
/x/1840-voronoi-map-generator/ /x/1849-voronoi-map-generator/
/x/1721-voronoi-map/ /x/1723-voronoi-map/
/x/1730-voronoi-maps/
/x/1843-voronoi-noise/ /x/1912-voronoi-noise/
/x/1842-voronoi-relaxation/
/x/1843-voronoi-tile/
/x/1846-voronoi-tsp/
/x/1722-voronoi/ /x/1729-voronoi/ /x/1847-voronoi/ /x/2023-voronoi/ /x/voronoi/
/x/1728-voxel-meshes/
/articles/voxel-raycasting/
/x/1720-voxel-terrain/
/articles/voxels/ /grids/voxels/
/x/1840-wang-tiles/
/x/1847-water-simulation/
/x/1844-water/
/x/1843-waterflow/ /x/1844-waterflow/
/x/1728-wave-function-collapse/ /x/1729-wave-function-collapse/ /x/2023-wave-function-collapse/
/articles/wavefunction-collapse/ /x/wavefunction-collapse/
/x/2020-wavefunctioncollapse/
/x/2022-weather/
/articles/weighted-random/
/x/1836-weighted-voronoi/
/x/2023-wildfire-ca/
/maps/worldgen/
/x/1844-wraparound/
/x/1840-quadtrees
/x/1843-solar-system-generator
/x/1847-sine-wave-art
/x/1849-town
/x/1941-minimax

Most of the URLs it’s giving out are plausibly something I could have written.

I think it’s also interesting to see what it has “learned” about my URL structure. For my x/ pages, I use the first two digits for the year. ChatGPT is making up lots of URLs starting with x/18 which means that it thinks that 2018 was my most productive year. And … maybe it’s right. Hm.

This was a fun diversion. My server’s error logs tell me that ChatGPT thinks I’ve written pages I haven’t. Maybe I should actually write those pages!