<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Bill The Dev — Dev Lab</title>
    <link>https://www.billthedev.com/lab/</link>
    <atom:link href="https://www.billthedev.com/lab/feed.xml" rel="self" type="application/rss+xml" />
    <description>Shader breakdowns, Unity tutorials, and tech art experiments by Bill Truong.</description>
    <language>vi</language>
    <lastBuildDate>Tue, 06 Oct 2026 04:55:02 GMT</lastBuildDate>
    <item>
      <title>Platformer #5: Camera đi theo nhân vật mà không lộ ra ngoài phòng</title>
      <link>https://www.billthedev.com/lab/unity-platformer-05-camera/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-platformer-05-camera/</guid>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <description>Camera bám nhân vật trong căn phòng 64×36, nhảy tại chỗ thì đứng yên, chạy tới tường thì dừng đúng mép phòng. Dựng từng lớp một, và một lỗi thứ tự clamp mà hầu hết code camera đều mắc.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Platformer</category>
      <category>Camera</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-platformer/05/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Platformer #6: Animation chọn theo vật lý, Animator không có mũi tên nào</title>
      <link>https://www.billthedev.com/lab/unity-platformer-06-animation/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-platformer-06-animation/</guid>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <description>Bảy animation cho nhân vật mà Animator không có một transition nào. Trạng thái animation được suy ra từ vận tốc, chạm đất, bám tường của motor, nên thêm động tác mới chỉ cần thêm một dòng code.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Platformer</category>
      <category>Animation</category>
      <category>Animator</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-platformer/06/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Platformer #7: Ba nhân vật, ba cảm giác, một prefab</title>
      <link>https://www.billthedev.com/lab/unity-platformer-07-player-data/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-platformer-07-player-data/</guid>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <description>Tách 19 con số cảm giác điều khiển ra khỏi motor thành một ScriptableObject. Ba asset cho ba nhân vật: một chạy nhanh nhảy cao, một nặng trượt dài không có double jump. Đổi asset là đổi cả hình lẫn tay cầm.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Platformer</category>
      <category>ScriptableObject</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-platformer/07/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Platformer #8: Chết và hồi sinh mà không load lại scene</title>
      <link>https://www.billthedev.com/lab/unity-platformer-08-death-respawn/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-platformer-08-death-respawn/</guid>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <description>Bẫy, checkpoint, và một chuỗi chết rồi hồi sinh 0.8 giây không cần load lại scene. Collider của bẫy phải đo từ hình vẽ, và 1.2 giây bất tử sau khi hiện ra để không rơi vào vòng lặp chết.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Platformer</category>
      <category>Checkpoint</category>
      <category>Respawn</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-platformer/08/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Platformer #9: Ngọc, thùng gỗ, cửa thoát và bảng va chạm</title>
      <link>https://www.billthedev.com/lab/unity-platformer-09-collectibles/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-platformer-09-collectibles/</guid>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <description>Cho căn phòng một mục tiêu: nhặt đủ 5 viên ngọc thì cửa mở. Một luật giẫm dùng chung cho thùng và địch, collider thùng đo theo hình vẽ, bộ đếm ngọc đứng im vì thứ tự hai dòng code, và ô bảng va chạm làm cả màn chơi không thắng được mà không có lỗi nào.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Platformer</category>
      <category>Physics 2D</category>
      <category>Layer</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-platformer/09/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Platformer #10: Địch đi tuần mà không rơi khỏi bệ</title>
      <link>https://www.billthedev.com/lab/unity-platformer-10-enemies-patrol/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-platformer-10-enemies-patrol/</guid>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <description>Hai cảm biến nhìn về phía trước: một tia dò sàn và một hộp dò tường. Địch Kinematic đi bằng MovePosition, quay đầu đúng mép bệ với sai số 0.04 unit, chết khi bị giẫm bằng đúng luật StompCheck của bài 9, và giết người chơi khi chạm ngang.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Platformer</category>
      <category>Enemy AI</category>
      <category>Physics 2D</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-platformer/10/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Platformer #11: Ba kiểu địch từ một ScriptableObject</title>
      <link>https://www.billthedev.com/lab/unity-platformer-11-enemy-types/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-platformer-11-enemy-types/</guid>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <description>Charger lao tới rồi choáng khi đâm tường, khẩu pháo bắn đạn lấy từ object pool của series shmup, con bay bổ nhào xuống đầu. Ba hành vi khác hẳn nhau đọc số từ cùng một kiểu EnemyData, và sáu lỗi code vẫn chạy mà không làm gì.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Platformer</category>
      <category>Enemy AI</category>
      <category>ScriptableObject</category>
      <category>Object Pool</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-platformer/11/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Platformer #12: Boss thắng bằng chân, không bằng vũ khí</title>
      <link>https://www.billthedev.com/lab/unity-platformer-12-boss/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-platformer-12-boss/</guid>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <description>Nhân vật không có đòn đánh, nên boss phải tự đặt mình vào thế hở: khựng lại, lao tới, đâm vách, thở dốc. Ba lần giẫm, nhịp nhanh dần sau mỗi lần trúng. Collider đặt theo thân chứ không theo ô 72 pixel, và một lỗi làm người chơi chết ngay sau cú giẫm trúng.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Platformer</category>
      <category>Boss</category>
      <category>State Machine</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-platformer/12/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Platformer #13: Rung, chớp, âm thanh, không sửa dòng gameplay nào</title>
      <link>https://www.billthedev.com/lab/unity-platformer-13-juice/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-platformer-13-juice/</guid>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <description>Một lớp phản hồi gắn từ bên ngoài: nghe sự kiện mà mười hai bài trước đã phát sẵn, biến chúng thành rung camera, tiếng động, chớp màu và nhấp nháy lúc bất tử. Tắt nó đi thì game vẫn đúng mọi luật, chỉ im lặng. Và một cú rung boss bị nuốt mất vì đọc máu quá sớm.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Platformer</category>
      <category>Game Feel</category>
      <category>Camera Shake</category>
      <category>Audio</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-platformer/13/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Platformer #14: Nền cuộn vô hạn, làm bằng shader rồi bỏ shader</title>
      <link>https://www.billthedev.com/lab/unity-platformer-14-background/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-platformer-14-background/</guid>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <description>Nền lát vô hạn, tự trôi, trôi chậm hơn thế giới. Bản đầu là một shader tính UV từ toạ độ thế giới, chạy đúng nhưng bắt mình tự làm lại ba việc đường render sprite đã làm sẵn. Bản đang dùng chỉ là một sprite lát gạch được kéo về mỗi khi đi hết một ô. Và vì sao nền trông nhòe mà thật ra không nhòe.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Platformer</category>
      <category>Parallax</category>
      <category>Shader</category>
      <category>Pixel Art</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-platformer/14/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Platformer #15: Nhiều màn, chọn nhân vật, HUD và build lên web</title>
      <link>https://www.billthedev.com/lab/unity-platformer-15-levels-build/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-platformer-15-levels-build/</guid>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <description>Biến căn phòng lab thành thứ người lạ mở lên chơi được: ba màn nối nhau trong một asset, tiến trình lưu trong PlayerPrefs, màn chọn nhân vật dùng lại ScriptableObject của bài 7, HUD đếm ngọc và thanh máu boss giữ nguyên góc pixel. Rồi build WebGL, với một danh sách sáu dòng mà dòng nào cũng từng làm mình mất thời gian.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Platformer</category>
      <category>UI</category>
      <category>WebGL</category>
      <category>PlayerPrefs</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-platformer/15/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Platformer #16: Những lỗi không hiện trong Console, và ba công cụ để bắt chúng</title>
      <link>https://www.billthedev.com/lab/unity-platformer-16-audit-tools/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-platformer-16-audit-tools/</guid>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <description>Một script soát cả 18 scene in ra CLEAN. Người đầu tiên mở game lên chơi không qua nổi màn 1. Bài cuối không phải danh sách lỗi đã sửa mà là cách soát: đọc alpha thật của sprite, hỏi thẳng bảng va chạm, và chơi bằng input thật thay vì gọi API. Và bảy lỗi nữa mình tìm ra khi viết lại cả series.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Platformer</category>
      <category>Testing</category>
      <category>Debugging</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-platformer/16/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Dissolve shader cho Unity URP, phần 4: transition nhiều hình dạng, nhìn xuyên tường và X-ray</title>
      <link>https://www.billthedev.com/lab/shader-dissolve-transition-urp/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/shader-dissolve-transition-urp/</guid>
      <pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate>
      <description>Một mặt nạ dùng chung cho cả cảnh, ghép từ hình cầu, hộp và viên nhộng bằng signed distance. Dùng nó để làm transition cho level, khoét tường khi nhân vật bị che, và vẽ bóng X-ray mà không tự tô lên chính mình.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>URP</category>
      <category>Shader</category>
      <category>HLSL</category>
      <category>Dissolve</category>
      <category>SDF</category>
      <enclosure url="https://www.billthedev.com/images/lab/shaders/dissolve-transition-still.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Platformer #1: Một căn phòng vẽ bằng một viên gạch</title>
      <link>https://www.billthedev.com/lab/unity-platformer-01-tilemap-room/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-platformer-01-tilemap-room/</guid>
      <pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate>
      <description>Dựng RuleTile 15 rule để Unity tự chọn ô góc, ô cạnh, rồi vẽ căn phòng 64×36 tile bằng đúng một tile. Gộp 528 collider vuông thành một đường bao liền để nhân vật không vấp.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Platformer</category>
      <category>Tilemap</category>
      <category>RuleTile</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-platformer/01/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Platformer #2: Chạy, và vì sao Rigidbody để Dynamic</title>
      <link>https://www.billthedev.com/lab/unity-platformer-02-run/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-platformer-02-run/</guid>
      <pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate>
      <description>Đưa nhân vật vào phòng, để vật lý lo trọng lực và va chạm, còn code chỉ lo vận tốc ngang. Tăng tốc 0.12 s, dừng 0.08 s, nhả phím trượt thêm 0.27 unit, tất cả đo được.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Platformer</category>
      <category>Rigidbody2D</category>
      <category>Input System</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-platformer/02/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Platformer #3: Nhảy cao đúng 5 ô, tính chứ không mò</title>
      <link>https://www.billthedev.com/lab/unity-platformer-03-jump/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-platformer-03-jump/</guid>
      <pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate>
      <description>Muốn nhảy cao 5 ô thì đặt lực bao nhiêu? Bài này suy trọng lực và vận tốc nhảy từ hai con số thiết kế, rồi thêm nhảy thấp khi nhả sớm, coyote time và jump buffer. Mọi con số đều đo lại được.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Platformer</category>
      <category>Jump</category>
      <category>Game Feel</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-platformer/03/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Platformer #4: Double jump và wall jump, một phím ba kết quả</title>
      <link>https://www.billthedev.com/lab/unity-platformer-04-air-moves/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-platformer-04-air-moves/</guid>
      <pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate>
      <description>Cùng một phím Space: nhảy từ đất, bật tường, hay nhảy thêm giữa không trung. Thứ tự kiểm tra quyết định cảm giác, và 0.15 giây khoá hướng là thứ giúp nhân vật thật sự bật ra khỏi tường.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Platformer</category>
      <category>Wall Jump</category>
      <category>Double Jump</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-platformer/04/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Dissolve shader cho Unity URP, phần 1: noise, viền cháy và cái bóng không chịu tan</title>
      <link>https://www.billthedev.com/lab/shader-dissolve-urp/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/shader-dissolve-urp/</guid>
      <pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate>
      <description>Viết shader dissolve cho Unity 6 URP từ con số không: noise triplanar không lộ đường nối UV, remap noise cho thanh trượt chạy đều, viền cháy HDR, mặt trong của vỏ và bóng đổ tan theo vật.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>URP</category>
      <category>Shader</category>
      <category>HLSL</category>
      <category>Dissolve</category>
      <enclosure url="https://www.billthedev.com/images/lab/shaders/dissolve-still.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Stylized water cho Unity URP: nước có độ sâu, bọt và sóng</title>
      <link>https://www.billthedev.com/lab/shader-stylized-water-urp/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/shader-stylized-water-urp/</guid>
      <pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate>
      <description>Viết shader nước stylized cho Unity 6 URP qua mười bước: đo độ sâu bằng depth texture, khúc xạ không lem, bọt bờ, bọt mặt nước, specular và sóng Gerstner.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>URP</category>
      <category>Shader</category>
      <category>HLSL</category>
      <category>Water</category>
      <enclosure url="https://www.billthedev.com/images/lab/shaders/water-still.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Toon shader cho Unity URP: từ một quả cầu tới cả một map</title>
      <link>https://www.billthedev.com/lab/shader-toon-urp/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/shader-toon-urp/</guid>
      <pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate>
      <description>Viết toon shader cho Unity 6 URP từng bước một: ramp, bóng đổ, specular, rim, viền inverted hull. Mỗi bước đều có ảnh render thật để bạn so với màn hình của mình.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>URP</category>
      <category>Shader</category>
      <category>HLSL</category>
      <category>Toon</category>
      <enclosure url="https://www.billthedev.com/images/lab/shaders/toon-map-still.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Dissolve shader cho Unity URP, phần 2: tan theo hướng, từ tâm ra và từ ngoài vào</title>
      <link>https://www.billthedev.com/lab/shader-dissolve-shapes-urp/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/shader-dissolve-shapes-urp/</guid>
      <pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate>
      <description>Cho dissolve một hình dạng: tan từ chân lên như dịch chuyển, cháy loang từ chỗ trúng đòn, co dần từ ngoài vào tâm. Trộn gradient với noise mà thanh trượt vẫn chạy đủ 0 tới 1, và để script tự đo khoảng thay vì gõ tay số.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>URP</category>
      <category>Shader</category>
      <category>HLSL</category>
      <category>Dissolve</category>
      <enclosure url="https://www.billthedev.com/images/lab/shaders/dissolve-shapes-still.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Dissolve shader cho Unity URP, phần 3: tan đến đâu đẩy mesh đến đó, và hút vật vào một điểm</title>
      <link>https://www.billthedev.com/lab/shader-dissolve-vertex-urp/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/shader-dissolve-vertex-urp/</guid>
      <pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate>
      <description>Cho vertex chuyển động theo dissolve: vỏ phồng lên đúng ở mép đang cháy, hoặc cả thân bị kéo dài rồi hút vào một điểm. Vì sao đẩy mesh hay ra gai, vì sao phải đẩy theo normal mượt, và vì sao vertex nên đọc một bản noise mờ hơn pixel.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>URP</category>
      <category>Shader</category>
      <category>HLSL</category>
      <category>Dissolve</category>
      <enclosure url="https://www.billthedev.com/images/lab/shaders/dissolve-vertex-still.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #11: From project to playable link — build and publish for the Web</title>
      <link>https://www.billthedev.com/lab/unity-shmup-11-build-webgl-en/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-11-build-webgl-en/</guid>
      <pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate>
      <description>Pass Editor, local-build, and hosting checks; understand output files, compression, and measurements before sharing the game.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/11/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #11: Từ project đến đường link chơi được — build và phát hành Web</title>
      <link>https://www.billthedev.com/lab/unity-shmup-11-build-webgl/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-11-build-webgl/</guid>
      <pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate>
      <description>Đi qua các cổng kiểm tra Editor, build local và hosting; hiểu file đầu ra, compression và phép đo trước khi chia sẻ.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/11/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #10: Designing feedback — hear and see each event</title>
      <link>https://www.billthedev.com/lab/unity-shmup-10-audio-juice-en/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-10-audio-juice-en/</guid>
      <pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate>
      <description>Map gameplay events to sound, sprite flashes, particles, and camera shake, finishing each response before combining them.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/10/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #10: Thiết kế phản hồi — nghe và thấy từng sự kiện</title>
      <link>https://www.billthedev.com/lab/unity-shmup-10-audio-juice/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-10-audio-juice/</guid>
      <pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate>
      <description>Nối sự kiện với âm thanh, flash, particle và camera shake; hoàn thiện từng phản hồi trước khi phối hợp toàn bộ.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/10/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #9: A pickup's journey and the lifetime of a buff</title>
      <link>https://www.billthedev.com/lab/unity-shmup-09-pickups-shield-en/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-09-pickups-shield-en/</guid>
      <pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate>
      <description>Make one healing pickup work before adding shields, rapid fire, refresh rules, and the two stages of loot probability.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/09/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #9: Hành trình một pickup và thời hạn của buff</title>
      <link>https://www.billthedev.com/lab/unity-shmup-09-pickups-shield/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-09-pickups-shield/</guid>
      <pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate>
      <description>Làm một món hồi máu hoạt động trước, sau đó thêm khiên, bắn nhanh, luật nhặt trùng và hai bước xác suất rơi đồ.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/09/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #8: A run's lifecycle — score, health, Game Over, and Restart</title>
      <link>https://www.billthedev.com/lab/unity-shmup-08-hud-game-loop-en/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-08-hud-game-loop-en/</guid>
      <pubDate>Mon, 21 Sep 2026 00:00:00 GMT</pubDate>
      <description>Begin with run states, divide Health, GameSession, and HUD responsibilities, then connect events and restart without broken references.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/08/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #8: Vòng đời một ván — điểm, máu, Game Over và Restart</title>
      <link>https://www.billthedev.com/lab/unity-shmup-08-hud-game-loop/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-08-hud-game-loop/</guid>
      <pubDate>Mon, 21 Sep 2026 00:00:00 GMT</pubDate>
      <description>Bắt đầu từ trạng thái ván chơi, phân vai Health–GameSession–HUD, rồi nối event và nút chơi lại mà không mất reference.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/08/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Platformer #0: Đưa pixel art vào Unity mà không bị phá</title>
      <link>https://www.billthedev.com/lab/unity-platformer-00-pixel-art-setup/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-platformer-00-pixel-art-setup/</guid>
      <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
      <description>Import mặc định của Unity làm sprite mờ, đổi màu 97% số pixel, và trong template 3D còn co file 352×32 xuống 256×32. Bài này sửa import, chọn PPU 16, đặt pivot ở chân và khoá camera đúng 32×18 tile.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Platformer</category>
      <category>Pixel Art</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-platformer/00/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #7: Draw the schedule, then build the wave spawner</title>
      <link>https://www.billthedev.com/lab/unity-shmup-07-waves-asteroids-en/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-07-waves-asteroids-en/</guid>
      <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
      <description>Use a timeline to understand coroutines, count, interval, and delayAfter, then spawn different enemy types from one pool.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/07/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #7: Vẽ lịch xuất hiện rồi viết Wave Spawner</title>
      <link>https://www.billthedev.com/lab/unity-shmup-07-waves-asteroids/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-07-waves-asteroids/</guid>
      <pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate>
      <description>Dùng timeline để hiểu coroutine, count, interval và delayAfter; cho pool tạo nhiều loại địch theo lịch rõ ràng.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/07/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #6: One machine, many enemy types — separate configuration from state</title>
      <link>https://www.billthedev.com/lab/unity-shmup-06-scriptable-objects-en/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-06-scriptable-objects-en/</guid>
      <pubDate>Sat, 19 Sep 2026 00:00:00 GMT</pubDate>
      <description>Derive EnemyData, Apply, and WeaponData from two enemy variants, while keeping shared configuration separate from per-instance health.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/06/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #6: Một bộ máy, nhiều loại địch — tách dữ liệu khỏi trạng thái</title>
      <link>https://www.billthedev.com/lab/unity-shmup-06-scriptable-objects/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-06-scriptable-objects/</guid>
      <pubDate>Sat, 19 Sep 2026 00:00:00 GMT</pubDate>
      <description>Từ hai con địch khác nhau, suy ra EnemyData, Apply và WeaponData; phân biệt tài nguyên dùng chung với HP riêng từng instance.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/06/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #5: Collision rules — from overlap to damage and death</title>
      <link>https://www.billthedev.com/lab/unity-shmup-05-enemies-collision-en/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-05-enemies-collision-en/</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description>Define interactions before wiring colliders, then complete Health, DamageOnContact, and EnemyMover with repeatable checks.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/05/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #5: Luật va chạm — từ chạm nhau đến sát thương và cái chết</title>
      <link>https://www.billthedev.com/lab/unity-shmup-05-enemies-collision/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-05-enemies-collision/</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description>Viết luật tương tác trước khi ráp collider; hoàn thiện Health, DamageOnContact và EnemyMover cùng bài thử có thể lặp lại.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/05/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #4: Two projectile lifetimes — understand object pooling by comparison</title>
      <link>https://www.billthedev.com/lab/unity-shmup-04-object-pool-en/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-04-object-pool-en/</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <description>Compare create/destroy with rent/return, define reset responsibilities, and migrate the complete shooting system without changing its behavior.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/04/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #4: Hai vòng đời của viên đạn — học Object Pool bằng đối chiếu</title>
      <link>https://www.billthedev.com/lab/unity-shmup-04-object-pool/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-04-object-pool/</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <description>Đối chiếu tạo/hủy với lấy/trả, thiết lập hợp đồng reset và chuyển toàn bộ hệ bắn sang pool mà vẫn giữ hành vi.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/04/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #3: The lifetime of a shot — from Fire to expiry</title>
      <link>https://www.billthedev.com/lab/unity-shmup-03-shooting-en/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-03-shooting-en/</guid>
      <pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate>
      <description>Understand prefabs and instances through one projectile: its muzzle, motion, cooldown, and expiration.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/03/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #3: Vòng đời một phát bắn — từ Fire đến hết hạn</title>
      <link>https://www.billthedev.com/lab/unity-shmup-03-shooting/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-03-shooting/</guid>
      <pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate>
      <description>Hiểu prefab và instance qua một viên đạn: điểm bắn, chuyển động, cooldown và điều kiện biến mất.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/03/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #2: From a button press to the ship's position</title>
      <link>https://www.billthedev.com/lab/unity-shmup-02-player-movement-en/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-02-player-movement-en/</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <description>Trace input through an Action, a Vector2, and a Rigidbody2D, then calculate camera bounds to keep the ship visible.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/02/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #2: Từ phím bấm đến vị trí tàu</title>
      <link>https://www.billthedev.com/lab/unity-shmup-02-player-movement/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-02-player-movement/</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <description>Theo dấu input qua Action, Vector2 và Rigidbody2D; tính biên camera để tàu di chuyển mà không rời màn hình.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/02/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #1: Anatomy of a 2D screen — camera, layers, and stars</title>
      <link>https://www.billthedev.com/lab/unity-shmup-01-scene-2d-en/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-01-scene-2d-en/</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <description>Build the static screen first, then add motion through world units, camera framing, sorting, and repeating star layers.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/01/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #1: Giải phẫu màn hình 2D — camera, lớp vẽ và nền sao</title>
      <link>https://www.billthedev.com/lab/unity-shmup-01-scene-2d/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-01-scene-2d/</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <description>Dựng màn hình tĩnh trước, rồi thêm chuyển động: hiểu world units, khung camera, sorting và chu kỳ nền sao.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/01/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #0: The starting map — prepare a project you can finish</title>
      <link>https://www.billthedev.com/lab/unity-shmup-00-setup-en/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-00-setup-en/</guid>
      <pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate>
      <description>Understand the destination, prepare the tools and artwork, and establish reliable lesson checkpoints before writing code.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/00/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Shmup #0: Bản đồ khởi hành — chuẩn bị project để học tới cùng</title>
      <link>https://www.billthedev.com/lab/unity-shmup-00-setup/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/unity-shmup-00-setup/</guid>
      <pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate>
      <description>Hiểu game đích, chuẩn bị công cụ và tài nguyên, rồi thiết lập cách lưu mốc bài học trước khi viết code.</description>
      <category>Unity</category>
      <category>Unity 6</category>
      <category>Shmup</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/unity-shmup/00/cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Pet Project: TicTacToe - Xây Dựng Trò Chơi Đơn Giản Với SwiftUI</title>
      <link>https://www.billthedev.com/lab/pet-project-tictactoe-swiftui/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/pet-project-tictactoe-swiftui/</guid>
      <pubDate>Fri, 13 Dec 2024 00:00:00 GMT</pubDate>
      <description>Hướng dẫn chi tiết tạo trò chơi TicTacToe đơn giản với SwiftUI, học cách sử dụng @State, LazyVGrid, ForEach và xử lý logic trò chơi.</description>
      <category>SwiftUI</category>
      <category>TicTacToe</category>
      <category>Game Development</category>
      <category>Mobile</category>
      <category>iOS</category>
      <enclosure url="https://www.billthedev.com/images/posts/tictactoe-cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>C# cho người mới #7: Exception, LINQ và delegate</title>
      <link>https://www.billthedev.com/lab/csharp-07-applied/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/csharp-07-applied/</guid>
      <pubDate>Fri, 01 Nov 2024 00:00:00 GMT</pubDate>
      <description>Bài cuối của series C#: xử lý lỗi bằng exception và TryParse, lọc và sắp xếp dữ liệu bằng LINQ, rồi dùng delegate và event để các hệ thống báo tin cho nhau.</description>
      <category>CSharp</category>
      <category>LINQ</category>
      <category>Game Development</category>
      <category>Course</category>
      <enclosure url="https://www.billthedev.com/images/posts/csharp-cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>C# cho người mới #6: Kế thừa, interface và đa hình</title>
      <link>https://www.billthedev.com/lab/csharp-06-oop-advanced/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/csharp-06-oop-advanced/</guid>
      <pubDate>Wed, 30 Oct 2024 00:00:00 GMT</pubDate>
      <description>Dùng kế thừa để không phải chép code giữa Goblin, Archer và Boss, dùng abstract class và interface để nhiều loại object dùng chung một đoạn code xử lý.</description>
      <category>CSharp</category>
      <category>OOP</category>
      <category>Game Development</category>
      <category>Course</category>
      <enclosure url="https://www.billthedev.com/images/posts/csharp-cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>C# cho người mới #5: Class, object và constructor</title>
      <link>https://www.billthedev.com/lab/csharp-05-oop-basics/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/csharp-05-oop-basics/</guid>
      <pubDate>Mon, 28 Oct 2024 00:00:00 GMT</pubDate>
      <description>Gói dữ liệu và hành vi của một nhân vật vào class, tạo object bằng constructor, giấu dữ liệu bằng private và property. Mọi script Unity đều là class, nên bài này rất đáng làm kỹ.</description>
      <category>CSharp</category>
      <category>OOP</category>
      <category>Game Development</category>
      <category>Course</category>
      <enclosure url="https://www.billthedev.com/images/posts/csharp-cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>C# cho người mới #4: Hàm, tham số và enum</title>
      <link>https://www.billthedev.com/lab/csharp-04-methods/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/csharp-04-methods/</guid>
      <pubDate>Sat, 26 Oct 2024 00:00:00 GMT</pubDate>
      <description>Gom code lặp lại vào hàm, truyền tham số, trả về kết quả, nạp chồng hàm, rồi dùng enum thay cho chuỗi và số khó nhớ. Đây là bước đệm trước OOP.</description>
      <category>CSharp</category>
      <category>Programming</category>
      <category>Game Development</category>
      <category>Course</category>
      <enclosure url="https://www.billthedev.com/images/posts/csharp-cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>C# cho người mới #3: Array, List và Dictionary</title>
      <link>https://www.billthedev.com/lab/csharp-03-collections/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/csharp-03-collections/</guid>
      <pubDate>Thu, 24 Oct 2024 00:00:00 GMT</pubDate>
      <description>Khi có hàng chục enemy hay item, bạn cần một chỗ chứa nhiều phần tử. Bài này so sánh Array, List và Dictionary, rồi dựng một inventory đơn giản.</description>
      <category>CSharp</category>
      <category>Programming</category>
      <category>Game Development</category>
      <category>Course</category>
      <enclosure url="https://www.billthedev.com/images/posts/csharp-cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>C# cho người mới #2: Điều kiện và vòng lặp</title>
      <link>https://www.billthedev.com/lab/csharp-02-control-flow/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/csharp-02-control-flow/</guid>
      <pubDate>Tue, 22 Oct 2024 00:00:00 GMT</pubDate>
      <description>Dùng if/else và switch để chương trình biết chọn nhánh, dùng for và while để lặp lại một việc. Cuối bài ghép tất cả thành một trận đánh theo lượt nhỏ.</description>
      <category>CSharp</category>
      <category>Programming</category>
      <category>Game Development</category>
      <category>Course</category>
      <enclosure url="https://www.billthedev.com/images/posts/csharp-cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>C# cho người mới #1: Cú pháp, biến và kiểu dữ liệu</title>
      <link>https://www.billthedev.com/lab/csharp-01-basics/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/csharp-01-basics/</guid>
      <pubDate>Sun, 20 Oct 2024 00:00:00 GMT</pubDate>
      <description>Viết dòng C# đầu tiên, rồi làm quen với kiểu dữ liệu, biến, hằng, toán tử và nhập xuất trên console. Ví dụ lấy từ chỉ số nhân vật trong game.</description>
      <category>CSharp</category>
      <category>Programming</category>
      <category>Game Development</category>
      <category>Course</category>
      <enclosure url="https://www.billthedev.com/images/posts/csharp-cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Speedrun Swift UI Lesson 1 - Part III</title>
      <link>https://www.billthedev.com/lab/swiftui-lesson1-part3/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/swiftui-lesson1-part3/</guid>
      <pubDate>Sun, 14 Jan 2024 00:00:00 GMT</pubDate>
      <description>Dive into Object-Oriented Programming in Swift. Learn about classes, structures, inheritance, and protocols to build organized and reusable code.</description>
      <category>Swift</category>
      <category>SwiftUI</category>
      <category>iOS</category>
      <category>Programming</category>
      <enclosure url="https://www.billthedev.com/images/posts/swiftui-learn-cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Speedrun Swift UI Lesson 1 - Part II</title>
      <link>https://www.billthedev.com/lab/swiftui-lesson1-part2/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/swiftui-lesson1-part2/</guid>
      <pubDate>Sat, 13 Jan 2024 00:00:00 GMT</pubDate>
      <description>Explore loops, functions, and complex data types in Swift. Learn for/while loops, function definitions, and work with arrays, dictionaries, and sets.</description>
      <category>Swift</category>
      <category>SwiftUI</category>
      <category>iOS</category>
      <category>Programming</category>
      <enclosure url="https://www.billthedev.com/images/posts/swiftui-learn-cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Speedrun Swift UI Lesson 1 - Part I</title>
      <link>https://www.billthedev.com/lab/swiftui-lesson1-part1/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/swiftui-lesson1-part1/</guid>
      <pubDate>Fri, 12 Jan 2024 00:00:00 GMT</pubDate>
      <description>Start your Swift journey with the basics! Learn about variables, constants, data types, conditional structures, and get hands-on exercises.</description>
      <category>Swift</category>
      <category>SwiftUI</category>
      <category>iOS</category>
      <category>Programming</category>
      <enclosure url="https://www.billthedev.com/images/posts/swiftui-learn-cover.webp" type="image/webp" length="0" />
    </item>
    <item>
      <title>Introduction to SwiftUI</title>
      <link>https://www.billthedev.com/lab/introduction-to-swiftui/</link>
      <guid isPermaLink="true">https://www.billthedev.com/lab/introduction-to-swiftui/</guid>
      <pubDate>Thu, 11 Jan 2024 00:00:00 GMT</pubDate>
      <description>A complete guide to learning SwiftUI from scratch. This series covers everything from Swift basics to advanced SwiftUI concepts.</description>
      <category>SwiftUI</category>
      <category>iOS</category>
      <category>macOS</category>
      <category>Tutorial</category>
      <enclosure url="https://www.billthedev.com/images/posts/swiftui-cover.webp" type="image/webp" length="0" />
    </item>
  </channel>
</rss>
