HomeWorks

GridHorizon

Projects

GridHorizon is a large-scale web open-world exploration game I have been working on lately.

Playing the hunting game theHunter: Call of the Wild, I realized how compelling a big map and a slow pace can be: when prey is hard to get, actually getting it feels huge. I think PUBG worked the same way. Its biggest change was not the circle or the parachute — it was a hundred people surviving on a vast map. That loneliness was new.

So I have long wanted a highly realistic exploration game, closer to sixteenth-century European explorers in the Americas: months at sea without land, and when land appears you still do not know if it is an island or a continent. Everything feels as unknown as another planet — deep solitude and fear. That has real charm.

At first I wanted an even bigger world: one cell per 100 meters of real Earth, five real seconds to walk one cell. After running the numbers with AI, it was clearly unplayable — too big, too slow. True Earth surface scale is still beyond what computers can simulate well. Storage alone would be absurd. Worse, players would almost never meet: even if all eight billion people on Earth joined and were placed at random, you would barely bump into anyone. And that is only one tiny planet in the solar system; the solar system itself is a grain of sand in the galaxy. The scale is uncanny if you sit with it.

For performance and playability I settled on an 8000×8000 grid, roughly half land and half ocean. Crossing a cell defaults to one second. Even then, walking end to end takes more than two hours; covering the whole map takes months; visiting every cell would take a couple of years.

On the stack I mainly used Next.js, deployed on Vercel, with Vercel Storage, and Ably for syncing players.

Building it was harder than I expected, and network latency hurt. The first plan was polling for positions, which meant a lot of waiting. Early AI-assisted code waited on every network callback before doing anything. I switched to local-first, then sync to the server, so the player sees feedback immediately.

It is still a large multiplayer game — tolls when you pass through, position updates between players, and other interactions. After dropping polling I used Ably.

The database schema grew far past what I had imagined. This is not a simple game. In theory it is much harder than my single-player titles, especially on the server and networking side.

I recorded a video and did light promotion on Reddit. In one forum a few players mocked it as an AI-made game. That was when I saw how hostile some overseas players are toward AI-made work. Elsewhere I got ten upvotes and some kind words. The YouTube numbers were decent too, and I even got someone into my Discord who asked real questions about the game. That meant a lot.

Part of whether this is fun depends on how many people show up. If it scales — thousands or tens of thousands — everyone has a better time. If only a handful join, people quit fast. That is why I am not fully confident.

For the same reason I made it open source. The GitHub repo is public; anyone interested is welcome to join.

I am still unsure whether open source is fading in the AI-coding era — you need less human collaboration when AI can ship things quickly, and everyone is “collaborating” with a model instead.

We will see.

Project

Period
2026.7 - now