Por que Unity se Unreal é melhor?

Se eu (Junior_Djjr) acredito que Unreal 5 é a melhor engine do mundo, por que eu ainda recomendo você, um desenvolvedor indie, a escolher usar Unity? Ou Godot?

Sou co-fundador da equipe indie 2nibble, produtor do jogo IMPUNES, uso Unity há vários anos, mas eu comecei a focar somente nos últimos 4 anos, e não pretendo mudar.

Muitas pessoas me perguntam sobre isto, então decidi explicar aqui a minha visão sobre qual engine você deve escolher para começar a desenvolver jogos indies.

 

Unreal 5 é a melhor engine do mundo

…Para os jogos triple-A, pois para indies, na minha opinião, Unity é a melhor.

Pronto, isto foi um TLDR, mas vamos continuar…

Eu não preciso explicar os motivos da Unreal, principalmente a Unreal 5, ser uma engine de jogos tão incrível, pois a internet inteira faz esse trabalho e com certeza você já está enjoado de ver gente falando disso.

No entanto, há algumas coisas específicas que se destacam mais e são muito noticiadas pela mídia: Nanite, Meta Human e Lumen.

Nanite

Nanite é realmente uma tecnologia muito impressionante que será cada vez mais comum vermos engines de jogos usando algo similar a isto, mas eu tenho alguns “poréns” para fazer.

Esta imagem demonstra um uso onde Nanite é realmente útil.

A grosso modo, possibilita o uso de modelos 3D com bilhões de polígonos sem muito impacto no desempenho. Funciona com um incrível algoritmo que consegue definir quais polígonos precisam ou não precisam renderizar. Por exemplo, se um polígono é menor que 1 pixel, ou está sendo ocluído por algo, ele não precisa ser renderizado. Você também não precisa fazer vários níveis de LOD pois os polígonos automaticamente se ajudam nisto…

…Ou precisa? Afinal, LOD não é só diminuir a quantidade de polígonos. Por exemplo, um prédio, de perto ele é HD, highpoly, janelas com profundidade etc. De muito longe, ele pode ser representado simplesmente por um cubo com uma textura tiling de 64px com o desenho da parede e janelas, tudo isso num único material, única mesh, única textura, através de LOD. O Nanite não vai fazer isto para você, o modelo continuará renderizando bastante polígonos (ainda menos que de perto), o que é visualmente superior, mas de muito longe você nunca notará diferença comparado com um cubo com textura lowres, que é sempre muito mais performático. E você ainda pode usar um shader mais simplificado para ser usado de longe etc.

Em geral, soluções de otimização manuais acabam se sobressaindo em comparação com soluções automáticas, e as soluções automáticas acabam sendo melhores em casos específicos, ou como “atalhos” para diminuir a carga de trabalho do desenvolvedor.

O que é mais performático? Um algoritmo que está constantemente tentando otimizar a quantidade exagerada de polígonos do seu jogo, ou, simplesmente, os polígonos e draw calls não existirem?

Sim eu sei que Nanite é mais que otimizar os polígonos de uma mesh, mas perceba que esta tecnologia é um caso de uso muito específico que, na real, não substitui totalmente o método convencional e só é útil para jogos extremamente highpoly, tanto que essa tecnologia normalmente é apresentada em uso de meshes exageradamente highpoly, como 3D scans com milhões de polígonos, ou seja, casos de uso que jogos normalmente não fazem e provavelmente também não será o seu caso.

Você vai fazer um jogo deste nível? Sim? E realmente é mais performático do que um bom uso de LOD? Então ok, vai lá. Mas se não é o seu caso de uso, não faz sentido você usar a existência desta tecnologia para decidir qual engine escolher.

E ainda falando sobre o uso de LOD, sempre que as pessoas compararam Nanite com LOD, usam demonstrações claramente ruins de uso de LOD. Neste sentido, Nanite realmente ajuda, no entanto, um LOD muito bem criado é mais performático, e com qualidade visual muito próxima do Nanite.

Por exemplo, você tem resultados altamente otimizados com o uso de LOD hierárquico para jogos de mundo aberto grandes (GTA V por exemplo usa esse método) e uso de LODs “impostores” para objetos mais complexos, como vegetação: funciona usando uma única face com um algoritmo que converte o ângulo de visão para uma parte da textura, aumenta um pouco a VRAM mas é muitíssimo otimizado com excelente resultado visual, nós usamos no IMPUNES.

Nota: poderia ser um único triângulo, mas algo mais redondo é bom para cortar os pixels inúteis de passar pelo shader.

Detalhe que a versão chinesa da Unity já tem a sua própria “Nanite” (e Lumen também). Ainda não é esperado que chegue pra versão “normal” da Unity, mas eu acredito que tudo é questão de tempo.

Outra, Nanite tem limitações, só funciona em geometrias estáticas (sem nenhuma deformação), não pode ser usado em geometrias finas como cabelos, gramas, também não suporta faces que são muito próximas umas das outras e não suporta bem o uso de transparência. Mesmo que essas limitações sejam resolvidas no futuro, ainda assim, o meu ponto é que a mídia divulga ela como sendo uma tecnologia perfeita e que será usada em todos os jogos.

Em suma, Nanite é uma tecnologia incrível e de fato há utilidade, tanto que jogos triple-A começaram a usar recentemente, mas as pessoas têm que entender que não é perfeita e o uso dela é mais específico do que você imagina. Isto não te possibilitará criar um jogo mal otimizado, ligar um botão e automaticamente tudo é otimizado sem precisar criar LODs, não é assim que as coisas funcionam.

Meta Human

Com o Meta Human você pode criar personagens altamente realistas do jeito que você quiser…

…Ou não? Se você já tentou copiar uma pessoa real pro Meta Human, você vai notar que, na real, é a beira do impossível, pois é extremamente limitado e genérico.

Eu, sinceramente, não entendo o hype que se criou em torno do Meta Human. Reallusion Character Creator é muito superior, e consegue criar qualquer estilo de personagem, não só humanos realistas, mas também outros humanoides de horror, fantasia, cartoon etc.

No momento custa 300 dólares (1500 reais), enquanto Meta Human é grátis exclusivo para Unreal Engine, mas se você está criando um jogo do nível que precisa de personagens deste nível de qualidade, eu tenho certeza que você tem esse dinheiro para investir (e não estou sendo patrocinado). Além de poder usar em outras aplicações e engines. Perceba como que você tem algo melhor que Meta Human pra Unity.

Mas falando nisto… Você realmente está criando um jogo que requer este nível de qualidade para precisar de algo como Meta Human ou Reallusion Character Creator? Se sim, ok, vai lá, mas antes teste se o Meta Human realmente consegue te satisfazer, pois ele é bem genérico (tanto que eu já vi muitas pessoas reclamando que claramente dá pra ver quando um jogo foi criado com Meta Human, pois os personagens parecem mais genéricos do que devia). Mas se você não pretende criar jogos desse nível de realismo e detalhes, a existência do Meta Human não é motivo para você escolher Unreal, ou melhor, como eu expliquei, Reallusion Character Creator é melhor, e nele não importa qual engine você escolha.

Eu duvido que você viu alguém divulgando o Reallusion, mas você já viu muitos divulgando o Meta Human, certo? Por que isto acontece?

Só 1 ponto que eu critico muito: A licença dele, até o momento, não permite o uso para criadores de personagens in-game, algo que no Meta Human eu acredito que permite.

Lumen

Eu tenho alertas sobre Nanite, e críticas sobre Meta Human, mas Lumen eu tenho praticamente só elogios. E eu, e muitas pessoas por volta da comunidade indie da Unity, também adoraria que Unity trouxesse algo como Lumen.

No entanto, ainda dou um alerta: não existe almoço grátis, Lumen é muito mais pesado que outros métodos convencionais de iluminação, mas em geral, se você quer gráficos, vale a pena. Em geral, qualquer grande sistema assim há custo de desempenho e complicações de implementação, não há como você querer tudo ao mesmo tempo. Mas Lumen é um bom substituto para a iluminação por raytracing.

No momento, no IMPUNES a gente usa LUMINA, uma iluminação indireta global em tempo real que utiliza voxels (à grosso como, é como se fosse um raytracing de pixels 3D, sem o uso de baking estático e lightmaps) e é relativamente bem performática. Inferior ao Lumen, mas dá pro gasto.

Geralmente projetos de iluminação global realtime pra Unity usam Enlighten, que é também muitíssimo usada em jogos da Unreal. Ou seja, em outras palavras, a iluminação da Unity e Unreal podem ser basicamente iguais (tanto que muita gente pensava que IMPUNES era Unreal, pois a gente usava Enlighten). No momento o foco da Unity está no APV, que é uma iluminação bem melhor, ainda muito limitada, mas extremamente otimizada inclusive para mobile. Possivelmente usaremos como opção para PCs fracos no IMPUNES.

Demonstração do APV da Unity, não tão avançado e dinâmico quanto Lumen, mas é super performático.

Algo engraçado também é que a Unity sempre é ruim em escolher nomes para o marketing. Você consegue imaginar um vídeo no Youtube chamado “CONHEÇA O ADAPTATIVE PROBE VOLUMES DA UNITY!”? O nome “Lumen” é muito melhor!

Só é importante sempre ter em mente que as comparações podem enganar. Lumen não tem uma diferença de iluminação tão diferente assim do Enlighten, mas de fato é um pouco mais realista e lida super bem com objetos dinâmicos (a iluminação passa em tempo real quando uma porta se abre etc), além de simplificar o desenvolvimento do jogo não precisando de baking e separação do que é estático e dinâmico, e por isso que realmente é tão superior.

 

Unreal é “open source”

Primeiramente, não é. Ela é “código-fonte disponível”, não é aberto, mas tanto faz.

O real ponto é que, Unreal Engine pode ser recompilada para fazer alterações no núcleo de como a engine funciona, e empresas triple-A gostam disso pois eles têm grandes mentes que podem expandir ou melhorar a engine para casos específicos de determinado projeto de jogo.

