[HN Gopher] Show HN: isometric.nyc - giant isometric pixel art m...
___________________________________________________________________
Show HN: isometric.nyc - giant isometric pixel art map of NYC
Hey HN! I wanted to share something I built over the last few
weeks: isometric.nyc is a massive isometric pixel art map of NYC,
built with nano banana and coding agents. I didn't write a single
line of code. Of course no-code doesn't mean no-engineering. This
project took a lot more manual labor than I'd hoped! I wrote a
deep dive on the workflow and some thoughts about the future of AI
coding and creativity: http://cannoneyed.com/projects/isometric-
nyc
Author : cannoneyed
Score : 496 points
Date : 2026-01-22 16:52 UTC (6 hours ago)
(HTM) web link (cannoneyed.com)
(TXT) w3m dump (cannoneyed.com)
| ChrisArchitect wrote:
| Appreciate that writeup. Very detailed insights into the process.
| However those conclusions left me on the fence about whether I
| 'liked' the project. The conclusions about 'unlocking scale' and
| commodity content having zero value. Where does that leave you
| and this project? Does it really matter that much that the
| project _couldn 't_ exist without genAI? Maybe it shouldn't exist
| then at all. As with alot of the areas AI touches, the problem
| isn't the tools or use of them exactly, it's the scale. We're not
| ready for it. We're not ready for the scale of impact the tech
| touches in multitude of areas. Including the artistic world. The
| diminished value and loss of opportunities. We're not ready for
| the impacts of use by bad actors. The scale of output like this,
| as cool as it is, is out of balance with the loss of huge chunk
| of human activity and expression. Sigh.
| dreadlordbone wrote:
| Does it really matter that much that a sewage treatment plant
| couldn't exist without automated sensors? Maybe it shouldn't
| exist then at all.
| cannoneyed wrote:
| At the risk of rehashing the same conversation over and over
| again, I think this is true of every technology ever.
|
| Personally I'm extremely excited about all of the creative
| domains that this technology unlocks, and also extremely
| saddened/worried about all of the crafts it makes obsolete (or
| financially non-viable)...
| anonymous908213 wrote:
| Do you seriously believe this[1] makes any craft obsolete or
| financially non-viable?
|
| [1] https://files.catbox.moe/1uphaw.png
|
| This is a fairly cool and novel application of generative
| AI[2], but it did not generate pixel art and it's still
| wildly incoherent slop when you examine it closely. This
| mostly works because it uses scale to obfuscate the flaws;
| users are expected to be zoomed out and not looking at the
| details. But the details are what makes art work. You could
| not sell a game or an animation like this. This is not
| replacing anybody.
|
| [2] It's also wholly unrepresentative of general use-cases.
| 99.99999999% of generative AI usage does not involve a ton of
| manual engineering labour fine-tuning a model and doing the
| things you did to get this set up. Even _with_ all of that
| effort, what you 've produced here is never replacing a
| commercially viable pixel artist. The rest of the world
| slapping a prompt into an online generator is even further
| away from doing that.
| DANmode wrote:
| > Where does that leave you and this project? Does it really
| matter that much that the project couldn't exist without genAI?
| Maybe it shouldn't exist then at all. As with alot of the areas
| AI touches, the problem isn't the tools or use of them exactly,
| it's the scale. We're not ready for it. We're not ready for the
| scale of impact the tech touches in multitude of areas.
| Including the artistic world. The diminished value and loss of
| opportunities. We're not ready for the impacts of use by bad
| actors. The scale of output like this, as cool as it is, is out
| of balance with the loss of huge chunk of human activity and
| expression. Sigh.
|
| If you don't see these tools as a way for ALL of us to more-
| intimately reach more of our intended audiences,
|
| whether as a musician, marketer, small business, whatever,
|
| then I don't know if you were really passionate or excited
| about what you were doing in the first place.
| detectivestory wrote:
| beautiful!
| k1rd wrote:
| Really nice.
| bigwheels wrote:
| Very impressive result! are you taking requests for the next
| ones? SF :D Tokyo :D Paris :D Milan :D Rome :D Sydney :D
|
| Oh man...
| cannoneyed wrote:
| Really want to do SF next. Maybe the next gen of models will be
| reliable enough to automate it but this took WAY too much
| manual labor for a working man. I'll get the code up soon if
| people wanna fork it!
| devilsdata wrote:
| Really would love to see Tokyo, Kyoto, or Sydney.
| xnx wrote:
| > This project is far from perfect, but without generative
| models, it couldn't exist. There's simply no way to do this much
| work on your own,
|
| Maybe, though a guy did physically carve/sculpt the majority of
| NYC: https://mymodernmet.com/miniature-model-new-york-
| minninycity...
| pavel_lishin wrote:
| Huh, the linked instagram account is no longer available :/
| lionsdan wrote:
| TikTok content is still up
| https://www.tiktok.com/@balsastyrofoam300
| ggsp wrote:
| I still see it at https://www.instagram.com/minninycity04,
| with two video posts
| fwip wrote:
| I got a recommended video in Youtube just the other day, where
| a bunch of users made NYC in Minecraft at a 1:1 scale:
| https://www.youtube.com/watch?v=ZouSJWXFBPk
|
| Granted, it was a team effort, but that's a lot more laborious
| than a pixel-art view.
| ChrisArchitect wrote:
| Related:
|
| _New York City is being recreated at 1:1 scale inside
| Minecraft_
|
| https://news.ycombinator.com/item?id=46665589
| cannoneyed wrote:
| This project is awesome, and I love that there are people who
| are driven enough to make something with so much craft,
| attention, and duration.
|
| That being said I have three kids (one a newborn) - there's no
| possible way _I_ could have done this in the before times!
| sp9k wrote:
| Also, sites like Pixeljoint used to (or still do? I haven't
| really kept up) collaborations. This would be a mammoth one,
| but the result would be much more impressive. This is a cool
| concept, but it's definitely not pixel art by any definition.
| xnx wrote:
| I see you used Gemini-CLI some but no mention of Antigravity.
| Surprising for a Googler. Reasons?
| cannoneyed wrote:
| I used antigravity a bit, but it still feels a bit wonky
| compared to Cursor. Since this was on my own time, I'm gonna
| use the stuff that feels best. Though, by the end of the
| project I wasn't touching an IDE at all.
| squigz wrote:
| Hugged to death? :(
| RationPhantoms wrote:
| Seems so. Shame! Really wanted to see this.
| tptacek wrote:
| You really, really do. It's quite something.
| RationPhantoms wrote:
| It's back and wow, it's incredible!
| cannoneyed wrote:
| Should be back online now!
| jesse__ wrote:
| > Slop vs. Art
|
| > If you can push a button and get content, then that content is
| a commodity. Its value is next to zero.
|
| > Counterintuitively, that's my biggest reason to be optimistic
| about AI and creativity. When hard parts become easy, the
| differentiator becomes love.
|
| Love that. I've been struggling to succinctly put that feeling
| into words, bravo.
| NelsonMinar wrote:
| I agree this is the interesting part of the project. I was
| disappointed when I realized this art was AI generated - I love
| isometric handdrawn art and respect the craft. But after
| reading the creator's description of their thoughtful use of
| generative AI, I appreciated their result more.
| pimlottc wrote:
| Where's the love here? There are artists who dedicate their
| lives to creating a single masterwork. This is someone spending
| a weekend on a "neat idea".
| jesse__ wrote:
| You're inferring that time invested per project is directly
| proportional to love for the craft, which I disagree with
| strongly. Taking a weekend to explore a new medium is an act
| of interest/love in the craft. Is Robert Bateman any less
| dedicated to a life of art than Michelangelo was? Maybe,
| maybe not, but I think we can both agree they produced quick
| sketches, and dedicated their lives to producing incredible
| art.
|
| I expect artists will experiment with the new tools and
| produce incredibly creative works with them, far beyond the
| quality I can produce by typing in "a pelican riding a
| bicycle".
| dormento wrote:
| Not working here, some CORS issue.
|
| Firefox, Ubuntu latest.
|
| Cross-Origin Request Blocked: The Same Origin Policy disallows
| reading the remote resource at https://isometric-nyc-
| tiles.cannoneyed.com/dzi/tiles_metadat.... (Reason: CORS header
| 'Access-Control-Allow-Origin' missing). Status code: 429.
|
| Edit: i see now, the error is due to the cloudflare worker being
| rate limited :/ i read the writeup though, pretty cool,
| especially the insight about tool -> lib -> application
| flaviolivolsi wrote:
| Not working here either. Two different errors with two
| different browsers on Arch.
|
| - Chromium: Failed to load tiles: Failed to fetch
|
| - Zen: Failed to load tiles: NetworkError when attempting to
| fetch resource.
| jen20 wrote:
| Same in Safari on macOS here, FWIW.
| cannoneyed wrote:
| Yeah I'm gonna blame Claude (and my free plan) for this one.
| Fixing!
| cannoneyed wrote:
| Cloudflare caching should be back. Turns out that there
| were a lot of tiles being served, who could have seen that
| coming?
| lagniappe wrote:
| Failed to load tiles: NetworkError when attempting to fetch
| resource.
| tptacek wrote:
| So, wait: this is just based on taking the 40 best/most
| consistent Nano Banana outputs for a prompt to do pixel-art
| versions of isometric map tiles? That's all it takes to finetune
| Qwen to _reliably_ generate tiles in exactly the same style?
|
| Also, does someone have an intuition for how the "masking"
| process worked here to generate seamless tiles? I sort of grok it
| but not totally.
| NAR8789 wrote:
| I think the core idea in "masking" is to provide adjacent pixel
| art tiles as part of the input when rendering a new tile from
| photo reference. So part of the input is literal boundary
| conditions on the output for the new tile.
|
| Reference image from the article:
| https://cannoneyed.com/img/projects/isometric-nyc/training_d...
|
| You have to zoom in, but here the inputs on the left are mixed
| pixel art / photo textures. The outputs on the right are
| seamless pixel art.
|
| Later on he talks about 2x2 squares of four tiles each as input
| and having trouble automating input selection to avoid seams.
| So with his 512x512 tiles, he's actually sending in 1024x1024
| inputs. You can avoid seams if every new tile can "see" all its
| already-generated neighbors.
|
| You get a seam if you generate a new tile next to an old tile
| but that old tile is not input to the infill agorithm. The new
| tile can't see that boundary, and the style will probably not
| match.
| cannoneyed wrote:
| That's exactly right - the fine tuned Qwen model was able to
| generate seamless pixels most of the time, but you can find
| lots of places around the map where it failed.
|
| More interestingly, not even the biggest smartest image
| models can tell if a seam exists or not (likely due to the
| way they represent image tokens internally)
| NAR8789 wrote:
| I'm curious why you didn't do something like generate new
| tiles one at a time, but just expand the input area on the
| sides with already-generated neighbors. Looks like your
| infill model doesn't really care about tile sizes, and I
| doubt it really needs full adjacent tiles to match style.
| Why 2x2 tile inputs rather than say... generate new tiles
| one at a time, but add 50px of bordering tile on each side
| that already has a pixel art neighbor?
| polishdude20 wrote:
| There would have to be some tiles which don't have all
| four neighbors generated yet.
| cannoneyed wrote:
| Yeah I actually did that quite a bit too. I didn't want
| to get too bogged down in the nitty gritty of the tiling
| algorithm because it's actually quite difficult to
| communicate via writing (which probably contributed to it
| being hard to get AI to implement).
|
| The issue is that the overall style was not consistent
| from tile to tile, so you'd see some drift, particularly
| in the color - and you can see it in quite a few places
| on the map because of this.
| NAR8789 wrote:
| Oh that makes sense, thanks for explaining! And thanks
| for sharing your process and result! Interesting to see
| your process, and looking at the map really tickles my
| nostalgia
| larodi wrote:
| you can tell the diffusion from space, sadly it would normally
| take years to do it the conventional way, which is still the
| only correct way.
| __mharrison__ wrote:
| Does anyone have a good reference for finetuning Qwen? This
| article opened my eyes a bit...
| dimitri-vs wrote:
| The turn-key option is ostris ai-toolkit which has good
| tutorials on YT and can be run completely locally or via
| RunPod. Claude Code can set everything up for you (speaking
| from experience) and can even SSH into RunPod.
| tehlike wrote:
| Some people reported 429 - otherwise known as HN hug of death.
|
| You probably need to adjust how caching is handled with this.
| cannoneyed wrote:
| Yup the adjustment was giving cloudflare 5 bucks :)
| tehlike wrote:
| Hah! I thought caching stuff was free. Is it because of the
| workers? I assumed this was all static assets.
|
| I too have been giving cloudflare 5$ for a while now :D
| cannoneyed wrote:
| yeah I had to put it behind a worker to deal with the
| subdomain and various other subtle caching issues. All in
| all cloudflare is incredible, and Claude makes it actually
| quite easy to deal with all the ins and outs
| cyrusradfar wrote:
| Insane outcome. Really thoughtful post with insights across the
| board. Thanks for sharing
| sanufar wrote:
| Seems to have been hugged to death as of now
| cannoneyed wrote:
| Should be back after some help from Claude and some money to
| Cloudflare
| sanufar wrote:
| Class, looks amazing. The embed in the writeup looks so cool!
| blintz wrote:
| I was most surprised by the fact that it only took 40 examples
| for a Qwen finetune to match the style and quality of
| (interactively tuned) Nano Banana. Certainly the end result does
| not look like the stock output of open-source image generation
| models.
|
| I wonder if for almost any bulk inference / generation task, it
| will generally be dramatically cheaper to (use fancy expensive
| model to generate examples, perhaps interactively with
| refinements) -> (fine tune smaller open-source model) -> (run
| bulk task).
| cannoneyed wrote:
| In my experience image models are very "thirsty" and can often
| learn the overall style of an image from far fewer models. Even
| Qwen is a HUGE model relatively speaking.
|
| Interestingly enough, the model could NOT learn how to reliably
| generate trees or water no matter how much data and/or
| strategies I threw at it...
|
| This to me is the big failure mode of fine-tuning - it's
| practically impossible to understand what will work well and
| what won't and why
| blintz wrote:
| I see, yeah, I can see how if it's like 100% matching some
| parts of the style, but then failing completely on other
| parts, it's a huge pain to deal with. I wonder if a bigger
| model could loop here - like, have GPT 5.2 compare the fine-
| tune output and the Nano Banana output, notice that trees +
| water are bad, select more examples to fine-tune on, and the
| retry. Perhaps noticing that the trees and water are missing
| or bad is a more human judgement, though.
| cannoneyed wrote:
| Interestingly enough even the big guns couldn't reliably
| act as judges. I think there are a few reasons for that:
|
| - the way they represent image tokens isn't conducive to
| this kind of task
|
| - text-to-image space is actually quite finicky, it's
| basically impossible to describe to the model what trees
| ought to look like and have them "get it"
|
| - there's no reliable way to few-shot prompt these models
| for image tasks yet (!!)
| cannoneyed wrote:
| Author here: Just got out of some meetings at work and see that
| HN is kicking my cloudflare free plan's butt. Let me get Claude
| to fix it, hold tight!
| cannoneyed wrote:
| We should be back online! Thanks for everyone's patience, and
| big thanks to Claude for helping me debug this and to
| Cloudflare for immediately turning the website back on after I
| gave them some money
| cannoneyed wrote:
| Sorry about the hug of death - while I spent an embarassing
| amount of money on rented H100s, I couldn't be bothered to spend
| $5 for Cloudflare workers... Hope you all enjoy it, it should be
| back up now
| Octoth0rpe wrote:
| > while I spent an embarassing amount of money on rented H100s
|
| Would you mind sharing a ballpark estimate?
| honeycrispy wrote:
| This is kind of beautiful. Great work! I mean it.
| ivangelion wrote:
| Want to thank you for taking the time to write up the process.
|
| I know you'll get flak for the agentic coding, but I think it's
| really awesome you were able to realize an idea that otherwise
| would've remained relegated to "you know what'd be cool.."
| territory. Also, just because the activation energy to execute a
| project like this is lower doesn't mean the creative ceiling
| isn't just as high as before.
| gregsadetsky wrote:
| amazing work!
|
| gemini 3.5 pro reverse engineered it - if you use the code at the
| following gist, you can jump to any specific lat lng :-)
|
| https://gist.github.com/gregsadetsky/c4c1a87277063430c26922b...
|
| also, check out https://cannoneyed.com/isometric-nyc/?debug=true
| ..!
|
| ---
|
| code below (copy & paste into your devtools, change the lat lng
| on the last line): const calib={p1:{pixel:{x:52
| 548,y:64928},geo:{lat:40.75145020893891,lng:-73.9596826628078}},p
| 2:{pixel:{x:40262,y:51982},geo:{lat:40.685498640229675,lng:-73.98
| 074283976926}},p3:{pixel:{x:45916,y:67519},geo:{lat:40.7579039010
| 85726,lng:-73.98557060196454}}};function getAffineTransform(){let
| {p1:e,p2:l,p3:g}=calib,o=e.geo.lat*(l.geo.lng-g.geo.lng)-l.geo.la
| t*(e.geo.lng-g.geo.lng)+g.geo.lat*(e.geo.lng-l.geo.lng);if(0===o)
| return console.error("Points are collinear, cannot
| solve."),null;let n=(e.pixel.x*(l.geo.lng-g.geo.lng)-l.pixel.x*(e
| .geo.lng-g.geo.lng)+g.pixel.x*(e.geo.lng-l.geo.lng))/o,x=(e.geo.l
| at*(l.pixel.x-g.pixel.x)-l.geo.lat*(e.pixel.x-g.pixel.x)+g.geo.la
| t*(e.pixel.x-l.pixel.x))/o,i=(e.geo.lat*(l.geo.lng*g.pixel.x-g.ge
| o.lng*l.pixel.x)-l.geo.lat*(e.geo.lng*g.pixel.x-g.geo.lng*e.pixel
| .x)+g.geo.lat*(e.geo.lng*l.pixel.x-l.geo.lng*e.pixel.x))/o,t=(e.p
| ixel.y*(l.geo.lng-g.geo.lng)-l.pixel.y*(e.geo.lng-g.geo.lng)+g.pi
| xel.y*(e.geo.lng-l.geo.lng))/o,p=(e.geo.lat*(l.pixel.y-g.pixel.y)
| -l.geo.lat*(e.pixel.y-g.pixel.y)+g.geo.lat*(e.pixel.y-l.pixel.y))
| /o,a=(e.geo.lat*(l.geo.lng*g.pixel.y-g.geo.lng*l.pixel.y)-l.geo.l
| at*(e.geo.lng*g.pixel.y-g.geo.lng*e.pixel.y)+g.geo.lat*(e.geo.lng
| *l.pixel.y-l.geo.lng*e.pixel.y))/o;return{Ax:n,Bx:x,Cx:i,Ay:t,By:
| p,Cy:a}}function jumpToLatLng(e,l){let
| g=getAffineTransform();if(!g)return;let o=g.Ax*e+g.Bx*l+g.Cx,n=g.
| Ay*e+g.By*l+g.Cy,x=Math.round(o),i=Math.round(n);console.log(`
| Jumping to Geo: ${e}, ${l}`),console.log(` Calculated Pixel:
| ${x}, ${i}`),localStorage.setItem("isometric-nyc-view-state",JSON
| .stringify({target:[x,i,0],zoom:13.95})),window.location.reload()
| }; jumpToLatLng(40.757903901085726,-73.98557060196454);
| polishdude20 wrote:
| That second link shows controls but does not have any water
| effects?
| gregsadetsky wrote:
| As far as I can see, OP tried to implement water shaders but
| then abandoned this idea.
| cannoneyed wrote:
| that's right - it worked very nice, but the models to
| generate the "shore distance mask" for the water shader
| weren't reliable enough to automate, and I just couldn't
| justify sinking any more time into the project
| gregsadetsky wrote:
| 0 shade (hehe), the project is extraordinary as it is!
| cheers
| shredprez wrote:
| This is so cool! Please give me a way to share lat/long links
| with folks so I can show them places that are special to me :)
| cannoneyed wrote:
| oh wow that's such a good/obvious idea, i'll see if I can whip
| it together tonight
| _0xdd wrote:
| Nice work! But not all of NYC. Where's the rest of Staten Island?
| cannoneyed wrote:
| Haha I had to throw in the towel at some point and Staten
| Island didn't make the cut. Sorry (not sorry)
| _august wrote:
| This is very cool, it would be awesome if I could rotate it as
| well by 90 degree increments to peek at different angles! I loved
| RCT growing up so this is hitting the nostalgia!
| Kkoala wrote:
| Nice, very cool!
|
| Reminds me of https://queensmuseum.org/exhibition/panorama-of-
| the-city-of-...
| relium wrote:
| Very cool. Street names with an on/off toggle would be nice.
| filoleg wrote:
| This is awesome, thanks for sharing this!
|
| I am especially impressed with the "i didn't write a single line
| of code" part, because I was expecting it to be janky or slow on
| mobile, but it feels blazing fast just zooming around different
| areas.
|
| And it is very up to date too, as I found a building across the
| street from me that got finished only last year being present.
|
| I found a nitpicky error though: in Brooklyn downtown, where
| Cadman Plaza Park is, your webite makes it looks like there is a
| large rectangular body of water there (e.g., a pool or a
| fountain). In reality, there is no water at all, it is just a
| concrete slab area.
| teaearlgraycold wrote:
| The author had built something like this image viewer before
| and used an existing library to handle some of the rendering.
| cannoneyed wrote:
| the classic "water/concrete" issue! There's probably a lot of
| those around the map - turns out, it's pretty hard to tell the
| difference between water and concrete/terrain in a lot of the
| satellite imagery that the image model was looking at to
| generate the pixel images!
| natufunu wrote:
| One thing I learned from this is that my prompts are much less
| detailed than what author has been using.
|
| Very cool work and great write up.
| nzeid wrote:
| Amazing. Took forever but I found my building in Brooklyn as well
| as the nearby dealership, gas station, and public school.
| cheschire wrote:
| > I'm not particularly interested in getting mired down in the
| muck of the morality and economics of it all. I'm really only
| interested in one question: What's possible now that was
| impossible before?
|
| Upvote for the cool thing I haven't seen before but cancelled out
| by this sentiment. Oof.
| cannoneyed wrote:
| I mean this pretty literally though - I'm not _particularly_
| interested in these questions. They 've been discussed a ton by
| people way more qualified to discuss them, but I personally I
| feel like it's been pretty much the same conversation on loop
| for the last 5 years...
|
| That's not to say they're not very important issues! They are,
| and I think it's reasonable to have strong opinions here
| because they cut to the core of how people exist in the world.
| I was a musician for my entire 20s - trust me that I deeply
| understand the precarity of art in the age of the internet, and
| I can deeply sympathize with people dealing with precarity in
| the age of AI.
|
| But I also think it's worth being excited about the birth of a
| fundamentally new way of interacting with computers, and for
| me, at this phase in my life, that's what I want to write and
| think about.
| cheschire wrote:
| I appreciate the thoughtful reply. I will try to give you the
| benefit of the doubt then and not extrapolate from your
| relatively benign feelings as it pertains to a creative art
| project any capacity for you to take up engineering projects
| that would make the world worse.
|
| You get your votes back from me.
| pimlottc wrote:
| This is basically the inversion of the famous Jurassic Park
| quote. "Never mind if we should. What if we could?"
| ProjectBarks wrote:
| I was extremely excited until I looked closer and realized how
| many of these look like ... well AI. The article is such a good
| read and would recommend people check it out.
|
| Feels like something is missing... maybe just a pixelation effect
| over the actual result? Seems like a lot of the images also lack
| continuity (something they go over in the article)
|
| Overall, such a cool usage of AI that blends Art and AI well.
| cannoneyed wrote:
| Yeah it leaves a lot to be desired. Once you see the AI it's
| hard to unsee. I actually had a few other generation styles,
| more 8-bit like, that probably would have lended themselves
| better to actual pixel-art processing, but I opted to use this
| fine-tune and in for a penny in for a pound, so to speak...
| smusamashah wrote:
| Have you looked at retro Diffusion?
| https://x.com/RealAstropulse
|
| This person shares lots authentic looking ai generated pixel
| art. This should give the building more realistic pixel art
| look.
|
| Edit: example showing small houses
| https://x.com/RealAstropulse/status/2004195065443549691
| Searching for buildings
| cannoneyed wrote:
| Yup, I'm a big fan. They'd be the first to admit that
| making true pixel art is very hard, and getting the AI to
| do it even somewhat consistently requires a lot of tuning
| and guardrails / processing.
|
| At some point I couldn't fiddle with the style / pipeline
| anymore and just had to roll with "looks ok to me" - the
| whole point of the project wasn't to faithfully adhere to a
| style but to push the limits of new technology and learn a
| lot along the way
| nonethewiser wrote:
| Basically, it's not pixel art at all.
|
| It's very cool and I don't mind the use of AI at all but I
| think calling it pixel art is just very misleading. It's closer
| to a filter but not quite that either.
| QuantumNomad_ wrote:
| Yup, not pixel art. I wonder if people are not zooming in on
| it properly? If you zoom in max you see how much strangeness
| there is.
|
| It kind of looks like a Google Sketchup render that someone
| then went and used the Photoshop Clone and Patch tools on in
| arbitrary ways.
|
| Doesn't really look anything like pixel art at all. Because
| it isn't.
| jasondigitized wrote:
| It's pixel art, just not the types of pixels most people want
| in pixel art.
| dsmmcken wrote:
| Just curious, about how long did this project take you? I don't
| see that mentioned in the article.
| cannoneyed wrote:
| We had our third kid in late November, and I worked
| sporadically on it over the following two months of paternity
| leave and holiday... If I had to bet, I'd say I put in well
| over 200 hours of work on it, the majority of that being manual
| auditing/driving of the generation process. If any AI model
| were reliable at checking the generated pixels, I could have
| automated this process, but they simply aren't there yet, so I
| had to do _a lot_ more manual work than I 'd anticipated.
|
| All told I probably put in less than 20 hours of actual
| software engineering work, though, which consisted entirely of
| writing specs and iterating with various coding agents.
| mrandish wrote:
| > If any AI model were reliable at checking the generated
| pixels, I could have automated this process, but they simply
| aren't there yet, so I had to do a lot more manual work than
| I'd anticipated.
|
| Since the output is so cool and generally interesting, there
| might be an opportunity for those forking this to do other
| cities to deploy a web app to crowd source identifying broken
| tiles and maybe classifying the error or even providing
| manual hinting for the next run. It takes a village to make a
| (sim) city! :-)
| cannoneyed wrote:
| Yeah I'll get the code out there soon - it's just _very_
| vibe-y right now, the repo is a bit of a mess since I never
| bothered to organize things. The secret sauce is really in
| the fine-tuning, can definitely get those datasets /models
| public on oxen.ai too
| potatowaffle wrote:
| > What's possible now that was impossible before?
|
| > I spent a decade as an electronic musician, spending literally
| thousands of hours dragging little boxes around on a screen. So
| much of creative work is defined by this kind of tedious grind.
| ... This isn't creative. It's just a slog. Every creative field -
| animation, video, software - is full of these tedious tasks. Of
| course, there's a case to be made that the very act of doing this
| manual work is what refines your instincts - but I think it's
| more of a "Just So" story than anything else. In the end, the
| quality of art is defined by the quality of your decisions - how
| much work you put into something is just a proxy for how much you
| care and how much you have to say.
|
| Great insights here, thanks for sharing. That opening question
| really clicked for me.
| anonymous908213 wrote:
| That quote seriously rubs me the wrong way. "Dragging little
| boxes around" in a DAW _is_ creative, it constitutes the entire
| process of composing electronic music. You are notating what
| notes to play, when and for how long they play, what instrument
| plays them, and any modifications to the default sound of that
| instrument. Is writing sheet music tedious? Sure, it can be,
| when the speed of notating by hand can 't keep up with the
| speed your brain is thinking through ideas. But being tedious
| is not mutually exclusive with being creative despite the
| attempt to explicitly contrast them as such, and the solution
| to the process of notating your creativity being tedious is
| _not_ "randomly generate a bunch of notes and instruments that
| have little relation with the ones you're thinking of". This
| excerpt supposes that generative AI lets you automate the
| tedious part while keeping "the quality of your decisions", but
| it doesn't keep your decisions, it generates its own
| "decisions" from a broad, high-level prompt and your role is
| reduced to merely making decisions about whether or not you
| like the content generated, which is not creativity.
| cannoneyed wrote:
| I'd say that deciding where a transient should go" is
| creative, manually aligning 15 other tracks over and over
| again is not (not to mention having to do it in both the DAW
| _and_ melodyne)...
|
| I agree that "push button get image" AI generation is at best
| a bit cheap, at worst deeply boring. Art is resistance in a
| medium - but at what point is that resistance just masochism?
|
| George Perec took this idea to the max when he wrote an
| entire novel without the letter "E" - in French! And then
| someone had the audacity to translate it to English (e
| excluded)! Would I ever want to do that? Hell no, but I'm
| very glad to live in a world where someone else is crazy
| enough to.
|
| I've spent my 10,000 hours making "real" art and don't really
| feel the need to justify myself - but to all of the young
| people out there who are afraid to play with something new
| because some grumps on hacker news might get upset:
|
| It doesn't matter what you make or how you make it. What
| matters is why you make it and what you have to say.
| anonymous908213 wrote:
| To be clear, as I said in another reply downthread, I think
| this particular project is creative. I also don't object to
| people doing "push button get image" for entertainment
| (although I do object to it being spammed all over the
| internet in spaces meant for human art and drowning out
| people who put effort into what they create, because 10,000
| images can be generated in the time it takes to draw a
| single one). But "push button get image" is not making
| things yourself. I would give _you_ credit for creating
| this because you put effort into fine-tuning a model and a
| bespoke pipeline to make this work at scale, but "push
| button get image" does not have enough human decision-
| making involved for the human to really have any claim to
| have made the thing that gets generated. That is not
| creativity, and it is not capable of _replacing_ existing
| expressions of creativity, which you 've asserted multiple
| times in the article and thread. By all means push button
| and get image for as long as it entertains you, but don't
| pretend it is something it isn't.
| weinzierl wrote:
| Probably the best pre-AI take of the isometric pixel art NYC is
| poster from the art collective eboy. In the early 2000s their art
| was featured in MoMA (but I don't remember the NYC poster
| specifically).
|
| https://www.eboy.com/products/new-york-colouring-poster
| cannoneyed wrote:
| This is so good, just ordered one!
| deadbabe wrote:
| Would it be simple to modify this to make a highly stylized
| version of NYC instead? Like post apocalyptic NYC or medieval
| NYC, night time NYC, etc. because then that would have some
| _very_ interesting applications
| cannoneyed wrote:
| simple is relative, could definitely be done, but until the
| models get a bit smarter and require less manual hand-holding
| it'd be a lot of grindy work
| ChrisbyMe wrote:
| A bit tangential but i really think the .nyc domain is
| underappreciated.
|
| SF/Mountain View etc don't even have one! you get a little piece
| of the NYC brand just for you!
| mpaepper wrote:
| You mentioned needing 40k tiles and renting a H100 for 3$/hour at
| 200tiles/hour, so am I right to assume that you spend 200*3=600$
| for running the inference? That also means letting it run 25
| nights a 8 hours or so?
|
| Cool project!
| cannoneyed wrote:
| Yup back of the napkin is probably about there - also spent a
| fair bit on the oxen.ai fine-tuning service (worth every
| penny)... paint ain't free, so to speak
| d--b wrote:
| This is huge!
|
| At first I thought this was someone working thousands of hours
| putting this together, and I thought: I wonder if this could be
| done with AI...
| polishdude20 wrote:
| To take it a step further it would be super cool to so rhiw
| figure out the roadway system from the map data and use the
| buildings as masks over the roads and have little simulated cars
| driving
| cannoneyed wrote:
| 100% - I originally wanted to do that but when I realized how
| much manual work I'd have to do just to get the tiles generated
| I had to cut back on scope pretty hard.
|
| I actually have a nice little water shader that renders waves
| on the water tiles via a "depth mask", but my fine-tunes for
| generating the shader mask weren't reliable enough and I'd
| spent far too much time on the project to justify going deeper.
| Maybe I'll try again when the next generation of smarter,
| cheaper models get released.
| kkukshtel wrote:
| This is awesome, and thanks so much for the deep dive into
| process!!
|
| One thing I would suggest is to also post-process the pixel art
| with something like this tool to have it be even sharper. The
| details fall off as you get closer, but running this over larger
| patch areas may really drive the pixel art feel.
|
| https://jenissimo.itch.io/unfaker
| cannoneyed wrote:
| Oh wow this is great, I threw a few of these tricks at it and
| never really felt like I nailed it... Might have to revisit
| after playing around with this more
| MontyCarloHall wrote:
| This doesn't really look like pixel art; it looks like you
| applied a (very sophisticated) Photoshop filter to Google Earth.
| Everything is a little blurry, and the characteristic sharp edges
| of handmade pixel art (e.g. [0]) are completely absent.
|
| To me, the appeal of pixel art is that each pixel looks
| deliberately placed, with clever artistic tricks to circumvent
| the limitations of the medium. For instance, look at the piano
| keys here [1]. They deliberately lack the actual groupings of
| real piano keys (since that wouldn't be feasible to render at
| this scale), but are asymmetrically spaced in their own way to
| convey the essence of a keyboard. It's the same sort of
| cleverness that goes into designing LEGO sets.
|
| None of these clever tricks are apparent in the AI-generated NYC.
|
| On another note, a big appeal of pixel art for me is the sheer
| amount of manual labor that went into it. Even if AI were capable
| of rendering pixel art indistinguishable from [0] or [1], I'm not
| sure I'd be impressed. It would be like watching a humanoid robot
| compete in the Olympics. Sure, a Boston Dynamics bot from a
| couple years in the future will probably outrun Usain Bolt and
| outgymnast Simone Biles, but we watch Bolt and Biles compete
| because their performance represents a profound confluence of
| human effort and talent. Likewise, we are extremely impressed by
| watching human weightlifters throw 200kg over their heads but
| don't give a second thought to forklifts lifting 2000kg or
| 20000kg.
|
| OP touches on this in his blog post [2]: I spent
| a decade as an electronic musician, spending literally thousands
| of hours dragging little boxes around on a screen. So much of
| creative work is defined by this kind of tedious grind. [...]
| This isn't creative. It's just a slog. Every creative field -
| animation, video, software - is full of these tedious tasks. In
| the end, the quality of art is defined by the quality of your
| decisions - how much work you put into something is just a proxy
| for how much you care and how much you have to say.
|
| I would argue that in some case (e.g. pixel art), the slog is
| what makes the art both aesthetically appealing (the deliberately
| placed nature of each pixel is what defines the aesthetic) but
| also awe-inspiring (the slog represents an immense amount of
| sustained focus).
|
| [0] https://platform.theverge.com/wp-
| content/uploads/sites/2/cho...
|
| [1]
| https://www.reddit.com/media?url=https%3A%2F%2Fi.redd.it%2Fu...
|
| [2] https://cannoneyed.com/projects/isometric-nyc
| cannoneyed wrote:
| Yeah this is all completely fair and I agree with all of it.
| Aesthetically and philosophically, what AI does for "pixel art"
| is _very_ off. And once you see the "AI" you can't really
| unsee it.
|
| But I didn't want to call it a "SimCity" map, though that's
| really the vibe/inspiration I wanted to capture, because that
| implies other things, so I used the term "pixel art" even
| though I knew it'd get a lot of (valid) pushback...
|
| As with all things art, labels are really difficult and the
| context / meaning / technique is at once completely tied to
| genre but also completely irrelevant. Think about the label
| "techno" - the label is deeply meaningful and subtle to some
| and almost meaningless to others
| mrandish wrote:
| This is really wonderful. Thanks for doing it!
|
| I especially appreciated the deep dive on the workflow and
| challenges. It's the best generally accessible explication I've
| yet seen of the pros and cons of vibe coding an ambitious
| personal project with current tooling. It gives a high-level
| sense of "what it's generally like" with enough detail and
| examples to be grounded in reality while avoiding slipping into
| the weeds.
| alterom wrote:
| Holy damn, this map is a dream and the best map of NYC I've ever
| seen!
|
| It's as if NYC was built in Transport Tycoon Deluxe.
|
| I'll be honest, I've been pretty skeptical about AI and agentic
| coding for real-life problems and projects. But this one seems
| like the final straw that'll change my mind.
|
| Thanks for making it, I really enjoy the result (and the
| educational value of the making-of post)!
| aaronbrethorst wrote:
| this is truly amazing. bravo.
| rkagerer wrote:
| I love it! Such a SimCity 2000 vibe!
| howToTestFE wrote:
| this makes me want to play simcity again! really cool
| suriya-ganesh wrote:
| This is such a cool concept. props to you for building it.
| vortegne wrote:
| While impressive on a technical level, I can't help but notice
| that it just looks...bad? Just a strange blurry mess that only
| vaguely smells of pixelart.
|
| Makes me feel insane that we're passing this off as art now.
| deltamidway wrote:
| Absolutely love this! Yay robots!
| rzzzt wrote:
| Does anyone remember a Chinese website that did something
| similar? IIRC it was one of the selectable rendering modes of a
| Google Maps equivalent.
|
| Edit: this submission has a few links that could be what I had in
| mind but most of them no longer work:
| https://news.ycombinator.com/item?id=2282466
| mal10c wrote:
| reticulating splines
| jcelliott wrote:
| Hey, engineer at Oxen.ai here. Glad the fine-tuning worked well
| for this project! If anyone has questions on that part of it we
| would be happy to answer.
|
| We have a blog post on a similar workflow here:
| https://www.oxen.ai/blog/how-we-cut-inference-costs-from-46k...
|
| On the inference cost and speed: we're actively working on that
| and have a pretty massive upgrade there coming soon.
| cannoneyed wrote:
| Hell yeah oxen.ai is awesome, made my life so much easier
| meindnoch wrote:
| Looks badly AI generated.
| 10c8 wrote:
| There's absolutely no pixel art anywhere in the entirety of the
| map.
| epa wrote:
| Amazing
| sandpaper26 wrote:
| "map of NYC" does not include Staten Island. That's how we like
| it
| cannoneyed wrote:
| I just couldn't justify spending dozens more hours for Staten
| Island...
| rafram wrote:
| > This project is far from perfect, but without generative
| models, it couldn't exist. There's simply no way to do this much
| work on your own
|
| 100 people built this in 1964:
| https://queensmuseum.org/exhibition/panorama-of-the-city-of-...
|
| One person built this in the 21st century:
| https://gothamist.com/arts-entertainment/truckers-viral-scal...
|
| AI certainly let you do it much _faster_ , but it's wrong to
| write off doing something like this by hand as impossible when it
| has actually been done before. And the models built by hand are
| the product of genuine human creativity and ingenuity; this is a
| pixelated satellite image. It's still a very cool site to play
| around with, but the framing is terrible.
| emzo wrote:
| I'm on holiday in NY now - this is so cool
| crazygringo wrote:
| I just want to say this isn't just amazing -- it's my new
| favorite map of NYC.
|
| It's genuinely astonishing how much _clearer_ this is than a
| traditional satellite map -- how it has just the right amount of
| complexity. I 'm looking at areas I've spent a lot of time in,
| and getting an even better conceptual understanding of the
| physical layout than I've ever been able to get from satellite
| (technically airplane) images. This hits the perfect "sweet spot"
| of detail with clear "cartoon" coloring.
|
| I see a lot of criticism here that this isn't "pixel art", so
| maybe there's some better term to use. I don't know what to call
| this precise style -- it's almost pixel art without the pixels?
| -- but I love it. Serious congratulations.
| cannoneyed wrote:
| Author here, and to reiterate another reply - all of the
| critique of "pixel art" is completely fair. Aesthetically and
| philosophically, what AI does for "pixel art" is _very_ off.
| And once you see the AI you can 't really unsee it.
|
| But I didn't want to call it a "SimCity" map, though that's
| really the vibe/inspiration I wanted to capture, because that
| implies a lot of other things, so I used the term "pixel art"
| even though I figured it might get a lot of (valid) pushback...
|
| In general, labels and genres are really hard - "techno" to a
| deep head in Berlin is very different than "techno" to my
| cousins. This issue has always been fraught, because context
| and meaning and technique are all tangled up in these labels
| which are so important to some but so easily ignored by others.
| And those questions are even harder in the age of AI where the
| machine just gobbles up everything.
|
| But regardless, it was a fun project! And to me at least it's
| better to just make cool ambitious things in good faith and
| understand that art by definition is meaningful and therefore
| makes people feel things from love to anger to disgust to
| fascination.
| ant6n wrote:
| It's almost like sim city (2000), but not quite. It night
| help if the overall mayo was fully square.
| dluan wrote:
| This on top of Subway Builder would be incredible
| vagabund wrote:
| Really fun to fly around, find my old apartment building etc.
|
| It would be neat if you could drag and click to select an area to
| inpaint. Let's see everyone's new Penn Station designs!
|
| Would guess it'd have to be BYOK but it works pretty well:
|
| https://i.imgur.com/RrQEozH.jpeg
|
| Much better than trying to inpaint directly on Google Earth data
___________________________________________________________________
(page generated 2026-01-22 23:00 UTC)