Making a Mod

De Valve Developer Community
Ir para: navegação, pesquisa
English (en)Deutsch (de)Français (fr)日本語 (ja)Português do Brasil (pt-br)Русский (ru)Español (es)中文 (zh)
Editar



Este artigo foi desenvolvido para ajudá-lo a fazer uma modificação no Source Engine, ou mod. Primeiro, ele traz alguns conselhos sobre como iniciar um mod e montar uma equipe. A seguir, há uma coleção de dicas úteis sobre como descobrir o design do jogo para o seu mod. Por fim, ele contém um guia passo a passo sobre como amarrar as pontas soltas e finalizar seu mod, que na verdade é a parte mais difícil da criação de mods.

!

Começando

Vamos começar analisando como montar uma equipe. A regra orientadora aqui é manter a equipe pequena. Gerenciar uma equipe de pessoas é um trabalho em tempo integral, mesmo quando toda a equipe está no mesmo prédio. Se você está lidando com uma equipe online, pode facilmente gastar todo o seu tempo gerenciando-a, e isso significa que você não estará gastando tempo no desenvolvimento do seu mod. Adicionar mais pessoas à equipe não significa que mais trabalho será realizado. Quanto mais pessoas você tiver, mais tempo será gasto gerenciando-as. A equipe principal do Team Fortress tinha 3 pessoas. A equipe principal do Counter-Strike tinha uma pessoa.

Ao procurar membros para a equipe, tente contratar apenas pessoas das quais você realmente não pode prescindir. Seu primeiro instinto pode ser contratar qualquer pessoa que saiba programar, modelar, criar mapas, etc. Mas, para a sua primeira versão, provavelmente não precisará de mais de uma pessoa para cada área do seu mod (código, som, modelos, mapas). Você pode nem precisar de novos modelos, sons ou mapas. Não contrate ninguém até ter visto exemplos do trabalho deles. Certifique-se de que eles tenham realmente concluído projetos. Se eles são modeladores que fizeram 20 modelos, mas todos estão pela metade, você não os quer.

Design do Mod

Como autor de um mod, a pergunta mais útil que você pode fazer a si mesmo é "Por que alguém deveria jogar meu mod?" É uma pergunta difícil de responder honestamente, mas se você conseguir respondê-la bem, está no caminho certo. Pense em outros mods disponíveis e no que eles oferecem. Seu mod oferece algo novo aos jogadores? O que você oferece é suficiente para atrair jogadores ocupados jogando outros mods? Mesmo que você não consiga responder a esta pergunta, apenas pensar nela provavelmente ajudará seu mod.

Competir com Jogabilidade

Você possui uma vantagem que os desenvolvedores comerciais não têm: você não precisa se preocupar com a viabilidade comercial de novos estilos de jogabilidade. Desenvolvedores comerciais precisam se preocupar em atrair o varejo, equilibrar custos e outras coisas desagradáveis, razão pela qual a maioria dos jogos é uma modificação leve de estilos de jogabilidade já comprovados. Mas você não precisa fazer isso. Você pode experimentar ideias de jogabilidade totalmente novas que podem se tornar a Próxima Grande Coisa. Esta é a sua vantagem sobre os desenvolvedores comerciais. Facilite seu trabalho concentrando-se nessa vantagem e não gaste seu tempo tentando competir nas áreas em que os produtos comerciais são fortes. A maioria dos mods não pode competir no nível de conteúdo (mapas, modelos, sons, etc.) com produtos comerciais. Eles têm equipes de artistas com anos de experiência. Supere-os com sua jogabilidade. Jogadores jogarão um mod que tem muito pouco conteúdo novo, mas tem uma jogabilidade realmente divertida. Algo que muitas pessoas não percebem é que o Team Fortress 1 tinha quase nenhum novo design artístico por um ano após seu lançamento inicial.

Lançar cedo, lançar frequentemente

Você possui outra vantagem sobre os desenvolvedores comerciais. Você pode lançar muito, muito mais rápido e com mais frequência do que eles. Resumimos esta filosofia de desenvolvimento de mod com a frase "Lançar cedo, lançar frequentemente". Desenvolvedores comerciais trabalham por 2-3 anos, lançam seu jogo e esperam que as pessoas gostem. Você não precisa dar esse salto de fé. Você pode projetar todo o seu mod, escrever 25% dele e polir para um estado jogável, lançá-lo e começar a receber feedback imediatamente. Então você pode começar a adicionar o resto do seu design aos poucos, ao mesmo tempo incorporando o feedback do jogador na primeira versão, e continuar lançando a cada mês ou dois. Você está em contato com seus jogadores o tempo todo, então nunca estará na situação em que gastou muito tempo em algo do qual não tem certeza se os jogadores vão gostar. O truque é dividir seu mod em partes. A versão inicial precisa ser divertida e jogável, mas não precisa de todos os recursos legais que você pensou.

Tenha cuidado. "Lançar cedo" não significa lançar coisas de má qualidade, significa apenas fazer seu mod em incrementos pequenos e polidos. A primeira versão do Counter-Strike não tinha metade dos recursos que tem agora. A equipe do CS lançou um mod de alta qualidade, mas não muito grande. No último ano, eles têm regularmente adicionado mais e mais recursos e, como resposta, sua base de jogadores continuou a crescer cada vez mais.

Diferente nem sempre é melhor

Ao pensar no design do seu jogo, não caia na armadilha de acreditar que "Diferente é Melhor". Não há razão para reescrever o código de uma espingarda e ter um novo modelo de espingarda se isso não impactar seu jogo de maneira interessante. Lembre-se da primeira pergunta, "Por que alguém deveria jogar meu mod?" A resposta "Meu mod tem um novo sistema de combate e um novo sistema de movimento" não é necessariamente uma boa resposta. Então, seu sistema de combate é diferente do Half-Life. Ok... mas é melhor? Isso torna o seu mod mais divertido de jogar? Um novo sistema de movimento torna o jogo mais divertido? Os jogadores estão acostumados aos sistemas existentes, e fazê-los aprender outro precisa valer a pena para eles. Então, antes de pensar em mudar algo, certifique-se de saber que está mudando para melhor e que tornará seu mod mais divertido. Não tenha medo de deixar algo igual ao que era no Half-Life.

Metas Realistas

Crie metas realistas para si mesmo. Pense em quanto tempo um desenvolvedor comercial leva

para criar um jogo de tiro em primeira pessoa (FPS) com 10 armas. Se o seu mod vai ter 40 armas, você está tornando sua vida muito difícil. A coisa a ter em mente aqui é "Qualidade sobre Quantidade". Os jogadores prefeririam ter 10 armas únicas, bem equilibradas e divertidas de usar do que 40 armas desequilibradas, algumas das quais são versões ligeiramente modificadas de outras.

Não tenha medo de cortar conteúdo e recursos. Se o mod parecer que nunca será concluído, ou se houver algum conteúdo que você não acha que atende à qualidade do restante do mod, comece a cortar. Durante o desenvolvimento do Half-Life, pelo menos 30% dos recursos originais no design foram cortados porque ficou claro que eram inatingíveis em nosso cronograma, ou porque decidimos que não valiam o tempo de desenvolvimento. Como mencionamos acima, "Qualidade sobre Quantidade". Os jogadores prefeririam ter 3 mapas realmente bons e bem testados do que 10 não testados, e isso dará ao seu mod uma reputação de conteúdo de qualidade. Não deixe o mundo ver suas piores coisas.

Entenda o Motor do Jogo

Você realmente deve ler a documentação incluída no SDK. A coisa que você aprenderá mais ao fazer isso não é se você pode fazer X com o motor, mas sim como X deve ser feito para funcionar bem. Você pode criar uma arma que dispara 50 foguetes, mas se você não entender como o motor funciona, você pode fazer isso de uma maneira que aumenta significativamente o tráfego de rede usado pelo seu mod. Isso é importante para todos em seu mod. Se seus criadores de mapas não entendem o motor, eles farão mapas enormes sem pensar em quanto dados de rede serão enviados aos jogadores neles, e todos culparão seu código por ser muito intensivo em rede. Se você é um programador, é uma boa ideia se juntar à lista de discussão HL Coders, onde você poderá conversar com muitos outros programadores de mods e alguns funcionários da Valve também. A lista de discussão tem arquivos que remontam a muito tempo, contendo soluções úteis para problemas comuns de mods.

Finalizando

Vemos muitos mods que começam bem, produzem muito conteúdo excelente e nunca dão o último passo para colocá-lo nas mãos dos jogadores. Esta seção o ajudará a entrar em um modo de lançamento em que você está trabalhando para produzir uma versão lançável do seu mod.

Escolhemos cinco semanas como uma estimativa inicial do tempo necessário para passar do modo de desenvolvimento normal para uma versão enviável. É provável que você melhore, e, portanto, seja mais rápido, com lançamentos sucessivos. Se o seu mod for de maior escopo ou sua equipe for substancialmente internacional, é provável que leve mais de cinco semanas, embora os passos sejam semelhantes aos seguintes. Se possível, tente conseguir que a equipe dedique algumas horas todos os dias ao mod durante esse período. Se alguns membros da equipe não puderem fazer isso, você provavelmente estará melhor removendo-os do processo de envio. Peça a eles que entreguem sua parte a outra pessoa na equipe que possa dedicar o esforço necessário. Lançar um produto, mesmo um pequeno, é difícil e requer um compromisso substancial.

Há muitas coisas nesta seção que podem parecer rígidas ou rígidas. Isso é lamentável, mas um reflexo de como esse processo é difícil. Os conselhos aqui são um resumo das lições aprendidas no envio de muitos produtos e a maioria deles é resultado de erros dolorosos que atrasaram nossas datas de lançamento. Quando você se pergunta se um conselho específico aqui é necessário, é possível que tenhamos adicionado semanas à nossa data de lançamento porque não o seguimos.

Isso também é algo que os futuros empregadores estão extremamente interessados. É uma coisa ver que um criador de mods produziu coisas legais, é outra coisa ver que ele produziu coisas legais e realmente as lançou para as pessoas jogarem. O mapa/modelo/código/som/etc. mais legal do mundo é inútil se você não conseguir o último trecho e lançá-lo.

Não se preocupe, isso fica muito mais fácil depois de passar por isso algumas vezes. Na terceira ou quarta versão do seu mod, você será um especialista!

Cinco semanas antes

Centralizar a Propriedade

Você deve designar um único membro da sua equipe de mod como o Líder de Envio (LE). Essa pessoa conduzirá o progresso do mod nas próximas cinco semanas. Todas as alterações feitas no mod a partir de agora devem ocorrer apenas a pedido do LE, e todas as solicitações de alterações devem ser encaminhadas por meio dessa pessoa. Nenhum membro da equipe deve fazer alterações, por menores que sejam, no mod, a menos que o LE tenha solicitado uma alteração específica. Isso não significa que o restante da equipe está perdendo o controle do mod; o LE ainda faz parte da equipe e estará ouvindo todos os feedbacks. O objetivo do LE é garantir que todas as alterações no mod estejam passando por uma única pessoa. Isso evita problemas, como um criador de mapas que quebra o jogo fazendo uma mudança de última hora porque não percebeu que algo mais havia mudado no código do jogo. O LE conhecerá o estado de cada componente no jogo (código, mapas, modelos, texturas, etc.) o tempo todo ao longo das próximas 5 semanas para garantir que isso nunca aconteça.

Escolher o LE não é fácil. Aqui estão algumas dicas:

Não assuma imediatamente que a pessoa que está atualmente gerenciando o mod é a melhor escolha para o LE, especialmente se o mod estiver sendo trabalhado por meses e não estiver mais perto de ser lançado. Os programadores de jogos provavelmente são a melhor escol ha. À medida que o processo de envio se aproxima do fim, a maioria das correções será feita no código do jogo.

O LE deve ser altamente motivado, disciplinado, organizado e o mais desprovido de ego possível. O LE precisará poder dedicar cinco semanas de sua vida a esse processo. O LE deve ser capaz de tomar decisões globais para o mod. O LE deve entender que isso muitas vezes requer cortar recursos e conteúdo para envio.

Estabelecer um Processo de Compilação

Você precisa criar um processo pelo qual compila seu mod. A compilação é o processo de pegar todo o seu trabalho e produzir uma versão instalável e funcional do mod (geralmente na forma de um arquivo de instalação). Isso deve ser feito exclusivamente pelo LE pelas próximas cinco semanas, e o LE deve ter um processo estrito que sempre é seguido. Criar um processo estrito para isso garantirá que você não desperdice horas rastreando bugs que são simplesmente resultado de alguém compilando de maneira diferente do que a pessoa anterior.

O LE deve manter a versão final/candidata ao lançamento do mod a partir de agora. Todas as alterações devem ser enviadas para ele, e ele deve incorporá-las em sua cópia do mod uma a uma e com total compreensão do impacto das alterações em todas as partes do mod. Não se esqueça de fazer backup do seu código e conteúdo regularmente!

O LE deve compilar o mod todos os dias para os playtests. Mais sobre isso depois.

Bloqueio de Recursos

O envio é o processo de bloquear porções do seu mod. "Bloqueado" significa que a porção não deve ser tocada a partir de então. Bugs encontrados em porções bloqueadas do seu mod devem ser pensados cuidadosamente. A menos que o bug seja realmente importante (impedimento), apenas anote-o e corrija na próxima atualização do seu mod. Independentemente da tentação de fazer aquela "correção fácil", evitar desbloquear porções do seu mod deve ser evitado o máximo possível.

Neste ponto do processo de envio, cinco semanas antes, você também deve ter o bloqueio de recursos. Isso significa que você não deve estar adicionando novos recursos ao seu mod de forma alguma. Se parte de sua equipe não estiver envolvida no envio, mas quiser continuar trabalhando no desenvolvimento do mod, ela deve estar trabalhando em um banco de dados separado de conteúdo e código. A maioria dos pacotes de controle de código-fonte permite o ramificação de código dessa maneira. (Sim, recomendamos fortemente que você use alguma forma de controle de código-fonte). Toda alteração feita no mod a partir de agora deve ser uma correção de bug. O LE deve garantir isso. Mesmo que um programador pense em outro recurso legal que diz que levará apenas 10 minutos para codificar, não deixe ele adicionar. Mesmo que o programador envie o código, finalizado e sem bugs, para o LE, não o adicione ao mod. Guarde-o para a próxima versão.