Você, um indie que está começando ou tem uma equipe pequena, realmente sente a necessidade de alterar o funcionamento da Unreal Engine e tem habilidade pra isto? Sim? Então ok, legal, mas se a resposta é “não”, isto não é motivo nenhum para você escolher Unreal.

Como eu disse, isto é muito útil para triple-A, muito raramente algum indie usará este benefício, e se usar, será algo mais voltado ao estudo técnico e não pela produtividade de um produto.

Outro ponto, Unity também é, em grande parte, “código-fonte disponível”, só não é do nível que você consegue recompilar a engine, mas você consegue sim alterar o funcionamento de grande parte dela, principalmente gráficos.

Falando nisso, mesmo sem alterar nenhum código fonte, você consegue criar novos pipelines para fazer o jogo renderizar do jeito que você quiser (o que é muito útil se você está fazendo um jogo com gráficos muito específicos, mais conceitual ou procura uma extrema otimização cortando e simplificando pedaços da engine gráfica).

 

Unity tem melhores taxas que Unreal

É difícil acreditar que as pessoas erram tanto quanto falam sobre este assunto, pois você encontra estas informações muito facilmente com segundos de pesquisa. Ou isto é preguiça, ou é desonestidade para vender a Unreal (por exemplo, quem vende cursos, enquanto eu vendo nada pra Unity, então não há motivos pra eu ser desonesto aqui).

Unreal: 5% após 1 milhão de dólares no ano.

Unity 6: 2,5% após 1 milhão de dólares no ano. No máximo.

Ou seja, a taxação da Unity é metade da Unreal, e nas versões anteriores a taxa é 0.

E vai mais fundo que isto: na Unity, existe 2 cálculos, o de vendas e o de engajamentos, e o que você vai pagar é o menor deles, não o maior.

Ou seja, se o cálculo com base em engajamentos seja um custo menor do que o de vendas, você vai pagar menos de 2,5%, até mesmo, 0!

Pra você ter noção o quão superior a Unity é neste sentido, se você fizer 10 milhões de dólares em lucros com o seu jogo, mas o seu jogo tiver menos de 1 milhão de engajamentos (num caso hipotético de um jogo muito lucrativo mas de poucos jogadores, o que pode acontecer num aplicativo caro para empresas), na Unreal você vai pagar 500 mil reais de taxa, na Unity, você vai pagar 0. Sim, literalmente zero.

E se você usa a versão antiga (antes da Unity 6), a taxa sempre será 0, tendo de pagar só 11 mil reais (pois quando você lucra demais, te obriga a fazer upgrade pra versão Pro).

Geralmente a única crítica que a comunidade Unity ainda faz é que esse negócio de “engajamentos” é estranho e confuso, algo que poderia só tirar da jogada, mas lembrando, isto não foi criado para possivelmente cobrar mais, mas sim, para possivelmente cobrar menos.

Se você ainda não entendeu, Unity tem uma calculadora super amigável.

Espere… Por que você continua lendo isto? Você realmente acha que você fará mais de 1 milhão de dólares por ano com o seu jogo??

Toda essa discussão não tem importância nenhuma para pequenos desenvolvedores indies. Na verdade, essa é só uma técnica para engines lucrarem com jogos de alto sucesso, e inclusive, é muitíssimo apoiada por pequenos desenvolvedores, pois isto faz com que a engine busque a criação de maiores sucessos na indústria.

Eu, e muita gente, prefere que a engine cobre esses 2,5% do que cobrar nada, pois eu sei que não serei diretamente afetado, mas a engine tem maiores incentivos de evoluir em busca de criar grandes sucessos, portanto a própria engine melhora com esta visão de mercado. A não ser que eu faça um gigante sucesso, mas 2,5% não seria uma preocupação quando se tem 1 milhão de dólares por ano.

Há meio ano atrás, durante só 1 semana, o antigo CEO da Unity (ele era da EA, o que esperar dele, né?), anunciou que iria cobrar não por vendas, mas sim por instalações, uma ideia completamente idiota que faria a Unity cobrar por jogos grátis (é tão absurdo que alguns caras da Unity respondiam que não, e outros que sim, nem eles estavam entendendo essa decisão). Detalhe, mesmo que tenha sido muito criticado, ainda era uma taxa muito menor que Unreal, o único problema foi cobrar por instalação e não por vendas, e que queria cobrar por jogos anteriores também (algo que devs de sucesso ficaram furiosos, pois não assinaram isto).

Uma ideia idiota que em só 1 semana voltaram atrás, o CEO foi expulso (ou ele mesmo saiu) e tudo se resolveu, mas até hoje pessoas pensam que Unity ainda está com essa ideia, que durou só 1 semana e levou a troca de CEO. Sendo que, na realidade, a ideia de taxa atual da Unity é melhor que a da Unreal, e o novo CEO da Unity é o cara da Red Hat, ex-presidente da IBM, algo que animou muito eu e a comunidade de desenvolvedores da Unity, inclusive a Unity 6 demonstra ótimo potencial (mais GPU-driven) e anda sofrendo muitas mudanças que focam mais em jogos e menos em filmes etc.

 

