*0:00 - Technical Debugging Session* - Started debugging why menu bar clicks weren't working properly in the updated ImGui integration - Discovered issues with button behavior and press/release event handling - Found that pressed and menu_is_open were never true in the same frame, preventing proper menu closing
*30:00 - Root Cause Discovery* - Identified that focus_window() was being called on mouse clicks, which was interfering with menu behavior - The focus window call was automatically closing popups before the menu button logic could process the click - Temporarily removed the focus window behavior to fix menu interactions
*48:00 - Viewport Panel Issues* - Encountered mysterious viewport panel attachment problems where panels couldn't be moved - Discovered that a disabled viewport settings block was causing layout corruption - Fixed by re-enabling the viewport settings code that was previously commented out with if false
*1:10:00 - Title Bar Dragging Problems* - Worked on making the entire title bar draggable, not just a small portion - Struggled with hit testing issues where is_mouse_hovering_rect() wasn't working properly in certain areas - Found that the clip parameter was defaulting to true, causing the hit test to be clipped to the current window bounds - Solved by setting clip=false in the hit test function
*2:30:00 - Non-Client Area Mouse Events* - Discovered that mouse events in the title bar (non-client area) weren't being passed to the application - Had to implement custom WM_NCLBUTTONDOWN and WM_NCLBUTTONUP message handling in the Windows message loop - This allowed the application to receive mouse events even when clicking on the title bar region
*2:45:00 - Final UI Polish* - Fine-tuned button positioning and spacing in the title bar - Addressed remaining visual inconsistencies between old and new Hazel versions - Noted remaining issues: texture filtering problems, missing text in content browser, and memory leaks (~21GB)
_Stream Summary by Claude Sonnet 4_HUGE ImGui Update Broke Everything Part 1 // Renderer 2025 // Hazel Engine Stream (04.06.2025)Cherno Unplugged2025-06-20 | Watch Live ► twitch.tv/thecherno Discord channel for live streams ► discord.gg/VFuHXUtBcS
*00:00 - Opening & Stream Goals* - Stream introduction by Cherno - June 4th development session - Goal: Finish renderer project by end of June through multiple streams - Recap of previous stream's major ImGui update from 2.5-year-old fork to latest docking branch - Successfully remerged custom features and fixed API breaking changes
*02:30 - ImGui ID Conflict Issues* - New ImGui debugging tools revealing "two visible items with conflicting ID" errors - Problem affects scene hierarchy and content browser panels with tree node structures - Investigation into button behavior function requiring same ID as tree nodes for proper linking - Error triggers specifically when hovering over hierarchy items
*07:30 - Graphics Driver Troubleshooting Recap* - Previous stream issues: Vulkan causing complete computer freezes during panel dragging - Panel flashing problems when docking windows back into main interface - Solution: Updated from Nvidia Studio drivers to latest Game Ready drivers - Fixed both freezing and visual glitching issues
*11:00 - Deep Dive into Button Behavior Code* - Analysis of draw entity node function and its use of button behavior with shared IDs - Exploration of why duplicate IDs are necessary for proper UI interaction - Investigation into ImGui's internal ID conflict detection system - Discovery of ItemFlags_AllowDuplicateId as potential solution
*19:00 - Implementing the Fix* - Applied PushItemFlag with AllowDuplicateId to scene hierarchy panel - Successfully resolved ID conflict errors while maintaining functionality - Extended same fix to content browser panel's directory hierarchy - Confirmed both panels now work without ImGui warnings
*23:00 - Panel Movement Bug Analysis* - Critical issue: First viewport panel becomes completely unmovable - Strange behavior: Panel attached to viewport window, can't be docked anywhere - Unusual resizing: Vertical edge resizing affects both dimensions simultaneously - Problem persists regardless of which panel happens to be "first"
*26:00 - Menu Bar Click Detection Problem* - Menu bar rendering but completely unresponsive to clicks - Issue appeared specifically after ImGui update, worked fine with new renderer - Attempted debugging with temporary buttons to test click detection - Investigation into button behavior and menu item selection code
*28:00 - Development Philosophy Discussion* - Audience question about UI panel templates and developer APIs - Cherno's philosophy: Direct C++ modification over complex plugin systems - Benefits: Full control, no maintenance overhead, faster iteration than Unity/Unreal - Vision: Free binary as "lite" version, source access as premium developer experience
*31:00 - Engine Customization Approach* - Comparison with Unity/Unreal: Hazel designed for comfortable C++ modification - Goal: Developers can easily fork and customize engine for their workflow - Lightweight compilation allows reasonable iteration times for engine modifications - Emphasis on developer empowerment through source access rather than scripting APIs
*35:00 - Menu Bar Debugging Continues* - Investigation into selectable and button behavior in menu system - Analysis of why menu items aren't registering click events - Stream ends with menu bar issue still under investigation
_Stream Summary by Claude Sonnet 4_Updating ImGui After 2.5 Years! Driver Crashes + More // Hazel Engine Stream (03.06.2025)Cherno Unplugged2025-06-16 | twitch.tv/thecherno Discord channel for streams ► discord.gg/VFuHXUtBcS
*00:00 Technical Issues & Setup* - Stream introduction, explains yesterday's cancellation due to illness - Discussion about 1440p streaming availability in different countries - Current state: can render ImGui including viewports and dynamic windows - MAJOR ISSUE: Computer crashes when running ImGui Vulkan example - Multiple computer freezes, suspected Nvidia driver issues
*30:00 Driver Problems & Solutions* - Decides to update Nvidia drivers (from studio to game-ready) - SUCCESS: Driver update fixes crashes and visual flickering - Memory leak investigation
*45:00 ImGui Upgrade Project Begins* - Explains why upgrading: current ImGui fork is 2+ years old (Feb 2023) - Creates new fork of ImGui docking branch under studio-cherno organization - GIT STRUGGLE: Complex submodule removal and re-adding process
*1:00:00 Submodule Struggle* - Git submodule removal becomes unexpectedly complex - Multiple attempts to properly remove and re-add ImGui submodule - Finally succeeds in updating submodule to latest version
*1:15:00 Building & Integration* - Updates premake script for new ImGui version - First compilation attempts with new ImGui - Adds stack layout implementation from community pull request #846
*1:40:00 Breaking Changes Marathon* - Begins massive manual merge of stack layout features - Discovers many renamed/removed ImGui functions - MAJOR PAIN: Functions like FocusedByTabbing completely removed - API changes: ItemHoverable now requires additional parameters
*2:30:00 API Migration Challenges* - CaptureMouseFromApp renamed to SetNextFrameWantCaptureMouse - Key system overhaul: ImGuiKey_ enum changes - Tree node functions renamed (TreeNodeBehaviorIsOpen → TreeUpdateNextOpen) - Navigation system changes affect multiple functions
*2:50:00 Success* - Resolving final compilation errors in Hazel editor - VICTORY: Successfully builds with updated ImGui
*3:10:00 Technical Challenges & Debugging* - Tackles linking errors and missing multiplication operators - Deals with Visual Studio compilation issues requiring clean builds - Encounters new ImGui debugging features that highlight programming errors - Discovers ID conflicts in UI elements that weren't visible in the old version
*3:20:00 Game Engine Philosophy Discussion* Cherno explains his motivation for creating a custom game engine: Primary reason: Genuine passion for game engine technology Experience: Previously worked at EA on mobile game engines Language choice: C++ for the engine core, C# for scripting (similar to Unity) Goal: Creating a substantial game, not just the engine itself
*3:05:00 EA Mobile Games Insights* - Shares experience working on Need for Speed No Limits, explaining how complex mobile game UIs were scripted in Lua, with performance challenges requiring multiple garbage collection cycles during UI transitions.
*3:11:00 New ImGui Features & Fixes* - Revolutionary debugging: New item picker tool allows developers to ctrl+click any UI element to break into its call stack - Error detection: ImGui now catches and reports programming errors like conflicting IDs - Bug fixing: Attempts to resolve ID conflicts in the scene hierarchy panel by implementing proper ID scoping
*3:47:00 Current State & Future Plans* - Successfully upgraded ImGui with mostly working editor UI - Viewport rendering disabled (old Vulkan renderer not yet ported to new NVHI renderer) - Plans to continue debugging remaining issues in future streams - Next stream scheduled for approximately 10 AM developer's timeSUCCESS! ImGui Multi-Viewports using NVRHI // Renderer 2025 // Hazel Engine Stream (28.05.2025)Cherno Unplugged2025-06-13 | twitch.tv/thecherno Discord channel for live streams ► discord.gg/VFuHXUtBcS
*00:00 Opening & Setup* - Stream introduction and coffee setup - Brief overview of current work on Hazel game engine - Goal: Complete swap chain device manager refactor and implement multiple ImGui viewports
*05:00 Bug Investigation & Debugging* - Critical Vulkan crash discovered - access violation on frame 2 - Deep dive into semaphore synchronization issues - Investigation of queue submission problems in the rendering pipeline - Analysis of wait/signal semaphores and their role in GPU synchronization
*17:00 AI & Programming Discussion* - Audience Q&A segment on AI in programming - Cherno's perspective: AI excellent under supervision, struggles with complex codebases - Discussion of AI's limitations with large context windows and system-level - debugging
*23:00 Critical Bug Fix* - Major breakthrough: Identified missing semaphore clearing in swap chain destruction - Root cause: Accumulating semaphores on each swap chain recreation - Successful fix implementation - rendering now stable
*45:00 Architecture Refactoring* - Transition from direct Vulkan to NVRHI (NVIDIA's rendering hardware interface) - Surface management refactoring - moving window surface creation from device manager to window class - Addressing multiple viewport support requirements
*1:00:00 Multiple Viewport Implementation* - ImGui viewport feature explanation - ability to drag windows into separate OS windows - Demonstration of working multi-viewport system in stable Hazel build - Technical challenges with swap chain management per viewport
*1:30:00 Rendering Pipeline Optimization* - Pipeline state object caching implementation to avoid wasteful recreation - Static renderer approach for shared pipeline management - Multi-viewport windows are rendering with weird offsets and black screens - Can create and resize windows but content doesn't display properly
*02:00:00 - Deep Dive into Renderer Code* - Investigating swap chain recreation and window management - Dealing with viewport scaling and translation issues - Multiple renderers per window vs single shared renderer debate
*03:00:00 - RenderDoc Investigation* - Using graphics debugging tools to inspect draw calls - Discovering vertex data corruption and misalignment - Comparing working vs broken rendering pipelines
*03:30:00 - The Vertex Buffer Mystery* - Finding that vertex data is completely wrong in problematic windows - Values way outside expected ranges (should be -1 to 1, getting values like 1719) - Realizing it's reading from wrong vertex buffer data
*04:30:00 - THE BREAKTHROUGH* - Major Discovery: The renderer was using the main viewport's draw data for ALL viewports - Fixed by properly passing each viewport's specific draw data to the renderer - SUCCESS: Multi-viewport rendering finally works!
_Stream Summary by Claude Sonnet 4_ImGui Viewports and Vulkan Swapchain Design // Renderer 2025 // Hazel Engine Stream (26.05.2025 #2)Cherno Unplugged2025-06-12 | twitch.tv/thecherno Discord channel for live streams ► discord.gg/VFuHXUtBcS
*00:00 Opening & Setup* - Stream introduction, Cherno discusses consistent streaming schedule - Successfully runs Hazel with new renderer, UI rendering works but scene viewport is blank - Fixes color fading issue by changing swap chain format from sRGBA back to RGBA
*06:00 Architecture Planning* - Removes debug logging, discusses next steps for renderer implementation - Sets up window decorations and custom title bar functionality - Community poll: ImGui viewports vs Hazel renderer implementation - Poll results favor ImGui viewports implementation
*17:00 ImGui Viewports Investigation* - Explains ImGui viewports feature - ability to drag panels outside main window - Investigates viewport implementation requirements and callback functions - Analyzes viewport data structures and renderer user data
*28:00 Code Refactoring Begins* - Starts implementing viewport support functions in ImGuiLayer - Major refactoring: separating window creation from device manager - Encounters compilation issues, debugging device creation problems
*52:00 Device Manager Separation* - Successfully separates window and device manager functionality - Discusses career advice and algorithmic complexity learning - Creates viewport window data structure and device manager integration
*1:20:00 Platform Integration Challenges* - Implements renderer create/destroy window functions for viewports - Encounters device sharing issues between main window and viewport windows - Discusses daily driver OS preferences (Windows vs Linux)
*1:45:00 Swap Chain Architecture Redesign* - Realizes need to separate device management from swap chain creation - Begins major refactor: extracting swap chain functionality from device manager - Creates new VulkanSwapChain class, moving away from combined approach
_Stream Summary by Claude Sonnet 4_First Frame Rendered with New Renderer! // Renderer 2025 // Hazel Engine Stream (21.05.2025)Cherno Unplugged2025-06-08 | twitch.tv/thecherno Discord channel for live streams ► discord.gg/VFuHXUtBcS
_AI Stream Summary (Claude Sonnet 4)_
*00:00 Introduction & Project Context* - Cherno welcomes viewers back to continuing work on Hazel's renderer rewrite - Explains they've switched from custom Vulkan renderer to NVIDIA's NVRHI backend - Previous stream got the project compiling, now focusing on getting ImGui working - Discusses platform support decisions: Windows/Linux/Mac yes, mobile no (due to past experience pain)
*19:00 Architecture Discussion & War Stories* - Deep dive into why mobile development was abandoned - horror stories from EA mobile work - Discusses Samsung driver engineers, debugging nightmares, and iOS vs Android development - Explains Frostbite complexity and why they left EA to build Hazel - Thanks community for making independent development possible
*51:00 Core Development Work* - Implements image_copy_to_host_buffer function for NVRHI - Debugging texture state tracking issues and resource transitions - Working through Vulkan barriers and state management - Discovers texture format differences between linear and sRGB versions
*1:56:00 ImGui Integration* - Porting ImGui layer from old Vulkan backend to NVRHI - Replacing VulkanImGuiLayer with new ImGuiLayer using ImGuiRenderer - Working through font texture creation and display size calculations - Debugging coordinate system issues (upside-down rendering)
*2:26:00 First Success! 🎉* - MAJOR MILESTONE: First frame renders successfully with new backend! - ImGui interface appears but with flickering issues and coordinate problems - Fixes Y-coordinate flipping in shaders to correct upside-down rendering - Interface becomes functional - can click buttons and see updates
*2:39:00 Performance Investigation* - Discovers serious performance issue: 30fps instead of expected ~144fps - Uses profiling tools (Visual Studio profiler, Tracy, RenderDoc) to investigate - Traces issue to VSync causing 30ms frame times - Discovers application was accidentally calling render twice per frame!
*3:20:00 Final Debugging & Wrap-up* - Fixes double-rendering issue caused by duplicate animate/render/present calls - Performance improves dramatically after removing redundant rendering - Some remaining issues with VSync behavior and color rendering - Stream ends with working ImGui interface running on new NVRHI backendWorking on New Renderer // Hazel Engine Stream (19.05.2025)Cherno Unplugged2025-06-04 | twitch.tv/thechernoWorking on New Renderer // Hazel Engine Stream (14.05.2025)Cherno Unplugged2025-06-03 | twitch.tv/thechernoWorking on New Renderer // Hazel Engine Stream (12.05.2025)Cherno Unplugged2025-05-28 | twitch.tv/thechernoRemaking My First Game in C++ (Part 2)Cherno Unplugged2024-09-26 | Part 1 ► youtu.be/xrEmamXureA Main video ► youtu.be/rpOzMQbiUVY Play game ► studiocherno.itch.io/genesis
CHAPTERS 0:00 - How this is going to work 20:48 - Building mono 42:37 - Linking mono to Hazel 50:26 - Starting our Scripting Engine 1:14:29 - Story time with Cherno 1:25:44 - Back to C#
Chapters: 0:00 - Intro and recap 3:00 - Roadmap 6:10 - Merging physics into master 13:32 - Happy Birthday Peter! 🎉 15:30 - Back to the merge 20:03 - Setup scripts and Vulkan SDK 41:04 - Issues and pull requests 54:30 - Goodbye Internet 55:01 - More issues and pull requests 1:12:18 - Different keyboard layouts 1:22:13 - One last story
Welcome to the return of the Game Engine series! The format has changed slightly, as explained in this video. All future Game Engine series episodes will be streamed live on Twitch, and posted (lightly edited) here on this YouTube channel.