Uma atitude saudável para o LE ter é que cada alteração no mod a partir de agora adicionará dois dias à data de lançamento.

Playtesting

A partir de agora, você deve estar realizando playtests todos os dias, ou a cada dois dias, se isso for muito. Os playtests devem ser baseados em versões instaláveis do jogo, compiladas pelo LE. Não permita que membros da equipe joguem de suas versões pessoais do jogo. Todos devem estar executando uma versão do mod instalada a partir de uma compilação enviada pelo LE (isso é o que seu público verá e usará, é isso que você deve estar testando). Você perderá muitas horas encontrando bugs causados por versões incompatíveis se não fizer isso.

Para facilitar isso, o mod deve ser mantido em um estado jogável o tempo todo. Fique muito preocupado se o mod não estiver jogável por um dia. Se um programador ou criador de mapas fizer uma alteração que quebrar o mod, pense cuidadosamente antes de incorporá-la à compilação do LE. Quanto tempo o jogo permanecerá inutilizável? Quantos playtests você perderá? Quantos membros da equipe não poderão trabalhar porque o mod não está funcionando? Não quebrar o mod deve ser uma religião para a equipe.

Quando você realizar playtests, certifique-se de que o máximo possível de membros da sua equipe está jogando. Todos que trabalham no jogo devem jogá-lo regularmente. Certifique-se de ter alguns jogadores externos também. Ative o log de console do servidor (defina "log" para "on" no arquivo server.cfg). Isso despejará todas as saídas do servidor em um arquivo no diretório gamedir/logs (o nome do arquivo corresponderá à data). Sempre que qualquer jogador no jogo encontrar um bug, faça com que eles usem a tecla "say" para dizer "BUG: descrição do bug". Em seguida, quando o jogo terminar, você pode abrir o arquivo de log e extrair todos os bugs dele pesquisando a palavra "BUG."

Bugs e Alterações

O LE deve manter uma lista completa de todos os bugs e alterações, e seu status atual. Preferencialmente, isso deve ser feito usando algum tipo de banco de dados verdadeiro. O e-mail é totalmente insuficiente para rastrear bugs; é muito fácil para os itens caírem na primeira página da caixa de correio de um usuário, etc. Após cada playtest, os bugs e as alterações necessárias do arquivo de log devem ser adicionados à lista pelo LE e atribuídos aos membros da equipe. Quando um membro da equipe corrigir um bug ou uma alteração, ele deve enviar o novo conteúdo ao LE, que deve verificar se está corrigido e, em seguida, atualizar o status na lista de bugs.

A lista de bugs é uma ferramenta fantástica para avaliar o progresso do seu projeto. Pode ser usada para descobrir quem está sobrecarregado de trabalho, quem está com pouco trabalho, quem não está corrigindo seus bugs, qual área do seu mod está mais distante da conclusão, entre outras coisas. Não remova nada da lista de bugs, mesmo quando tiver sido corrigido (embora deva marcá-lo como corrigido de alguma forma, é claro). É muito útil ver quais bugs foram corrigidos ao longo da história do projeto. Algo pode regredir, recriando um bug, e saber quem o corrigiu da última vez facilita perguntar o que causou isso. No final do projeto, você deve ser capaz de ver cada bug corrigido e cada mudança feita no seu mod durante todo o processo de envio. O SL não deve permitir que qualquer correção de bug ou alteração entre na cópia principal do jogo, a menos que a correção/alteração tenha sido detalhada na lista de bugs.

Existem softwares que ajudarão você a criar e manter uma lista de bugs. Alternativamente, uma planilha funcionará muito bem. Novamente, o e-mail não é uma boa escolha.

Cortar ou adiar recursos quebrados

A parte mais difícil, desagradável e, infelizmente, mais necessária do envio é o ato de ser realista e cortar recursos. Temos um ditado na Valve que diz que todos terão seu recurso favorito cortado do jogo. Embora não seja verdade, isso ajuda todos a se prepararem para o fato de que terão recursos de que gostam - ou em que gastaram muito tempo - cortados. Seu jogo simplesmente não pode ter todos os recursos legais e ainda ser lançado em um prazo razoável. O SL deve tomar decisões sobre o que concluir e o que cortar, com base em quão longe você está no processo de lançamento.

Quanto mais perto você estiver do lançamento, mais você deve pensar em cada bug conforme o encontra. O bug está em um recurso que absolutamente deve estar nesta versão? Quantos dias levará para corrigir esse recurso? Esse recurso pode ser cortado ou adiado para uma versão posterior?

Trabalhe com inteligência, não com esforço

