2 pontos por GN⁺ 2025-02-19 | 2 comentários | Compartilhar no WhatsApp
  • O commit Add Team Fortress 2 SDK de ValveSoftware/source-sdk-2013 é uma grande mudança que adiciona o Team Fortress 2 SDK ao repositório Source SDK 2013, incluindo amplamente arquivos de jogo, cliente e shaders
  • Na árvore de arquivos aparecem configurações e arquivos de projeto dedicados ao TF, como game/mod_tf, src/game/client/tf, client_tf.vpc e game_shader_generic_*_tf.vpc
  • O escopo do código do cliente é amplamente dividido por unidades de sistema do jogo, como HUD, armas, projéteis, bots NPC, Halloween, Mann vs. Machine, PASS Time, replay e UI de econ/loja
  • Binários da Steam API, configurações de tarefas do VS Code, scripts de build, configurações de VPC/Xcode/make, DLLs utilitárias do DirectX SDK e ferramentas de build de shader também estão incluídos
  • O que pode ser verificado se concentra principalmente na lista de arquivos e em parte do diff da página do grande commit no GitHub, então na maioria dos casos é difícil confirmar as mudanças reais de implementação de cada arquivo ou se houve adição/modificação

Escopo incluído no commit do TF2 SDK

  • O alvo é o commit Add Team Fortress 2 SDK do repositório público ValveSoftware/source-sdk-2013
    • O título da página no GitHub é Add Team Fortress 2 SDK · ValveSoftware/source-sdk-2013@0759e2e · GitHub
    • Os indicadores exibidos do repositório são Fork 3k e Star 9.8k
  • Na raiz e no lado de game estão incluídos os arquivos básicos e a configuração de mod necessários para distribuir o SDK
    • Como arquivos de nível raiz aparecem .gitattributes, .gitignore, CONTRIBUTING, LICENSE, README.md e README
    • Em game/bin estão incluídos binários da Steam API, como linux64/libsteam_api.so e x64/steam_api64.dll
    • Em game/mod_tf há recursos de configuração e UI, como gameinfo.txt, steam.inf, o logo do TF2, resource/mod_tf_english.txt e MatchMakingDashboard.res
  • Em src/game/client/tf há uma grande quantidade de arquivos que parecem ser o código do cliente de Team Fortress 2
    • Jogador/equipe: c_tf_player.cpp/.h, c_tf_team.cpp/.h, c_tf_playerresource.cpp/.h
    • Armas/projéteis: c_tf_projectile_arrow, c_tf_projectile_rocket, c_tf_stickybolt, c_tf_weapon_builder
    • Construções do Engineer: c_obj_dispenser, c_obj_sentrygun, c_obj_teleporter, c_obj_sapper
    • Modos/eventos: estão incluídos arquivos relacionados a PASS Time, Halloween, Mann vs. Machine e PvE
  • A UI e os elementos de jogo como serviço também aparecem amplamente na lista de arquivos
    • O diretório econ contém arquivos de UI de inventário, equipamentos, trocas, mercado e itens
    • econ/store contém arquivos relacionados à tela da loja
    • Os arquivos de HUD se dividem em conta, conquistas, notificações, munição, chat, mira, indicador de dano, vida de chefes, status de Mann vs. Machine e mais

Shaders e ferramentas de build

  • A lista de mudanças relacionadas a shader é muito grande
    • Inclui vários formatos como .fxc, .psh, .vsh, .inc, .cpp, .h, .bat, .vpc e .pl
    • Variantes por perfil de shader como ps11, ps14, ps20, ps20b, ps30, vs11, vs20 e vs30 aparecem repetidamente
    • Estão incluídos arquivos relacionados a água, pós-processamento, bloom, motion blur, cloak, eye, flashlight, lightmapped generic, HDR/tone mapping e partículas
  • O ambiente de desenvolvimento/build também vem junto
    • src/.vscode/tasks.json, src/buildallprojects
    • createallprojects, creategameprojects
    • Configurações de Xcode, makefile POSIX e definições make do Source SDK em src/devtools
    • Em src/devtools/bin, ShaderCompile2.exe, vpc.exe, vpc_linux, vpc_osx e scripts em Perl/Python/PowerShell

Limites verificáveis e notas do diff

  • A entrada atual resume a árvore de arquivos e parte das informações de diff da página do commit, e na maior parte é uma lista de arquivos alterados, não o conteúdo real do código
  • Como é uma página de commit grande do GitHub, parte do conteúdo fica oculto por padrão, com orientação para usar a caixa de busca para encontrar conteúdo oculto
  • A página também exibe a mensagem de erro “There was an error while loading. Please reload this page.”
  • O diff de .gitattributes é mostrado com 5 adições e 11 remoções
    • README text é removido e README.md text é adicionado
    • *.dll binary, buildallprojects text e vpc binary são adicionados
    • mod_*_english.txt binary é removido e *_english.txt binary é adicionado
    • Alguns itens como creategameprojects, createallprojects, vpc_linux e vpc_osx aparecem como removidos
  • O commit mostra 0 comentários

Escopo não refletido

  • Segundo a nota de entrada, alguns chunks do texto original foram omitidos por limite de tamanho/custo
  • Portanto, este resumo reflete apenas a lista de arquivos do commit e parte do diff dentro do escopo das notas de origem fornecidas, e não cobre todos os arquivos e mudanças de todo o commit

2 comentários

 
honglu 2025-02-19

A Valve é realmente incrível mesmo.

 
GN⁺ 2025-02-19
Opiniões do Hacker News
  • É uma boa notícia para modding, mas não se deve confundir: isso ainda é código específico do TF2 rodando em cima da engine Source, que continua fechada.
    Por exemplo, não dá para usar isso para portar o TF2 para uma nova plataforma; isso só seria possível no mínimo reimplementando a Source, ou forçando uma adaptação a uma das bases de código vazadas da Source e assumindo as consequências legais.

    • É difícil entender a posição da Valve de manter a Source fechada. Ela nem é uma engine particularmente atraente para se trabalhar hoje, e já existem pelo menos três grandes alternativas open source muito mais poderosas e fáceis de lidar, como O3DE, Godot e Wicked.
      Há uma comunidade ativa que conhece bem as deficiências do fluxo de trabalho da Source; se ela fosse publicada sob GPL, como Carmack fez com a id tech, poderia haver uma explosão de projetos criativos de indies. Eles não precisariam mais ficar presos a contratos opacos.
    • Já houve vazamentos, faz mais de 10 anos desde o último grande jogo feito com Source 1, e na Source 2 a maior parte do código de renderização deve ter sido reescrita para acompanhar os novos avanços dos gráficos de jogos; então fico me perguntando se ainda há motivo para mantê-la fechada.
      Será que vão publicá-la algum dia? Pode haver questões de licenciamento que impeçam abrir o código facilmente por não deterem todos os direitos, ou talvez ainda haja muita tecnologia secreta que valha a pena preservar.
    • Que pena, eu esperava que isso fizesse o TF2 voltar ao Mac. Desde que a Apple removeu o suporte a 32 bits, não conseguimos mais fazer uma LAN party decente no escritório.
    • Ainda fico confuso com o motivo de a Source continuar fechada, mesmo a Valve tendo migrado para a Source 2 há mais de 10 anos. Talvez alguns elementos básicos se sobreponham, mas aparentemente eles acham aceitável liberar o código-fonte do jogo.
    • Boa notícia! Alguém já conseguiu fazer engenharia reversa de parte da engine Source para TF2.
      https://www.youtube.com/watch?v=09CvpQrnTEY
  • Para quem criava mods de TF2 do lado do servidor, isso é simplesmente fantástico. Passei incontáveis horas analisando binários no IDA; agora basta abrir o GitHub.
    A comunidade vai conseguir criar novos recursos e correções de bugs muito mais rapidamente. Na verdade, isso já deveria ter acontecido há muito tempo; o código-fonte do TF2 já vazou duas vezes, e um grupo chegou a criar um clone do jogo com uma versão anterior da engine. O apoio da comunidade a esse jogo ainda é enorme.

  • Espero que isso seja uma boa notícia para o TF2 Classic.
    Segundo um aviso no Discord do TF2C, por causa da grande atualização do SDK e da abertura do código do Team Fortress 2, pode ser que o TF2 Classic não consiga ser executado por um tempo. Eles já estão preparando o trabalho de portabilidade e um possível lançamento no Steam, e disseram que agora podem seguir por um caminho legal. Para continuar jogando por enquanto, é preciso mudar o Source SDK Base 2013 Multiplayer para o branch beta previous2021, onde os arquivos antigos do SDK ainda permanecem.

    • Como foi explicitamente dito que obras derivadas do jogo original são permitidas e que esses trabalhos podem ser lançados como novos jogos no Steam, isso abre o caminho para o TF2 Classic.
    • O que é TF2 Classic?
  • Parece que o nome do jogo mudou para Frog Fortress 2.
    https://github.com/ValveSoftware/source-sdk-2013/blob/0759e2...

    • Acho que é para diferenciar do TF2 oficial se alguém compilar e instalar o código sem mudar o nome.
    • Parece algum tipo de piada interna. É só ver quem fez o commit.
      Sapos e programação gráfica são bons amigos.
  • Post oficial no blog: https://www.teamfortress.com/post.php?id=238809
    Também inclui links para atualizações recentes de outros jogos com a engine Source.

  • Uau… uau, nossa. Não esperava ver isso no HN. Eu esperava por isso havia muito tempo, mas, se eu fosse a Valve, teria lançado uma atualização comemorativa “final” de conteúdo muito antes, portado o jogo para Vulkan e aberto o código da base, deixando coisas como servidores de itens vinculadas aos servidores da Valve.
    Não sei se isso é o começo do fim do TF2 ou o fim do começo. Já houve vazamentos antes, mas desta vez é uma notícia enorme.

    • Para ser o começo do fim, ele já estava no fim havia anos. Agora estão passando para a comunidade, e esse é o caminho certo.
      A equipe do TF2 provavelmente tem, no máximo, algumas dezenas de pessoas agora, e o jogo já tem quase 18 anos; chegou a hora de deixar o desenvolvimento contínuo nas mãos da comunidade externa.
    • Nos anos 90, a id ganhou dinheiro por alguns anos com Doom e depois publicou o código-fonte, e fez o mesmo com Quake. Um dos motivos de empresas como a Valve existirem hoje é que seus primeiros jogos usavam engines modificadas de Doom e Quake.
      Agora a Valve está dando continuidade a uma tradição de mais de 25 anos. As pessoas ainda criam e jogam novos mapas de Doom. Se a história servir de referência, talvez ainda estejamos jogando TF2 de alguma forma depois da década de 2050.
    • “Woah... woah WOAH”, entendi o que você quis fazer.
    • Fiquei curioso por que você não esperava ver isso no HN.
  • O fato de terem feito isso antes mesmo de recompilar para Macs de 64 bits diz muita coisa. A Valve claramente não parece ver a Apple como uma boa parceira para fazer negócios
    Dá para entender, vendo como a Apple tenta prender os desenvolvedores de jogos na App Store

    • Criar jogos para Mac parece um grande desafio. É uma combinação de arquitetura de CPU relativamente fora do padrão, API gráfica proprietária, poucos dispositivos, telas integradas com resolução alta demais e GPUs que, na melhor das hipóteses, são “suficientes”
      O fato de a Apple ter anunciado orgulhosamente gráficos de Tomb Raider 2 de nível intermediário também não dá muita esperança para desenvolvedores de jogos que não contam com apoio das campanhas de marketing da Apple. Além disso, é uma plataforma menor até que o Linux em número de jogadores
      A menos que haja certeza de que uma base razoável de jogadores vai se formar, não parece fazer muito sentido comercial para uma empresa de jogos otimizar para Mac. Usuários que podem comprar um Mac provavelmente também podem comprar um console
      Dá para forçar jogos a rodarem com os wrappers e gambiarras usados para jogar no Linux, mas no Mac as ferramentas são menos maduras, então é preciso otimizar diretamente. Jogos no Linux já têm muitos problemas de compatibilidade com DRM/anti-cheat; usar ferramentas menos maduras só pioraria isso
      A Apple também não parece muito interessada em compatibilidade retroativa. Eliminou o suporte a 32 bits sem um motivo claro além de “não quero manter compatibilidade”, e não se sabe por quanto tempo manterá as APIs alternativas atuais. O Linux tem problemas parecidos, por isso a forma padrão de jogar no Linux acaba sendo executar os jogos em um ambiente Windows emulado
      É mais provável que as empresas de jogos recompilessem seus jogos para Snapdragon antes de fazê-lo para Mac. Quando conseguirem fazer bibliotecas x86 de 32 bits rodarem em ARM sem emulação, a Apple já terá mudado APIs e requisitos mais algumas vezes, então não haveria muito motivo para se dar ao trabalho
    • Olhando entrevistas da indústria de jogos, a Apple historicamente foi bastante hostil a colaborar com empresas de jogos, e parece ter amaciado um pouco depois da App Store do iPhone
      As pessoas zombam do “devs devs devs” do Ballmer, mas ele tinha bastante razão. A Microsoft gastou muito dinheiro para atrair desenvolvedores e, como resultado, conquistou uma posição dominante nos jogos de PC
    • Segundo o texto original, o anúncio foi feito no site oficial de TF2, e https://www.teamfortress.com/post.php?id=238809 diz que vários clássicos multiplayer do motor Source, como TF2, DoD:S, HL2:DM, CS:S e HLDM:S, receberão muitas melhorias, incluindo suporte a binários de 64 bits, HUD/UI escalável e correções de predição
      Pelo menos no sentido de que o Apple Silicon oferece melhor suporte a x86-64 via Rosetta 2, parece que isso deve chegar
    • Usuários de Mac são 1,4%, 25% menos que Linux
      É mais do que eu imaginava, mas, se não houver jogos compatíveis, quase não há motivo para instalar o Steam. A Apple só começou recentemente a ficar mais amigável a jogos, então não surpreende que estejam tentando portar um jogo de 20 anos
    • Havia um vídeo explicando por que os jogos da Valve não foram portados para Macintosh, mas não consigo encontrá-lo. O ponto principal era que a Apple não queria que seus dispositivos fossem usados para jogos e, depois de invalidar o trabalho de port, recusou a publicação dos jogos
      Uma fala de Gabe em 2007 é o mais parecido. Ele disse que, ao se reunir com a Apple, as pessoas de lá diziam “jogos são realmente importantes, precisamos fazer alguma coisa”, e quando a Valve respondia “então, se vocês fizerem estas três coisas, vai melhorar”, eles concordavam e depois nunca mais apareciam. Então alguém dentro da Apple mudava e o mesmo ciclo começava de novo
  • Também há pequenos arquivos de HL3 no histórico de mudanças: https://github.com/ValveSoftware/source-sdk-2013/commit/0759...

  • A Valve continua vencendo
    Tenho medo do dia em que Gaben morrer ou se afastar. Espero que a Valve encontre um ótimo sucessor, mas não é raro uma empresa perder o rumo depois que a geração fundadora desaparece

    • Isso é realmente muito legal, assim como muitas coisas que a Valve faz, mas a Valve ganha bastante dinheiro com jogos de azar e apostas de menores, então é difícil vê-la como uma empresa totalmente admirável
    • Para mim, a Valve como desenvolvedora de jogos se perdeu há muito tempo. O que ela lançou recentemente? CS 2 em 2023? Essa IP também veio de um mod comprado há 25 anos, e o mesmo vale para outros jogos lançados depois de Half-Life. A única coisa “nova” no pipeline é um MOBA FPS
      Ainda assim, serei eternamente grato ao Steam por me permitir rodar jogos de Windows no Linux sem sofrimento, de modo que não preciso voltar a lidar com a Microsoft na minha vida pessoal. Como distribuidora de jogos, é excelente, e distribuição de jogos é o que a Valve faz melhor
    • Na verdade, acho que Gabe deveria se aposentar. Se possível, seria bom que Robin Walker assumisse
      O ciclo de lançamentos da Valve praticamente parou, e ela está se apoiando em suas vacas leiteiras. Gabe tem 62 anos e parece mais interessado na concorrente da Neuralink
    • Não entendo por que acham que Gabe é quem tem o maior impacto. A maior parte da equipe original que fez Half-Life já saiu, e as pessoas compraram jogos, não produtos por causa do Steam
    • Acho que a Valve já se perdeu. Só que a enshittification deles veio na forma de caixas de loot, algo próximo de jogos de azar
      As pessoas esquecem que TF2 foi um dos primeiros exemplos de caixas de loot em jogos ocidentais, muito antes de Overwatch sair. Em Portal 2, ainda enfiaram isso no modo cooperativo sem necessidade. Foi por isso que pararam de lançar experiências single-player. Deixando Half-Life: Alyx como exceção
      CS:GO é o pior caso. Existem sites de terceiros para apostar usando skins de armas, e eles miram crianças de forma descarada. Praticamente todo o cenário profissional de CS:GO é patrocinado por isso
      Sites de apostas com skins não são aprovados oficialmente pela Valve, mas ela praticamente não faz esforço para bloqueá-los
  • Agora fico curioso para saber se vão começar a aceitar pull requests. Há muitos bugs que eu gostaria que fossem corrigidos no jogo
    Já faz quase 10 anos que me irrito com o problema do feixe da Medigun não se alinhar ao modelo

    • Acho que isso foi simplesmente despejado no GitHub e não deve ter nenhuma ligação com o repositório interno
      O repositório de Half-Life foi a mesma coisa. Mesmo quando o trabalho relacionado ao 25º aniversário foi divulgado, ele foi enviado como um único patch enorme
    • Os bugs no rastreador de issues do GoldSrc também vêm sendo quase todos ignorados há anos
    • É muito, muito, muito improvável. Ainda assim, seria bom se alguém liderasse um fork da comunidade do jogo que roda no Steam