Hacker News new | past | comments | ask | show | jobs | submit login
“Bad Apple” in Minecraft (purplesyringa.moe)
326 points by purplesyringa 1 day ago | hide | past | favorite | 46 comments





I learned way more about computer graphics here than I expected. Kudos to the author.

One nit: the picture that the author called "The sun" is actually Eirin [0] looking at the moon. In that scene [1] she's reaching for the moon, where she was exiled from, only to hesitate and retract the hand. In the next scene, Kaguya [2] also reaches for the moon, but does not hesitate. I'm not sure what the symbolism here was supposed to mean, as according to Touhou wiki it was Eirin's plan to steal the moon.

[0] https://en.touhouwiki.net/wiki/Eirin_Yagokoro

[1] https://youtu.be/FtutLA63Cp8?t=99

[2] https://en.touhouwiki.net/wiki/Kaguya_Houraisan


> One nit: the picture that the author called "The sun" is actually Eirin [0] looking at the moon.

I always think 'the sun' when I see it because of this goofy video: https://www.youtube.com/watch?v=ReblZ7o7lu4


You may have misread, the wiki says her plan was to 'seal', not 'steal' the passageway between Earth (or Gensokyo) and the Moon. Eirin deliberately chose to break her connection to the Moon in order to protect Kaguya.

My favorite dithering algorithm for motion video is Yliluoma dithering: https://bisqwit.iki.fi/story/howto/dither/jy/

It is especially useful for grayscale content, as finding the optimal dithering matrix from the available palette is a straightforward exact operation, and the result can be placed in a LUT for real-time rendering.

In my opinion it looks much better than bayer or random dithering, especially on gradients.


I don't really understand how or why Bad Apple is becoming the de-facto graphics rendering "hello world" but it's fun to see in real time. I came across this demo which uses Bad Apple for demonstrating high FPS hypermedia:

https://data-star.dev/examples/bad_apple


2 reasons:

1. The creator is extremely cool about remixes and fanuse. In many ways touhou is the OG modern internet fandom in a way that previous ones weren't. Your bad apple video will not be taken down even though it has the same audio as all the others.

2. The shadow puppet format is recognizable at seemingly any resolution. I have seen examples in a 3x3 grid even. On top of that, it only has two colors (black/white, 1/0) so its dead simple to convert the video frames into any other format you can imagine with only a 'hello world' understanding of what you're doing.


> it only has two colors (black/white, 1/0)

As the article mentions, the source video is grayscale, not monochrome. Grays are used for motion blur, glow, gradients, etc.


> its dead simple to convert the video frames into any other format you can imagine

Maybe read the linked article about that. ;)


"It’s grayscale, not just black-and-white."

Just in case reading TFA is too daunting for those only reading comments


I was alluding to the difficulties of frame-rate conversion, dithering, and compression artifacts in the original source being amplified by the conversion. Grayscale by itself isn’t the issue.

But the person you replied to "it only has two colors (black/white, 1/0)" which is what I was referring

Yes, but I don’t think that black & white vs. grayscale makes a significant difference. Naively converting grayscale is virtually as “dead simple” as converting black & white.

You seem to be interpreting my reply as a challenge to your comment rather than taking as support to it. The original comment made an incorrect statement-as-fact with b&w 1/0, yet TFA clearly stated it was grayscale. Your comment challenged implying TFA was not read, so I just backstopped your comment.

Your comment implied that your citation makes reading the article unnecessary, in the context of my initial comment. Since your citation didn’t mention the difficulties I was alluding to, your comment seemed to be missing my point, and to those who didn’t read the article would give the wrong impression that my comment was about grayscale.

The DOOM standard is here: https://www.reddit.com/r/Doom/comments/1c0g0mi/i_made_doom_i...

built on a fully programmable cpu in redstone

IRIS Computer Specs:

- Custom 16 bit CPU

- 8 kB of RAM

- 64 kB of ROM

- 1 kB texture ROM

- 96x64 pixel screen - 16 colours

- Floating point unit (add sub mult div sqrt)

- 173 redstone tick clock

- No 3D graphics hardware acceleration (entirely done in software)