Como dissemos várias vezes, o processo de envio é difícil, e é ainda mais difícil se você não pensar cuidadosamente no que trabalhar. Trabalhar muito não substitui a escolha cuidadosa do que corrigir, o que adiar e o que cortar completamente. O SL deve ter extrema cautela sobre quais bugs/mudanças devem ser trabalhados e por quem. Não gaste uma semana corrigindo um problema pequeno em um recurso apenas porque o recurso é legal. Corrija bugs de travamento (impeditivos). Corrija bugs que impedem totalmente o envio do jogo. Corrija bugs que estão impedindo outros membros da equipe de corrigirem seus bugs. O SL deve desenvolver categorias para bugs para ajudar nas decisões corretas. Um bom nível de granularidade é Deve Corrigir, Grave, Médio, Menor, Zero, Adiado.

À medida que o projeto se aproxima do envio, o SL deve avaliar cuidadosamente cada bug que aparece. Lembre-se, cada bug corrigido cria mais testes e geralmente mais bugs. Se você estiver a duas semanas da data de lançamento e tiver um bug que levará a alguém três dias e 500 linhas de código para corrigir, você não conseguirá cumprir essa data de lançamento, a menos que corte ou adie essa parte do jogo.

Três semanas para o fim

Conteúdo Bloqueado

Neste ponto, você deve almejar estar completo em conteúdo. Isso significa que todo o conteúdo no jogo está em um estado bloqueado, exceto pelo código do jogo em si. Todos os mapas, modelos, texturas, sons, arte do HUD, arte do lançador e assim por diante devem estar concluídos e na cópia principal do SL.

Desligando

Isso foi mencionado na marca de cinco semanas, mas agora é ainda mais importante. O SL é a única pessoa que deve mexer na cópia principal do jogo, e ele deve simplesmente incorporar as correções de bugs dos programadores, que devem corrigir apenas os bugs que o SL entrega a eles.

Testes

O mod deve ser testado todos os dias, por pelo menos duas horas. De agora até o lançamento, você quer que o maior número possível de pessoas martele o seu mod. Agora é tarde demais para fazer grandes mudanças no design do jogo - nem mesmo se sinta tentado.

Uma semana para o fim

Sem mudanças de última hora

O SL deve avaliar cada alteração que precisa ser feita e decidir se elas devem ser adiadas para a próxima versão. Novamente, uma maneira saudável de pensar é que cada alteração, mesmo que seja uma única linha de código, adicionará dois dias à data de lançamento.

Período seguro de dois dias

Depois que todos os bugs que serão corrigidos foram corrigidos e tudo o mais foi adiado, você não está pronto. Agora, espere pelo menos 48 horas, durante as quais você deve testar intensamente. Tente fazer com que todos joguem o jogo pelo maior tempo possível. Se encontrar mais bugs que precisam ser corrigidos, corrija-os e reinicie as 48 horas.

Se o seu mod passar 48 horas de intensos testes sem encontrar nenhum problema novo, você está pronto para lançar!

Pós-lançamento

Então, você lançou, os jogadores adoraram, e páginas da web em todos os lugares estão falando sobre o quanto seu mod é divertido. Se você terminou agora, depende de você. De nossas experiências no campo multiplayer online, um mod só permanece popular enquanto é suportado. Não importa quão incrível seja o seu mod, ele não vai atrair um número significativo de jogadores com sua primeira versão. Os números de jogadores crescem ao longo do tempo por meio de lançamentos repetidos de novo conteúdo, correções de bugs e, é claro, suporte da comunidade. Tanto o Counter-Strike quanto o Team Fortress começaram pequenos e cresceram ao longo do tempo. Cada vez que lançaram uma nova

versão, mais jogadores os experimentaram e começaram a jogá-los.

Saber o que corrigir, o que mudar e como ouvir a sua comunidade é um processo contínuo de aprendizado.

Boa sorte!

Veja tambem

Wikipedia - Letter.png
This article has not been added to any content categories. Please help out by adding categories.
January 2024

This article is designed to help you make a Source Engine modification, or mod. First, it has some advice on starting a mod, and assembling a team. Following that is a collection of helpful tips on figuring out the game design for your mod. Finally, it has a step-by-step guide on how to tie up the loose ends and finish your mod, which is actually the hardest part of mod making.

Starting out

Lets start by looking at how to assemble a team. The guiding rule here is to keep it small. Managing a team of people is a full-time job, even when all the team resides in the same building. If you're dealing with an on-line team, you can easily spend all your time managing it, and that means you won't be spending any time on making your mod. Adding more people to the team doesn't mean more work will get done. The more people you have, the more time spent managing them. Team Fortress's core team was 3 people. Counter-Strike's core team was one person.

When looking for team members, try to only hire people you absolutely cannot survive without. Your first instinct might be to hire anyone who can code, or model, or make maps, and so on. But for your first version, you probably won't need more than one person for each area of your mod (code, sound, models, maps). You may not even need any new models, sounds, or maps. Don't hire anyone until you've seen examples of their work. Make sure they've actually finished things. If they're a modeler who's done 20 models, but they're all half-finished, you don't want them.

Mod design

