{"id":4098,"date":"2025-02-09T20:19:09","date_gmt":"2025-02-09T20:19:09","guid":{"rendered":"https:\/\/www.goncalo.pt\/por\/?p=4098"},"modified":"2025-03-19T21:29:42","modified_gmt":"2025-03-19T21:29:42","slug":"2025-02-09-o-meu-game-engine-em-c-a-ocupar-apenas-27-mb-de-memoria-e-com-binarios-de-300k","status":"publish","type":"post","link":"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\/","title":{"rendered":"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;"},"content":{"rendered":"\n<p>Aqui mostro-vos como o meu Game Engine, se funcionar com um jogo de apenas um ecr\u00e3, ocupa apenas perto de 20 e tal MB de mem\u00f3ria, e poder\u00e1 ter execut\u00e1veis de 300 KB de tamanho (onde a chuva est\u00e1 mais optimizada, a neve um pouco menos, e o Orion menos):<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/02\/2025-02-09-My-Cpp-Game-Engine-using-only-27-MB-of-memory-and-300K-binaries.mp4\"><\/video><figcaption class=\"wp-element-caption\">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;<\/figcaption><\/figure>\n\n\n\n<p>Ah, e o &#8220;Orion&#8221; com 3% de CPU, e os outros com aquelas milhares de gotas de chuva ou flocos de neve, apenas 12% do CPU, num port\u00e1til velho com 4 anos que custou na altura 600 euros pois eu programo sempre com port\u00e1teis baratos para me obrigar a fazer as coisas bem.<\/p>\n\n\n\n<p>T\u00e3o pouco!<\/p>\n\n\n\n<p>Isto porqu\u00ea?<\/p>\n\n\n\n<p>Porque tal como referi no meu post anterior (aqui: <a href=\"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/\">https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/<\/a>) sobre tamanhos de ficheiros bin\u00e1rios, ou no post antes sobre mem\u00f3ria usada por Game Engines (aqui: <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\/\">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\/<\/a>), eu criar o meu pr\u00f3prio Game Engine tem quadrili\u00f5es de vantagens, como ter bin\u00e1rios muito pequenos e ocupar muito pouca mem\u00f3ria.<\/p>\n\n\n\n<p>De facto, contei-vos como a simples cria\u00e7\u00e3o de um \u00fanico bot\u00e3o, em Game Engines como Unity ou o do Unreal, pode criar bin\u00e1rios com centenas de MB de tamanho, e a ocupar centenas de MB de mem\u00f3ria, pois esses bin\u00e1rios iriam conter Game Engines super &#8220;bloated&#8221;, cheios de quadrili\u00f5es de coisas que n\u00e3o necessitamos sempre, bem como iriam encher a mem\u00f3ria de todas essas coisas in\u00fateis para quem quer criar jogos ao meu gosto, estilo 2D na maioria.<\/p>\n\n\n\n<p>De facto at\u00e9 vos mostrei o rid\u00edculo que \u00e9 termos hoje em dia &#8220;Jogos do Galo&#8221; ou &#8220;Tetris&#8221;, jogos mega-b\u00e1sicos de criar, com 100 MB ou 150 MB de tamanho ou mais:<\/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: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<p>At\u00e9 quem tenta criar jogos com .Net, v\u00ea-se agarrado ao problema de ver centenas de MB ocupados pela Framework, al\u00e9m de que os seus bin\u00e1rios s\u00f3 seriam relativamente pequenos porque centenas de MB de necess\u00e1rios dados estariam espalhados pelo computador na Framework.<\/p>\n\n\n\n<p>Nos meus exemplos podem ver que tenho, mesmo com uma demo de jogo (n\u00e3o jog\u00e1vel), com milhares de gotas de chuva no ecr\u00e3, ou flocos de neve no ecr\u00e3, em tempo real, e com todo o meu Game Engine uploadado para a mem\u00f3ria, e ainda sem estar optimizado a 100%, eu ocuparia apenas 30 MB de mem\u00f3ria (j\u00e1 meti com 25 a 27 antes):<\/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\/02\/2025-02-09-My-Cpp-Game-Engine-using-only-27-MB-of-memory-and-300K-binaries.gif\" alt=\"2025-02-09 - O meu Game Engine em C++ a ocupar apenas 27 MB de mem\u00f3ria e com bin\u00e1rios de 300K...\" class=\"wp-image-4099\" style=\"width:1140px;height:auto\"\/><figcaption class=\"wp-element-caption\">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;<\/figcaption><\/figure>\n\n\n\n<p>Algu\u00e9m me perguntou porque raios eu n\u00e3o usava j\u00e1 toolkits existentes em vez de criar uma, ou usava game engines existentes em vez de criar o meu, e usaram o termo &#8220;recusas-te a andar nos ombros de gigantes&#8221;, como podem ver num coment\u00e1rio algures aqui:<\/p>\n\n\n\n<p><a href=\"https:\/\/www.quora.com\/Why-are-self-taught-programmers-bad-at-programming\/answer\/Goncalo-Ferreira-7\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.quora.com\/Why-are-self-taught-programmers-bad-at-programming\/answer\/Goncalo-Ferreira-7<\/a><\/p>\n\n\n\n<p>Mas a verdade \u00e9 que se eu andar nesses ombros de gigantes, ou seja, usar Unitys, Unreal, ou toolkits existentes como Qt, GTK, etc, eu iria ter bin\u00e1rios gigantes, muito maiores, ocupar mais mem\u00f3ria, e n\u00e3o ter as coisas ao meu gosto.<\/p>\n\n\n\n<p>E como eu n\u00e3o tenho pressas e fa\u00e7o isto por gosto, mais vale criar os meus pr\u00f3prios toolkits em vez de usar o Qt ou GTK, e criar o meu pr\u00f3prio Game Engine que me permite ter tudo o que quero e melhor (mais ao meu gosto), ocupando menos mem\u00f3ria e com execut\u00e1veis mais pequenos.<\/p>\n\n\n\n<p>Os exemplos que dei hoje s\u00e3o apenas para mostrar isso.<\/p>\n\n\n\n<p>No outro exemplo que mostrei no post anterior, eu ocupava 200 MB de mem\u00f3ria, mas apenas porque com resolu\u00e7\u00f5es de 1280*960 com 16 milh\u00f5es de cores (4 bytes por cada p\u00edxel em RGBA), com um n\u00edvel de 200 por 95 tiles de tamanho, onde calculo em tempo real colis\u00f5es p\u00edxel-a-p\u00edxel de cada um dos mais de 100 inimigos do n\u00edvel mesmo que n\u00e3o os veja num ecr\u00e3 (posso disparar um &#8220;laser&#8221; e ele percorre o n\u00edvel inteiro bate na parede e regressa at\u00e9 mim ao meu ecr\u00e3), com dezenas de milhares de objectos a serem calculados em tempo real, como umas 10.000 gotas de chuva e bolhas de ar na \u00e1gua, entre 1001 coisas, ocupar apenas 200 MB de mem\u00f3ria n\u00e3o deixa de ser, mod\u00e9stia \u00e0 parte, um feito.<\/p>\n\n\n\n<p>Eu poderia meter o mesmo n\u00edvel de testes, a ser calculado apenas no ecr\u00e3 vis\u00edvel, com perto de 30 MB, ou menos se mais optimizado ainda, e se reduzir a resolu\u00e7\u00e3o para 320&#215;200 e meter 256 cores, e cortar mais coisas, faz\u00ea-lo at\u00e9 funcionar com uns 100 Kb nos anos 90.<\/p>\n\n\n\n<p>Por isso esses 200 MB que mostrei no n\u00edvel de Platformer, \u00e9 porque me dou ao luxo de usar a mem\u00f3ria para ter muita coisa (j\u00e1 que hoje em dia todos temos 16 GB ou mais de mem\u00f3ria e 200 MB n\u00e3o \u00e9 nada hoje em dia), n\u00e3o \u00e9 porque tem de ser.<\/p>\n\n\n\n<p>Pois o meu objectivo \u00e9 ter retro-games estilo anos 90 mas com todo o poder das m\u00e1quinas actuais.<\/p>\n\n\n\n<p>Mas sem criar hogs, bloated software como os que vejo onde um jogo simples tem 100 MB ou mais de tamanho, o que \u00e9 um abuso.<\/p>\n\n\n\n<p>E como expliquei no post anterior, o execut\u00e1vel tinha tamb\u00e9m uns 7 MB ou mais porque tinha inclu\u00eddo dentro dele todos os recursos necess\u00e1rios, como imagens, m\u00fasicas (MP3 e n\u00e3o outras mais leves como os MOD dos anos 80, etc).<\/p>\n\n\n\n<p>Por isso pronto, o importante \u00e9 que podem ver que o meu Game Engine, apesar de vir a ser muito mais optimizado um dia, neste momento j\u00e1 cria jogos muito completos que ocupariam 20 MB e tal se for calculado s\u00f3 com um ecr\u00e3 de cada vez (mesmo que tenha 640&#215;480 de RGBA e milhares de objectos no ecr\u00e3), ao contr\u00e1rio de gastar centenas de MB de disco e mem\u00f3ria por jogos criados com Game Engines gigantes e bloated ou frameworks pesadas como o .Net.<\/p>\n\n\n\n<p>\u00c9 o poder do maravilhoso C ou C++. \ud83d\ude42<\/p>\n\n\n\n<p>Nos exemplos dados, uso alguma compress\u00e3o ligeira, e \u00e9 importante referir que podem ver o bin\u00e1rio com os recursos fora, ou inclu\u00eddos no mesmo, ou com as bilbiotecas tipo C++ etc, inclu\u00eddas no mesmo como est\u00e1ticas ou fora, sendo que o execut\u00e1vel mais pequeno \u00e9 100% independente com esse tamanho tendo ali meio MB de tamanho, ou seja, funciona em qualquer lugar sem nenhum recurso externo, com apenas esse ficheiro.<\/p>\n\n\n\n<p>No caso do da neve, ocupa mais uns 20 MB porque a neve tem uma quantidade enorme de algoritmos de F\u00edsica que fazem com que a neve se consolide, com que ela derreta, com que o calor passe de uns flocos para os outros para ir derretendo, etc, al\u00e9m de que os objectos s\u00e3o mais pesados e ocupam mais mem\u00f3ria, etc, etc, e da\u00ed ocupar mais um pouco.<\/p>\n\n\n\n<p>Quanto ao Orion, n\u00e3o foi muito optimizado, poderia ocupar ainda menos, dado usar s\u00f3 um ecr\u00e3, mas tem tamb\u00e9m v\u00e1rios scripts que ser\u00e3o usados no jogo de estrat\u00e9gia que quero criar, baseado no velhinho Master of Orion de 1993 (o primeiro).<\/p>\n\n\n\n<p>Tenho estado a partilhar posts sobre optimiza\u00e7\u00e3o por n\u00e3o ter tido tempo hoje em dia com as mudan\u00e7as de casa para fazer nada mais, quem sabe um dia volte ao meu Game Engine em termos de desenvolvimento e traga mais novidades.<\/p>\n\n\n\n<p>Hasta!<\/p>\n\n\n\n<p>2025-02-09.<\/p>\n\n\n\n<p>Publicado no mesmo dia no LinkedIn, em:<\/p>\n\n\n\n<p><a href=\"https:\/\/www.linkedin.com\/posts\/goncalopt_o-meu-game-engine-em-c-a-ocupar-apenas-activity-7294451740681158659-m3J_\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.linkedin.com\/posts\/goncalopt_o-meu-game-engine-em-c-a-ocupar-apenas-activity-7294451740681158659-m3J_<\/a><\/p>\n\n\n\n<p>Post seguinte associado ao meu Game Engine:<\/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=\"zeat3sjmps\"><a href=\"https:\/\/www.goncalo.pt\/por\/2025\/02\/13\/2025-02-13-exemplo-de-pequeno-bug-no-meu-game-engine-em-c-que-faria-inimigos-voar-com-as-armas-de-raios\/\">2025-02-13 &#8211; Exemplo de pequeno bug no meu Game-Engine em C++ que faria inimigos voar com as armas de raios\u2026<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;2025-02-13 &#8211; Exemplo de pequeno bug no meu Game-Engine em C++ que faria inimigos voar com as armas de raios\u2026&#8221; &#8212; Gon\u00e7alo Ferreira\" src=\"https:\/\/www.goncalo.pt\/por\/2025\/02\/13\/2025-02-13-exemplo-de-pequeno-bug-no-meu-game-engine-em-c-que-faria-inimigos-voar-com-as-armas-de-raios\/embed\/#?secret=SVvjYUjeih#?secret=zeat3sjmps\" data-secret=\"zeat3sjmps\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">2025-02-13 \u2013 Exemplo de pequeno bug no meu Game-Engine em C++ que faria inimigos voar com as armas de raios\u2026<\/figcaption><\/figure>\n\n\n\n<p>Post anterior, associado tamb\u00e9m ao meu Game Engine, e tamanho de bin\u00e1rios do mesmo:<\/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=\"kPgMfCklyn\"><a href=\"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/\">2025-01-29 &#8211; O tamanho do execut\u00e1vel do meu Game Engine em C++&#8230;<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;2025-01-29 &#8211; O tamanho do execut\u00e1vel do meu Game Engine em C++&#8230;&#8221; &#8212; Gon\u00e7alo Ferreira\" src=\"https:\/\/www.goncalo.pt\/por\/2025\/01\/29\/2025-01-29-o-tamanho-do-executavel-do-meu-game-engine-em-c\/embed\/#?secret=RFSCz70YHx#?secret=kPgMfCklyn\" data-secret=\"kPgMfCklyn\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">2025-01-29 \u2013 O tamanho do execut\u00e1vel do meu Game Engine em C++\u2026<\/figcaption><\/figure>\n\n\n\n<p>E post antes desse, tamb\u00e9m sobre optimiza\u00e7\u00f5es:<\/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=\"0tRtIxxSAd\"><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=Vgd7EciD5i#?secret=0tRtIxxSAd\" data-secret=\"0tRtIxxSAd\" 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<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:1140px;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<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\/02\/2025-02-09-My-Cpp-Game-Engine-using-only-27-MB-of-memory-and-300K-binaries.gif\" alt=\"2025-02-09 - O meu Game Engine em C++ a ocupar apenas 27 MB de mem\u00f3ria e com bin\u00e1rios de 300K...\" class=\"wp-image-4099\" style=\"width:1138px;height:auto\"\/><figcaption class=\"wp-element-caption\">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;<\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Aqui mostro-vos como o meu Game Engine, se funcionar com um jogo de apenas um ecr\u00e3, ocupa apenas perto de<\/p>\n","protected":false},"author":1,"featured_media":4099,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,286,284,5,3,134,285,289,4,164,346,162,133],"tags":[395,7,394,118,207,396,24,23,235,255,117,27,314,281,120,126,26,25],"class_list":["post-4098","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-game-development","category-estrategia","category-platformers","category-programacao","category-projectos","category-retro-gaming","category-shoot-em-up","category-horizontal-shooter","category-softwares","category-top","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-master-of-orion","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-02-09 - O meu Game Engine em C++ a ocupar apenas 27 MB de mem\u00f3ria e com bin\u00e1rios de 300K... - 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\/02\/09\/2025-02-09-o-meu-game-engine-em-c-a-ocupar-apenas-27-mb-de-memoria-e-com-binarios-de-300k\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"2025-02-09 - O meu Game Engine em C++ a ocupar apenas 27 MB de mem\u00f3ria e com bin\u00e1rios de 300K... - Gon\u00e7alo Ferreira\" \/>\n<meta property=\"og:description\" content=\"Aqui mostro-vos como o meu Game Engine, se funcionar com um jogo de apenas um ecr\u00e3, ocupa apenas perto de\" \/>\n<meta property=\"og:url\" content=\"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\/\" \/>\n<meta property=\"og:site_name\" content=\"Gon\u00e7alo Ferreira\" \/>\n<meta property=\"article:published_time\" content=\"2025-02-09T20:19:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-19T21:29:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/02\/2025-02-09-My-Cpp-Game-Engine-using-only-27-MB-of-memory-and-300K-binaries.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"600\" \/>\n\t<meta property=\"og:image:height\" content=\"338\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\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=\"7 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\/02\/09\/2025-02-09-o-meu-game-engine-em-c-a-ocupar-apenas-27-mb-de-memoria-e-com-binarios-de-300k\/#article\",\"isPartOf\":{\"@id\":\"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\/\"},\"author\":{\"name\":\"gnmf\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/#\/schema\/person\/28a9f845c4de91a7c067707279b1d8dd\"},\"headline\":\"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;\",\"datePublished\":\"2025-02-09T20:19:09+00:00\",\"dateModified\":\"2025-03-19T21:29:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"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\/\"},\"wordCount\":1472,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/#organization\"},\"image\":{\"@id\":\"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\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/02\/2025-02-09-My-Cpp-Game-Engine-using-only-27-MB-of-memory-and-300K-binaries.gif\",\"keywords\":[\"Bin\u00e1rio\",\"C++\",\"CPU\",\"Desenvolvimento de Jogos\",\"Dev\",\"Ficheiro Execut\u00e1vel\",\"Game Dev\",\"Game Engine\",\"Low-Level\",\"Master of orion\",\"Motor de Jogos\",\"optimiza\u00e7\u00e3o\",\"Performance\",\"Platformer\",\"Programa\u00e7\u00e3o\",\"Shooter\",\"VideoGames\",\"VideoJogos\"],\"articleSection\":[\"Desenvolvimento de Jogos\",\"Estrat\u00e9gia\",\"Platformers\",\"Programa\u00e7\u00e3o\",\"Projectos\",\"Retro Gaming\",\"Shoot 'Em Up\",\"Shooter Horizontal\",\"Softwares\",\"Top\",\"Top 10 Game Engine\",\"Top Game Engine\",\"Video Jogos\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"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\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"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\/\",\"url\":\"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\/\",\"name\":\"2025-02-09 - O meu Game Engine em C++ a ocupar apenas 27 MB de mem\u00f3ria e com bin\u00e1rios de 300K... - Gon\u00e7alo Ferreira\",\"isPartOf\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/#website\"},\"primaryImageOfPage\":{\"@id\":\"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\/#primaryimage\"},\"image\":{\"@id\":\"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\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/02\/2025-02-09-My-Cpp-Game-Engine-using-only-27-MB-of-memory-and-300K-binaries.gif\",\"datePublished\":\"2025-02-09T20:19:09+00:00\",\"dateModified\":\"2025-03-19T21:29:42+00:00\",\"breadcrumb\":{\"@id\":\"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\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"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\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"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\/#primaryimage\",\"url\":\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/02\/2025-02-09-My-Cpp-Game-Engine-using-only-27-MB-of-memory-and-300K-binaries.gif\",\"contentUrl\":\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/02\/2025-02-09-My-Cpp-Game-Engine-using-only-27-MB-of-memory-and-300K-binaries.gif\",\"width\":600,\"height\":338,\"caption\":\"2025-02-09 - O meu Game Engine em C++ a ocupar apenas 27 MB de mem\u00f3ria e com bin\u00e1rios de 300K...\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"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\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.goncalo.pt\/por\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"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;\"}]},{\"@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-02-09 - O meu Game Engine em C++ a ocupar apenas 27 MB de mem\u00f3ria e com bin\u00e1rios de 300K... - 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\/02\/09\/2025-02-09-o-meu-game-engine-em-c-a-ocupar-apenas-27-mb-de-memoria-e-com-binarios-de-300k\/","og_locale":"en_US","og_type":"article","og_title":"2025-02-09 - O meu Game Engine em C++ a ocupar apenas 27 MB de mem\u00f3ria e com bin\u00e1rios de 300K... - Gon\u00e7alo Ferreira","og_description":"Aqui mostro-vos como o meu Game Engine, se funcionar com um jogo de apenas um ecr\u00e3, ocupa apenas perto de","og_url":"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\/","og_site_name":"Gon\u00e7alo Ferreira","article_published_time":"2025-02-09T20:19:09+00:00","article_modified_time":"2025-03-19T21:29:42+00:00","og_image":[{"url":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/02\/2025-02-09-My-Cpp-Game-Engine-using-only-27-MB-of-memory-and-300K-binaries.gif","width":600,"height":338,"type":"image\/gif"}],"author":"gnmf","twitter_card":"summary_large_image","twitter_misc":{"Written by":"gnmf","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"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\/#article","isPartOf":{"@id":"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\/"},"author":{"name":"gnmf","@id":"https:\/\/www.goncalo.pt\/por\/#\/schema\/person\/28a9f845c4de91a7c067707279b1d8dd"},"headline":"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;","datePublished":"2025-02-09T20:19:09+00:00","dateModified":"2025-03-19T21:29:42+00:00","mainEntityOfPage":{"@id":"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\/"},"wordCount":1472,"commentCount":0,"publisher":{"@id":"https:\/\/www.goncalo.pt\/por\/#organization"},"image":{"@id":"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\/#primaryimage"},"thumbnailUrl":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/02\/2025-02-09-My-Cpp-Game-Engine-using-only-27-MB-of-memory-and-300K-binaries.gif","keywords":["Bin\u00e1rio","C++","CPU","Desenvolvimento de Jogos","Dev","Ficheiro Execut\u00e1vel","Game Dev","Game Engine","Low-Level","Master of orion","Motor de Jogos","optimiza\u00e7\u00e3o","Performance","Platformer","Programa\u00e7\u00e3o","Shooter","VideoGames","VideoJogos"],"articleSection":["Desenvolvimento de Jogos","Estrat\u00e9gia","Platformers","Programa\u00e7\u00e3o","Projectos","Retro Gaming","Shoot 'Em Up","Shooter Horizontal","Softwares","Top","Top 10 Game Engine","Top Game Engine","Video Jogos"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["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\/#respond"]}]},{"@type":"WebPage","@id":"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\/","url":"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\/","name":"2025-02-09 - O meu Game Engine em C++ a ocupar apenas 27 MB de mem\u00f3ria e com bin\u00e1rios de 300K... - Gon\u00e7alo Ferreira","isPartOf":{"@id":"https:\/\/www.goncalo.pt\/por\/#website"},"primaryImageOfPage":{"@id":"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\/#primaryimage"},"image":{"@id":"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\/#primaryimage"},"thumbnailUrl":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/02\/2025-02-09-My-Cpp-Game-Engine-using-only-27-MB-of-memory-and-300K-binaries.gif","datePublished":"2025-02-09T20:19:09+00:00","dateModified":"2025-03-19T21:29:42+00:00","breadcrumb":{"@id":"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\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["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\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"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\/#primaryimage","url":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/02\/2025-02-09-My-Cpp-Game-Engine-using-only-27-MB-of-memory-and-300K-binaries.gif","contentUrl":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2025\/02\/2025-02-09-My-Cpp-Game-Engine-using-only-27-MB-of-memory-and-300K-binaries.gif","width":600,"height":338,"caption":"2025-02-09 - O meu Game Engine em C++ a ocupar apenas 27 MB de mem\u00f3ria e com bin\u00e1rios de 300K..."},{"@type":"BreadcrumbList","@id":"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\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.goncalo.pt\/por\/"},{"@type":"ListItem","position":2,"name":"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;"}]},{"@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\/4098"}],"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=4098"}],"version-history":[{"count":7,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/posts\/4098\/revisions"}],"predecessor-version":[{"id":4132,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/posts\/4098\/revisions\/4132"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/media\/4099"}],"wp:attachment":[{"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/media?parent=4098"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/categories?post=4098"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/tags?post=4098"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}