{"id":52864,"date":"2024-11-20T15:17:59","date_gmt":"2024-11-20T18:17:59","guid":{"rendered":"https:\/\/quebrandocontrole.com.br\/site\/?p=52864"},"modified":"2024-11-20T15:18:05","modified_gmt":"2024-11-20T18:18:05","slug":"por-um-punhado-de-bits-motor-de-arranque","status":"publish","type":"post","link":"https:\/\/quebrandocontrole.com.br\/site\/por-um-punhado-de-bits-motor-de-arranque\/","title":{"rendered":"Por Um Punhado De Bits: Motor De Arranque"},"content":{"rendered":"\n<p>N\u00e3o \u00e9 preciso ter conhecimentos de mec\u00e2nica de autom\u00f3veis para ser um ex\u00edmio motorista mas ajuda a dominar o b\u00f3lido se conhecer o b\u00e1sico. A express\u00e3o &#8220;motor de arranque&#8221; se refere a um pequeno motor el\u00e9trico que todo carro tem, cuja fun\u00e7\u00e3o \u00e9 fazer o motor principal funcionar. Seria o equivalente a &#8220;pegar no tranco&#8221;, sem a necessidade de algu\u00e9m empurrar o ve\u00edculo numa descida ou daquela pessoa &#8220;manivelar&#8221; na frente do carro, como a gente v\u00ea nos filmes antigos.<\/p>\n\n\n\n<p>Na programa\u00e7\u00e3o de jogos, cedo ou tarde a gente se depara com a pergunta: por onde eu come\u00e7o? Traduzindo, qual motor de arranque (engine) \u00e9 a melhor para come\u00e7ar a produzir games? No tempo do bit lascado a pergunta era um pouco diferente: qual linguagem de programa\u00e7\u00e3o era a melhor para come\u00e7ar?<\/p>\n\n\n\n<p>Se acredita que em termos de engine o barato se resume a Unity ou Unreal, est\u00e1 perdendo um bonde e tanto, ainda que essas duas sejam de longe as mais famosas. N\u00e3o sendo elas, existem centenas de op\u00e7\u00f5es, a depender apenas das suas habilidades, tipo de jogo a ser desenvolvido ou apenas prefer\u00eancia pessoal. Existem engines que atendem muito bem desde uma simples narrativa interativa at\u00e9 um massive online 3D multiplayer de mundo aberto. Escolher a ferramenta \u00e9, ao mesmo tempo um exerc\u00edcio de abstra\u00e7\u00e3o e uma arte. Escolher errado pode comprometer n\u00e3o apenas o resultado final, quanto desperdi\u00e7ar um tempo precioso que certamente far\u00e1 falta mais adiante.<\/p>\n\n\n\n<p>Mas qual \u00e9 realmente a fun\u00e7\u00e3o do motor e qual seria o pr\u00e9 requisito para uma escolha acertada? Conhecimento. Conhecer o que cada motor faz ou seu desempenho \u00e9 essencial e para isso voc\u00ea precisa conhecer um pouco de mec\u00e2nica b\u00e1sica, para entender o que est\u00e1 procurando.<\/p>\n\n\n\n<p>Aqui vai um pequeno exemplo do que estamos falando: voc\u00ea realmente sabe o que \u00e9 necess\u00e1rio para colocar uma figurinha de um personagem fofo 2D, de digamos 150&#215;200 pixels no centro da tela do seu monitor? Sabe o que acontece dentro do device (computador, celular ou console)? Vou tentar te explicar em poucos par\u00e1grafos.<\/p>\n\n\n\n<p>Em primeiro lugar \u00e9 preciso saber &#8220;onde&#8221; fica a mem\u00f3ria de v\u00eddeo, lembrando que toda mem\u00f3ria \u00e9 linear, sequencial e mapeada por endere\u00e7os. Essa tal mem\u00f3ria de v\u00eddeo nada mais \u00e9 do que uma esp\u00e9cie de &#8220;fotografia digital&#8221; do que o usu\u00e1rio est\u00e1 vendo no monitor e nela os pixels s\u00e3o representados pelas suas pr\u00f3prias cores. Saber &#8220;onde&#8221; n\u00e3o \u00e9 suficiente. Tamb\u00e9m \u00e9 necess\u00e1rio saber &#8220;como&#8221; colocar os pixels nos seus devidos lugares.<\/p>\n\n\n\n<p>Esse &#8220;como&#8221; depende muito da profundidade de cor, usada no momento pelo device. Hoje em dia o mais comum \u00e9 uma profundidade de 32 bits, ou seja, 4 bytes representando as cores prim\u00e1rias (Red, Green, Blue) e mais um byte que pode ser usado para v\u00e1rios prop\u00f3sitos. Em tempo: \u00e9 mais f\u00e1cil &#8220;trabalhar&#8221; com 32 bits, mesmo sobrando um byte do que com 24 bits, que seria o mais l\u00f3gico.<\/p>\n\n\n\n<p>De posse dessa informa\u00e7\u00e3o, \u00e9 preciso agora saber a posi\u00e7\u00e3o exata, do centro da tela e aqui come\u00e7am os verdadeiros problemas. Matematicamente falando \u00e9 f\u00e1cil: largura total da resolu\u00e7\u00e3o do monitor, menos a largura da figurinha fofa, dividido por 2 e magicamente temos a coordenada X do canto superior esquerdo da imagem. Fazendo o mesmo para a altura, temos a coordenada Y.<\/p>\n\n\n\n<p>Ficou claro que tudo vai depender da resolu\u00e7\u00e3o usada por cada device? E literalmente cada caso \u00e9 um caso, dada a diversidade de resolu\u00e7\u00f5es n\u00e3o apenas entre equipamentos mas num mesmo hardware.<\/p>\n\n\n\n<p>S\u00f3 falta agora transformar X,Y no endere\u00e7o real na mem\u00f3ria de v\u00eddeo, ou seja, largura total da tela do monitor multiplicado pela coordenada Y e somado \u00e0 coordenada X, multiplicado ainda pela profundidade de cor &#8211; 4 (se for 32 bits) ou 3 (se for 24 bits). Se o device estiver com profundidade menor, isso implica no uso de paleta de cores, o que multiplica por 100 a dificuldade toda da programa\u00e7\u00e3o.<\/p>\n\n\n\n<p>Agora s\u00f3 falta transferir, pixel por pixel, a imagem fofa (que tamb\u00e9m estar\u00e1 em algum endere\u00e7o linear da mem\u00f3ria) para a mem\u00f3ria de v\u00eddeo, levando em conta se o pixel \u00e9 transparente ou n\u00e3o. Pixel por pixel, ainda que possa existir uma instru\u00e7\u00e3o no processador para &#8220;mover automagicamente&#8221; blocos de mem\u00f3ria de um lugar para outro.<\/p>\n\n\n\n<p>L\u00e1 em cima, nas camadas (ou motores) de alto n\u00edvel, tudo isso pode se resumir a uma instru\u00e7\u00e3o tipo print x,y,imagem ou alguma coisa derivada disso. \u00c9 algo como &#8220;o trabalho sujo a gente deixa pro motor fazer&#8221;, enquanto dedicamos nossos esfor\u00e7os para melhorar coisas como enredo, belezura das imagens, mec\u00e2nicas alternativas, etc.<\/p>\n\n\n\n<p>Entendeu onde entra esse lance de motor? Se voc\u00ea pretende fazer um mmo3D, ent\u00e3o deve escolher mesmo um motor de caminh\u00e3o (ou de navio) porque o trabalho sujo \u00e9 gigantesco. J\u00e1 se pretende escrever uma narrativa interativa simplificada ou mesmo um jogo 2D de plataforma, um motor de bicicleta el\u00e9trica j\u00e1 d\u00e1 conta do recado. Sabe onde tem um motor desses gr\u00e1tis? No seu navegador preferido e ele se chama HTML. N\u00e3o precisa mais do que isso. O Hipertexto, que deu origem ao HTML \u00e9 basicamente isso: uma narrativa interativa.<\/p>\n\n\n\n<p>Ah, mas pera l\u00e1\u2026<\/p>\n\n\n\n<p>Calma, essa conversa \u00e9 longa e n\u00e3o pode ser feita aqui, em apenas uma coluna. Seriam necess\u00e1rias dezenas delas para, pelo menos, entrarmos em sintonia sobre o que estamos falando, mas o objetivo hoje \u00e9 mostrar que, se est\u00e1 no est\u00e1gio &#8220;qual engine \u00e9 melhor pra fazer o meu jogo&#8221;, ent\u00e3o fica o aviso: tem muita coisa a ser considerada e a opini\u00e3o pessoal de uns e outros pode n\u00e3o ser a melhor op\u00e7\u00e3o.<\/p>\n\n\n\n<p>Pesquisar, conhecer e experimentar s\u00e3o bem mais efetivos, para uma boa escolha.<\/p>\n\n\n\n<p>Ent\u00e3o, se quiser criticar, elogiar, xingar, falar palavras de incentivo, mandar pix pra ajudar na aposentadoria, etc, o canal mais eficiente \u00e9 o velho e surrado e-mail: renato@tilt.net. Sinta-se livre pra descer o sarrafo porque nesta altura do campeonato, meu amigo, eu j\u00e1 sofri todas as cr\u00edticas positivas e negativas que um gamedev pode sofrer.<\/p>\n\n\n\n<p>Imagem: Microsoft Image Creator<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;Qual engine \u00e9 melhor pra fazer o meu jogo?&#8221;<\/p>\n","protected":false},"author":78,"featured_media":52879,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[2042,8,6],"tags":[1440,1597,1393,1559],"class_list":["post-52864","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-indie","category-noticias","category-ultimas-noticias","tag-engine","tag-por-um-punhado-de-bits","tag-renato-degiovani","tag-tilt-online"],"wpmagazine_modules_lite_featured_media_urls":{"thumbnail":["https:\/\/quebrandocontrole.com.br\/site\/wp-content\/uploads\/2024\/11\/Engine-Renato-Degiovani-150x150.webp",150,150,true],"cvmm-medium":["https:\/\/quebrandocontrole.com.br\/site\/wp-content\/uploads\/2024\/11\/Engine-Renato-Degiovani-300x300.webp",300,300,true],"cvmm-medium-plus":["https:\/\/quebrandocontrole.com.br\/site\/wp-content\/uploads\/2024\/11\/Engine-Renato-Degiovani-305x207.webp",305,207,true],"cvmm-portrait":["https:\/\/quebrandocontrole.com.br\/site\/wp-content\/uploads\/2024\/11\/Engine-Renato-Degiovani-400x600.webp",400,600,true],"cvmm-medium-square":["https:\/\/quebrandocontrole.com.br\/site\/wp-content\/uploads\/2024\/11\/Engine-Renato-Degiovani-600x600.webp",600,600,true],"cvmm-large":["https:\/\/quebrandocontrole.com.br\/site\/wp-content\/uploads\/2024\/11\/Engine-Renato-Degiovani-1024x674.webp",1024,674,true],"cvmm-small":["https:\/\/quebrandocontrole.com.br\/site\/wp-content\/uploads\/2024\/11\/Engine-Renato-Degiovani-130x95.webp",130,95,true],"full":["https:\/\/quebrandocontrole.com.br\/site\/wp-content\/uploads\/2024\/11\/Engine-Renato-Degiovani.webp",1200,674,false]},"categories_names":{"2042":{"name":"Indie","link":"https:\/\/quebrandocontrole.com.br\/site\/category\/noticias\/indie\/"},"8":{"name":"Not\u00edcias","link":"https:\/\/quebrandocontrole.com.br\/site\/category\/noticias\/"},"6":{"name":"\u00daltimas not\u00edcias","link":"https:\/\/quebrandocontrole.com.br\/site\/category\/noticias\/ultimas-noticias\/"}},"tags_names":{"1440":{"name":"Engine","link":"https:\/\/quebrandocontrole.com.br\/site\/tag\/engine\/"},"1597":{"name":"Por um punhado de Bits","link":"https:\/\/quebrandocontrole.com.br\/site\/tag\/por-um-punhado-de-bits\/"},"1393":{"name":"Renato Degiovani","link":"https:\/\/quebrandocontrole.com.br\/site\/tag\/renato-degiovani\/"},"1559":{"name":"Tilt Online","link":"https:\/\/quebrandocontrole.com.br\/site\/tag\/tilt-online\/"}},"comments_number":"0","_links":{"self":[{"href":"https:\/\/quebrandocontrole.com.br\/site\/wp-json\/wp\/v2\/posts\/52864","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/quebrandocontrole.com.br\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/quebrandocontrole.com.br\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/quebrandocontrole.com.br\/site\/wp-json\/wp\/v2\/users\/78"}],"replies":[{"embeddable":true,"href":"https:\/\/quebrandocontrole.com.br\/site\/wp-json\/wp\/v2\/comments?post=52864"}],"version-history":[{"count":0,"href":"https:\/\/quebrandocontrole.com.br\/site\/wp-json\/wp\/v2\/posts\/52864\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/quebrandocontrole.com.br\/site\/wp-json\/wp\/v2\/media\/52879"}],"wp:attachment":[{"href":"https:\/\/quebrandocontrole.com.br\/site\/wp-json\/wp\/v2\/media?parent=52864"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/quebrandocontrole.com.br\/site\/wp-json\/wp\/v2\/categories?post=52864"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/quebrandocontrole.com.br\/site\/wp-json\/wp\/v2\/tags?post=52864"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}