As a mod author, the most useful question you can ask yourself is "Why should someone play my mod?" It's a hard question to answer truthfully, but if you can answer it well, you're on the right track. Think about what other mods are out there, and what they offer. Does your mod offer something new to the players? Is what you offer enough to entice players who are busy playing other mods? Even if you can't answer this question, just thinking about it will probably help your mod.

Compete with gameplay

You have power commercial developers don't: You don't have to worry about the commercial viability of new gameplay styles. Commercial developers have to worry about appealing to retail, breaking even, and other nasty things, which is why most games are slight modifications on already proven gameplay. But you don't. You can try out truly new gameplay ideas that just might become the Next Big Thing. This is your edge over commercial developers. Make your job easier by concentrating on this edge, and don't spend your time trying to compete in the areas that commercial products are strong in. Most mods can't compete on a content level (maps, models, sounds, etc) with commercial products. They've got teams of artists with years of experience. Beat them with your gameplay. Players will play a mod that has very little in the way of new content, but has really fun gameplay. Something many people don't realize is that Team Fortress 1 had almost no new art for a year after it was first released.

Release soon, release often

You have another power over commercial developers. You can release much, much faster and more often than they can. We've summarized this mod development philosophy with the phrase, "Release soon, Release often." Commercial developers work for 2-3 years, release their game, and hope to god people like it. You don't have to make that leap of faith. You can design your whole mod, write 25% of it and polish it to a playable state, then release it and begin getting feedback immediately. Then you can start adding the rest of your design piece by piece, at the same time rolling in the player's feedback to the first version, and continue releasing every month or two. You're in touch with your players at all times, so you'll never be in the situation where you've spent a lot of time on something you're not sure your players will like. The trick is to cut your mod up into slices. The initial version needs to be fun and playable, but doesn't need every cool feature you've thought of.

Be careful. "Release soon" doesn't mean releasing bad quality stuff, it just means doing your mod in small, polished increments. The first version of Counter-Strike didn't have half of the features they have now. The CS team released a high quality, but not big mod. Over the past year, they've been regularly adding more and more features and, in response, their player base has just continued to grow and grow.

Different is not always better

When thinking about your game design, don't fall into the trap of believing that "Different is Better." There's no reason to rewrite the shotgun code and have a new shotgun model if it doesn't impact your game in any interesting way. Keep in mind the first question, "Why should someone play my mod?" The answer, "My mod has a new combat system, and a new movement system," isn't necessarily a good answer. So your combat system is different that Half-Life's. OK... but is it better? Does it make your mod more fun to play? Does a new movement system make the game more fun? Player's are used to existing systems, and making them learn another one needs to be worth it for them. So before you think about changing something, make sure you know you're changing it for the better, and that it'll make your mod more fun. Don't be afraid to just leave something the same as it was in Half-Life.

Realistic goals

Create realistic goals for yourself. Think about how long it takes a commercial developer to make an FPS shooter with 10 weapons. If your mod is going to have 40 weapons, you're making life really hard for yourself. The thing to keep in mind here is "Quality over Quantity." Players would far prefer to have 10 unique, well balanced, and fun to use weapons than 40 unbalanced weapons, some of which are slightly tweaked versions of others.

Don't be afraid to cut content and features. If the mod looks like it's never going to be finished, or there's some content that you don't think meets the quality of the rest of the mod, then start cutting. During the development of HL at least 30% of the original features in the design were cut because it became obvious they were unattainable in our timeline, or because we decided they weren't worth their development time. As we said above, "Quality over Quantity." Players would prefer having 3 really good, well play-tested maps over 10 untested ones, and it'll give your mod a reputation for quality content. Don't let the world see your worst stuff.

Understand the engine

You really should read the documentation included in the SDK. The thing you'll learn most by doing so isn't whether you can do X with the engine, but rather how X should be done so it works well. You can make a gun that fires 50 rockets, but if you don't understand the way the engine works, you might do it in a way that significantly increases the network traffic your mod uses. This is important for everyone in your mod. If your mapmakers don't understand the engine, they'll make huge maps without any thought for how much network data will be sent to the players in them, and everyone will blame your code for being too network intensive. If you're a programmer, it's a good idea to join to HL Coders mailing list, where you'll be able to talk to many other mod programmers, and a few Valve employees as well. The mailing list has archives going back a long way, which contain a lot of useful solutions to common mod problems.

Finishing

We see a lot of mods that start out strong, produce a lot of great looking content, and never quite make the last step of getting it into the player's hands. This section will help you get into a release mode where you're driving towards producing a releasable version of your mod.

We chose five weeks as a starting estimate of the time it'll take to get from normal development mode to a shippable version. It's likely you'll get better, and hence faster, at this with successive releases. If your mod is larger in scope, or your team is substantially international, then it is likely to take more than five weeks, though the steps will be similar to the following.. If possible, try and get the team to commit a few hours of every day to the mod for this period of time. If some team members can't do that, you're probably better off removing them from the shipping process. Get them to hand their part to someone else on the team who can put in the required effort. Shipping a product, even a small product, is hard and requires a substantial commitment.

