3 pontos por GN⁺ 2025-05-08 | 1 comentários | Compartilhar no WhatsApp
  • O código-fonte do jogo indie VVVVVV, de 2010, foi liberado; o jogo foi criado por Terry Cavanagh, com música de Magnus Pålsson
  • O código-fonte da versão para desktop está na pasta desktop_version do repositório
  • VVVVVV ainda é vendido comercialmente, mas builds para uso pessoal podem ser compilados livremente
  • Para distribuir uma versão compilada, é necessário verificar o LICENSE.md do repositório
  • Discussões sobre atualizações de VVVVVV acontecem principalmente no canal vvvvvv-code do VVVVVV Discord não oficial

Código-fonte liberado

  • Este repositório contém o código-fonte do jogo indie VVVVVV, de 2010, de Terry Cavanagh
  • O anúncio da liberação do código-fonte pode ser conferido no aviso do blog de Terry: announcement
  • O código-fonte da versão para desktop está na pasta desktop_version

Termos de uso e distribuição

  • VVVVVV ainda pode ser comprado comercialmente em thelettervsixtim.es
  • Para uso pessoal, é possível compilar o jogo por conta própria
  • Para distribuir uma versão compilada do jogo, é necessário verificar o LICENSE.md

Canal de discussão sobre atualizações

  • Discussões sobre atualizações de VVVVVV acontecem principalmente no VVVVVV Discord não oficial
  • O canal relacionado é vvvvvv-code

1 comentários

 
GN⁺ 2025-05-08
Opiniões no Hacker News
  • Perto do fim do ensino médio, quando fui a London com minha família, eu queria ser desenvolvedor de jogos e mandei um e-mail para Terry Cavanagh. Para minha surpresa, ele aceitou de bom grado almoçar comigo
    Ele foi muito gentil e me deu vários conselhos de vida. Lembro que ele disse que a maioria das ideias não vinha de uma visão grandiosa, mas de ficar mexendo e experimentando com mecânicas de jogo. Enfim, ele é uma pessoa incrível, e fico feliz que tenha aberto o código do VVVVVV, que ele chamava de V

    • A parte “a maioria das ideias vem de ficar mexendo e experimentando com mecânicas” é importante. Gente demais acha que ideias novas vêm apenas de conceitos abstratos, mas elas também podem surgir muito bem ao brincar com o próprio meio
    • Aprendi que duas frases são verdadeiras: se você não perguntar, nem pode levar um não, e “não conheça seus heróis” é uma ilusão
      É preciso conhecer algumas pessoas realmente ruins para reconhecer de verdade quem é gente boa
    • Que história legal. Fico curioso se esse encontro influenciou a escolha de carreira depois, se a pessoa acabou virando desenvolvedora de jogos, ou se ao menos tentou. É sempre divertido quando há um desfecho
    • Fico curioso para saber exatamente quais foram os conselhos de vida que ele deu
  • Um jogo muito divertido. Não sou de jogar muita coisa, mas lembro que comprei o Humble Bundle para conseguir esse jogo
    Foi um dos poucos jogos que joguei até o fim. Terry, obrigado pelo trabalho incrível e pelos bons momentos. Além disso, veni vidi vici era difícil para caramba e levei um tempão
    https://www.youtube.com/watch?v=4CtiY5D6HCs

    • Comprei o bundle e pensei: “vou jogar esse plataforma 2D levinho enquanto os jogos maiores e mais interessantes baixam”; no fim, passei a noite inteira nele
    • Esse vídeo não captura direito a experiência de mal conseguir passar por cada tela e ainda assim aterrissar à esquerda
    • Ele pediu desculpas, sim. Tinha uma tela dizendo “I’m sorry” :P
    • Se minha memória não falha, só consegui depois de algumas centenas de tentativas. De certa forma, isso me preparou com a paciência necessária para terminar a masmorra Pitioss de Final Fantasy XV
      Meu namorado na época foi quem me deu VVVVVV, e estava tentando fazer uma run sem mortes e com todos os trinkets. Eu não entendia como alguém podia ser tão bom em um jogo. E ainda escuto bastante a trilha sonora de VVVVVV, PPPPPP. Gosto especialmente das faixas de stream relacionadas no osu!
    • Comprei os primeiros Humble Bundles, e VVVVVV está encostado na minha biblioteca do Steam desde então. Acho que agora vou finalmente experimentar
  • Alguns posts relacionados. Fico curioso se há outros
    Is opening up your source code worth it? Terry Cavanagh thinks it was for VVVVVV - https://news.ycombinator.com/item?id=25727963 - janeiro de 2021
    Many games are held together by duct tape - https://news.ycombinator.com/item?id=22043156 - janeiro de 2020
    VVVVVV Source Code Released - https://news.ycombinator.com/item?id=22011465 - janeiro de 2020
    VVVVVV’s source code is now public, 10 year anniversary jam happening now - https://news.ycombinator.com/item?id=22011358 - janeiro de 2020
    VVVVVV 60% Off On The Mac App Store This Weekend - https://news.ycombinator.com/item?id=2347676 - março de 2011

  • No comentário de Graphics::print_level_creator(...), está escrito que eles exibem um rosto em vez de “by {author}”
    Os motivos eram que “by” poderia soar estranho por estar em um idioma diferente do do autor; em outros idiomas poderia ficar mais longo e quebrar o limite existente do nível; “by” e o nome do autor poderiam exigir fontes incompatíveis entre si; também evitaria problemas gramaticais como gênero e flexão de nomes; usar um rosto fazia sentido; e, se alguém ficasse triste com essa decisão, o rosto sorridente acabaria animando a pessoa de qualquer forma. Difícil rebater

  • No texto linkado no post, https://distractionware.com/blog/2020/01/vvvvvv-is-now-open-..., ele disse que há muitas partes estranhas na versão C++ que só fazem sentido ao lembrar que o jogo foi feito primeiro em Flash e depois portado manualmente, preservando até as falhas
    Por exemplo, ele tinha o hábito de declarar variáveis temporárias como i, j e k como membros de cada classe, em vez de declará-las dentro das funções, porque no Flash era incômodo declarar dentro de funções por motivos tediosos. Como resultado, surgiram bugs difíceis de rastrear; em especial no tratamento de colisões de entidades, várias funções compartilhavam a mesma variável i, o que podia até causar loops infinitos. Parece realmente ruim e confirma o preconceito de que código de jogos é uma bagunça

    • Para mim, pelo contrário, isso soa excelente e confirma minha suspeita de que programadores de jogos aprendem mais do que programadores comuns
    • Anotando antes que eu esqueça: código pode ser bagunçado e ainda assim divertido. É o caso em que bugs interessantes são criados e descobertos dentro de uma ideia nova
      Código pode ser excelente, mas chato. Algo como um app de calculadora bem escrito, mas com uma implementação sem graça. Código pode ser bagunçado e chato. Como um produto B2B mal projetado, com centenas de exceções e muitos bugs parecidos, mas diferentes, em cada uma delas. Código pode ser excelente e interessante. Coisas como Doom
    • As pessoas realmente fazem isso? De repente, ter que colocar this. antes de todos os membros em JavaScript parece muito menos irritante
  • Também quero mencionar Super Hexagon, do mesmo criador. É um jogo extremamente simples, mas muito divertido e viciante
    Lembro de ter lido em algum lugar que o criador levou mais ou menos só um dia para fazê-lo. E PPPPPP, a trilha sonora de VVVVVV, também é ótima

    • Falando em jogos do mesmo criador, Dicey Dungeons também é muito divertido. É parecido com um roguelike de deckbuilding, mas usa dados em vez de cartas
      Tem uns seis personagens únicos, vários desafios por personagem, e as regras mudam o tempo todo, fazendo você repensar o jogo. Também tem bastante humor, além de DLC gratuito e conteúdo de mods que ainda não experimentei
    • Eu não sabia que Super Hexagon era do mesmo desenvolvedor. Mesmo sendo um tipo de jogo completamente diferente de VVVVVV, era muito divertido
      É sempre interessante ver um desenvolvedor indie mudar para um gênero totalmente novo depois de um sucesso inicial, e algumas joias incríveis surgiram assim. Por exemplo, a trajetória Fallen London -> Sunless Sea -> Cultist Simulator
    • Não conheço nenhum método mais garantido para entrar em estado de fluxo do que jogar Super Hexagon por 10 minutos
    • Concordo com essa recomendação. É um jogo em que o processo de aprendizado é muito divertido
      No começo parece impossível, mas o cérebro se adapta. É como ver além da Matrix
    • Gastei uma quantidade realmente enorme de tempo da minha vida nesse jogo
      Também compartilhei com várias pessoas e deixei todo mundo maluco. Acredito que ainda devo ter umas 5 ou 6 cópias no inventário do Steam. Vai que precisa. O mesmo vale para V, SMB, Braid e muitos outros jogos. Às vezes, basta uma pequena inspiração e gráficos toscos
  • Houve uma época em que eu tinha acabado de me mudar do Canadá para a Califórnia e estava desesperado por trabalho, e consegui um emprego de vendas porta a porta na Comcast
    Eu odiava aquele trabalho, então muitas vezes ficava sentado no carro, fugindo das responsabilidades, jogando VVVVVV no celular. Graças ao Terry, eu conseguia respirar um pouco

  • Jogo incrível. Como era típico dos jogos indie daquela época, é ótimo ver que o código é realmente uma bagunça

    • “Realmente uma bagunça” é a expressão exata. Minha parte favorita é a função Game::updatestate() de 3300 linhas e o gigantesco switch
    • Ele foi escrito originalmente em Flash e depois portado para C++, então isso explica parte da bagunça. Mas não toda
    • Esse código é sinceramente inspirador. É uma lição de que idolatrar demais a qualidade do código nem sempre é o melhor caminho
    • Não há nada de errado com esse código. Isso se chama desenrolamento de loop e ajuda a manter o desempenho do jogo
  • Empacotei para Zig, e basta executar zig build para jogar no Linux, macOS e Windows
    https://github.com/allyourcodebase/VVVVVV

  • Ele confessou que declarou i, j, k em todas as classes porque não queria declará-las em cada lugar onde eram usadas dentro das funções, e que, como era de se esperar, isso gerou bugs sujos e difíceis
    É impressionante que ele tenha conseguido fazer um bom jogo com esse tipo de código

    • Quase todo jogo tem todo tipo de código hackeado horrível. Claro que este está entre os piores que já vi