1. 61
  1.  

  2. 18

    An acompanying blog post[1] from Terry Cavanagh, the game’s creator, contains some additional information on the source release as well as a bit of a code-post-mortem. I think it’s worth noting that the VVVVVV code is pretty horrendous (Cavanagh even admits so), yet the VVVVVV product is a best selling and well loved indie title. It shows that code quality is not equivalent to product quality.

    [1]: http://distractionware.com/blog/2020/01/vvvvvv-is-now-open-source/

    1. 5

      code quality is not equivalent to product quality

      … for one indie game. True enough, but I would be cautious about extrapolating from this.

      1. 3

        Games are somewhat different to most other software in that they are art, not tools. A quirk or oddity is far more tolerable in a piece of art than in a tool that one potentially has to use for hours every day.

        1. 2

          Has there ever been a widely-used consumer product that has had great code quality? Like xmonad is cool but it isn’t exactly widely used.

          1. 2

            I don’t know of you consider database systems widely used, but SQLite is kind of well-known for their extremely extensive testing, and SQLite is very widely used, but most likely not that known to the ordinary consumer of the products that it’s used in.

            1. 2

              Infrastructure typically requires a higher baseline level of quality versus user facing code. Conversely, it is one step removed from revenue, thus it tends to be under appreciated and under funded relative to its importance.

              Choose your poison. The amount of value generated by SQLite is likely in the billions, thanks in no small part to the quality of engineering that went into it.

          2. 1

            Agreed. I might even say that poor code quality is correlated with high-quality games, but that doesn’t mean the relationship is causative. Many brilliant video games are made by creatives who don’t care so much for developing their programming skill. That doesn’t mean that high-quality, maintainable code is a bad idea.

            1. 1

              There was some other obscure indie title called “Minecraft” that was supposed to have very terrible code. Microsoft bought it for more than 2 billion dollars.

              It might happen more than you think with video games, as opposed to other kinds of software.

            2. 4

              It shows that code quality is not equivalent to product quality.

              Games are different from many other pieces of software in that you can create it once, and then never (or rarely) have to update it, especially for smaller games. A lot of the problems with “poor quality code” is that it becomes hard to update code, not that the original code doesn’t work.

              Quoting from the article:

              Looking back through it myself all these years later, I find it really funny how much of it is basically just the same parts copy and pasted over and over, with the values changed. This basically makes it impossible to read and maintain ten years later, but back when I was in the thick of it, it made it really fast to iterate and add new things

              1. 1

                Yeah, the most succinct summary I’ve heard was “VVVVVV’s code can afford to be bad because it was made in 7 months with not much plans for large scale post-launch support”

                1. 5
                  1. 3

                    Lol he forgot case 6:

                            case 5:
                                //Demo over
                                advancetext = true;
                                hascontrol = false;
                                state = 6;
                                break;
                            case 7:
                    

                    Seriously though I can’t imagine writing 4099 cases.

                    1. 2

                      It skips tons of numbers all over the place. E.g, goes from 2514 to 3000. Seems like much of it was intentional? Either way, there are way fewer than 4099 cases.. not that that makes it much better :).

                    2. 3

                      If that’s not “Doing Things The Hard Way”, I don’t know what is :-)

                      1. 3

                        Haha, reminds me of the thousand case switch statement in Undertale’s source. Game code really can be scary – it’s seems like that’s especially true for 2D games for some reason…

                    3. 5

                      Just keep in mind it’s not Open Source as per OSI definition. It also isn’t free software as per GNU’s.

                      1. 2

                        It’s sort of complicated… the source code seems to be under some mashup of Zlib and CC BY-NC 3.0 (https://creativecommons.org/licenses/by-nc/3.0/)… so it’s zlib with the restriction that you cannot release the source code for commercial purposes. This does mean it doesn’t line up with the definitions as you mentioned and really shouldn’t be used in code you plan on shipping. I’m not meaning to contradict you, I was just curious about where the clauses came from.

                        However, it’s worth noting that this was released during AGDQ and allows speedrunners to get a closer look at the actual code, potentially to exploit this. I assume that was the intent of this licence.

                      2. 2

                        This is such a good game <3