There are many things in this section that might sound harsh or rigid. This is unfortunate, but a reflection on how hard a process this is. The advice here is a summation of lessons learned in the shipping of many products, and most of it a result of painful mistakes that set back our release dates. When you wonder whether a particular piece of advice here is necessary, it's possible that we once added weeks to our release date because we didn't take it.

This is also something that prospective employers are extremely interested in. It's one thing to see that a mod maker has produced a bunch of cool stuff, it's another thing entirely to see that they produced some cool stuff and actually shipped it out and people played it. The coolest map/model/code/sound/etc. in the world is useless if you couldn't go the last mile and ship it.

Fear not, this gets a lot easier once you've been through it a couple of times. By the third or fourth release of your mod, you'll be an expert!

Five weeks out

Centralize ownership

You should designate a single member of your mod team as the Shipping Leader (SL). This person will drive progress on the mod for the next five weeks. All changes made to the mod from now on should occur only at the request of the SL, and all requests for changes should be funneled through this person. No team member should make any changes, no matter how minor, to the mod unless the SL has requested that they make a particular change. This doesn't mean the rest of the team are losing control of the mod; the SL is still a part of the team, and will be listening to all feedback. The point of the SL is to ensure that all changes to the mod are going through a single person. This avoids problems such as a mapmaker breaking the game by making a last minute change because he didn't realize something else had changed in the game code. The SL will know the state of every component in the game (code, maps, models, textures, etc) at all times throughout the next 5 weeks to ensure this never happens.

Choosing the SL isn't easy. Here are a few tips:

  • Don't immediately assume the person who's currently running the mod is the best choice for SL, especially if the mod has been worked on for months and hasn't got any closer to being released.
  • Game Coders are probably the best choice. As the shipping process comes to an end, most fixes will be made in the game code.
  • The SL should be highly motivated, disciplined, organized, and as ego-less as possible. The SL will need to be able to commit five weeks of his or her life to this process.
  • The SL should be able to make global decisions for the mod. The SL should understand that this often requires cutting features and content in order to ship

Establish a build process

You need to create a process by which you build your mod. Building is the process of taking all your work and producing an installable, working version of the mod (generally in the form of an install file). This should be done exclusively by the SL for the next five weeks, and the SL should have a strict process that is always followed. Creating a strict process for this will ensure you don't waste hours tracking down bugs that are simply a result of someone building in a different way than the previous person.

The SL should maintain the final/release candidate version of the mod from now on. All changes should be sent to him, and he should incorporate them into his copy of the mod one by one and with a full understanding of the impact of the changes on all parts of the mod. Don't forget to backup your code and content regularly!

The SL should build the mod every day for playtests. More on that later.

Feature locking

Shipping is the process of locking down portions of your mod. "Locked" means that the portion is not to be touched from then on. Bugs found in locked portions of your mod should be thought about carefully. Unless the bug is really important (showstopper), just note it down and fix it in the next update of your mod. Regardless of the temptation to make that one "easy fix", unlocking portions of your mod should be avoided as much as possible.

At this point in the shipping process, five weeks out, you should also be feature locked. This means you shouldn't be adding any new features to your mod whatsoever. If part of your team is not involved in shipping but wants to continue working on developing the mod, they should be working in a separate content and code database. Most source code control packages allow for branching of code in this fashion. (Yes, we strongly recommend that you use some form of source control ). Every change made to the mod from now on should be a bug fix. The SL should ensure this. Even if a coder thinks of another cool feature that they say will only take them 10 minutes to code, do not let them add it in. Even if the coder sends the code, finished and bug-free, to the SL, do not add it to the mod. Save it for the next version.

A healthy attitude for the SL to have is that every change to the mod from now on will add two days to the release date.

Playtesting

From now on, you should be running playtests every day, or every second day if that's too much. Playtests should be based on installable versions of the game, built by the SL. Don't let team members play from their personal versions of the game. Everyone should be running a version of the mod installed from a build sent out by the SL (that's what your viewing public will be installing and using, that's what you should be testing). You'll waste many hours on finding bugs caused by incompatible versions if you don't do this.

To make this easier, the mod must be kept in a playable state at all times. Get very, very worried for every day the mod isn't playable. If a coder or mapmaker makes a change that breaks the mod, think about it carefully before incorporating it into the SL's build. How long will the game remain unplayable? How many playtests will you miss? How many team members won't be able to work because the mod isn't running? Not breaking the mod should be religion for the team.

When you do playtest, make sure as many of your team members are playing as possible. Everyone working on the game should be playing it regularly. Make sure you have some external players as well. Turn on server console logging (set "log" to "on" in the server.cfg file). This will dump all the output of the server into a file in the gamedir/logs directory ( the name of the file will match the date). Whenever any player in the game spots a bug, have them use their "say" key to say "BUG: description of bug". Then, when the game is over, you can open up the log file and get all the bugs out of it by searching for the word "BUG."