O facão contra o canivete-suíço

Unreal: Um facão. Para casos específicos, você resolve tudo numa só facada.

Unity: Um canivete-suíço. Você pode ter dificuldade em alguns casos, mas consegue fazer de tudo.

Eu tenho certeza que você já notou que jogos indies conceituais geralmente são criados na Unity, e jogos realistas focados em gráficos, são criados na Unreal.

Não é atoa que jogos como Viewfinder são criados na Unity, pois, não só a engine, mas toda a comunidade é muito focada em um lado mais conceitual, enquanto Unreal tem uma engine e comunidade mais focada em realismo, uma busca incansável ao triple-A.

A comunidade é algo tão importante quanto a engine em si, pois é da comunidade que você encontrará ajudas, dicas, snippets, assets, inspirações etc. Você não vai criar seu jogo como se estivesse sozinho dentro de uma caverna.

Sempre que eu busco inspiração, eu entro no Reddit da Unity, e você pode perceber como a comunidade é conceitual, gosta de experimentar novas ideias. Às vezes eu fico horas olhando tudo. Alguns dias estão melhores que outros, mas sempre interessantes.

Em comparação, dê uma olhada no Reddit da Unreal, geralmente são só demonstrações cosméticas, eu sinceramente não me atraio por comunidades assim, mas pessoas são diferentes, provavelmente você vai se identificar mais com esse lado do game dev.

Mesmo que seja algo muito criticado, Unity tem uma separação de gráficos: HDRP, focado em gráficos realistas, e URP, focado em desempenho. Ignorando um pouco as críticas (válidas) desta decisão, há pontos positivos, pois o URP é uma maneira muito otimizada de criar jogos que não são altamente focados em gráficos (nós usamos no IMPUNES, mas falta muitas features que nos obrigam a comprar assets gráficos, o que indiretamente aumenta o custo do jogo). No entanto, HDRP, que teoricamente são os gráficos para competir com Unreal, mesmo que consiga excelentes resultados, tem menos otimização que Unreal, o que é mais outro motivo para escolher Unreal se o seu foco realmente são gráficos.

A real é que mesmo em questão de gráficos, Unity é muito forte. Sons Of The Forest, por exemplo, é um dos jogos atuais de gráficos mais incríveis, e é Unity.

Isto acontece principalmente porque Unity não atrai muitos desenvolvedores focados no lado cosmético, atrai mais programadores, e os experts em gráficos acabam preferindo Unreal.

Mas em geral, eu me sinto muito melhor em torno da comunidade da Unity do que Unreal, pois eu me interesso mais por ideias, conceitos, do que a luta incansável pelo triple-A-like.

Isto também tem muita influência pelos assets disponíveis. Afinal, qualquer jogo minimamente grande, vale mais a pena você economizar os custos comprando assets que são considerados secundários, e a Unity Asset Store é muito vasta, com muita coisa modular para diferentes ideias.

Um comentário à parte, a UI da Unity é muito mais bonita, limpa, moderna e organizada.

 

Oportunidades de trabalho

Não existe a menor dúvida de que há muito mais oportunidade de trabalho com Unity do que Unreal, principalmente quando o assunto é programação ou o uso geral da engine.

Unreal é uma engine quase que exclusivamente para jogos 3D realistas, você consegue fazer outras coisas com ela, mas não foi feita com foco naquilo. Não só a engine, mas a comunidade também não tem foco naquilo.

Enquanto com Unity você pode trabalhar com jogos realistas 3D ou 2D, estilizados 3D ou 2D, também tem ótimo suporte para o trabalho com animações / film maker em tempo real (sem a necessidade de renderização), muito usada não só para jogos mas mesmo aplicativos desktop ou mobile, mixed reality (AR/VR) e tal.

Por exemplo, nós da 2nibble ano passado fizemos um trabalho de VR para ser usado para treinar profissionais da saúde, e mesmo que possa ser feito com Unreal, o suporte de VR, e otimização da Unity pra isto é excelente comparado com Unreal.

Farias, da nossa equipe, trabalha há muitos anos com parceiros da Microsoft, hoje MVP da Microsoft, com Hololens 2, é claro, usando Unity.

Se você quer se aprofundar numa engine focando em oportunidades de trabalho, Unity é muito melhor, a não ser que você realmente queira se aprofundar especificamente em um trabalho mais voltado ao cosmético/artístico (o tal “facão” que eu expliquei), daí sim Unreal é melhor para você.

 

Programação

Não importa se você é um programador experiente, iniciante ou nunca programou na vida, eu realmente recomendo Unity quando o assunto é programação.

Se Unreal é a engine perfeita para os designers gráficos de realismo, Unity é a engine perfeita para os programadores.

Não só pela engine e comunidade, mas eu sinto que a própria empresa demonstra bastante atenção aos programadores, enquanto eu sinto que a Epic Games pensa mais em investidores e marketing. Isto é muito notável quando se compara as apresentações anuais de ambas as empresas, a Epic Games normalmente apresenta Unreal mostrando os jogos que usaram ela, enquanto a Unity é uma apresentação muito mais técnica para desenvolvedores.

Unreal usa a linguagem de programação C++, alguns programadores mais nerds devem preferir, mas mesmo que prefira, vamos lembrar que C++ requer muito mais trabalho, muitas mais linhas de código, e portanto dificulta mais a produtividade comparação à Unity, que usa C#.

C# é uma excelente programação, pois é uma evolução mais “high level” do C++.

Para não causar confusões, “high level” se refere ao nível humano, não que necessariamente é melhor ou pior que as programações low level (nível de máquina).

Isto é, se em C/C++ você faz isto:

if (str.find(“example”) != std::string::npos)

Em C# você faz isto:

if (str.Contains(“example”))

Em geral, C# é uma programação muito mais amigável, humanamente falando, é muito mais agradável e simples de se programar, enquanto C++ é algo mais “cru”, ao nível de máquina, ainda muito preferida por programadores mais “raiz”, mas cada vez mais sendo deixada pra trás por soluções mais modernas.

Mas então por que C++ ainda é tão usada nas engines de jogos? A RAGE, da Rockstar Games, assim como muitas engines, também são C/C++. Isto é porque C++ lhe dá um acesso melhor ao nível de máquina, o que possibilita toques finos de otimização. Em geral, C/C++ é bem mais performático que C#.

Então Unity é menos performático que Unreal porque não é C/C++? Não, quem disse que Unity não é C/C++? A engine é, o C# é só o código do seu próprio jogo.

Em outras palavras, toda a engine é altamente otimizada com o C/C++, mas seu jogo é escrito em C#, e com o uso de bons métodos de compilação (Burst, IL2CPP), o seu código será tão otimizado quanto o próprio C/C++ (especialmente com o IL2CPP), com a vantagem de uma programação bem mais amigável de se trabalhar.

E se você imagina que o código do seu jogo será menos otimizado por ser C#, vou tentar abrir a sua mente: Se você está criando um jogo tão grande e complexo, você dificilmente vai ter tempo para ficar otimizando o seu C++, enquanto no C#, você terá menos esforços para programar, um esforço este que lhe aumentará as oportunidades de você procurar otimizar o seu código.

Em outras palavras, a diferença da performance de um código C++ e C# é muito pequena, e no final das contas, o que mais importa é a otimização do seu próprio código que você escreveu. Não bote culpa no fogão por você ter feito comida ruim, mas com um fogão mais agradável de se trabalhar, há mais chances de você fazer comida melhor.

E olha que ainda não chegamos no DOTS, ein? Mais baixo do post você vai aprender que, na verdade, Unity consegue ter um desempenho de programação muito melhor que Unreal.

Mas então quer dizer que desenvolvedores da Unreal programam os jogos em C++?

Não, justamente pelos motivos que eu falei, não é tão amigável, principalmente para iniciantes em programação, e portanto eles preferem programar usando programação visual: blueprints.

Se você nunca programou antes, você provavelmente vai se sentir atraído pela programação visual, mas acredite em mim, e não só em mim, em longo prazo, não vale a pena.

Há inclusive quem diga que o programador de programação visual nem sequer pode ser considerado um programador, na minha opinião, pode sim ser considerado um programador, mas obviamente é num nível bem diferente de um programador que trabalha em texto.

É como discutir se turismo espacial é considerado astronauta, até pode ser, mas é bem diferente do cara que trabalha na ISS, né?

@2nibble

Jogo IMPUNES: Física balística (tiros)

♬ original sound – 2nibble

Eu sei que é assustador, ainda mais em programações low-level, como C/C++, mas Unity, com seu C#, deixa tudo menos assustador, e você, com certeza, vai gostar de programar em texto C# pra Unity, em pouco tempo não sentirá nenhuma falta de programação visual.

Mas sim, Unity também tem programação visual, mas a gigantesca maior parte da comunidade prefere o bom e velho (mas não tão velho) C#, sentindo pouca necessidade do uso da programação visual, e em longo prazo, a curva de aprendizado te leva às alturas.

 

Quais features da Unity são melhores que Unreal?

Como eu expliquei no início da postagem, muitas features interessantes da Unreal são altamente divulgadas pela mídia, mas por algum motivo, as features interessantes da Unity, não são.

Está certo que Unreal há muito mais features interessantes (mas detalhe que muitos vídeos são na verdade assets criados pela comunidade para a Unreal, não é a Unreal), mas cadê a Unity nisso tudo?

Eu expliquei que Unity há muitas vantagens gerais, que Unity é como um canivete-suíço que é boa para qualquer tipo de projeto conceitual e diferente, mas há uma específico que os próprios desenvolvedores de Unreal sentem falta:

DOTS

É aqui que Unity se destaca neste “canivete-suíço”, mas por ser algo tão técnico, não atrai muito a mídia (um rosto realista do Meta Human é mais facilmente apresentável do que isto).

Eu vou tentar explicar da forma mais leiga que eu consigo:

DOTS é uma combinação de tecnologias para desenvolver jogos em forma de uma programação orientada à dados, e portanto, com muito mais desempenho.

ECS é uma parte do DOTS onde os elementos do jogo são controlados com um framework diferente e baseado em dados em vez de objetos, algo que possibilita milhões de entidades (como objetos, NPCs) com baixo impacto no desempenho.

Burst Compiler compila o código do seu jogo de uma maneira extremamente otimizada para o CPU, muito útil para partes do seu jogo que utilizam muitos algoritmos matemáticos, como pathfinding, trabalhos com milhões de objetos/dados etc.

C# Job System lhe possibilita realizar o uso de multithreading (usar múltiplas threads do CPU) para otimizar o seu jogo de maneira fácil e com excelente gerenciamento de memória. Foi desta forma que eu consegui criar um tráfego de mais de 3 mil carros no IMPUNES (numa cena vazia, numa cena preenchida consegue centenas), todos eles detectando colisão e respeitando as leis de trânsito, sendo que a IA das leis de trânsito não estão inclusas no Job, mas se eu quiser eu posso incluir com um pouco mais de trabalho.

Você consegue fazer isto na Unreal, só que será mais difícil e potencialmente menos otimizado.

Perceba que isto beneficia literalmente qualquer projeto, tanto o jogo pequeno, quanto o grande (e detalhe que mesmo que você esteja criando um jogo simples para mobile, você pode usar isto para otimizar o gasto de bateria, não necessariamente o FPS).

Este é o tipo de coisa que realmente é útil para desenvolvedores indies, mas por ser técnico, não aparece na mídia, pois a mídia quer algo mais simples e bonitinho de mostrar.

De novo Unity se mostrando uma ótima engine para os indies, principalmente aos programadores.

O projeto do Megacity por exemplo, que é uma demonstração do poder do DOTS, roda em torno de 5 milhões de entidades ao mesmo tempo. 5 milhões de objetos na Unreal, ativos, na CPU, com esta performance, é impossível (lembrando, objetos controlados por CPU, não estou falando de GPU instancing).

Você pode estar se perguntando por que o Cities Skylines 2, criado na Unity, que teoricamente poderia usar o DOTS para ser otimizado, não é realmente otimizado… Bem, a real é que eles quase não usaram, e o problema desse jogo é muito mais embaixo (esta análise é excelente!). Me parece que foram pressionados para lançar o jogo sem nenhuma otimização.

Aqueles jogos de estratégia com milhares ou milhões de unidades se movimentando com IA e levando tiros e explosões com física, só são possíveis com o uso do DOTS. Por exemplo Diplomacy is Not an Option.

 

Mas e a Godot?

Na minha opinião, eu vejo Godot como uma nova Unity que está nascendo. No entanto, ainda não tem maturidade, ainda há muitas limitações, problemas cosméticos, comunidade pequena mas que aparentemente é muito positiva e unida, mas é uma engine muito boa para fazer jogos bem simples.

Em geral, se você gosta de desenvolver jogos simples em engines como Game Maker e quer continuar nessa pegada, evoluindo um pouco, eu recomendo altamente o uso da Godot, pois eu acho que Unity está num nível um pouco acima do “simples”, e eu acredito no potencial de longo prazo da Godot.

Godot consegue jogos bem similares à Unity, só que Unity tem muito mais maturidade, e isto é muito importante na escolha, pois você pode ter certeza que na internet já haverá soluções para (quase) todos os seus problemas.

Mas o problema é que engines de muita maturidade, como Unity e Unreal, vêm de décadas atrás, e portanto elas vêm sendo remendadas a partir de soluções arcaicas. Uma nova engine, como Godot, é uma ótima oportunidade de uma engine crescer com base em soluções modernas, menos “deprecated”.

 

E outras engines?

Esqueça de todas as outras opções, não faz sentido, a não ser que você seja um hipster.

Criar a sua própria engine, é legal, se você é um belo nerd que está buscando aprendizado e portfólio, mas fazer isto pensando no lado comercial de criar um jogo, é sem sentido.

 

Conclusão

Escolher entre Unity e Unreal é mais complexo do que simplesmente “há features mais avançadas, então vou escolher esta”, mas simplificando bastante:

Unity é melhor para: indies; comunidade; programadores; jogos conceituais; aplicações não-jogos; oportunidades de trabalho.

Godot é melhor para: indies, comunidade, programadores, jogos simples.

Unreal é melhor para: triple-A; artistas em busca do realismo cosmético.

 

[SA] Projeto Urbanize

Atualizado 01/03/24

  • Nova versão lançada para apoiadores alpha! Versão anterior agora para apoiadores beta e versão de 2 meses atrás foi liberada para o público. Veja as novidades no final da postagem.

Urbanize é um projeto de mod com o objetivo de reviver o GTA San Andreas (clássico para PC) adicionando novos NPCs de ambientação em toda San Andreas.

O objetivo final é preencher todo o mapa do jogo com pessoas e objetos, para uma ambientação mais viva e completa, ainda com total foco em estabilidade e otimização.

