You can play it in your browser here.

  • mPony@lemmy.world
    link
    fedilink
    English
    arrow-up
    100
    arrow-down
    4
    ·
    7 months ago

    On another forum, I was complaining about how Microsoft was planning to remove WordPad from Win11. I was advised that installing OpenOffice or LibreOffice was an appropriate replacement. I replied that WordPad was only 3 megs large, as opposed to the recommended replacements, which are decidedly larger.

    I guess not everybody appreciates tight code, but I surely do. Things like this are amazingly impressive.

    • MazonnaCara89@lemmy.ml
      link
      fedilink
      English
      arrow-up
      43
      ·
      7 months ago

      Anyway don’t install OpenOffice for any reason, just pick libreoffice or onlyoffice. OpenOffice doesn’t get a functional/security/compatibility update since 2014.

    • Dark Arc@social.packetloss.gg
      link
      fedilink
      English
      arrow-up
      32
      arrow-down
      11
      ·
      7 months ago

      I don’t particularly care about code size as a user or as a programmer.

      Hard drive space is the cheapest thing you’ve got on a computer.

      You could always run gentoo and use -Os … that can make things a lot smaller but also slower.

      • I Cast Fist@programming.dev
        link
        fedilink
        English
        arrow-up
        28
        arrow-down
        4
        ·
        7 months ago

        Hard drive space is the cheapest thing you’ve got on a computer.

        I hate this “storage is cheap” mentality, it’s a cop out for being wasteful without a reason. “Gas is cheap” was common up to the early 1970s, until it wasn’t anymore. “Freshwater is cheap”, until it isn’t anymore.

        • Blackmist@feddit.uk
          link
          fedilink
          English
          arrow-up
          2
          arrow-down
          1
          ·
          7 months ago

          Resources are cheap and getting cheaper all the time.

          Developers are expensive and getting more expensive all the time.

          It’s no wonder everything is a sprawling mess.

        • frezik@midwest.social
          link
          fedilink
          English
          arrow-up
          10
          arrow-down
          12
          ·
          edit-2
          7 months ago

          Are you willing to give up 1080p screens and 16-bit/44.1kHz sampled music? Or how about languages that can’t be represented in ASCII, much less Latin-1? Because handling those take up way more space than code.

          • I Cast Fist@programming.dev
            link
            fedilink
            English
            arrow-up
            14
            ·
            7 months ago

            Let me quote myself:

            I hate this “storage is cheap” mentality, it’s a cop out for being wasteful without a reason.

            • frezik@midwest.social
              link
              fedilink
              English
              arrow-up
              10
              arrow-down
              6
              ·
              edit-2
              7 months ago

              And there’s almost always a reason. Code size tends to be modest compared to supporting data around it.

              • I Cast Fist@programming.dev
                link
                fedilink
                English
                arrow-up
                11
                arrow-down
                1
                ·
                7 months ago

                I see you’ve never dealt with a real life project that requires god knows how many different libraries off nodejs because 🤷‍♂️

                Dependency hell takes a lot of space.

                • frezik@midwest.social
                  link
                  fedilink
                  English
                  arrow-up
                  7
                  arrow-down
                  1
                  ·
                  edit-2
                  7 months ago

                  I have. Still small compared to the images and such that are used in a user facing application.

                  Edit: just to bring in real numbers, I have an old TypeScript project that results in a 109M node_modules dir. Which I agree is absurd. I also have an old anime video, 21 minutes long, at only 560x432 resolution, 24fps, which takes 171M. And that’s my point: even in really bad cases, code size tends to be swamped out by everything else in user-facing applications. If there’s any kind of images, music, or video, the code size will be a small part of the complete picture.

          • Flipper@feddit.de
            link
            fedilink
            English
            arrow-up
            9
            ·
            7 months ago

            I’d rather have the audio compressed and decompress in realtime instead of a game taking 100Gb in size. Or maybe give me the option to only download languages I can use.

            • frezik@midwest.social
              link
              fedilink
              English
              arrow-up
              3
              ·
              7 months ago

              It’s almost always compressed in some way. Still takes up a lot of space. You can fit a lot of compiled code in the space of a 1 minute, 128kbps mp3.

          • abbotsbury@lemmy.world
            link
            fedilink
            English
            arrow-up
            6
            ·
            7 months ago

            You present a false dichotomy. Yes, things like uncompressed audio and HD video take up more storage space, but that does not negate that modern commercial software is very inefficient with how it uses resources. You could improve the efficiency of the system while keeping HD video, it is not a mutually exclusive choice.

            For example, booting up Windows and doing nothing takes up 4gb of RAM, while doing the same with a lean Linux installation would take up a quarter of that, despite both operating systems having identical functionality (run web browser, open applications, edit documents, play games, etc).

            • frezik@midwest.social
              link
              fedilink
              English
              arrow-up
              3
              ·
              7 months ago

              Does Windows booting take up that much space because of code, or because of data that code is loading?

            • ඞmir@lemmy.ml
              link
              fedilink
              English
              arrow-up
              2
              ·
              7 months ago

              Windows takes a percentage of your available RAM, you can boot it on 4GB RAM and it will use 1GB of so

              • abbotsbury@lemmy.world
                link
                fedilink
                English
                arrow-up
                2
                ·
                7 months ago

                Sure, and there are some performance gains to be made from it I’m sure, but when my OS is doing that and my web browser is doing that and my browser based chat client and my browser based text editor are all doing that, it gets pretty sluggish.

                This is why Linux is a godsend for older machines, even running the exact same applications (Firefox, Discord, and vscode) on the exact same hardware, it still feels more responsive on Linux because there is less overhead from the OS itself.

        • Dark Arc@social.packetloss.gg
          link
          fedilink
          English
          arrow-up
          2
          arrow-down
          10
          ·
          edit-2
          7 months ago

          It’s an invented problem. A program takes what a program takes. Everyone cares way more about the code being legible, the code being fast enough, and the code not using a ton of memory (and even that last one is kind of shrugged off depending on context).

          Applications taking 3mb take 3mb because they do next to nothing or they do it with a bunch of shared libraries … which is a whole other dependency management mess and wasting a few mb on a drive.

          There’s also a huge difference between being wasteful of something that pollutes the planet in mass and is not renewable like gasoline (which is the only reason you’d be upset about that now) and wasting a few mb on a drive.

          The equivalent of your complaint 3mb vs 200mb is like complaining about a person taking a trip to the grocery store… It’s insignificant and often necessary.

          You can say that program does way more than you need, but … nobody is catering to “only what you specifically need” and using the larger program almost certainly covers your needs.

          Furthermore, like I already said making things smaller often makes them slower… Since CPU is more expensive to improve, of course things are bigger, that’s what more people care about. Some video games take that to an extreme with uncompressed files and 250GB install footprints … but 200mb?

          • I Cast Fist@programming.dev
            link
            fedilink
            English
            arrow-up
            8
            arrow-down
            2
            ·
            7 months ago

            Everyone cares way more about the code being legible, the code being fast enough, and the code not using a ton of memory (and even that last one is kind of shrugged off depending on context).

            And then you look at real life and notice that code everywhere is slow, bloated and inefficient. But hey, it’s “legible”! To one or two devs, hopefully.

            The equivalent of your complaint 3mb vs 200mb is like complaining about a person taking a trip to the grocery store

            Terrible analogy. A better equivalent is someone renting a garage to store stuff inside and now, because they have so much space, there’s that urge to fill it, whether it makes sense to or not.

            making things smaller often makes them slower

            It’s usually the other way around. As a rule of thumb, less code = smaller size = faster execution. In theory, 1k lines of code will require less computation, less processing, than 10k.

            • Dark Arc@social.packetloss.gg
              link
              fedilink
              English
              arrow-up
              3
              arrow-down
              2
              ·
              edit-2
              7 months ago

              And then you look at real life and notice that code everywhere is slow, bloated and inefficient.

              That’s not true in practice. I mean, that code does exist. However, the vast majority of code is reasonably performant.

              Not everyone is an expert at optimization and that’s fine … we’d have a lot less software in general if only the best of the best were allowed to author it.

              It would be great if more things went back to native (or at least not “I need an entire web browser for my app to function”) that to me is wasteful… But a few hundred MBs for a program as large, complicated, and feature rich as LibreOffice is not.

              Terrible analogy. A better equivalent is someone renting a garage to store stuff inside and now, because they have so much space, there’s that urge to fill it, whether it makes sense to or not.

              No, that’s … just wrong. It’s not like people are just writing code and leaving it there to do nothing except increase code size or are actively trying to fill the drive.

              It’s usually the other way around. As a rule of thumb, less code = smaller size = faster execution. In theory, 1k lines of code will require less computation, less processing, than 10k.

              That’s not inherently true, though it is a common misconception/oversimplification. When you do things like code inlining, you increase code size (because you’re taking that functions code and having your compiler copy it around to a bunch of places) but the increased locality speeds things up. There’s a reason -Os and -O3 are not the same option.

              Now sure, if you execute fewer instructions that’s better than executing more localized code (though even that can be wrong given process cache and relative instruction speed). Lots of programs have added features that you might not use, but that doesn’t really “hurt you”, that’s not the source of your program or your computer’s slowness, it’s just some bytes on the drive.

              We’re a long way from the Unix style “everything is a small program that gets piped into other programs to do interesting things” days. That paradigm just doesn’t work for GUI software. Nobody does that because … normal folks would rather have one office program than have to go shop for 275 programs so that they can have separate programs to edit the document, print the document, convert the document to pdf, update calculations in their spreadsheet, run macros, etc (which if you use all/most of them would likely be more expensive in terms of disk space anyways).

      • lolcatnip@reddthat.com
        link
        fedilink
        English
        arrow-up
        5
        ·
        edit-2
        7 months ago

        Sometimes a program is slow to start up because it’s so boated that just loading it from the disk takes multiple seconds. Wasting a few kB doesn’t hurt anything, but if you’re doing it thousands of times in one program, your users are gonna have a bad time.

      • MonkderDritte@feddit.de
        link
        fedilink
        English
        arrow-up
        8
        arrow-down
        7
        ·
        edit-2
        7 months ago

        What was it again, 1 critical bug every 1000 loc?

        That’s why, code as much as needed but as less as possible.

        Of course not measured in KB, because readable code takes a bit more space than clever hacks.

        • frezik@midwest.social
          link
          fedilink
          English
          arrow-up
          3
          ·
          7 months ago

          Code is rarely the biggest thing in these programs. You want textures that don’t look stretched and pixelated at 4K? That’s going to cost you.

          Look in any game directory. There’s probably a one big file–sometimes a few big ones–in there that you can rename to .zip and unpack it as one. It will dump all the textures/sound effects/etc. in the game, but have zero code. It will be something like 70-90% of the game’s entire space.

          • MonkderDritte@feddit.de
            link
            fedilink
            English
            arrow-up
            1
            ·
            7 months ago

            I agree and disagree.

            Yes, in Games. There, the longer the more, duplicated assets too (like, all the data in every level package, even though every level only needs 10% of the data). Because user storage is cheaper than optimization.
            Sometimes in tools too, often crappy tools with abundance of animations. But usually it’s cheaply made software in a framework dragging lots of boilerplate with it. There it’s loc again.

            No, not in office suites and Wordpad.

            Btw, why is vector graphics so rarely used for simple icons?

    • IllNess@infosec.pub
      link
      fedilink
      English
      arrow-up
      7
      ·
      7 months ago

      I just looked at how big LibreOffice Writer is, 210 MB as a portable app… Wow…

      AbiWord Portable is probably the smallest and even that is 15 MB installed…

    • imecth@fedia.io
      link
      fedilink
      arrow-up
      8
      arrow-down
      19
      ·
      7 months ago

      Size doesn’t matter much when you have SSDs that read upwards of 5000mb/s. It’s why we’re seeing an advent of web-based apps despite them being woefully inefficient, and why games regularly go above 100gb. The reason file size gets so large is that assets can take up a lot of space and they come with plenty of libraries that they just have to bundle. These “small size” software optimize for size at other costs, like speed, asset quality, development time… Reducing file size is just not relevant anymore and if anything you should be wary of software that do it.

      • mPony@lemmy.world
        link
        fedilink
        English
        arrow-up
        19
        arrow-down
        2
        ·
        7 months ago

        yeah, you know what?.. no. This is the kind of attitude that got us here to begin with. Yes, processers get faster, and yes size gets more available. But that shouldn’t be an excuse for poorly-written code.
        An empty Microsoft Word document is larger than the first word processing program I ever used. That is just crazy when you think about it. but “oh people have lots of resources they’re not even using so it doesn’t matter”, right? When companies have this attitude of “oh the resources are there I may as well use all of them for myself” then their code runs like garbage and you need a faster computer just to make it work halfways decently. And because of this we all end up on this goddamned technology treadmill where we have to keep buying bigger and faster and more expensive computers to do the same thing the old computers did just because the programs written for it are too bloated and the people writing the code couldn’t be arsed to make it work well. It wastes our time and our money. I reject that. I think others should too.

        • imecth@fedia.io
          link
          fedilink
          arrow-up
          11
          arrow-down
          1
          ·
          edit-2
          7 months ago

          poorly written code and tight code

          This is where you guys lose me, it’s just code that not optimized for size and that’s because most people don’t give a shit about that. People want want their 4k assets, their localization, their accessibility features, their application to run on any device… All this comes at a cost. You want to change things, that’s fine, but start by understanding why things are the way they are because shitting on developers won’t get you anywhere.

        • frezik@midwest.social
          link
          fedilink
          English
          arrow-up
          5
          ·
          edit-2
          7 months ago

          If you’re old enough, then the first word processing program you ever used was probably on a screen 640x480 pixels or smaller, didn’t support internationalization, couldn’t provide true WYSIWYG to match output between the screen and a printer, and couldn’t render fonts with anti-aliasing. Which of these features would you like to drop to reduce the size?

          Everyone loves “tight” programs until they realize what they have to give up to make it work.

          • ඞmir@lemmy.ml
            link
            fedilink
            English
            arrow-up
            1
            ·
            7 months ago

            Fonts can be handled by Windows itself.

            I don’t care about internationalization, just EN-US is good enough.

            Having more pixels doesn’t change asset sizes when the pixels used per asset are the same. Just show me the smaller button or use vector graphics.

    • confusedpuppy@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      23
      ·
      7 months ago

      A long time ago I came across a game that was part of a 1mb challenge. It’s called A New Zero. I played it quite a lot, just flying around and dive bombing boats was entertaining enough for me.

      I was impressed with 1mb but 13kb and 96kb is pretty amazing. I really enjoy seeing stuff like this.

      • Gamers_Mate@kbin.run
        link
        fedilink
        arrow-up
        5
        ·
        7 months ago

        Nice I have been thinking about doing a either an 8mb or 5mb gamejam challenge but I wasn’t sure if 5mb would be to low but if there are 1mb challenges I guess it does not seem to impractical. Also I am going to test that game out in wine it looks interesting.

    • dustyData@lemmy.world
      link
      fedilink
      English
      arrow-up
      17
      ·
      7 months ago

      kkreiger is more impressive to me, because it creates itself on execution time. While this 13kB game is willfully ignoring the fact that the average web browser today is already a 2GB behemoth. While kkeiger is pure C++ and it does the whole thing, including the game engine and sound processor and everything else.

      • Altima NEO@lemmy.zip
        link
        fedilink
        English
        arrow-up
        4
        ·
        edit-2
        7 months ago

        Is definitely not pure c++. It’s making use of direct x and even fonts available in Windows to create textures.

        • ඞmir@lemmy.ml
          link
          fedilink
          English
          arrow-up
          1
          ·
          7 months ago

          Without DirectX or OpenGL you’d have to create a GPU driver or do CPU rendering…

    • mPony@lemmy.world
      link
      fedilink
      English
      arrow-up
      15
      ·
      7 months ago

      kKrieger was always kind of amazing to see. Even understanding a little bit about how the game works, it’s still kind of mind-boggling

    • Corkyskog
      link
      fedilink
      English
      arrow-up
      13
      ·
      edit-2
      7 months ago

      This is crazy!

      I have so many questions, but lack the technical know how of how to ask them.

      • Coasting0942@reddthat.com
        link
        fedilink
        English
        arrow-up
        38
        ·
        7 months ago

        Instead of actually storing images, sound files, maps, etc, whole program relies on algorithms computed at runtime. Level generated automatically, sound follows a set math pattern with randomization, etc etc

        Benefits of less file size but more processor requirements

        • wagesj45@kbin.run
          link
          fedilink
          arrow-up
          8
          ·
          7 months ago

          Oh yeah. I can remember back in the day it could take quite a bit to compile and start these things, especially if you were running at higher resolution and detail values.

    • mindbleach
      link
      fedilink
      English
      arrow-up
      2
      ·
      7 months ago

      Fun fact: the Up button doesn’t work in the menu, because Farb-Rausch were scrambling to get below 96 KB. They made a tool that noted which bytes were read during a playthrough and just zeroed anything that did not get referenced. This improved compression enough to squeak under that round-ish number. But whoever did the final playthrough only went down the menu before starting the game.

  • dohpaz42@lemmy.world
    link
    fedilink
    English
    arrow-up
    21
    arrow-down
    1
    ·
    7 months ago

    How much of that is third-party libraries, and/or third-party hosted? Obviously the assets (images and music) aren’t being counted.

    • cley_faye@lemmy.world
      link
      fedilink
      English
      arrow-up
      40
      ·
      7 months ago

      The whole page transferred about 7kB and shows 18.2kB of ressources according to the debug tools.

    • uranibaba@lemmy.world
      link
      fedilink
      English
      arrow-up
      29
      ·
      7 months ago

      The game also requires a renderer (browser) to play.

      I think what they did is impressive but the claim about the size feels like taking source code and saying “look how small on disk it is”

  • Teknikal@lemm.ee
    link
    fedilink
    English
    arrow-up
    9
    ·
    7 months ago

    And I was blown away the ps1 game Vagrant Story turned Into 90mb file as a chd.

    That said one of the games I enjoyed most even when I had an Amiga was a 48k ZX Spectrum game called Chaos.

  • mindbleach
    link
    fedilink
    English
    arrow-up
    4
    ·
    7 months ago

    To everyone scoffing: welcome to sizecoding! Yes, they really fit the textures and models and music in that limit. No, we don’t care what the browser or hardware does for free. If you want tighter technical limits, contests go as low as you can imagine.

    Here’s a 256-byte raymarching demo for MS-DOS.

    Here’s an MS-DOS clone of Descent, in 4 KB.

    Images are procedurally generated. It doesn’t mean random; it means rules were followed. Music is generally MIDI-ish, with a synthesizer also built into the code. Instrument samples can also be procedurally generated, and effects like echo and stretching are commonplace. Models in this game are… well you can see why they don’t take much space. But other projects get smooth and detailed objects using tesselation (remember that from 2007?), constructive solid geometry (cube with cylinder cut out), or signed distance fields (you are on your own).

    The most useful tool is cheating your ass off. This game does not have doors. Everything’s rectilinear. But it’s based on levels you already recognize, so your brain hand-waves the missing parts and focuses on what looks like you expect. Contrast it with that Descent demo, which is dead-on. Seriously, that thing is from 1997, and they even nailed the sparkles in the healing chamber. If a bare Pentium with VGA isn’t bare-metal enough for you, I’ll try to find something tiny and mindblowing on ZX Spectrum, which had to be coerced into doing any damn thing.

  • Lodra@programming.dev
    link
    fedilink
    English
    arrow-up
    21
    arrow-down
    32
    ·
    edit-2
    7 months ago

    Ok that is an impressive number but it feels a little disingenuous. You still need to something on your machine to interpret the js code, right? Is that included in the 13k? How much storage does that take?

    EDIT: Well this is by far my most negative comment here. That’s almost entertaining. I’ll share a few more of my thoughts here rather than respond to individual comments. Maybe the context will make this more palatable.

    First, I expect that the js language is doing most of the work here. Which makes sense. But having a browser installed as a prerequisite is an enormous dependency.

    How would that stack up against other languages? Can I build a 13k binary using C? How about C#? I think Go is maybe the most interesting because the binary is entirely self contained by default. No external dependencies aside from the OS. I don’t think this or a similar game is viable with only 13k. Which is fine! I just that I find 13k is disingenuous.

    That brings up the question of whether or not we should include the OS in the storage size. I would think not. But that’s only because the OS is (usually) the least common denominator when we talk about developing software. It’s generally assumed by default. But if someone wants to compare with a game that interfaces with hardware directly, then yes, we should absolutely include the OS as a dependency.

    Now that I’m giving this more thought, I suspect that the devs wrote 13k of code + assets to make the game functional. Still impressive. But the more I think about this, the more meaningless that number gets. Does pre or post compiling matter more? What if we compress the thing as tarball? There’s just too many ways to manipulate this number.

    • Godort@lemm.ee
      link
      fedilink
      English
      arrow-up
      34
      ·
      7 months ago

      Should the machine’s operating system be calculated in the storage too?

          • Gamers_Mate@kbin.run
            link
            fedilink
            arrow-up
            3
            ·
            edit-2
            7 months ago

            Are games that boot from bios a real thing? would be interesting or an OS that has the exact dependencies to launch a single game aka minecraft launcher but from bios. Idk how practical that would be but its a cool concept.

              • Gamers_Mate@kbin.run
                link
                fedilink
                arrow-up
                3
                ·
                7 months ago

                Wow you did not disappoint. I think I will make a TIL post about playing doom from bios. I should probably get to that now before tomorrow or it wont count as a TIL.

                • bruhduh@lemmy.world
                  link
                  fedilink
                  English
                  arrow-up
                  2
                  ·
                  edit-2
                  7 months ago

                  There’s whole category of software that runs without OS, look up “bare metal”, for example you can run web server on raspberry pi pico and connect it to ps4 to have offline jailbreak capabilities, mind you, raspberry pi pico have 264kb of ram and 2mb of memory (up to 16mb) and dual core 133mhz cpu

      • just another dev@lemmy.my-box.dev
        link
        fedilink
        English
        arrow-up
        10
        arrow-down
        8
        ·
        7 months ago

        Sure, but important to put into perspective when you compare it to .kkrieger and other old school demos - the browser does a lot of heavy lifting here.

        Having said that, this is a majorly impressive feat. I love it that this is still a thing.

          • Saik0@lemmy.saik0.com
            link
            fedilink
            English
            arrow-up
            8
            ·
            7 months ago

            in the case of kkreiger, absolutely… Uninstall the wrong font in windows and you actually break kkreiger. So it’s not even fully self-contained and relies on static windows assets to function.

          • just another dev@lemmy.my-box.dev
            link
            fedilink
            English
            arrow-up
            1
            arrow-down
            1
            ·
            7 months ago

            No argument here, it clearly does. But I don’t know of any bootloader games that have a comparable level of features. I suppose with DOS games and demos the amount of native code vs OS libraries would be almost negligible as well.

    • I Cast Fist@programming.dev
      link
      fedilink
      English
      arrow-up
      6
      ·
      7 months ago

      Depending on how “pure” you want to get, you’d have to look into games that play from boot, so not unlike stuff you’d get from the SNES and older consoles.

      • Lodra@programming.dev
        link
        fedilink
        English
        arrow-up
        2
        ·
        7 months ago

        Thanks for pointing this out. I keep looking back at this thread as new people grow annoyed at my comments 🙂.

        At the time I writing this, there are currently 15 upvotes and 28 downvotes on my original comment. That’s clearly negative and that’s ok. But that also makes it the third most voted on and the 4th most upvoted comment in the entire post. Seems there’s a very split opinion in the community here. This is now officially entertaining!

      • Lodra@programming.dev
        link
        fedilink
        English
        arrow-up
        2
        arrow-down
        1
        ·
        7 months ago

        Thanks for the happy comment. But it’s all good. People are allowed to not like my comment. I’m not exactly swayed by the downvotes but maybe I could be just wrong here.