Bugs and changes

The SL should maintain a complete list of all bugs and changes, and their current status. Preferably this should be done using some kind of true database. E-mail is totally insufficient for tracking bugs; it's just too easy for items to drop of the first page of a user's mailbox, etc. After each playtest, the bugs and necessary changes from the log file should be added to the list by the SL, and assigned to team members. When a team member has fixed a bug or change, they should submit the new content to the SL, who should verify that it is fixed and then update the status on the bug list.

The bug list is a fantastic tool to evaluate how well you are progressing. It can be used to find out who is overloaded with work, who is underloaded, who is not fixing his bugs, which area of your mod is farthest from completion, and so on. Don't remove anything from the bug list, even when it has been fixed (though you should mark it as fixed in some way, of course). It's very useful to see what bugs have been fixed throughout the history of the project. Something might regress, re-creating a bug, and knowing who fixed it last time makes it easy to ask them what caused it. At the end of the project, you should be able to see every bug fixed and every change made in your mod for the entire shipping process. The SL shouldn't allow any bug fix or change into the SL's master copy of the game unless the bug/change has been detailed in the bug list.

There is software that will help you create and maintain a bug list. Alternatively, a spreadsheet will work just fine. Again, e-mail is a bad choice.

Cut or defer broken features

The hardest, nastiest, and unfortunately most necessary part of shipping is the act of being realistic and cutting features. We have a saying at Valve that everyone will have their favorite feature cut from the game. While it's not true, it does help everyone prepare themselves for the fact that they will have features they like -- or that they spent some to a lot of time on-- cut. Your game simply cannot have every cool feature and still ship in a reasonable time frame. The SL should make decisions about what to finish and what to cut, based on how far along in the release process you are.

The closer you get to releasing, the more you should think about each bug as you find it. Is the bug in a feature that absolutely must be in this version? How many days will it take to fix this feature? Can this feature be cut, or deferred to a later version?

Work smart, not hard

As we've said over and over again, the shipping process is hard, and it's even harder if you don't think carefully about what to work on. Working a lot is no substitute for carefully choosing what to fix, what to defer, and what to cut out altogether. The SL should be extremely careful about which bugs/changes should be worked on, and by whom. Don't spend a week fixing a minor problem in a feature just because the feature is cool. Fix crash bugs (showstoppers). Fix bugs that utterly prevent you from shipping the game. Fix bugs that are preventing other team members from fixing their bugs. The SL should develop categories for bugs to aid in making the right decisions. A good level of granularity is Must Fix, Severe, Medium, Minor, Zero, Deferred.

As the project gets closer to shipping, the SL should be carefully evaluating every bug that shows up. Remember, every bug that's fixed creates more playtesting, and usually more bugs. If you are two weeks from your release date, and you've got a bug that will take someone three days and 500 lines of code to fix, you're not going to make that release date unless you cut or defer that portion of the game.

Three weeks out

Content Locked

By now you should aim to be content complete. This means that all content in the game is in a locked state, except for the game code itself. All the maps, models, textures, sounds, HUD art, launcher art, and so on should be finished and in the SL's master copy.

Shutting down

This was mentioned at the five week mark, but it's even more important now. The SL is the only person who should be touching the master copy of the game, and he should simply be rolling in the bug fixes from the coders, who should be fixing only the bugs the SL hands them.

Playtesting

The mod should be being playtested every day, for at least two hours. Between now and when you ship, you want as many people as possible hammering away at your mod. It's too late now to make any major game design changes – don't even be tempted.

One week out

No last minute changes

The SL should be evaluating every change that has to be made, and deciding whether they should be deferred to the next version. Again, a healthy way to think about it is that every single change, even if it's a single line of code, will add two days to the release date.

Two day safe period

Once every bug that is going to be fixed has been fixed, and everything else has been deferred, you're not done. Now you wait at least 48 hours, during which time you should playtest like crazy. Try to get everyone hammering away at the game for as much time as possible. If you find any more bugs that have to be fixed, fix them, and start the 48 hours again.

If your mod passes 48 hours of heavy playtesting without finding any new issues, you're ready to release!

Post-release

So you've released, the players love it, and web pages everywhere are talking about how much fun your mod is. Whether you're done now is up to you. From our experiences in the on-line multiplayer field, a mod only stays popular as long as it's supported. No matter how great your mod is, it's not going to garner really significant player numbers with its first version. Player numbers are grown over time through repeated releases of new content, bug fixes, and of course, community support. Both Counter-Strike and Team Fortress started out small and grew over time. Each time they released a new version, more players tried them out and started playing them.

Knowing what to fix, what to change, and how to listen to your community is a continual learning process.

Good luck!

See also