Making Minecraft Clone with C++ & Raylib - multiplayer
Live On Twitch: / pecacs Live On YouTube: / @pecacslive 00:00:00 Stream start & intro for new viewers 00:04:02 Water physics left unfinished from yesterday 00:06:19 More ideas: lighting, weather, villagers, crafting 00:07:54 Continued brainstorming: minecarts, shaders, saving 00:10:16 Chat discussion in multiple languages 00:11:46 Narrowing down options, multiplayer debated 00:15:57 Multiplayer wins the vote 00:17:50 Streamer dreads multiplayer complexity 00:20:10 Recap of previous multiplayer progress 00:21:56 Switching to multiplayer branch in git 00:23:36 Fixing broken textures from branch switch 00:25:26 Copying bare bones texture pack 00:27:08 Updating stream title/thumbnail for multiplayer 00:31:08 Fixing particles texture resolution 00:33:07 Attempting faster terrain generation 00:36:26 Debugging networking code for speed 00:38:25 Testing while loop for sub-chunk processing 00:40:52 Terrain still slow, investigating server issue 00:43:31 Timing terrain generation with stopwatch 00:46:21 Recap of stream so far for late viewers 00:48:06 Chat votes to fix terrain generation 00:49:38 Deciding to send more data per packet instead 00:52:22 Git commit before refactoring server code 00:55:05 Restructuring loops to build full chunks 00:57:40 Reading chunk batch and light data packet specs 00:59:28 Studying block state compression and packet structure 01:01:03 Understanding chunk batch acknowledgment system 01:03:04 Refactoring server code to send entire chunks 01:04:49 Visualizing chunk/sub-chunk structure in debug world 01:06:30 Implementing std::copy for chunk data assembly 01:08:04 Recap: why we switched from sub-chunks to chunks 01:10:57 Adding chunk coordinates to packet 01:15:48 Recap: sending entire chunks from server 01:17:28 Implementing chunk data queue structure 01:19:03 Chat suggests run-length encoding, streamer declines 01:20:52 Processing chunks into sub-chunks in game layer 01:23:48 Testing: server sends chunks instead of sub-chunks 01:25:21 Debugging raycast and block type issue 01:27:41 Debugging: all blocks read as ID 204 01:29:20 Suspecting offset bug in std::copy for sub-chunk data 01:31:07 Recap: offset bug when copying sub-chunk data to chunk 01:33:14 Found the bug: offset increment at wrong moment 01:35:33 Isolating lag: mesh generation is the culprit 01:37:57 Optimizing: skip mesh generation for air-only sub-chunks 01:40:17 Chat asks why multiplayer was chosen 01:43:15 Single sub-chunk mesh taking too long per frame 01:45:04 Discussing pushing mesh generation to separate thread 01:47:08 Recap from AI: isolated mesh generation as culprit 01:49:24 Debugging sub-chunk origin coordinates 01:51:15 Why data is copied between networking and game layers 01:53:18 Breaking a block triggers lag spike 01:56:37 Chat suggests using a profiler 01:59:14 Debug mode vs release mode performance difference 02:01:06 Recap: two hours to send chunks instead of sub-chunks 02:02:42 Discussing mesh generation performance for sub-chunks 02:04:52 Ambient occlusion slowing down mesh generation 02:07:20 Two clients running simultaneously 02:09:04 Discussing server-side player position management 02:10:56 Chat votes on how to receive player positions 02:12:39 Recap of stream progress for late viewers 02:15:39 Storing player positions centrally on server 02:17:18 Adding raylib as submodule for server 02:20:38 Including raymath for Vector3 positions 02:22:39 Separating packet types: chunk data vs player position 02:24:33 Planning to send positions every server frame 02:26:25 Chat debate: should we switch to Godot? 02:29:35 Weighing pros/cons: C++ vs Godot 02:31:27 Deciding to finish current stream first 02:33:49 Implementing packet types enum for player positions 02:35:39 Discussing Godot's cross-platform benefits 02:38:06 Planning 6-8 hour Godot experiment stream 02:40:09 Chat votes C# for Godot Minecraft 02:42:08 Sending player positions to all clients 02:43:55 Chat votes Godot for next Minecraft experiment stream 02:45:47 Sending player positions with packet type IDs 02:48:26 Encoding packet type as first float in position data 02:50:00 Adding packet type to chunk data as well 02:52:09 Client-side switch statement to handle packet types 02:53:46 Testing: server starts, but no terrain generation 02:55:55 Debugging: terrain not generating after changes 02:57:27 Suspecting player position packet is breaking chunk data 02:59:14 Commenting out player position sends to test 03:01:03 Recap: terrain generation and player position history 03:03:33 Chat votes Godot C# for next experiment stream 03:05:52 Confirmed: Godot stream with multiplayer from start This is a fan-made project with no available downloads, created purely to learn game development. Minecraft and related assets are owned by Mojang Studios and Microsoft. This project is not endorsed by, sponsored by, or affiliated with Mojang/Microsoft

I made a strategy war game in Minecraft | QUENCE

Making Minecraft Clone with C++ & Raylib - Last Stream For A Week

CheatUtils - Vibe Coding

Reddit May Have Just Found the $200,000 Missing Lego

These Optimizations Doubled My Voxel Engine FPS

I Let 4 AI Control the World… and It Turned Into Chaos

I built a MODERN XBOX...

China quietly saved the world last month

Making Minecraft Clone with C++ & Raylib - Water

Can I Survive a Minecraft Civilization Event as a Single Father?

What's The Most Expensive Thing Ever?

How a Marketing Company Created (and Destroyed) Kerbal Space Program

Why is Infdev 624 the Worst Version of Minecraft?

100% Speedrunning I Am Cat Was A Mistake

The World's Hardest Game's Biggest Barrier Was Finally Broken

I Streamed The Real VERITY Mod

Literally Everything Mojang Tried To Hide

This Is Chess History

Theoretically Possible Events in Minecraft #4

