[HN Gopher] "Bad Apple" in Minecraft
       ___________________________________________________________________
        
       "Bad Apple" in Minecraft
        
       Author : purplesyringa
       Score  : 339 points
       Date   : 2024-10-10 13:02 UTC (2 days ago)
        
 (HTM) web link (purplesyringa.moe)
 (TXT) w3m dump (purplesyringa.moe)
        
       | pzmarzly wrote:
       | 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
        
         | tmtvl wrote:
         | 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.
        
         | pxc wrote:
         | > 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
        
       | ConcernedCoder wrote:
       | 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.
        
       | SCUSKU wrote:
       | 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
        
         | nomel wrote:
         | I think it's simply that it's (mostly) black and white.
        
         | jabroni_salad wrote:
         | 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.
        
           | layer8 wrote:
           | > its dead simple to convert the video frames into any other
           | format you can imagine
           | 
           | Maybe read the linked article about that. ;)
        
             | dylan604 wrote:
             | "It's grayscale, not just black-and-white."
             | 
             | Just in case reading TFA is too daunting for those only
             | reading comments
        
               | layer8 wrote:
               | 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.
        
               | dylan604 wrote:
               | But the person you replied to "it only has two colors
               | (black/white, 1/0)" which is what I was referring
        
               | layer8 wrote:
               | 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.
        
               | dylan604 wrote:
               | 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.
        
               | layer8 wrote:
               | 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.
        
           | munchler wrote:
           | > 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.
        
         | dokyun wrote:
         | 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.
        
         | verdverm wrote:
         | 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
        
         | numpad0 wrote:
         | 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
        
         | shagie wrote:
         | 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
        
         | jasonjayr wrote:
         | https://www.pouet.net/prod.php?which=63591
         | 
         | 8088 Domination used an awful lot of technical tricks to show
         | Bad Apple, Full frame rate, Full screen on a real 8088 Intel
         | Processor, back in 2014. As far as I know, that was the first,
         | most recognized use of Bad Apple as a "demo benchmark" along
         | side Doom as attempting to display it on as much hardware as
         | possible.
        
       | vessenes wrote:
       | > 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.
        
         | scotty79 wrote:
         | I'm mostly impressed with the display of knowledge visible in
         | rejected solutions.
        
       | MrPowerGamerBR wrote:
       | > 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)
        
       | floydnoel wrote:
       | 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!
        
       | tombert wrote:
       | "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.
        
       | pkilgore wrote:
       | > Looking back, the result looks almost trivial to achieve
       | 
       | I wish the author was a bit more gentle on herself! What a ride.
        
         | thaliaarchi wrote:
         | 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-...
        
       | treyd wrote:
       | 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.
        
       | menx wrote:
       | Also check out Bad Apple but it's a Minecraft world:
       | https://www.youtube.com/watch?v=RN3QW9SVnds
        
         | sylfn wrote:
         | This is literally in the post
        
         | NooneAtAll3 wrote:
         | Bad Apple played on Minecraft sheep:
         | https://www.youtube.com/watch?v=tO6sfku_1b8
        
       | saagarjha wrote:
       | 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.
        
       | saintradon wrote:
       | 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.
        
       | 63 wrote:
       | > 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
        
         | xnickb wrote:
         | 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.
        
           | bonzini wrote:
           | 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.
        
         | sdflhasjd wrote:
         | 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.
        
       | throwaway918299 wrote:
       | 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.
        
       | trollied wrote:
       | Now I want to see this in Factorio...
        
       | thih9 wrote:
       | 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.
        
       | efilife wrote:
       | A woman did this, a rare sight in the hacker community. That's so
       | cool!
        
         | scotty79 wrote:
         | I'm more impressed she's 19 years old. We truly have a new
         | generation of some awesome people.
        
         | kamma wrote:
         | She is transfem though, which is not that rare in hacker
         | community.
        
           | efilife wrote:
           | Does it matter? You said that like she's not a woman
        
       | nyanpasu64 wrote:
       | >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.
        
       | kmacdough wrote:
       | 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.
        
       | packetlost wrote:
       | It's amazing how much staying power Touhou has had in internet
       | culture.
        
       | fayalalebrun wrote:
       | 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.
        
       ___________________________________________________________________
       (page generated 2024-10-12 23:00 UTC)