5 coisas que Dark Souls e Bloodborne me ensinaram sobre programação

Fabio de Oliveira
Mercafacil
Published in
8 min readJul 12, 2022

Introdução

Eu tenho um imenso costume de sempre relacionar assuntos que aparentemente não possuem qualquer tipo de relacionamento. Isso já me gerou aprendizados e lições que eu levo para a minha vida, inclusive para o meu dia-a-dia como profissional da área de TI. Logo, com a minha franquia preferida dos videogames não seria diferente. Tenho uma enorme admiração pela trilogia Dark Souls e Bloodborne.

Antes de começarmos a traçar paralelos entre os jogos e a área de programação gostaria de explicar um pouco sobre o motivo pelo qual esses jogos fazem muito sucesso. É comum atualmente o mercado de jogos terem suas dificuldades reduzidas a fim de não gerar frustração em seu público. É comum depois de perder várias vezes em um jogo surgir uma pergunta na tela sugerindo que você deve diminuir a dificuldade para não se frustrar. Outra tendência de mercado são jogos que possuem níveis de dificuldade muito fáceis e que acabam roubando todo desafio.

No meio de todo esse mercado surge a empresa FromSoftware, criadora de Dark Souls e Bloodborne(e outros jogos também). Esses jogos possuem um nível de dificuldade único, e diga-se de passagem um alto nível de dificuldade. Totalmente na contramão do mercado, seus jogos fazem muito sucesso e foram os predecessores do novo estilo de jogo e um mercado conhecido como souls-like. Isso fez com que Dark Souls levasse o prêmio de melhor jogo de todos os tempos pelo Golden Joystick Award.

Um jogo como esse que arrebanhou uma legião de fãs só pode ter grandes diferenciais. E é sobre esses diferenciais que vamos falar aqui. Espero que ao final desse artigo você fique com vontade de jogar Dark Souls e mais vontade ainda de programar. Então vamos lá!

  1. No começo você fica meio perdido, mas no final parece que você ta no começo.

Lembro-me bem da primeira vez que precisei estudar programação por conta própria. Palavras estranhas, conceitos desconhecidos e uma barreira complicada de ser superada naquela época: o idioma, inglês. Entretanto, nada disso me impediu de trilhar o caminho da programação. Um fato era que além de não conhecer muito sobre programação, eu acabei descobrindo que não sabia muito sobre mim também. Não queria começar com o cursinho básico que printava “hello world!” em C. Eu queria desafios, queria ter meu próprio sistema operacional. Foi então que decidi aprender Assembly. O problema foi que eu me senti como se tivesse sido jogado dentro de um universo hostil que eu não fazia parte, até mesmo parece que aquele universo não me queria ali.

O sentimento era o mesmo quando me deparei com os dois lobisomens na ponte de Yarn em Bloodborne. Claramente eu não deveria passar por ali.

Bloodborne

Ou também quando cheguei a Firelink Shrine, e ao invés de subir uma escada sem inimigos decidi percorrer um caminho em direção a dois “simples esqueletos”.

Dark Souls

Perceba que Bloordborne, Dark Souls e o meu código em assembly estavam claramente me dizendo que aquele não era o caminho a ser seguido. Lembra que eu falei que não sabia muito sobre mim? Então, eu queria aprender tudo “pra ontem”, me faltava a humildade de entender que caminhos mais simples precisavam ser trilhados antes de enfrentar grandes desafios.

E frequentemente vejo pessoas caindo no mesmo erro: tentar criar um aplicativo revolucionário/inovador/bem sucedido do zero e do dia para a noite, geralmente porque tem um tio com uma grande ideia. E para isso tentando entrar no mundo do desenvolvimento através de frameworks, ao invés de aprender linguagens de programação primeiro, que seria o caminho ideal.

Em Bloodborne aqueles lobisomens estão ali para te mostrar que você não está pronto para aquele desafio (e tá tudo bem). Comece pelo básico, pelo simples. E quando estiver mais preparado encare desafios maiores. Se preocupe mais em conhecer o mundo novo que você está adentrando. Foque em aprender conceitos, não no resultado. E isso tudo nos leva para o próximo aprendizado.

2. Errar faz parte, tenha paciência e resiliência (muita resiliência).

Você conhece o termo “caminho feliz”? Em algum momento da sua jornada com programação você vai escolher trilhar esse caminho. O caminho feliz é uma expectativa muito otimista que o desenvolvedor tem a respeito das suas demandas. Pensar que programação é um caminho feliz onde sempre os astros vão se alinhar e te guiar por uma jornada indolor e esplêndida é uma grande inocência.

Assim como em Dark Souls você vai ter caminhos que aparentemente são inofensivos. No universo de Dark Souls existem baús que o jogador pode abrir e encontrar itens extremamente preciosos para a aventura.

