I’m experimenting with using MySQL full text indexing to generate a list of “related entries” for each entry (click on an item’s permalink to see it in action). It works …| Simon Willison’s Weblog
Learn all about the site: search operator and how it can help with debugging and understanding how Google sees your website.| Google for Developers
Last time we implemented a search feature that found all matching documents, sorted in some arbitrary order. This time I want to sort them in a more reasonable order. Here are some ideas, some which depend on the query and others which don't:| Red Blob Games: latest blog posts
I have a search box on my web site that uses Google to search my site only using the site: operator[1]. Try it — type in hexagon tiles and you’ll see that it shows my hexagon tile page.| www.redblobgames.com
My hexagon guide has many conversion routines — axial to cube, cube to offset, hex to pixel, etc. Sometimes these steps can be combined into larger steps or separated into smaller steps. There's a balancing act between:| Red Blob Games: latest blog posts
Last time I talked about de-optimizing mapgen4 so that I could more easily create experiments. I wanted to share one of those experiments. I recently assembled some of my existing ingredients into something that was just plain fun to watch, and I wanted to share this simulation of traders moving around a map:| www.redblobgames.com
Lately I’ve been experimenting with map algorithms. I have three starting points:| www.redblobgames.com
My guide to hexagonal grids[1] is one of the most popular pages on my site. I keep a list of things I want to add to that page[2]. One of them has been spiral coordinate systems. I had thought I would wait until I actually use them in a real project, so that I would have real world experience with the thing I’m writing about. I’m afraid of writing about things I’m unsure about, or information that’s incomplete. But I haven’t used them yet.| www.redblobgames.com
I know a lot of people hated the Flash Player web plugin, but I found it to be quite useful for my experiments. It gave me vector graphics in the browser so that I could share demos without asking people to download an executable from me. And it ran long before SVG / HTML5 was widely available in browsers. I had been porting some of my old Flash code to Javascript[1], but that takes time that I could be instead spending on new projects. So I’m glad to see that the Ruffle Flash emulator[2] h...| www.redblobgames.com
It's time for my annual self review. In last year's review I said I wanted to improve my site:| Red Blob Games: latest blog posts
When I first wrote my hexagon guide[1] in 2013 I used d3.js[2], which has a nice animation system. I had some trouble with CSS transitions in SVG back then, so I was using Javascript transitions using SVG attributes instead of CSS. This looked something like:| www.redblobgames.com
By Charlie Frye, Esri Chief Cartographer Text and imagery have had an uneasy relationship since the day they met. Satellite imagery an...| ArcGIS Blog
Download a free satellite image of Hawaii| shadedrelief.com
I had previously posted about drawing outlines around fonts. The goal is to make labels easier to read in situations like these:| www.redblobgames.com
In the last blog post I wrote about how I wanted to test the parameters of msdfgen, which generates multi-signed distance fields for fonts and other shapes. While testing the emrange parameter, I found lots of bugs in my renderer.| Red Blob Games: latest blog posts
In the last few posts I have shown some of the experiments I did with font rendering. Those experiments were all in the renderer. I'm using msdfgen-atlas to generate the textures used by the renderer, and I wanted to experiment with msdfgen's parameters. Instead of generating new font data and then reloading the browser, I decided to try "headless" rendering controlled by a shell script.| Red Blob Games: latest blog posts
Over the last few posts I wrote about things I did to improve font quality, such as antialiasing and combining distance fields to merge outlines and halos. But I want to "pop up the stack" a bit and talk about one of the bigger goals for this project. I want to render text in styles that I've seen in maps, both online and offline, both fantasy and real. In particular, I want to apply spacing, rotation, and curvature to the labels. | Red Blob Games: latest blog posts
Learning about font rendering, I was looking at text closely last time, and I noticed another issue. The shadows of each letter overlap the previous letter. That's because I'm drawing one letter at a time. So for example in the fl, I draw the f's letter, outline, and shadow, then I draw l's letter, outline, and shadow. So l's shadow is drawn on top of f's letter.| Red Blob Games: latest blog posts
Last time I was looking at letter spacing with my renderer to see how it compared to Google Chrome on Mac. But while doing that I noticed that their antialiasing looked nicer than mine. So I tweaked parameters, including antialias edge width, gamma, and threshold bias.| Red Blob Games: latest blog posts
My summer project is to work on labels for maps. In the previous post I described how I created outlines, and how I had a bug in the rendering. While looking closely at text to fix that bug, I noticed in one of my tests that the k and s seemed too close together. The h and e seemed a little too far apart. | Red Blob Games: latest blog posts
In the previous post I introduced my summer project, to render labels on maps. As part of this, I want to be able to draw outlines, halos, and drop shadows. | Red Blob Games: latest blog posts
My friend L recently mentioned that he hadn't seen any blog posts from me. It's true, I haven't posted for a while. Earlier this year I had explored signed distance field fonts, in particular using Viktor Chlumský's multi-channel distance fields. I really enjoyed the many experiments I did, and I learned a lot. I had intended to use it in a real game project but the timing wasn't right. So I put it away. Then before I got started on a new project, life happened. I had to take a break and att...| Red Blob Games: latest blog posts
I had previously blogged about text effects, and how I accidentally discovered that I could alter the personality of the font by rendering a distorted shape. At the time, I was focused on text effects and didn't want to get distracted by this discovery. So I wrote it down for later.| Red Blob Games: latest blog posts
I have several pages that are unfinished because I can't find an explanation I'm happy with. Sometimes while trying to come up with an explanation, I realize I don't actually understand the topic as well as I thought! One of these topics is heuristics for the A* algorithm.While trying to understand the topic better, I came up with this example:| Red Blob Games: latest blog posts
You may know me for my interactive tutorials. But before that, I was writing visual but non-interactive tutorials. In particular, there wasn't a lot of information about A* on the web, so I decided to collect all my notes about pathfinding together in one place in the 1990s. But then in the 2010s I started making interactive pages. The newer pages are narrower in scope; I covered a broader set of topics on the older pages. I maintain both sets now.| Red Blob Games: latest blog posts
On my pages I often want to be able to move an object around in a diagram using the mouse or touch. Last year I spent some time learning about browser mouse+touch events, and wrote a page about event handlers for dragging objects around. I hadn't realized it at the time, but it was only half the solution.| Red Blob Games: latest blog posts
Earlier this year I was trying to improve font rendering in some of my C++ projects, and that led me down a rabbit hole of learning signed distance field (SDF) font rendering. I wanted to try out the SDF fonts in a real project. I occasionally help with Galactic Assault Squad (GAS), especially "engine" code, so for Week 6 I decided to try SDF fonts there.| Red Blob Games: latest blog posts
In Week 4 of the year, I tried out various ways of using distances in signed distance field fonts. In Week 5 I wanted to do something different. I decided to explore what I could do treating each character as its own sprite and then applying sprite antimation. The week turned out to be fun but I didn't learn as much as I hoped I would. To start, I copied the code from the previous week so that I would have a working program right away. Then I removed things I didn't care about this week and a...| Red Blob Games: latest blog posts
In the last post I described how I fell into the font rendering rabbit hole. | Red Blob Games: latest blog posts
Each week I pick one or two things to work on. In week 2 of this year, I decided I should update my "hello world" OpenGL+Emscripten code from 2015. It's boilerplate I use occasionally in other projects. It wasn't compiling anymore, and I wanted to fix that as well as several other things.| Red Blob Games: latest blog posts
For some time now I’ve been unhappy with how much more friction there is when posting to my blog[1] than posting to twitter[2]. I keep wanting to blog more but I don’t. Part of the problem is content. I did blog more in 2018, when I was working on projects that had more to share. Part of the problem is expectations. On Twitter it’s expected that I write very little (280 character limit, up to 4 images or 1 animation). That constraint makes it easier to post. On my blog I tend to write l...| www.redblobgames.com
Behind the scenes - how I'm making redblobgames.com - interactive explanations of game development algorithms and math| simblob.blogspot.com
This map generator creates volcanic island style maps. The simplest way to explore the maps is to click the plus/minus arrows to change the Seed.| www.redblobgames.com
3 🖱️👆 Pointer events#| www.redblobgames.com
Pick a starting seed, then paint mountains, valleys, and oceans on the map! It will simulate evaporation, wind, and rainfall to determine biomes and rivers.| www.redblobgames.com
Interactive tutorial for using Simplex/Perlin noise to make terrain and biomes for a wilderness map| www.redblobgames.com
Guide to math, algorithms, and code for hexagonal grids in games| www.redblobgames.com
Behind the scenes - how I'm making redblobgames.com - interactive explanations of game development algorithms and math| simblob.blogspot.com