{"id":4083,"date":"2025-01-29T05:38:26","date_gmt":"2025-01-29T05:38:26","guid":{"rendered":"https:\/\/www.goncalo.pt\/por\/?p=4083"},"modified":"2025-03-19T21:29:53","modified_gmt":"2025-03-19T21:29:53","slug":"2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c","status":"publish","type":"post","link":"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/","title":{"rendered":"2025-01-29 &#8211; O tamanho do execut\u00e1vel do meu Game Engine em C++&#8230;"},"content":{"rendered":"\n<p>Vamos ver o tamanho do execut\u00e1vel no meu Game Engine, e como posso ter um jogo a funcionar j\u00e1 com o Game Engine num bin\u00e1rio centenas de vezes inferior ao de outros engines.<\/p>\n\n\n\n<p>Pois como sabemos, podemos em certos Game Engines como o Unreal ou Unity criar execut\u00e1veis com centenas de MB, mesmo que o jogo tivesse apenas um bot\u00e3o, e mesmo noutras frameworks como .Net (que n\u00e3o \u00e9 a indicada para criar game engines), seriam dezenas de MB de mem\u00f3ria ocupadas s\u00f3 para um programa vazio\u2026<\/p>\n\n\n\n<p>E o meu Game Engine, com toda a sua complexidade, ocupa 1 MB de tamanho apenas, e os 200 MB que viram ocupados de mem\u00f3ria foram com toda a complexidade, pois com um bot\u00e3o apenas, carregaria talvez s\u00f3 uns 10 MB de mem\u00f3ria com o peso do engine, coisa que reduzirei no Futuro ainda mais.<\/p>\n\n\n\n<p>Podem ver pelas imagens abaixo que usando certos Game Engines, at\u00e9 um simples e &#8220;miser\u00e1vel&#8221; Jogo do Galo pode ocupar uns 150 MB de tamanho num execut\u00e1vel! Fora as centenas de MB de mem\u00f3ria!<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level-1024x576.png\" alt=\"2025-01-29 - O tamanho do execut\u00e1vel do meu Game Engine em C++...\" class=\"wp-image-4085\" style=\"width:1137px;height:auto\" srcset=\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level-1024x576.png 1024w, https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level-300x169.png 300w, https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level-768x432.png 768w, https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level-1536x864.png 1536w, https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level.png 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">2025-01-29 &#8211; O tamanho do execut\u00e1vel do meu Game Engine em C++&#8230;<\/figcaption><\/figure>\n\n\n\n<p>Com o meu Game Engine, seria menos de 1 MB de execut\u00e1vel e poucos MB de mem\u00f3ria.<\/p>\n\n\n\n<p>E podemos ver na imagem acima o que acontece hoje em dia, em que at\u00e9 os joguinhos mais simples chegam a ter centenas de MB de tamanho, o que considero algo absurdo. S\u00e3o exemplos que tirei h\u00e1 dias ao sacar uns joguinhos simples para me entreter no telem\u00f3vel enquanto estava numa fila de espera.<\/p>\n\n\n\n<p>Para eu criar videojogos Retro-Gaming, eu n\u00e3o preciso de 1001 coisas avan\u00e7adas de 3D, e seria completamente est\u00fapido eu estar a criar jogos que agora posso criar com execut\u00e1veis de 1 ou 2 ou 3 MB, centenas de MB por jogo:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"307\" src=\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level-file-list.png\" alt=\"2025-01-29 - O tamanho do execut\u00e1vel do meu Game Engine em C++ - Listagem de Ficheiros...\" class=\"wp-image-4086\" style=\"width:1138px;height:auto\" srcset=\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level-file-list.png 640w, https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level-file-list-300x144.png 300w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><figcaption class=\"wp-element-caption\">2025-01-29 &#8211; O tamanho do execut\u00e1vel do meu Game Engine em C++ &#8211; Listagem de Ficheiros&#8230;<\/figcaption><\/figure>\n\n\n\n<p>Uma das coisas que acho fe\u00edssimo \u00e9 ver um jogo criado bastante simples, e com centenas de MB de tamanho.<\/p>\n\n\n\n<p>Acima podem ver que, com alguma compress\u00e3o \u00e0 mistura, consigo ter o Game Engine sem os recursos e sem bibliotecas est\u00e1ticas (pedindo-as dinamicamente, exigindo que o sistema operativo as tenha) e sem recursos (obrigando a que as imagens do jogo e sons sejam fornecidos em conjunto com o jogo mas ficheiros \u00e0parte), com 0,47 MB, ter o execut\u00e1vel com bibliotecas est\u00e1ticas com 1,5 MB de tamanho (mas com os recursos do jogo em separado), e o jogo com as bibliotecas est\u00e1ticas inclu\u00eddas no execut\u00e1vel (para funcionar em qualquer sistema mesmo que n\u00e3o as tenha) e com os recursos (como imagens e m\u00fasicas, etc) inclu\u00eddas no mesmo execut\u00e1vel, a rondar os 10 MB de tamanho, e com jogos bem mais complexos:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"338\" src=\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Sonic-at-rain-on-my-Cpp-Game-Engine.png\" alt=\"2025-01-29 - O Sonic \u00e0 chuva no meu Game Engine em C++...\" class=\"wp-image-4084\" style=\"width:1138px;height:auto\" srcset=\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Sonic-at-rain-on-my-Cpp-Game-Engine.png 600w, https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Sonic-at-rain-on-my-Cpp-Game-Engine-300x169.png 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><figcaption class=\"wp-element-caption\">2025-01-29 &#8211; O Sonic \u00e0 chuva no meu Game Engine em C++&#8230;<\/figcaption><\/figure>\n\n\n\n<p>Com o meu engine, n\u00e3o s\u00f3 posso criar jogos super r\u00e1pidos, a ocupar pouca mem\u00f3ria, com execut\u00e1veis reduzidos, como eles at\u00e9 podem correr em m\u00e1quinas com 20 anos de idade, e at\u00e9 facilmente migrados um dia para m\u00e1quinas dos anos 90. \ud83d\ude42<\/p>\n\n\n\n<p>Percebem agora porque \u00e9 bom ter o meu pr\u00f3prio Game Engine?<\/p>\n\n\n\n<p>H\u00e1 dias, vi uma pergunta no Quora estilo &#8220;Porque \u00e9 que os programadores auto-didactas s\u00e3o t\u00e3o maus?&#8221;, ao que n\u00e3o resisti responder:<br>https:\/\/www.quora.com\/Why-are-self-taught-programmers-bad-at-programming\/answer\/Goncalo-Ferreira-7<\/p>\n\n\n\n<p>E algu\u00e9m comentou que se eu quero fazer coisas do zero, p\u00edxel a p\u00edxel, sem usar bibliotecas que foram criadas por programadores de respeito, ent\u00e3o estou a dar tiros nos p\u00e9s, afirmando que se eu evito andar nos ombros de gigantes estou a tomar m\u00e1 decis\u00e3o em termos de programa\u00e7\u00e3o.<\/p>\n\n\n\n<p>Mas reparem, abaixo vou explicar como \u00e9 bom eu criar o meu pr\u00f3prio Game Engine e as minhas pr\u00f3prias toolkits em vez de usar as Qt e GTK e outras.<\/p>\n\n\n\n<p>Resumindo: \u00c9 tudo feito ao meu gosto, tenho mais performance, execut\u00e1veis menores, ocupo menos mem\u00f3ria, s\u00f3 tenho o que preciso.<\/p>\n\n\n\n<p>Simples!<\/p>\n\n\n\n<p>Vamos ver\u2026<\/p>\n\n\n\n<p>O meu Game Engine j\u00e1 com o n\u00edvel de testes pr\u00e9-configurado, corre-me em menos de 1 MB de execut\u00e1vel, e se incluir todas as bibliotecas embebidas no execut\u00e1vel (no bin\u00e1rio), como as do GCC etc, ocuparia 3 MB apenas.<\/p>\n\n\n\n<p>Vejamos se fosse com um .Net por exemplo\u2026<\/p>\n\n\n\n<p>Um game engine semelhante ao meu, mas criado em .Net (menos poderoso), sem recursos inclu\u00eddos, gastaria certamente s\u00f3 no c\u00f3digo &#8220;compilado&#8221; em .Net, por volta de uns 10 MB no execut\u00e1vel principal.<\/p>\n\n\n\n<p>Ele teria de correr tamb\u00e9m com o runtime estivesse instalado no sistema, o que varia entre 50 MB e 100 MB, ou seja, j\u00e1 vamos para 60 a 110 MB para um engine semelhante, sem recursos inclu\u00eddos, se for um .Net recente (tipo .Net 6 e .Net 7). Se fosse um .Net framework (cl\u00e1ssico), pr\u00e9-instalado em v\u00e1rios Windows, ocuparia uns 200 MB no total (ou seja ir\u00edamos com 210 MB no total).<\/p>\n\n\n\n<p>Se us\u00e1ssemos self-contained builds (tudo embebido no execut\u00e1vel sem precisarmos de runtimes em separado), o bin\u00e1rio poderia chegar aos 80 MB ou 100 MB.<\/p>\n\n\n\n<p>Comparamos assim 1 MB do meu com uns 1 MB a 15 MB do .Net (se for t\u00e3o pouco), e com o meu tendo tudo est\u00e1tico (self-contained), comparar\u00edamos 3 MB do meu com 50 MB a 80 MB do .Net\u2026<\/p>\n\n\n\n<p>E mesmo que seja um execut\u00e1vel din\u00e2mico, o peso da CLR em tempo de execu\u00e7\u00e3o pode ser pesado e o runtime sozinho ocupar 20 MB a 30 MB de mem\u00f3ria, para algo muito simples.<\/p>\n\n\n\n<p>E como referi, .Net n\u00e3o \u00e9 t\u00e3o indicado para a cria\u00e7\u00e3o de um Game Engine quanto o \u00e9 C++. \ud83d\ude42<\/p>\n\n\n\n<p>Estou a criar aos poucos um Game Engine eficiente e compacto, numa linguagem eficiente e compacta, com performance extrema.<\/p>\n\n\n\n<p>Agora vejamos comparando com outros Game Engines do mercado, porque raz\u00e3o crio o meu pr\u00f3prio?<\/p>\n\n\n\n<p>Sobre outros Game Engines:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Unreal: Se eu criasse um projecto vazio no Unreal, literalmente s\u00f3 com uma cena com um bot\u00e3o, poderia gerar um execut\u00e1vel de 100 MB ou 200 MB ou mais, porque o bin\u00e1rio incluiria o runtime completo do Game Engine (mesmo que n\u00e3o usemos aquilo tudo), v\u00e1rios sistemas embebidos como renderiza\u00e7\u00e3o avan\u00e7ada, f\u00edsica, networking, l\u00f3gica de som, etc, etc, etc, fora depend\u00eancias externas que n\u00e3o s\u00e3o exclu\u00eddas\u2026<\/li>\n\n\n\n<li>Unity: Se eu criasse algo com apenas um bot\u00e3o, seriam 50 MB de runtime adicionados ao execut\u00e1vel, e atinge facilmente centenas de MB de tamanho ao criar jogos com mais complexidade.<\/li>\n<\/ul>\n\n\n\n<p>A meu ver, \u00e9 n\u00e3o s\u00f3 impressionante mas feio como h\u00e1 tanto jogo t\u00e3o simples a ocupar centenas de MB de tamanho.<\/p>\n\n\n\n<p>E eu s\u00f3 n\u00e3o ocupo menos, por que um execut\u00e1vel meu de 10 MB j\u00e1 tem MP3 embebidos, centenas de imagens, ficheiros de som, etc!<\/p>\n\n\n\n<p>Fora as bibliotecas embebidas estaticamente para correr em todo o lado!<\/p>\n\n\n\n<p>Eu detestaria ter um execut\u00e1vel de um lado, com 1001 ficheiros a acompanhar, eu meto tudo embebido no execut\u00e1vel, e quero-o pequeno, e a ocupar menos mem\u00f3ria e r\u00e1pido.<\/p>\n\n\n\n<p>E j\u00e1 viram o que \u00e9 sacar um execut\u00e1vel de 150 MB com um game engine inteiro quando um jogo nem usa sequer 2% do que ele proporciona???<\/p>\n\n\n\n<p>A meu ver rid\u00edculo.<\/p>\n\n\n\n<p>Percebem agora porque \u00e9 bom eu ter o meu pr\u00f3prio Game Engine?<\/p>\n\n\n\n<p>N\u00e3o \u00e9 quest\u00e3o de vaidade como alguns possam pensar, n\u00e3o \u00e9 o querer fugir de andar nos &#8220;ombros de gigantes&#8221;.<\/p>\n\n\n\n<p>A meu ver, \u00e9 mesmo bom senso.<\/p>\n\n\n\n<p>Claro que sabe bem poder dizer que tenho o meu pr\u00f3prio game engine e tal.<\/p>\n\n\n\n<p>Mas n\u00e3o \u00e9 vaidade, eu n\u00e3o seria capaz de andar a criar videojogos retro, a ocupar centenas de MB de tamanho nos execut\u00e1veis, ou GB de mem\u00f3ria, quando na \u00e9poca eles corriam com poucos MB ou menos.<\/p>\n\n\n\n<p>Quero jogos que caibam em disquetes. \ud83d\ude42<\/p>\n\n\n\n<p>Um Game Engine, com centenas de ficheiros, v\u00e1rios deles com milhares de linhas de c\u00f3digo, onde um jogo com 200&#215;95 tiles, a 1280&#215;960 de resolu\u00e7\u00e3o, com mais de 100 inimigos diversos no ecr\u00e3, com \u00e1gua e fogo e chuva e neve e outras coisas geradas em tempo real de forma procedimental, com tudo e mais alguma coisa, a caber (sem recursos) numa disquete, e com recursos inclu\u00eddos no execut\u00e1vel, poucos MB de tamanho.<\/p>\n\n\n\n<p>Efici\u00eancia \u00e9 importante para mim.<\/p>\n\n\n\n<p>E era s\u00f3 o que faltava usar Game Engines criados por outros, com execut\u00e1veis bloated cheio de coisas que n\u00e3o preciso, a ocupar centenas de MB de mem\u00f3ria ou GB de mem\u00f3ria, etc, quando posso ter tudo pequenino e eficiente com alta performance ao meu gosto.<\/p>\n\n\n\n<p>N\u00e3o \u00e9 vaidade, \u00e9 bom-senso. \ud83d\ude42<\/p>\n\n\n\n<p>E tamb\u00e9m \u00e9 uma boa maneira de aproveitar para manter o meu c\u00e9rebro activo, e divertir-me a criar tudo isto, tanto o Game Engine como os jogos que vou criar com ele, ao inv\u00e9s de andar apenas a aprender a usar coisas feitas por outros.<\/p>\n\n\n\n<p>Este post \u00e9 complemento do anterior, relacionado com a minha optimiza\u00e7\u00e3o de mem\u00f3ria, em que passei de 2 GB de uso de mem\u00f3ria para 100 MB a 200 MB, o primeiro passo ao trocar containers e outras coisas de STL do C++ por outras mais eficientes customizadas, entre outros pequenos truques:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-gon-alo-ferreira wp-block-embed-gon-alo-ferreira\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"pWnWOExpda\"><a href=\"https:\/\/www.goncalo.pt\/por\/2025\/01\/20\/2025-01-20-optimizacao-do-uso-de-memoria-90-do-meu-game-engine-em-c-criacao-dos-meus-proprios-containers-e-adaptando-o-para-multi-threading-em-simultaneo\/\">2025-01-20 &#8211; Optimiza\u00e7\u00e3o do uso de mem\u00f3ria (-90%) do meu Game Engine em C++ (Cria\u00e7\u00e3o dos meus pr\u00f3prios containers), e adaptando-o para Multi-Threading em simult\u00e2neo&#8230;<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;2025-01-20 &#8211; Optimiza\u00e7\u00e3o do uso de mem\u00f3ria (-90%) do meu Game Engine em C++ (Cria\u00e7\u00e3o dos meus pr\u00f3prios containers), e adaptando-o para Multi-Threading em simult\u00e2neo&#8230;&#8221; &#8212; Gon\u00e7alo Ferreira\" src=\"https:\/\/www.goncalo.pt\/por\/2025\/01\/20\/2025-01-20-optimizacao-do-uso-de-memoria-90-do-meu-game-engine-em-c-criacao-dos-meus-proprios-containers-e-adaptando-o-para-multi-threading-em-simultaneo\/embed\/#?secret=3MP89YwRsN#?secret=pWnWOExpda\" data-secret=\"pWnWOExpda\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">2025-01-20 \u2013 Optimiza\u00e7\u00e3o do uso de mem\u00f3ria (-90%) do meu Game Engine em C++ (Cria\u00e7\u00e3o dos meus pr\u00f3prios containers), e adaptando-o para Multi-Threading em simult\u00e2neo\u2026<\/figcaption><\/figure>\n\n\n\n<p>Conclus\u00e3o:<\/p>\n\n\n\n<p>Criar um Game Engine pr\u00f3prio n\u00e3o \u00e9 quest\u00e3o de vaidade, mas sim de efici\u00eancia e bom-senso. No meu caso, consigo ter total controlo sobre desempenho, tamanho e compatibilidade com hardware antigo. E isso, para mim, vale muito mais do que usar uma ferramenta cheia de funcionalidades que nunca irei precisar.<\/p>\n\n\n\n<p>Hasta!<\/p>\n\n\n\n<p>2025-01-29.<\/p>\n\n\n\n<p>Partilhado no LinkedIn no mesmo dia em:<\/p>\n\n\n\n<p><a href=\"https:\/\/www.linkedin.com\/posts\/goncalopt_vamos-ver-o-tamanho-do-execut%C3%A1vel-no-meu-activity-7290373028343930880-hxws?utm_source=share&amp;utm_medium=member_desktop\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.linkedin.com\/posts\/goncalopt_vamos-ver-o-tamanho-do-execut%C3%A1vel-no-meu-activity-7290373028343930880-hxws?utm_source=share&amp;utm_medium=member_desktop<\/a><\/p>\n\n\n\n<p>Post Anterior (sobre optimiza\u00e7\u00e3o de mem\u00f3ria no meu Game Engine em C++):<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-gon-alo-ferreira wp-block-embed-gon-alo-ferreira\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"pWnWOExpda\"><a href=\"https:\/\/www.goncalo.pt\/por\/2025\/01\/20\/2025-01-20-optimizacao-do-uso-de-memoria-90-do-meu-game-engine-em-c-criacao-dos-meus-proprios-containers-e-adaptando-o-para-multi-threading-em-simultaneo\/\">2025-01-20 &#8211; Optimiza\u00e7\u00e3o do uso de mem\u00f3ria (-90%) do meu Game Engine em C++ (Cria\u00e7\u00e3o dos meus pr\u00f3prios containers), e adaptando-o para Multi-Threading em simult\u00e2neo&#8230;<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;2025-01-20 &#8211; Optimiza\u00e7\u00e3o do uso de mem\u00f3ria (-90%) do meu Game Engine em C++ (Cria\u00e7\u00e3o dos meus pr\u00f3prios containers), e adaptando-o para Multi-Threading em simult\u00e2neo&#8230;&#8221; &#8212; Gon\u00e7alo Ferreira\" src=\"https:\/\/www.goncalo.pt\/por\/2025\/01\/20\/2025-01-20-optimizacao-do-uso-de-memoria-90-do-meu-game-engine-em-c-criacao-dos-meus-proprios-containers-e-adaptando-o-para-multi-threading-em-simultaneo\/embed\/#?secret=3MP89YwRsN#?secret=pWnWOExpda\" data-secret=\"pWnWOExpda\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">2025-01-20 \u2013 Optimiza\u00e7\u00e3o do uso de mem\u00f3ria (-90%) do meu Game Engine em C++ (Cria\u00e7\u00e3o dos meus pr\u00f3prios containers), e adaptando-o para Multi-Threading em simult\u00e2neo\u2026<\/figcaption><\/figure>\n\n\n\n<p>Post seguinte (tamb\u00e9m sobre optimiza\u00e7\u00f5es, tamanho de execut\u00e1veis e uso de mem\u00f3ria):<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-gon-alo-ferreira wp-block-embed-gon-alo-ferreira\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"Alpy15RRT3\"><a href=\"https:\/\/www.goncalo.pt\/por\/2025\/02\/09\/2025-02-09-o-meu-game-engine-em-c-a-ocupar-apenas-27-mb-de-memoria-e-com-binarios-de-300k\/\">2025-02-09 &#8211; O meu Game Engine em C++ a ocupar apenas 27 MB de mem\u00f3ria e com bin\u00e1rios de 300K&#8230;<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;2025-02-09 &#8211; O meu Game Engine em C++ a ocupar apenas 27 MB de mem\u00f3ria e com bin\u00e1rios de 300K&#8230;&#8221; &#8212; Gon\u00e7alo Ferreira\" src=\"https:\/\/www.goncalo.pt\/por\/2025\/02\/09\/2025-02-09-o-meu-game-engine-em-c-a-ocupar-apenas-27-mb-de-memoria-e-com-binarios-de-300k\/embed\/#?secret=xg9cjBtgCG#?secret=Alpy15RRT3\" data-secret=\"Alpy15RRT3\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">2025-02-09 \u2013 O meu Game Engine em C++ a ocupar apenas 27 MB de mem\u00f3ria e com bin\u00e1rios de 300K\u2026<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level-1024x576.png\" alt=\"2025-01-29 - O tamanho do execut\u00e1vel do meu Game Engine em C++...\" class=\"wp-image-4085\" style=\"width:1139px;height:auto\" srcset=\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level-1024x576.png 1024w, https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level-300x169.png 300w, https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level-768x432.png 768w, https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level-1536x864.png 1536w, https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level.png 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">2025-01-29 &#8211; O tamanho do execut\u00e1vel do meu Game Engine em C++&#8230;<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"338\" src=\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Sonic-at-rain-on-my-Cpp-Game-Engine.png\" alt=\"2025-01-29 - O Sonic \u00e0 chuva no meu Game Engine em C++...\" class=\"wp-image-4084\" style=\"width:1137px;height:auto\" srcset=\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Sonic-at-rain-on-my-Cpp-Game-Engine.png 600w, https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Sonic-at-rain-on-my-Cpp-Game-Engine-300x169.png 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><figcaption class=\"wp-element-caption\">2025-01-29 &#8211; O Sonic \u00e0 chuva no meu Game Engine em C++&#8230;<\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Vamos ver o tamanho do execut\u00e1vel no meu Game Engine, e como posso ter um jogo a funcionar j\u00e1 com<\/p>\n","protected":false},"author":1,"featured_media":4085,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,284,5,3,4,346,162,133],"tags":[395,7,394,118,207,396,24,23,235,117,27,314,281,120,126,26,25],"class_list":["post-4083","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-game-development","category-platformers","category-programacao","category-projectos","category-softwares","category-top-10-game-engine","category-top-game-engine","category-video-jogos","tag-binario","tag-c","tag-cpu","tag-desenvolvimento-de-jogos","tag-dev","tag-ficheiro-executavel","tag-game-dev","tag-game-engine","tag-low-level","tag-motor-de-jogos","tag-optimizacao","tag-performance","tag-platformer","tag-programacao","tag-shooter","tag-videogames","tag-videojogos"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>2025-01-29 - O tamanho do execut\u00e1vel do meu Game Engine em C++... - Gon\u00e7alo Ferreira<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"2025-01-29 - O tamanho do execut\u00e1vel do meu Game Engine em C++... - Gon\u00e7alo Ferreira\" \/>\n<meta property=\"og:description\" content=\"Vamos ver o tamanho do execut\u00e1vel no meu Game Engine, e como posso ter um jogo a funcionar j\u00e1 com\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/\" \/>\n<meta property=\"og:site_name\" content=\"Gon\u00e7alo Ferreira\" \/>\n<meta property=\"article:published_time\" content=\"2025-01-29T05:38:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-19T21:29:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"gnmf\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"gnmf\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/\"},\"author\":{\"name\":\"gnmf\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/#\/schema\/person\/28a9f845c4de91a7c067707279b1d8dd\"},\"headline\":\"2025-01-29 &#8211; O tamanho do execut\u00e1vel do meu Game Engine em C++&#8230;\",\"datePublished\":\"2025-01-29T05:38:26+00:00\",\"dateModified\":\"2025-03-19T21:29:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/\"},\"wordCount\":1829,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level.png\",\"keywords\":[\"Bin\u00e1rio\",\"C++\",\"CPU\",\"Desenvolvimento de Jogos\",\"Dev\",\"Ficheiro Execut\u00e1vel\",\"Game Dev\",\"Game Engine\",\"Low-Level\",\"Motor de Jogos\",\"optimiza\u00e7\u00e3o\",\"Performance\",\"Platformer\",\"Programa\u00e7\u00e3o\",\"Shooter\",\"VideoGames\",\"VideoJogos\"],\"articleSection\":[\"Desenvolvimento de Jogos\",\"Platformers\",\"Programa\u00e7\u00e3o\",\"Projectos\",\"Softwares\",\"Top 10 Game Engine\",\"Top Game Engine\",\"Video Jogos\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/\",\"url\":\"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/\",\"name\":\"2025-01-29 - O tamanho do execut\u00e1vel do meu Game Engine em C++... - Gon\u00e7alo Ferreira\",\"isPartOf\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level.png\",\"datePublished\":\"2025-01-29T05:38:26+00:00\",\"dateModified\":\"2025-03-19T21:29:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/#primaryimage\",\"url\":\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level.png\",\"contentUrl\":\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level.png\",\"width\":1920,\"height\":1080,\"caption\":\"2025-01-29 - O tamanho do execut\u00e1vel do meu Game Engine em C++...\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.goncalo.pt\/por\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"2025-01-29 &#8211; O tamanho do execut\u00e1vel do meu Game Engine em C++&#8230;\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/#website\",\"url\":\"https:\/\/www.goncalo.pt\/por\/\",\"name\":\"Gon\u00e7alo Ferreira\",\"description\":\"[Game Engine\/Software\/Simulation\/Trading Systems\/Full Stack] Developer, Musician, Composer, Painter, Writer, IT Trainer, Sys Admin, Ex-Trader, Skater, Strongman, Vegan, Self-Taught Neuro-Divergent Polymath, and 1001 things more. Welcome to my world!\",\"publisher\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.goncalo.pt\/por\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/#organization\",\"name\":\"Gon\u00e7alo Ferreira\",\"url\":\"https:\/\/www.goncalo.pt\/por\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2023\/08\/cropped-Goncalo-Ferreira-Logo-With-Face.png\",\"contentUrl\":\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2023\/08\/cropped-Goncalo-Ferreira-Logo-With-Face.png\",\"width\":389,\"height\":90,\"caption\":\"Gon\u00e7alo Ferreira\"},\"image\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"http:\/\/www.linkedin.com\/in\/GoncaloPT\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/#\/schema\/person\/28a9f845c4de91a7c067707279b1d8dd\",\"name\":\"gnmf\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/78a295ef7300b60da1d67d4ce84359da?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/78a295ef7300b60da1d67d4ce84359da?s=96&d=mm&r=g\",\"caption\":\"gnmf\"},\"sameAs\":[\"http:\/\/www.goncalo.pt\/por\"],\"url\":\"https:\/\/www.goncalo.pt\/por\/author\/gnmf\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"2025-01-29 - O tamanho do execut\u00e1vel do meu Game Engine em C++... - Gon\u00e7alo Ferreira","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/","og_locale":"en_US","og_type":"article","og_title":"2025-01-29 - O tamanho do execut\u00e1vel do meu Game Engine em C++... - Gon\u00e7alo Ferreira","og_description":"Vamos ver o tamanho do execut\u00e1vel no meu Game Engine, e como posso ter um jogo a funcionar j\u00e1 com","og_url":"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/","og_site_name":"Gon\u00e7alo Ferreira","article_published_time":"2025-01-29T05:38:26+00:00","article_modified_time":"2025-03-19T21:29:53+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level.png","type":"image\/png"}],"author":"gnmf","twitter_card":"summary_large_image","twitter_misc":{"Written by":"gnmf","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/#article","isPartOf":{"@id":"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/"},"author":{"name":"gnmf","@id":"https:\/\/www.goncalo.pt\/por\/#\/schema\/person\/28a9f845c4de91a7c067707279b1d8dd"},"headline":"2025-01-29 &#8211; O tamanho do execut\u00e1vel do meu Game Engine em C++&#8230;","datePublished":"2025-01-29T05:38:26+00:00","dateModified":"2025-03-19T21:29:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/"},"wordCount":1829,"commentCount":0,"publisher":{"@id":"https:\/\/www.goncalo.pt\/por\/#organization"},"image":{"@id":"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/#primaryimage"},"thumbnailUrl":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level.png","keywords":["Bin\u00e1rio","C++","CPU","Desenvolvimento de Jogos","Dev","Ficheiro Execut\u00e1vel","Game Dev","Game Engine","Low-Level","Motor de Jogos","optimiza\u00e7\u00e3o","Performance","Platformer","Programa\u00e7\u00e3o","Shooter","VideoGames","VideoJogos"],"articleSection":["Desenvolvimento de Jogos","Platformers","Programa\u00e7\u00e3o","Projectos","Softwares","Top 10 Game Engine","Top Game Engine","Video Jogos"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/","url":"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/","name":"2025-01-29 - O tamanho do execut\u00e1vel do meu Game Engine em C++... - Gon\u00e7alo Ferreira","isPartOf":{"@id":"https:\/\/www.goncalo.pt\/por\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/#primaryimage"},"image":{"@id":"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/#primaryimage"},"thumbnailUrl":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level.png","datePublished":"2025-01-29T05:38:26+00:00","dateModified":"2025-03-19T21:29:53+00:00","breadcrumb":{"@id":"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/#primaryimage","url":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level.png","contentUrl":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/01\/2025-01-29-Executable-file-size-of-my-Cpp-Game-Engine-Platformer-test-level.png","width":1920,"height":1080,"caption":"2025-01-29 - O tamanho do execut\u00e1vel do meu Game Engine em C++..."},{"@type":"BreadcrumbList","@id":"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.goncalo.pt\/por\/"},{"@type":"ListItem","position":2,"name":"2025-01-29 &#8211; O tamanho do execut\u00e1vel do meu Game Engine em C++&#8230;"}]},{"@type":"WebSite","@id":"https:\/\/www.goncalo.pt\/por\/#website","url":"https:\/\/www.goncalo.pt\/por\/","name":"Gon\u00e7alo Ferreira","description":"[Game Engine\/Software\/Simulation\/Trading Systems\/Full Stack] Developer, Musician, Composer, Painter, Writer, IT Trainer, Sys Admin, Ex-Trader, Skater, Strongman, Vegan, Self-Taught Neuro-Divergent Polymath, and 1001 things more. Welcome to my world!","publisher":{"@id":"https:\/\/www.goncalo.pt\/por\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.goncalo.pt\/por\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.goncalo.pt\/por\/#organization","name":"Gon\u00e7alo Ferreira","url":"https:\/\/www.goncalo.pt\/por\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.goncalo.pt\/por\/#\/schema\/logo\/image\/","url":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2023\/08\/cropped-Goncalo-Ferreira-Logo-With-Face.png","contentUrl":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2023\/08\/cropped-Goncalo-Ferreira-Logo-With-Face.png","width":389,"height":90,"caption":"Gon\u00e7alo Ferreira"},"image":{"@id":"https:\/\/www.goncalo.pt\/por\/#\/schema\/logo\/image\/"},"sameAs":["http:\/\/www.linkedin.com\/in\/GoncaloPT\/"]},{"@type":"Person","@id":"https:\/\/www.goncalo.pt\/por\/#\/schema\/person\/28a9f845c4de91a7c067707279b1d8dd","name":"gnmf","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.goncalo.pt\/por\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/78a295ef7300b60da1d67d4ce84359da?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/78a295ef7300b60da1d67d4ce84359da?s=96&d=mm&r=g","caption":"gnmf"},"sameAs":["http:\/\/www.goncalo.pt\/por"],"url":"https:\/\/www.goncalo.pt\/por\/author\/gnmf\/"}]}},"_links":{"self":[{"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/posts\/4083"}],"collection":[{"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/comments?post=4083"}],"version-history":[{"count":5,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/posts\/4083\/revisions"}],"predecessor-version":[{"id":4104,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/posts\/4083\/revisions\/4104"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/media\/4085"}],"wp:attachment":[{"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/media?parent=4083"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/categories?post=4083"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/tags?post=4083"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}