Urbanize é também um mod de mapa que adiciona centenas de objetos decorativos (props) pelo cenário, para uma melhor ambientação e NPCs interagindo. Opcional mas recomendado. Os objetos de mapa também podem ser instalados no mobile ou console.

O mod usa o poder do CLEO+ com auxílio de .asi e várias animações da Mixamo (como jogos indie), e novas versões incluem muitas animações convertidas do GTA IV.

Ler mais

[SA] Proper Fixes v1.3 (pack de correções para PC/mobile)

Atualizado 11/03/24 23:15

  • Hotfix (para RoSA): Corrigido congelamento na cutscene da missão Body Harvest. Problema presente somente na versão adaptada pro RoSA.

Atualizado 26/02/24 01:43

  • Hotfix: Havia um arquivo corrompido que fazia não carregar uns interiores, como da mansão do Madd Dogg, corrigido.

Atualizado 25/02/24 07:40

  • Adicionado mais de 2 mil novas correções, agora o mod faz quase 4 mil correções e melhorias pro GTA SA! É impossível contabilizar a grandiosidade que é este update.
  • Agora inclui port para Android (quase totalmente completa).
  • Adicionado várias correções de lógica (como falta de entrada para estacionamentos de garagens, garagens inacessíveis etc).
  • Adicionado várias pequenas remasterizações (detalhes 3D adicionais, como cercas).
  • Agora também corrige bugs na água e adiciona piscinas com água fake, animada, por toda San Andreas.
  • A maioria dos bugs de gaps (vãos) pelo chão do jogo já foram corrigidos (ainda é recomendado usar algum anti-aliasing para esconder o problema).
  • Inclui várias correções relacionadas com veículos.
  • O projeto Lumos agora faz parte do Proper Fixes e está sendo continuado nele.
  • Trocado o nome do .asi para “ProperFixes.asi”, onde agora inclui uma pequena alteração no skybox original do jogo, que evita um pouco a cor azul dos gaps no chão.
  • A opção de remover a vegetação distante (LOD Vegetation) agora funciona melhor.
  • Nota: nós conseguimos aumentar a distância de visão dos objetos procedurais (pequenas árvores etc), foi prometido incluir nesta versão do mod, mas muito infelizmente o jogo causa crash após poucos minutos, entre outros bugs, aparentemente relacionado com muitas instâncias de objetos (são 57 mil), e ainda não sabemos resolver.

O maior pack de correções de bugs para GTA San Andreas (PC e Android).

Este pacote mistura todos os principais mods de correções para o mapa do jogo, e adiciona milhares de correções inéditas criadas pela nossa comunidade.

gta-sa-san-andreas-mod-proper-fixes-modpack-patch-map-correcoes-1

Esta é a melhor forma de jogar GTA San Andreas, da maneira que ele realmente deveria ser.

É muito mais que um modpack, é praticamente um re-port de quase todos os arquivos do jogo, juntamente com milhares de correções e melhorias criadas pela nossa comunidade.

gta-sa-san-andreas-mod-proper-fixes-modpack-patch-map-correcoes-2

Este mod faz quase 4 mil correções e muda 16 mil arquivos do GTA SA.

gta-sa-mod-proper-fixes-map-bug-fix-house-prelight-dillimore

  • Corrigido centenas de texturas erradas ou ruins.

gta-sa-san-andreas-mod-proper-fixes-modpack-patch-map-correcoes-4

  • Corrigido centenas de LODs mostrando modelos e texturas erradas em distância.

gta-sa-san-mod-proper-fixes-bug-lod-prelight-bridge-sf

gta-sa-san-andreas-mod-proper-fixes-modpack-patch-map-correcoes-6

gta-sa-mod-proper-fixes-fix-safe-house-casa-bug-improve-mod-maria

  • Corrigido a cor das gramas, agora são mais parecidas com o chão. Recomendado SkyGfx.
  • Todos os arquivos .dff e .txd convertidos (portados) da versão PS2, portanto corrigindo vários bugs no mapa e carros causados pelo port da versão PC (exceto alguns que no PC/Xbox são melhores), e restaurado algumas funcionalidades, como animações.

gta-sa-san-andreas-mod-proper-fixes-modpack-patch-map-correcoes-10

  • Adicionado melhorias que existem somente na versão Xbox, inclusive alguns novos objetos.

gta-sa-san-andreas-mod-proper-fixes-modpack-patch-map-correcoes-9

  • Misturado o mapa do PS2, Xbox e PC. Nada foi perdido, uma fusão do melhor de cada um.
  • Adicionado centenas de correções de pre-lighting (iluminação dos objetos do mapa).

  • Recriado várias iluminações inspiradas nos locais reais (continuação do Lumos).

  • Corrigido centenas de modelos de colisão errados, com colisores invisíveis ou materiais errados.

gta-sa-san-andreas-mod-proper-fixes-modpack-patch-map-correcoes-cluckin-bell

  • Corrigido centenas de objetos mal posicionados no mapa.

gta-sa-san-andreas-mod-proper-fixes-modpack-patch-map-correcoes-8

  • Corrigido dezenas de locais ilógicos.

  • Várias remasterizações de detalhes 3D e texturas.


O mod corrige e otimiza o jogo, mas também adiciona algumas coisas, em geral não causará nenhuma ou quase nenhuma queda no FPS do seu jogo, mesmo em PCs fracos (você pode desativar o LOD Vegetation como nas instruções, mas sinceramente vale a pena ter).

Apague a versão antiga antes de instalar a nova.

Muda praticamente o jogo inteiro, caso encontre novos bugs (e não seja conflito com outro mod), avise.

Ao instalar este mod, desinstale todos os mods de correções que já estão inclusos (no caso do Proper Radar é opcional).

Ainda não adaptado para SAMP.

Necessário SkyGfx com buildingPipe=PS2

Leia o Leiame/Readme!

Atenção: Este mod foi roubado pelo Community Map Fixes mesmo eu já tendo entrado em contato com o autor dizendo que não permito que use meus mods no projeto dele (pois ele nos ataca há anos). Ele propositalmente roubou o mod e não deu créditos, e já é a segunda vez. Eu que nunca roubei mods e fui banido da GTA Forums porque acharam que eu roubo, e UnitedMel rouba mods continua lá sendo aplaudido, mesmo falando absurdos. GTA Forums é uma máfia.


– Proper Fixes:
Autores: Junior_Djjr, Jéssica Natália, Hysen, Aal

– Créditos:
Outras correções variadas: Tripaseca, KaiQ, Kaoru, Zeneric, Dragomazing, Diniz, Mystertv, BMWSauberF1.08, Yucark, luke_skywalker, StreetFonso, SA09
Algumas correções terceiras: atfburner, RJSanModder
SA Optimized Map: Jéssica Natália, Junior_Djjr
LOD Vegetation: Junior_Djjr
Better Leftovers Fix: Jéssica Natália, Junior_Djjr, OjTrue, Yhdf, _F_, KUSTODIY, M. Osborn, dmpbr, El_Narrador, Alexa21, neon, Zeneric
Map Textures Fix: YOEL_44, Jéssica Natália, Junior_Djjr, Blackbird88, Tomasak, Berry
PS2 Map + Fixes: ELDorado, Reyks, atfburner
PS2 files: aap
Xbox Map Features: Hrod Wolf
Grass Color Fix: Junior_Djjr
ORG Patch e algumas texturas: DimZet
Proper Radar: Junior_Djjr, Jéssica Natália (base), GTA Trilogy (base)


Baixar Proper Fixes PC

Versão normal. Note que, para usar com o RoSA Evolved, baixe a outra versão.
ShareMods:
download-baixar-4532137
Google Drive:
download-baixar-4532137
315 MB

Baixar Proper Fixes PC para RoSA Evolved

Baixe este se você usa RoSA Project Evolved
AUMENTE a prioridade da pasta do Proper Fixes (ou abaixe a do RoSA) no ModLoader.
Esta versão só pode ser usada em conjunto com o RoSA Evolved, ou outro pack de texturas adaptado. Não use sem! Senão causará erro.
ShareMods:
download-baixar-4532137
Google Drive:
download-baixar-4532137
96 MB

Baixar Proper Fixes para Android

Versão mobile, pra Android.
Quase totalmente completa. Vídeo.
Opção 1: “data” (completo) (1,5 GB):
download-baixar-4532137
Opção 2: OBB (lite, não completo) (500 MB):
download-baixar-4532137


Recomendado:
Essentials Pack
SkyGfx
Improved Streaming
Project2dfx
MixSets
GraphicsTweaker

Veja também:
[SA] Enterable Hidden Interiors — agora compatível com Proper Fixes e outros mods de mapa!
[SA/SA:DE] Proper Vehicles Retex (texturas HD para veículos)
[SA/SA:DE] Proper Player Retex (CJ com texturas em HD)

[SA] Proper Weapons Retex (armas com texturas HD)

[Fonte primária]

IMPUNES: Crowdfunding do mais novo GTA brasileiro

Finalmente foi aberto o financiamento coletivo para o nosso jogo IMPUNES!

No vídeo, há um trailer de apresentação, e eu (Junior_Djjr) pela primeira vez gravando um vídeo para a internet falando sobre as nossas propostas com este jogo.

Apoie o projeto e receba recompensas:

Apoia.se/IMPUNES

Mais informações lá na página do financiamento. Em breve eu farei uma postagem de devlog detalhado com as novas coisas que fizemos nos últimos meses (e foi muita coisa!).

Estrangeiros também podem participar apoiando.

Jogo IMPUNES: Teaser do crowdfunding

No início ou meados de Janeiro de 2024, nós faremos um financiamento coletivo (crowdfunding) para continuar desenvolvendo o jogo com o apoio de vocês, com várias recompensas. Aguarde até lá!

Este vídeo demonstra algumas das coisas que fizemos nos últimos 2 meses, não é um devlog completo.
  
Siga:
facebook.com/2nibble
instagram.com/2nibble
x.com/2nibbleStudios

  
Doe / Apoie:
2nibble.com/donate