<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
<url><loc>https://nanommo.nenuadrian.com/</loc><lastmod>2026-10-22</lastmod></url>
<url><loc>https://nanommo.nenuadrian.com/about/</loc></url>
<url><loc>https://nanommo.nenuadrian.com/ep001-kickoff/</loc><lastmod>2026-10-14</lastmod><image:image><image:loc>https://i.ytimg.com/vi/P5wjX2rVakg/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/P5wjX2rVakg/maxresdefault.jpg</video:thumbnail_loc><video:title>How to build an MMORPG from scratch in C++ | Building nanoMMO #1</video:title><video:description>In this first episode, we start building an MMORPG from scratch in C++, and the series is going to focus on the engineering around the game: Docker, CI, benchmarking, Prometheus and Grafana, MySQL, Redis and profiling. We sketch the architecture, and then set up a C++20 project written to Google&#39;s style guide, with CMake, GoogleTest, a Docker build, and GitHub Actions checking the style.</video:description><video:player_loc>https://www.youtube.com/embed/P5wjX2rVakg</video:player_loc><video:duration>2859</video:duration><video:publication_date>2026-10-14</video:publication_date><video:tag>mmo</video:tag><video:tag>nanommo</video:tag><video:tag>c++</video:tag><video:tag>cmake</video:tag><video:tag>googletest</video:tag><video:tag>abseil</video:tag><video:tag>google c++ style guide</video:tag><video:tag>cpplint</video:tag><video:tag>clang-format</video:tag><video:tag>docker</video:tag><video:tag>github actions</video:tag><video:tag>doxygen</video:tag><video:tag>game server</video:tag><video:tag>protobuf</video:tag><video:tag>redis</video:tag><video:tag>mysql</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep002-window/</loc><lastmod>2026-10-14</lastmod><image:image><image:loc>https://i.ytimg.com/vi/IW51oEeHf8w/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/IW51oEeHf8w/maxresdefault.jpg</video:thumbnail_loc><video:title>C++ game client with raylib, ImGui and shaders | Building nanoMMO #2</video:title><video:description>We start the C++ client of our MMORPG with raylib, a frame loop and Dear ImGui, and test the renderer in Docker on a virtual display, as there&#39;s no screen there to open a window on. Then we set up a 3D camera, write our first GLSL shaders to light a cube for our character, and move it around a ground of tiles. This is episode 2 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/IW51oEeHf8w</video:player_loc><video:duration>4020</video:duration><video:publication_date>2026-10-14</video:publication_date><video:tag>mmo</video:tag><video:tag>c++</video:tag><video:tag>raylib</video:tag><video:tag>dear imgui</video:tag><video:tag>imgui</video:tag><video:tag>rlimgui</video:tag><video:tag>opengl</video:tag><video:tag>glsl</video:tag><video:tag>shaders</video:tag><video:tag>3d</video:tag><video:tag>cmake</video:tag><video:tag>googletest</video:tag><video:tag>docker</video:tag><video:tag>xvfb</video:tag><video:tag>llvmpipe</video:tag><video:tag>game client</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep003-multiplayer/</loc><lastmod>2026-10-14</lastmod><image:image><image:loc>https://i.ytimg.com/vi/Y6tjktKS2mk/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/Y6tjktKS2mk/maxresdefault.jpg</video:thumbnail_loc><video:title>C++ multiplayer with protobuf and Asio | Building nanoMMO #3</video:title><video:description>We start the multiplayer server, with a contract between client and server in protobuf, messages framed over TCP, and Asio accepting the clients. The world lives on the server, with tests, and several clients see each other&#39;s cubes move. We also go over why we start with TCP, when UDP is the better choice, and how Asio lets us switch later. This is episode 3 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/Y6tjktKS2mk</video:player_loc><video:duration>4136</video:duration><video:publication_date>2026-10-14</video:publication_date><video:tag>mmo</video:tag><video:tag>c++</video:tag><video:tag>protobuf</video:tag><video:tag>protoc</video:tag><video:tag>asio</video:tag><video:tag>tcp</video:tag><video:tag>udp</video:tag><video:tag>networking</video:tag><video:tag>game server</video:tag><video:tag>multiplayer</video:tag><video:tag>cmake</video:tag><video:tag>docker</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep004-monitoring/</loc><lastmod>2026-10-15</lastmod><image:image><image:loc>https://i.ytimg.com/vi/HOY06IcWkvc/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/HOY06IcWkvc/maxresdefault.jpg</video:thumbnail_loc><video:title>Prometheus and Grafana for a C++ game server | Building nanoMMO #4</video:title><video:description>We add metrics to our C++ game server with prometheus-cpp, and write bots that play like someone at the keys. Docker Compose runs the server, Prometheus and Grafana together, with the dashboard set up from files in the repo, and with three hundred bots online we see the bytes we send grow much faster than the players. This is episode 4 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/HOY06IcWkvc</video:player_loc><video:duration>2984</video:duration><video:publication_date>2026-10-15</video:publication_date><video:tag>mmo</video:tag><video:tag>c++</video:tag><video:tag>prometheus</video:tag><video:tag>grafana</video:tag><video:tag>docker compose</video:tag><video:tag>metrics</video:tag><video:tag>monitoring</video:tag><video:tag>observability</video:tag><video:tag>promql</video:tag><video:tag>histogram</video:tag><video:tag>load testing</video:tag><video:tag>bots</video:tag><video:tag>asio</video:tag><video:tag>game server</video:tag><video:tag>devops</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep005-accounts/</loc><lastmod>2026-10-15</lastmod><image:image><image:loc>https://i.ytimg.com/vi/bMKzW1yIpUU/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/bMKzW1yIpUU/maxresdefault.jpg</video:thumbnail_loc><video:title>C++ game accounts with MySQL and Argon2id | Building nanoMMO #5</video:title><video:description>We give our players accounts, with MySQL in Docker Compose and passwords hashed with Argon2id through libsodium, talking to MySQL from C++ through its C API and prepared statements. Along the way we go over SQL or NoSQL, salts and slow hashes, SQL injection, and integration tests against MySQL in a container, in CI too. This is episode 5 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/bMKzW1yIpUU</video:player_loc><video:duration>2810</video:duration><video:publication_date>2026-10-15</video:publication_date><video:tag>mmo</video:tag><video:tag>c++</video:tag><video:tag>mysql</video:tag><video:tag>argon2</video:tag><video:tag>password hashing</video:tag><video:tag>libsodium</video:tag><video:tag>prepared statements</video:tag><video:tag>sql injection</video:tag><video:tag>docker compose</video:tag><video:tag>game server</video:tag><video:tag>accounts</video:tag><video:tag>sql vs nosql</video:tag><video:tag>integration tests</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep006-login/</loc><lastmod>2026-10-15</lastmod><image:image><image:loc>https://i.ytimg.com/vi/E4GcIf_dmOs/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/E4GcIf_dmOs/maxresdefault.jpg</video:thumbnail_loc><video:title>C++ login server with Redis tokens | Building nanoMMO #6</video:title><video:description>We let our players log in, through a login server that checks passwords away from the game&#39;s tick, and hands each login over as a one-time token in Redis. The game server loads the player with it and saves where they are, so you come back where you left off, and the client gets a login screen. This is episode 6 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/E4GcIf_dmOs</video:player_loc><video:duration>4134</video:duration><video:publication_date>2026-10-15</video:publication_date><video:tag>mmo</video:tag><video:tag>c++</video:tag><video:tag>login server</video:tag><video:tag>redis</video:tag><video:tag>hiredis</video:tag><video:tag>tokens</video:tag><video:tag>mysql</video:tag><video:tag>game server</video:tag><video:tag>authentication</video:tag><video:tag>docker compose</video:tag><video:tag>integration tests</video:tag><video:tag>dear imgui</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep007-characters/</loc><lastmod>2026-10-15</lastmod><image:image><image:loc>https://i.ytimg.com/vi/aBYvpPtpvag/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/aBYvpPtpvag/maxresdefault.jpg</video:thumbnail_loc><video:title>raylib 3D animation in C++: Mixamo and glTF | Building nanoMMO #7</video:title><video:description>We turn our cubes into 3D characters with skeletal animation in raylib, from Mixamo&#39;s X Bot and Y Bot, converted from FBX to glTF in Docker. Loading them as they come doesn&#39;t work, so a small glTF tool fixes their skins and bones, and the client blends the clips and skins the characters on the GPU. This is episode 7 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/aBYvpPtpvag</video:player_loc><video:duration>3102</video:duration><video:publication_date>2026-10-15</video:publication_date><video:tag>mmo</video:tag><video:tag>c++</video:tag><video:tag>raylib</video:tag><video:tag>mixamo</video:tag><video:tag>gltf</video:tag><video:tag>glb</video:tag><video:tag>fbx</video:tag><video:tag>fbx2gltf</video:tag><video:tag>gltf-transform</video:tag><video:tag>skeletal animation</video:tag><video:tag>gpu skinning</video:tag><video:tag>glsl</video:tag><video:tag>protobuf</video:tag><video:tag>game server</video:tag><video:tag>docker</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep008-performance/</loc><lastmod>2026-10-15</lastmod><image:image><image:loc>https://i.ytimg.com/vi/HeUPamUI6rc/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/HeUPamUI6rc/maxresdefault.jpg</video:thumbnail_loc><video:title>Profiling a C++ game server with perf and Tracy | Building nanoMMO #8</video:title><video:description>We benchmark our C++ game server to see how many players it can take, and it falls behind past a thousand. Profiling it under load with perf and Tracy points at the broadcast, which serialised the whole world for each client, so we serialise it once a tick, and the server keeps up with twice the players. This is episode 8 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/HeUPamUI6rc</video:player_loc><video:duration>2530</video:duration><video:publication_date>2026-10-15</video:publication_date><video:tag>mmo</video:tag><video:tag>c++</video:tag><video:tag>performance</video:tag><video:tag>profiling</video:tag><video:tag>perf</video:tag><video:tag>flame graph</video:tag><video:tag>tracy</video:tag><video:tag>benchmark</video:tag><video:tag>load testing</video:tag><video:tag>prometheus</video:tag><video:tag>grafana</video:tag><video:tag>docker compose</video:tag><video:tag>protobuf</video:tag><video:tag>asio</video:tag><video:tag>game server</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep009-tcp-vs-udp/</loc><lastmod>2026-10-15</lastmod><image:image><image:loc>https://i.ytimg.com/vi/8b_wbmr7XVM/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/8b_wbmr7XVM/maxresdefault.jpg</video:thumbnail_loc><video:title>TCP vs UDP for a game server, under packet loss | Building nanoMMO #9</video:title><video:description>We compare TCP and UDP for our game server under packet loss, with netem dropping a share of the packets and our bots measuring how old their newest world is. Over TCP, head-of-line blocking makes the worlds wait for each lost packet, so we send the world over UDP, in parts that fit in a packet, and make that the default. This is episode 9 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/8b_wbmr7XVM</video:player_loc><video:duration>3107</video:duration><video:publication_date>2026-10-15</video:publication_date><video:tag>mmo</video:tag><video:tag>c++</video:tag><video:tag>tcp</video:tag><video:tag>udp</video:tag><video:tag>networking</video:tag><video:tag>packet loss</video:tag><video:tag>netem</video:tag><video:tag>tc</video:tag><video:tag>head-of-line blocking</video:tag><video:tag>ip fragmentation</video:tag><video:tag>nat</video:tag><video:tag>asio</video:tag><video:tag>protobuf</video:tag><video:tag>prometheus</video:tag><video:tag>grafana</video:tag><video:tag>docker compose</video:tag><video:tag>benchmark</video:tag><video:tag>game server</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep010-monsters/</loc><lastmod>2026-10-15</lastmod><image:image><image:loc>https://i.ytimg.com/vi/6qhX6Z-tKqY/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/6qhX6Z-tKqY/maxresdefault.jpg</video:thumbnail_loc><video:title>C++ MMO monsters: AI, health and levels | Building nanoMMO #10</video:title><video:description>We add the first monsters to our world, a skeleton from Quaternius that the client loads as it is, with a wander AI that the server runs each tick. Players and monsters get health and levels, and players get experience, saved in MySQL and shown with health bars over everyone. This is episode 10 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/6qhX6Z-tKqY</video:player_loc><video:duration>2953</video:duration><video:publication_date>2026-10-15</video:publication_date><video:tag>mmo</video:tag><video:tag>c++</video:tag><video:tag>game server</video:tag><video:tag>monsters</video:tag><video:tag>game ai</video:tag><video:tag>raylib</video:tag><video:tag>gltf</video:tag><video:tag>quaternius</video:tag><video:tag>cc0</video:tag><video:tag>protobuf</video:tag><video:tag>mysql</video:tag><video:tag>dear imgui</video:tag><video:tag>health bar</video:tag><video:tag>levels</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep011-combat/</loc><lastmod>2026-10-18</lastmod><image:image><image:loc>https://i.ytimg.com/vi/knOkRrwOiTQ/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/knOkRrwOiTQ/maxresdefault.jpg</video:thumbnail_loc><video:title>C++ MMO combat: swords, hits and respawns | Building nanoMMO #11</video:title><video:description>We add combat, so our players can fight the monsters from episode ten with a sword in their hand. The space bar swings it, the server decides what it hits and who gets the experience, and the monsters run at players near their home, swing back, and respawn after they die. This is episode 11 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/knOkRrwOiTQ</video:player_loc><video:duration>2004</video:duration><video:publication_date>2026-10-18</video:publication_date><video:tag>mmo</video:tag><video:tag>c++</video:tag><video:tag>game server</video:tag><video:tag>combat</video:tag><video:tag>game ai</video:tag><video:tag>raylib</video:tag><video:tag>gltf</video:tag><video:tag>mixamo</video:tag><video:tag>quaternius</video:tag><video:tag>cc0</video:tag><video:tag>animation</video:tag><video:tag>respawn</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep012-website/</loc><lastmod>2026-10-18</lastmod><image:image><image:loc>https://i.ytimg.com/vi/0mouU_3PfIw/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/0mouU_3PfIw/maxresdefault.jpg</video:thumbnail_loc><video:title>Laravel game website in Docker: login, rankings | Building nanoMMO #12</video:title><video:description>We build a website for our game with Laravel, running on FrankenPHP in our Docker Compose stack, with a front page that ranks the players by experience. You can create an account and log in there too, with passwords hashed the way the login server does it, so an account made on the website works in the game as well. This is episode 12 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/0mouU_3PfIw</video:player_loc><video:duration>2813</video:duration><video:publication_date>2026-10-18</video:publication_date><video:tag>mmo</video:tag><video:tag>laravel</video:tag><video:tag>php</video:tag><video:tag>website</video:tag><video:tag>docker</video:tag><video:tag>docker compose</video:tag><video:tag>frankenphp</video:tag><video:tag>mysql</video:tag><video:tag>redis</video:tag><video:tag>pico css</video:tag><video:tag>login</video:tag><video:tag>registration</video:tag><video:tag>rankings</video:tag><video:tag>argon2</video:tag><video:tag>password hashing</video:tag><video:tag>game server</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep013-redis/</loc><lastmod>2026-10-18</lastmod><image:image><image:loc>https://i.ytimg.com/vi/F1-B23Ifibg/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/F1-B23Ifibg/maxresdefault.jpg</video:thumbnail_loc><video:title>Redis cache in C++: write-behind to MySQL | Building nanoMMO #13</video:title><video:description>We stop our players losing their progress when the C++ game server crashes. Saving to MySQL after each tick falls behind at fifty players, so we put Redis in between, written in a single round trip each tick, and a saver of our own writes behind to MySQL. Then we crash the server, and the players come back where they were. This is episode 13 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/F1-B23Ifibg</video:player_loc><video:duration>2482</video:duration><video:publication_date>2026-10-18</video:publication_date><video:tag>mmo</video:tag><video:tag>c++</video:tag><video:tag>redis</video:tag><video:tag>mysql</video:tag><video:tag>write-behind</video:tag><video:tag>caching</video:tag><video:tag>pipelining</video:tag><video:tag>hiredis</video:tag><video:tag>append only file</video:tag><video:tag>persistence</video:tag><video:tag>benchmark</video:tag><video:tag>prometheus</video:tag><video:tag>grafana</video:tag><video:tag>docker compose</video:tag><video:tag>game server</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep014-tls/</loc><lastmod>2026-10-18</lastmod><image:image><image:loc>https://i.ytimg.com/vi/ymt8DlhhvrA/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/ymt8DlhhvrA/maxresdefault.jpg</video:thumbnail_loc><video:title>TLS for a C++ game server with OpenSSL and Asio | Building nanoMMO #14</video:title><video:description>We put TLS 1.3 on each TCP connection in our game, after watching passwords and tokens cross the network in plain text with tcpdump. We go through the handshake and certificates, make a certificate authority of our own, bring in OpenSSL through Asio&#39;s SSL stream, and check what it costs. This is episode 14 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/ymt8DlhhvrA</video:player_loc><video:duration>2672</video:duration><video:publication_date>2026-10-18</video:publication_date><video:tag>mmo</video:tag><video:tag>c++</video:tag><video:tag>tls</video:tag><video:tag>tls 1.3</video:tag><video:tag>openssl</video:tag><video:tag>asio</video:tag><video:tag>ssl</video:tag><video:tag>certificates</video:tag><video:tag>certificate authority</video:tag><video:tag>x509</video:tag><video:tag>ecdsa</video:tag><video:tag>encryption</video:tag><video:tag>tcpdump</video:tag><video:tag>docker compose</video:tag><video:tag>game server</video:tag><video:tag>networking</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep015-world/</loc><lastmod>2026-10-18</lastmod><image:image><image:loc>https://i.ytimg.com/vi/oeL-fyumD8k/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/oeL-fyumD8k/maxresdefault.jpg</video:thumbnail_loc><video:title>Procedural terrain in C++ with noise and raylib | Building nanoMMO #15</video:title><video:description>We replace our board of tiles with a procedural island, 512 metres across, from value noise and a seed that the server and the client share. Both have to compute the island to the last bit, so we turn off fused multiply-adds and pin a fingerprint in a test, and the client draws it low-poly, with a sea, fog and a camera that follows you. This is episode 15 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/oeL-fyumD8k</video:player_loc><video:duration>3134</video:duration><video:publication_date>2026-10-18</video:publication_date><video:tag>mmo</video:tag><video:tag>c++</video:tag><video:tag>procedural generation</video:tag><video:tag>terrain</video:tag><video:tag>value noise</video:tag><video:tag>raylib</video:tag><video:tag>low poly</video:tag><video:tag>fog</video:tag><video:tag>game camera</video:tag><video:tag>floating point</video:tag><video:tag>determinism</video:tag><video:tag>fma</video:tag><video:tag>game server</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep016-trees/</loc><lastmod>2026-10-18</lastmod><image:image><image:loc>https://i.ytimg.com/vi/jzgKLt6Prgg/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/jzgKLt6Prgg/maxresdefault.jpg</video:thumbnail_loc><video:title>Trees and frustum culling in C++ with raylib | Building nanoMMO #16</video:title><video:description>We grow trees on our island where the seed says, from a low-poly model under CC BY, with trunks the server makes solid. Then we measure how fast the client draws it all, with a benchmark of its own, and make it a lot faster by splitting the island into chunks and drawing the ones the camera can see. This is episode 16 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/jzgKLt6Prgg</video:player_loc><video:duration>1924</video:duration><video:publication_date>2026-10-18</video:publication_date><video:tag>mmo</video:tag><video:tag>c++</video:tag><video:tag>raylib</video:tag><video:tag>trees</video:tag><video:tag>frustum culling</video:tag><video:tag>chunks</video:tag><video:tag>benchmark</video:tag><video:tag>rendering performance</video:tag><video:tag>draw calls</video:tag><video:tag>llvmpipe</video:tag><video:tag>game client</video:tag><video:tag>low poly</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep017-character-screen/</loc><lastmod>2026-10-18</lastmod><image:image><image:loc>https://i.ytimg.com/vi/oQwuej-UaHM/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/oQwuej-UaHM/maxresdefault.jpg</video:thumbnail_loc><video:title>Game character screen in C++ with raylib, ImGui | Building nanoMMO #17</video:title><video:description>We build a character screen with your name, level, health, experience and position, next to an idle model of your character. The client draws the model into a render texture through a camera of its own, Dear ImGui shows it in a window, and a test checks the preview on a hidden window. This is episode 17 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/oQwuej-UaHM</video:player_loc><video:duration>1049</video:duration><video:publication_date>2026-10-18</video:publication_date><video:tag>mmo</video:tag><video:tag>c++</video:tag><video:tag>raylib</video:tag><video:tag>dear imgui</video:tag><video:tag>character screen</video:tag><video:tag>render texture</video:tag><video:tag>render target</video:tag><video:tag>offscreen rendering</video:tag><video:tag>game UI</video:tag><video:tag>3d preview</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep018-migrations/</loc><lastmod>2026-10-18</lastmod><image:image><image:loc>https://i.ytimg.com/vi/Qyzva2b8lH4/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/Qyzva2b8lH4/maxresdefault.jpg</video:thumbnail_loc><video:title>MySQL schema migrations with Flyway in Docker | Building nanoMMO #18</video:title><video:description>We bring in Flyway to keep our MySQL tables in versioned migrations, so that changing a table no longer means deleting the database and its accounts. Docker Compose runs it before the servers, and then we save the players&#39; health, where an edited first migration fails its checksum and the change gets a second migration instead. This is episode 18 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/Qyzva2b8lH4</video:player_loc><video:duration>1139</video:duration><video:publication_date>2026-10-18</video:publication_date><video:tag>mmo</video:tag><video:tag>mysql</video:tag><video:tag>flyway</video:tag><video:tag>database migrations</video:tag><video:tag>schema migrations</video:tag><video:tag>versioned migrations</video:tag><video:tag>docker compose</video:tag><video:tag>alter table</video:tag><video:tag>redis</video:tag><video:tag>c++</video:tag><video:tag>game server</video:tag><video:tag>devops</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep019-deployment/</loc><lastmod>2026-10-18</lastmod><image:image><image:loc>https://i.ytimg.com/vi/RLQY3-KLp18/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/RLQY3-KLp18/maxresdefault.jpg</video:thumbnail_loc><video:title>Deploy a C++ game server to a VPS with Docker | Building nanoMMO #19</video:title><video:description>We deploy our game to a VPS on the internet, a DreamHost one with two virtual CPUs (the affiliate link is below). We decide what the internet gets to reach, write a production compose file and a deploy script that builds a commit on the server, and put the VPS under load with our bots. This is episode 19 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/RLQY3-KLp18</video:player_loc><video:duration>1173</video:duration><video:publication_date>2026-10-18</video:publication_date><video:tag>mmo</video:tag><video:tag>deployment</video:tag><video:tag>vps</video:tag><video:tag>docker compose</video:tag><video:tag>ssh</video:tag><video:tag>devops</video:tag><video:tag>game server</video:tag><video:tag>c++</video:tag><video:tag>tls</video:tag><video:tag>certificates</video:tag><video:tag>dreamhost</video:tag><video:tag>ufw</video:tag><video:tag>firewall</video:tag><video:tag>production</video:tag><video:tag>load testing</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep020-interest/</loc><lastmod>2026-10-18</lastmod><image:image><image:loc>https://i.ytimg.com/vi/8bnfKqUPQb8/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/8bnfKqUPQb8/maxresdefault.jpg</video:thumbnail_loc><video:title>MMO interest management: send each player less | Building nanoMMO #20</video:title><video:description>We cut what our server sends each player with interest management, as sending everyone the whole world grows with the square of the players. Our bots take trips so that they spread out, the island goes into cells of 32 metres, and each player gets what&#39;s near them, measured on my machine and on the VPS. This is episode 20 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/8bnfKqUPQb8</video:player_loc><video:duration>1960</video:duration><video:publication_date>2026-10-18</video:publication_date><video:tag>mmo</video:tag><video:tag>interest management</video:tag><video:tag>area of interest</video:tag><video:tag>game server</video:tag><video:tag>networking</video:tag><video:tag>c++</video:tag><video:tag>protobuf</video:tag><video:tag>udp</video:tag><video:tag>bandwidth</video:tag><video:tag>benchmark</video:tag><video:tag>perf</video:tag><video:tag>flame graph</video:tag><video:tag>vps</video:tag><video:tag>game development</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep021-worlds/</loc><lastmod>2026-10-18</lastmod><image:image><image:loc>https://i.ytimg.com/vi/lTFtOuEIeZE/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/lTFtOuEIeZE/maxresdefault.jpg</video:thumbnail_loc><video:title>Consul service discovery for a C++ game server | Building nanoMMO #21</video:title><video:description>We run several worlds instead of one, each registered with Consul through its HTTP API, with a heartbeat so that a world that crashes drops out of the list. The login server lists the healthy worlds, you pick one before you log in, Prometheus finds them through Consul too, and each world gets its own players. This is episode 21 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/lTFtOuEIeZE</video:player_loc><video:duration>2955</video:duration><video:publication_date>2026-10-18</video:publication_date><video:tag>mmo</video:tag><video:tag>service discovery</video:tag><video:tag>consul</video:tag><video:tag>docker</video:tag><video:tag>docker compose</video:tag><video:tag>health checks</video:tag><video:tag>c++</video:tag><video:tag>nlohmann json</video:tag><video:tag>cpp-httplib</video:tag><video:tag>prometheus</video:tag><video:tag>flyway</video:tag><video:tag>game server</video:tag><video:tag>game development</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep022-lands/</loc><lastmod>2026-10-18</lastmod><image:image><image:loc>https://i.ytimg.com/vi/m5B_W9fVRwY/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/m5B_W9fVRwY/maxresdefault.jpg</video:thumbnail_loc><video:title>MMO zones and portals in C++ with raylib | Building nanoMMO #22</video:title><video:description>We give each world a second land, the Ashlands, with a gate between it and the Meadows, the way MMOs have zones. The look of a land becomes data that the shaders read each frame, the world server runs both lands in one process, and a Flyway migration keeps the land a player is in. This is episode 22 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/m5B_W9fVRwY</video:player_loc><video:duration>2674</video:duration><video:publication_date>2026-10-18</video:publication_date><video:tag>mmo</video:tag><video:tag>game zones</video:tag><video:tag>portals</video:tag><video:tag>c++</video:tag><video:tag>raylib</video:tag><video:tag>shaders</video:tag><video:tag>glsl</video:tag><video:tag>fog</video:tag><video:tag>lighting</video:tag><video:tag>low poly</video:tag><video:tag>game server</video:tag><video:tag>flyway</video:tag><video:tag>prometheus</video:tag><video:tag>grafana</video:tag><video:tag>game development</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep023-chat/</loc><lastmod>2026-10-18</lastmod><image:image><image:loc>https://i.ytimg.com/vi/stXkyDWZdqI/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/stXkyDWZdqI/maxresdefault.jpg</video:thumbnail_loc><video:title>MMO chat in C++: TCP, ImGui and rate limits | Building nanoMMO #23</video:title><video:description>We add a chat to our MMO, where a line goes to everyone in your world, over TCP even for the clients that get the world over UDP. The client gets a chat window in ImGui, the server cleans each line and a token bucket keeps anyone from flooding it, and our bots chat now and then too. This is episode 23 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/stXkyDWZdqI</video:player_loc><video:duration>1700</video:duration><video:publication_date>2026-10-18</video:publication_date><video:tag>mmo</video:tag><video:tag>game chat</video:tag><video:tag>chat system</video:tag><video:tag>c++</video:tag><video:tag>protobuf</video:tag><video:tag>tcp</video:tag><video:tag>udp</video:tag><video:tag>imgui</video:tag><video:tag>raylib</video:tag><video:tag>rate limiting</video:tag><video:tag>token bucket</video:tag><video:tag>game server</video:tag><video:tag>prometheus</video:tag><video:tag>grafana</video:tag><video:tag>game development</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep024-npcs/</loc><lastmod>2026-10-18</lastmod><image:image><image:loc>https://i.ytimg.com/vi/tcwvi2ktWKk/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/tcwvi2ktWKk/maxresdefault.jpg</video:thumbnail_loc><video:title>MMO NPCs in C++: data-driven, low bandwidth | Building nanoMMO #24</video:title><video:description>We add NPCs to our world, a guard, a merchant and a healer in each land, after turning our monsters into data. NPCs don&#39;t move, so the server puts them into their interest cells once and sends them once a second, and the client keeps each one for a few seconds, so that a lost datagram doesn&#39;t make them blink. This is episode 24 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/tcwvi2ktWKk</video:player_loc><video:duration>1772</video:duration><video:publication_date>2026-10-18</video:publication_date><video:tag>mmo</video:tag><video:tag>npc</video:tag><video:tag>non-player characters</video:tag><video:tag>game server</video:tag><video:tag>c++</video:tag><video:tag>data-driven design</video:tag><video:tag>protobuf</video:tag><video:tag>udp</video:tag><video:tag>interest management</video:tag><video:tag>bandwidth</video:tag><video:tag>raylib</video:tag><video:tag>imgui</video:tag><video:tag>game development</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep025-storyteller/</loc><lastmod>2026-10-18</lastmod><image:image><image:loc>https://i.ytimg.com/vi/8ahH708PKvQ/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/8ahH708PKvQ/maxresdefault.jpg</video:thumbnail_loc><video:title>An LLM-powered NPC in a C++ MMO server | Building nanoMMO #25</video:title><video:description>We give one of our NPCs a language model: a storyteller that writes you a story from a few words, with mvGPT from my other series running next to the game. The server asks it from threads of its own, so that the tick doesn&#39;t wait for a story, and the client picks the NPC with a ray from the mouse. This is episode 25 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/8ahH708PKvQ</video:player_loc><video:duration>2632</video:duration><video:publication_date>2026-10-18</video:publication_date><video:tag>mmo</video:tag><video:tag>npc</video:tag><video:tag>llm</video:tag><video:tag>language model</video:tag><video:tag>ai npc</video:tag><video:tag>storyteller</video:tag><video:tag>game server</video:tag><video:tag>c++</video:tag><video:tag>http</video:tag><video:tag>cpp-httplib</video:tag><video:tag>threads</video:tag><video:tag>batching</video:tag><video:tag>raylib</video:tag><video:tag>ray picking</video:tag><video:tag>imgui</video:tag><video:tag>prometheus</video:tag><video:tag>grafana</video:tag><video:tag>mvgpt</video:tag><video:tag>game development</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep026-items/</loc><lastmod>2026-10-18</lastmod><image:image><image:loc>https://i.ytimg.com/vi/QUBo0U3dWUE/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/QUBo0U3dWUE/maxresdefault.jpg</video:thumbnail_loc><video:title>MMO items in C++ with protobuf text format | Building nanoMMO #26</video:title><video:description>We start an item system with the sword our players hold, moving its reach, damage and look into an items file in protobuf&#39;s text format, which the server and the client both read. A parser refuses a misspelt field, and each player holds a weapon by its id, saved in Redis and MySQL. This is episode 26 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/QUBo0U3dWUE</video:player_loc><video:duration>1830</video:duration><video:publication_date>2026-10-18</video:publication_date><video:tag>mmo</video:tag><video:tag>item system</video:tag><video:tag>game items</video:tag><video:tag>data-driven design</video:tag><video:tag>protobuf</video:tag><video:tag>text format</video:tag><video:tag>textproto</video:tag><video:tag>c++</video:tag><video:tag>game server</video:tag><video:tag>docker</video:tag><video:tag>flyway</video:tag><video:tag>mysql</video:tag><video:tag>redis</video:tag><video:tag>raylib</video:tag><video:tag>game development</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep027-content/</loc><lastmod>2026-10-18</lastmod><image:image><image:loc>https://i.ytimg.com/vi/pNLTgWXg5CU/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/pNLTgWXg5CU/maxresdefault.jpg</video:thumbnail_loc><video:title>Data-driven MMO content in C++ with protobuf | Building nanoMMO #27</video:title><video:description>We turn the rest of our game&#39;s content into data, with the kinds of monsters and NPCs, and where they stand, in a content folder that both sides read. Monsters and NPCs go out by their kind&#39;s id, a hash of the content keeps clients off worlds they don&#39;t match, and a new monster joins without a line of code. This is episode 27 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/pNLTgWXg5CU</video:player_loc><video:duration>2973</video:duration><video:publication_date>2026-10-18</video:publication_date><video:tag>mmo</video:tag><video:tag>data-driven design</video:tag><video:tag>game content</video:tag><video:tag>protobuf</video:tag><video:tag>text format</video:tag><video:tag>game server</video:tag><video:tag>c++</video:tag><video:tag>consul</video:tag><video:tag>hashing</video:tag><video:tag>fnv-1a</video:tag><video:tag>raylib</video:tag><video:tag>game development</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep028-checks/</loc><lastmod>2026-10-18</lastmod><image:image><image:loc>https://i.ytimg.com/vi/00BaZgctnE4/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/00BaZgctnE4/maxresdefault.jpg</video:thumbnail_loc><video:title>C++ sanitizers, fuzzing and coverage in Docker | Building nanoMMO #28</video:title><video:description>We look for the bugs our tests don&#39;t find, with AddressSanitizer, UndefinedBehaviorSanitizer and ThreadSanitizer while two hundred bots play, a fuzzer, clang-tidy and a coverage report. They find a leak in raylib, a data race in our metrics&#39; web server and stories the storyteller would lose, and we fix what they find, in Docker and in CI. This is episode 28 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/00BaZgctnE4</video:player_loc><video:duration>2297</video:duration><video:publication_date>2026-10-18</video:publication_date><video:tag>c++</video:tag><video:tag>addresssanitizer</video:tag><video:tag>threadsanitizer</video:tag><video:tag>ubsan</video:tag><video:tag>sanitizers</video:tag><video:tag>fuzzing</video:tag><video:tag>libfuzzer</video:tag><video:tag>clang-tidy</video:tag><video:tag>code coverage</video:tag><video:tag>llvm-cov</video:tag><video:tag>docker</video:tag><video:tag>github actions</video:tag><video:tag>mmo</video:tag><video:tag>game server</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep029-server-test/</loc><lastmod>2026-10-18</lastmod><image:image><image:loc>https://i.ytimg.com/vi/GhF-X9H0zY4/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/GhF-X9H0zY4/maxresdefault.jpg</video:thumbnail_loc><video:title>Integration testing a C++ game server | Building nanoMMO #29</video:title><video:description>We write an integration test for our C++ game server, which starts a world server inside the test, against MySQL and Redis, and has players join it over TLS like the client does. The test waits for what it checks without sleeping, the sanitisers catch a bug in the test, and the coverage report shows how much more of the server we test now. This is episode 29 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/GhF-X9H0zY4</video:player_loc><video:duration>1241</video:duration><video:publication_date>2026-10-18</video:publication_date><video:tag>c++</video:tag><video:tag>integration testing</video:tag><video:tag>googletest</video:tag><video:tag>asio</video:tag><video:tag>tls</video:tag><video:tag>code coverage</video:tag><video:tag>llvm-cov</video:tag><video:tag>ubsan</video:tag><video:tag>addresssanitizer</video:tag><video:tag>docker</video:tag><video:tag>mmo</video:tag><video:tag>game server</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep030-alerts/</loc><lastmod>2026-10-20</lastmod><image:image><image:loc>https://i.ytimg.com/vi/oUx_OfHZ80E/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/oUx_OfHZ80E/maxresdefault.jpg</video:thumbnail_loc><video:title>Prometheus Alertmanager: alert rules and email | Building nanoMMO #30</video:title><video:description>We have Prometheus alert us on what players would notice, a world that falls behind and a world that crashes, and watch the alerts go pending and fire. A crashed world drops out of Consul and lets go of its alert, so we write a rule that holds on, and Alertmanager emails each alert to Mailpit, with promtool testing the rules in CI. This is episode 30 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/oUx_OfHZ80E</video:player_loc><video:duration>1054</video:duration><video:publication_date>2026-10-20</video:publication_date><video:tag>prometheus</video:tag><video:tag>alertmanager</video:tag><video:tag>alerting</video:tag><video:tag>promql</video:tag><video:tag>mailpit</video:tag><video:tag>promtool</video:tag><video:tag>docker compose</video:tag><video:tag>consul</video:tag><video:tag>monitoring</video:tag><video:tag>observability</video:tag><video:tag>mmo</video:tag><video:tag>game server</video:tag><video:tag>c++</video:tag><video:tag>devops</video:tag></video:video></url>
<url><loc>https://nanommo.nenuadrian.com/ep031-skills/</loc><lastmod>2026-10-22</lastmod><image:image><image:loc>https://i.ytimg.com/vi/5eZ6o2QXsHY/maxresdefault.jpg</image:loc></image:image><video:video><video:thumbnail_loc>https://i.ytimg.com/vi/5eZ6o2QXsHY/maxresdefault.jpg</video:thumbnail_loc><video:title>MMORPG skills, cooldowns and a hotbar in C++ | Building nanoMMO #31</video:title><video:description>We give our players skills, a thrust, a kick, a whirlwind and second wind, as content that the server decides, with a level to reach and a cooldown. The client gets a hotbar on the number keys with icons and countdowns, the characters get new animations from Mixamo, and the camera learns to tilt. This is episode 31 of a series about building an MMORPG from scratch in C++, with the focus on the engineering around the game.</video:description><video:player_loc>https://www.youtube.com/embed/5eZ6o2QXsHY</video:player_loc><video:duration>2365</video:duration><video:publication_date>2026-10-22</video:publication_date><video:tag>game skills</video:tag><video:tag>cooldowns</video:tag><video:tag>hotbar</video:tag><video:tag>mmorpg</video:tag><video:tag>game server</video:tag><video:tag>c++</video:tag><video:tag>raylib</video:tag><video:tag>dear imgui</video:tag><video:tag>protobuf</video:tag><video:tag>mixamo</video:tag><video:tag>animation</video:tag><video:tag>game camera</video:tag><video:tag>font awesome</video:tag><video:tag>udp</video:tag></video:video></url>
</urlset>