- Runs programs written in URCL

- Runs at 1 million ticks per second thanks to MCHPRS server - which is 5.8 kHz clock speed


One of less often mentioned characteristic trait of Touhou songs including original Bad Apple!![1] is that, at least to me, it more resembles a data bus status display than music; it makes a lot more sense to imagine it as listening to even bits of a 16-bit bus tied to instruments as MS-DOS boots, than music with regular tempo and musical measures. That's to be expected as these songs were created for hardcore PC-88/PC-98 shooter games by the developer of Touhou games all by himself without formal education in musical theory. I think that makes it rather familiar to embedded hardware engineers than most other music.

Another factor is nicovideo.jp / nico-tech community developed from 2ch/futaba culture. Lots of users with way more domain expertise than pay or financial ambitions threw in their skills into remixes for fun(many were STEM students back then). Unidentified FPGA wizards, motor driver experts, video editors, would just come by and drop psychedelic videos. It was absurd. So absurd that Maker Faire Tokyo once put suspected nico-tech dress-shirts into a quarantine zone in a separate venue to save face for ambitious t-shirt webdevs(that was naughty, and lead to creation of nico-tech meetups, and also was never repeated). That absurd content quality-quantity density sure had created inertia for Bad Apple!! PVs.

Undoubtedly one last key element was that the PV was monochromatic(okay, grayscale). That's probably why it wasn't one of other ones from the golden age of nicovideo.jp.

1: https://www.youtube.com/watch?v=Yw5HTeT_dis


That the video is entirely monochrome while also extremely fluid and intricate makes for an interesting duality when applying it to a technical problem, and that it's also a very pleasing and impressive work of art in of itself, I would think gives it many of the qualities that demosceners in particular appreciate.

There are other options. Early work with circuits controlling lights in Factorio :https://youtu.be/Kry8lbrHjeY and with doing sound https://youtu.be/b_FumvuFRXA

A different video clip with color https://youtu.be/mgfwwqwxdxY


I think it's simply that it's (mostly) black and white.

Off topic, Youtube embed gives me:

> Sign in to confirm that you're not a bot

While viewing in safari mobile private mode. Same if I navigate to the youtube page. This is new for me.

Switching to a different browser (firefox focus) makes that disappear, I can play the video without signing in.


"Bad Apple on all the things!" is one of my favorite geek trends. I remember the first time I saw it on the Genesis/Mega Drive I was astounded that such a thing was possible on such weak hardware.

I love seeing the new ports that people make for underpowered stuff. I'm afraid that I'm not smart enough with low-level programming to ever do one myself, but I have a lot of respect for people that can.


>This recursion ends when Minecraft hits a hard limit, which by luck results in a yellow block being spawned instead of a red one.

