Valve revela código do jogo Team Fortress 2
(github.com/ValveSoftware)- O commit
Add Team Fortress 2 SDKdeValveSoftware/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.vpcegame_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 SDKdo repositório públicoValveSoftware/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
- O título da página no GitHub é
- Na raiz e no lado de
gameestã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.mdeREADME - Em
game/binestão incluídos binários da Steam API, comolinux64/libsteam_api.soex64/steam_api64.dll - Em
game/mod_tfhá recursos de configuração e UI, comogameinfo.txt,steam.inf, o logo do TF2,resource/mod_tf_english.txteMatchMakingDashboard.res
- Como arquivos de nível raiz aparecem
- Em
src/game/client/tfhá 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
- Jogador/equipe:
- A UI e os elementos de jogo como serviço também aparecem amplamente na lista de arquivos
- O diretório
econcontém arquivos de UI de inventário, equipamentos, trocas, mercado e itens econ/storeconté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
- O diretório
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,.vpce.pl - Variantes por perfil de shader como
ps11,ps14,ps20,ps20b,ps30,vs11,vs20evs30aparecem 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
- Inclui vários formatos como
- O ambiente de desenvolvimento/build também vem junto
src/.vscode/tasks.json,src/buildallprojectscreateallprojects,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_osxe 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çõesREADME texté removido eREADME.md texté adicionado*.dll binary,buildallprojects textevpc binarysão adicionadosmod_*_english.txt binaryé removido e*_english.txt binaryé adicionado- Alguns itens como
creategameprojects,createallprojects,vpc_linuxevpc_osxaparecem 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
A Valve é realmente incrível mesmo.
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.
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.
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.
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.Parece que o nome do jogo mudou para Frog Fortress 2.
https://github.com/ValveSoftware/source-sdk-2013/blob/0759e2...
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.
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.
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.
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
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
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
Pelo menos no sentido de que o Apple Silicon oferece melhor suporte a x86-64 via Rosetta 2, parece que isso deve chegar
É 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
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
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
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
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
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