Baú inofensivo.

Entretanto, ainda estamos falando de Dark Souls e isso não poderia ficar assim. Após abrir vários baús você vai se deparar com um novo inimigo, o terrível Mimic. Ele é idêntico a um baú e quando você está abrindo, você sofre um ataque pesadíssimo que muitas vezes faz com que você perca todo o seu progresso no jogo com apenas um golpe.

Mimic não inofensivo.

Quando o jogador perde todo seu progresso no jogo ou na programação é algo muito frustrante. Ter que refazer um caminho ou toda uma tarefa pode levar algumas pessoas a desistirem. A questão é que isso faz parte, e está tudo bem. Nem sempre o caminho feliz vai se concretizar, e se existe algo que a área de programação exige é resiliência para que os seus erros gerem um aprendizado para que no futuro você não cometa os mesmos erros. Com o tempo e experiência você aprende a identificar melhor os problemas, demandas, estimativas de tempo e soluções para os seus projetos. Até os Mimic’s possuem detalhes sutis, mas que permitem que você saiba a diferença entre um baú e um inimigo.

3. Não subestime o tamanho dos seus inimigos (bugs)

Ainda falando de inimigos. Em Dark Souls temos inimigos imensos que chegam a ser 20 vezes maiores que você. Porém, a maioria deles são fáceis de derrotar, como por exemplo o The Last Giant ou até mesmo o Ancient Wyvern que você derrota com apenas um golpe (é isso que eu chamo de quebra de expectativa).

The Last Giant.
Ancient Wyvern.

Enquanto isso, do outro lado temos inimigos que possuem uma estatura normal e muitas vezes eles proporcionam um desafio imenso ao jogador. O inimigo que eu mais demorei a derrotar foi a Sister Friede que em um primeiro momento não parece ser difícil, mas durante a batalha evolui para três novas formas (uma mais difícil que a outra).

A quase imbatível Sister Friede.

Os bugs são os inimigos dos desenvolvedores. E vou te dar uma dica de ouro: nunca subestime o tamanho deles. Sempre que você precisar enfrentar um bug preste muita atenção em tudo que será feito e todas as reações que ele pode ter no seu código. Resolver bugs envolve primeiro descobrir o problema, e se possível replicar em um ambiente local e controlado, debugar muito, propor soluções, aplicar uma solução efetiva e por último entender quais partes do código serão afetadas para que o desenvolvedor e o Q.A. testem da melhor maneira. Bugs podem evoluir e as vezes em mais de 3 formas. Por isso é sempre bom estar preparado para enfrentar eles, e a melhor opção é nunca subestimá-los.

4. Desenvolver não fica mais fácil, é você que fica melhor

A teoria da curva de aprendizagem é algo que se aplica totalmente em Dark Souls e na programação. Em ambos os casos você possui desafios e precisa superá-los e quanto mais tempo despendido maior será a sua proficiência. Dark Souls é conhecido por um jogo que você precisa reconhecer os famosos “moveset’s” dos inimigos. Toda batalha possui um padrão de movimentação e ataque, com o tempo você consegue prever como será atacado e isso possibilita reagir com uma esquiva ou um contra ataque. Bugs e tarefas também possuem seus padrões de comportamento e solução, por isso quanto mais você programa, melhor você fica. É comum você aplicar uma mesma solução para problemas parecidos. Não existe atalhos para ser um bom desenvolvedor, é necessário praticar cada vez mais. No jogo não importa muito qual a arma que você está utilizando e na programação não importa muito qual plugin do editor você tem. O que realmente faz com que você evolua é quando mesmo morrendo no jogo ou tendo sua pull request negada, você não desiste e tenta mais uma vez. Até que você fique bom, e não o desafio mais fácil.

A tela mais vista pelos jogadores de Dark Souls.
Um dia normal. Uma pull request sendo negada.

5. A sensação de superar um desafio é recompensadora

E para encerrar quero te dizer que a sua jornada com programação pode ser difícil, frustrante, complicada e desanimadora. Mas tenho certeza que quando você olhar para trás e ver o quanto evoluiu tecnicamente e como toda essa dificuldade está forjando você e te tornando uma pessoa melhor. Posso garantir, esse sentimento é recompensandor. Superar um desafio que antes você julgava ser demasiadamente difícil é recompensador. Enfrentar todos os desafios para construir sistemas e ferramentas que melhoram o dia-a-dia das pessoas é recompensador. Ser melhor do que ontem é recompensador. Por isso te digo que não é fácil programar, mas vale muito a pena.

“Se você está atravessando o inferno, bem, continue atravessando.” (Winston Churchill)

--

--