This reminds me of the old update suppression glitch (https://mcdf.wiki.gg/wiki/Java_Edition:Update_Suppression), or the trickier population suppression (https://mcdf.wiki.gg/wiki/Java_Edition:Population_Suppressio...) which can leave the game engine in a glitched state where blocks fall instantly.


> it’s even worse: redstone dust is, like, the only component that doesn’t introduce tick delays, but it’s very laggy, because no one at Mojang seems to know graph algorithms.

It's gotten much less laggy since the post OP linked to for info was posted, with many improvements in the last 3 years including one very recently. Mojang gets a lot of hate from every direction. It took them so long to make Redstone less laggy because every time they touch Redstone in any way, the community screams at them and any time they do anything other than introduce brand new features the community screams at them so it just wasn't worth it. Getting mad on the Internet and saying they don't know graph algorithms isn't helpful. Mojang has repeatedly hired some of the best and brightest minds in the Minecraft community to work for them (e.g. Panda4994, Kingbdogz, Gnembon) so they do have the technical expertise to do anything they want. What they don't have is infinite time/budget and it turns out that working on a 15 year old Java codebase and a massive multiplatform C++ app at the same time and trying to keep them in sync is really damn hard so can we please give them grace? I'm just tired of so much hate from every direction every second of the day. Can we please just say that Minecraft is awesome? Thanks


Statements like that pop up in quite a lot of programming blogs like these, they used to annoy me more until you realise it's less gloating and more naivety from the 16-21 age bracket with less "professional" experience.

Why? It is in their power to rewrite the engine (in rust) and make it everything they want.

It's not like they care about cross version compatibility or something.


Sure they do. There are people who have taken worlds from 10 years ago and brought them all the way to the latest Minecraft release, and breaking changes are done very carefully. The only two substantial nerfs that I can remember are zero-tick farms and fishing farms.

Kind of amusing how much effort this puts on the actual video itself. When I’m done with implementing a Bad Apple I’m usually too tired to think about dithering or frame rate Instead I just run it though ffmpeg and call it a day.

> And… that’s it? Looking back, the result looks almost trivial to achieve, which raises the question of why no one has done it before.

Umm, wow. I do not share that reaction to the work. This is an awesome dev log and closet lesson in splitting up what seems like an insurmountable task into nearly-impossible-but-doable chunks. Love it.

For reference, this renders Bad Apple at 20fps in vanilla minecraft, with only a custom texture and some custom object definitions changed to allow more textures. The rest is (very exotic) vanilla.


I'm mostly impressed with the display of knowledge visible in rejected solutions.

ACHIEVEMENT UNLOCKED: "Get'r Done" -- The ability to interate and solve individual hurdles and issues within the constraints of a system to achieve a grand idea.

I haven't been addicted to Minecraft / building serious redstone stuff since high school. Now I just play a few times a month with some friends when the craving randomly comes back to just build and explore. Looking at the redstone landscape now it has completely changed and it's unrecognizable to me - I wonder if that's how I'll feel as I slowly become a senior software engineer, years pass by and I look at stacks I haven't touched professionally in years and wonder in awe just how rapidly things change in tech and what new things people are creating with it.

> Looking back, the result looks almost trivial to achieve

I wish the author was a bit more gentle on herself! What a ride.


That feeling seems common in hindsight. Everything seems easier, once all the problems have been solved. Related, I enjoy the author's sense of humor:

> I made a prototype and, lo and behold, it was in fact slow, as predicted. (I’m smart.)

And in another article[0], describing an inefficient collision algorithm:

> Mojang’s decision never crossed my mind. I guess I’m not a real programmer.

[0]: https://purplesyringa.moe/blog/ru/minecraft-compares-arrays-...


Also check out Bad Apple but it's a Minecraft world: https://www.youtube.com/watch?v=RN3QW9SVnds

Bad Apple played on Minecraft sheep: https://www.youtube.com/watch?v=tO6sfku_1b8

This is literally in the post

It's amazing how much staying power Touhou has had in internet culture.

> Resource packs can change the music played by discs. The duration of the music disc stays fixed even if the audio is replaced

You can change the music disc duration with data packs since Minecraft: Java Edition 1.21, you can even add new music discs definitions without replacing any of the vanilla music discs.

I know that one of the rules was "no data packs", but hey, it is a cool thing if someone doesn't know about it. (also, in my opinion this wouldn't break the "no data packs" rule, because the "no data packs" rule seems mostly related to not using data packs to set blocks in the world)


This boggles my mind that something like this is even possible in Minecraft.

I build redstone dust contraptions with my 4 year old and it blows my mechanical engineer father’s mind but this kind of animation is just another plane of reality to me.


I learned most of what I know about computer architecture from Minecraft CPUS. It's great to see this is still around for younger generations.

Prior art is missing the one I worked on, using Sheep and Bukkit plugin, although that might be considered out of scope since it's not entirely in-game.

In any case this is great work! I find it hard to imagine anyone improving on it.


Now I want to see this in Factorio...

Off topic: I was excited to see the demo video, but when I pressed play YouTube accused me of being a bot and refused to play. Apparently it protects their community. There are some privacy respecting alternatives, it might be good to see those gain traction. I'm going to try to do so myself, if i ever make or post a video!

A woman did this, a rare sight in the hacker community. That's so cool!

She is transfem though, which is not that rare in hacker community.

I'm more impressed she's 19 years old. We truly have a new generation of some awesome people.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: