강의

멘토링

커뮤니티

Game Dev

/

Game Programming

Khóa học tuyệt đối! Unity6 - ECS/DOTS Programming Masterclass

Đây là khóa học giúp bạn thành thạo hoàn hảo ECS/DOTS - kiến trúc thế hệ mới của Unity từ cơ bản đến ứng dụng thực tế. ECS là phương pháp lập trình hướng dữ liệu hoàn toàn khác với cách tiếp cận GameObject truyền thống, khiến nhiều lập trình viên gặp khó khăn do rào cản đầu vào cao. Khóa học này được thiết kế để giải quyết những khó khăn đó bằng cách bắt đầu từ các khái niệm cốt lõi của ECS (Entity, Component, System), sau đó học từng bước qua Burst compiler, Job system, cho đến tích hợp Unity Physics.

(5.0) 7 đánh giá

82 học viên

Độ khó Trung cấp trở lên

Thời gian Không giới hạn

  • indiegamemaker
unity-dots
unity-dots
unity-ecs
unity-ecs
multithread
multithread
Unity
Unity
Unity6
Unity6
unity-dots
unity-dots
unity-ecs
unity-ecs
multithread
multithread
Unity
Unity
Unity6
Unity6

Đánh giá từ những học viên đầu tiên

Đánh giá từ những học viên đầu tiên

5.0

5.0

류학림

100% đã tham gia

Lần đầu tiên tôi đã thực hành ECS/DOTS! Mặc dù không đề cập đến mọi thứ về mặt lý thuyết nhưng đây là khoảng thời gian giúp tôi hiểu rõ ràng ECS là gì. Tôi nghĩ các bạn học viên khác cũng nên học thông qua tài liệu chính thức của Unity về các tính năng khác nhau sau khi hoàn thành khóa học, điều này sẽ rất hữu ích. Sau khi hoàn thành khóa học, tôi đã thử sửa đổi script để ôn tập và tự học, tôi nghĩ các bạn học viên khác cũng nên thử thách bản thân! Cảm ơn vì khóa học tuyệt vời!!!! --- [Ôn tập và Tự học] 1. Movement System Tôi đã refactor PlayerMovementSystem và ProjectileMovementSystem để hoạt động dựa trên IJobEntity, nâng cao hiệu quả biên dịch Burst và cho phép xử lý song song. - Mặc dù PlayerMovementSystem là một entity đơn lẻ nhưng tôi nghĩ tốt hơn là nên duy trì tính nhất quán với các phần khác nên đã thêm cấu trúc Job và đảm bảo toàn bộ logic được biên dịch Burst. - Tôi đã loại bỏ vòng lặp foreach trong ProjectileMovementSystem và sử dụng ScheduleParallel để sửa đổi sao cho khi nhiều projectile di chuyển đồng thời thì sử dụng work thread một cách hiệu quả. 2. HP Bar System Tôi đã thêm kiểm tra ComponentLookup.DidChange() trong PlayerHpBarSystem và EnemyHpBarSystem, và sửa đổi để chỉ tính toán FillAmount khi dữ liệu của PlayerComponent và EnemyComponent thực sự thay đổi. 3. Collision Tôi đã sửa đổi ProjectileCollisionSystem từ cách tạo EntityCommandBuffer thủ công và chờ hoàn thành Job với Complete, Playback sang cách sử dụng EndFixedStepSimulationEntityCommandBufferSystem. 4. Audio Sau khi hoàn thành việc triển khai hiệu ứng âm thanh cuối cùng, khi chuyển từ scene chính sang scene game Có vẻ như lỗi xảy ra do entity không được tạo ngay lập tức trong AudioManager. Do đó, giống như đã làm trong các script System khác, tôi đã sửa đổi để kiểm tra (audioBufferEntity == Entity.Null || !entityManager.Exists(audioBufferEntity)) và xác nhận sự tồn tại của entity trong Update trước khi phát.

5.0

김성관

100% đã tham gia

Khóa học này khó hơn bất kỳ khóa học nào tôi từng học. Có rất nhiều khái niệm mới xuất hiện. Có vẻ như tôi cần phải lặp lại nhiều lần. Thật tốt khi được biết những khái niệm mới.

Bạn sẽ nhận được điều này sau khi học.

  • Lập trình sử dụng API ECS 1.4 mới nhất

  • Kỹ thuật lập trình DOTS trong môi trường ECS thuần túy

  • Sử dụng Burst Compile và JobSystem để tối ưu Unity Physics

  • Kỹ thuật sử dụng Hybrid ECS để liên kết UI, Scene, Sound

Phát triển game sinh tồn 2D hiệu suất cao với Unity ECS

"Với GameObject chỉ có thể xử lý tối đa 1,000 con, nhưng với ECS thì 100,000 con cũng chạy mượt mà."


Unity ECS/DOTS là phương pháp phát triển thế hệ mới của Unity dựa trên đa luồng và tối ưu hóa bộ nhớ. Tuy nhiên, thực tế là việc tự học sẽ khó khăn do các khái niệm hoàn toàn khác biệt so với Unity truyền thống.

Khóa học này được chuẩn bị dành cho những người mới bắt đầu với ECS. Từ các khái niệm cơ bản của Entity-Component-System cho đến việc thành thạo các pattern có thể áp dụng ngay trong game thực tế.

Tại sao bây giờ bạn nên học ECS?

  • Unity Technologies đang thúc đẩy ECS như một kiến trúc tiêu chuẩn thế hệ tiếp theo. Nó đã được ổn định từ Unity 6 và là công nghệ sẽ được yêu cầu trong nhiều dự án hơn trong tương lai.


  • ECS là công nghệ cốt lõi cho phép người chơi có thể trải nghiệm nhiều đối tượng hơn, khung hình mượt mà hơn và mô phỏng phức tạp hơn, từ di động đến console.

  • Hiện tại chưa có nhiều lập trình viên có thể xử lý ECS một cách thành thạo. Nếu bạn có được năng lực phát triển ECS thì sẽ trở thành lợi thế cạnh tranh lớn trong thị trường việc làm.

  • ECS không phải là khái niệm riêng của Unity. Các mẫu tương tự đang được lan rộng trong các engine và framework khác như Mass Entity System của Unreal, Bevy Engine, v.v.

Nội dung học tập cốt lõi:

  • IComponentData, ISystem, Authoring pattern


  • Xử lý song song sử dụng Burst compile và IJobEntity

  • Cài đặt SRP Batcher và sử dụng GPU Instance

  • Unity Physics và xử lý va chạm sử dụng ITriggerEventsJob

  • Mô hình Hybrid sử dụng MonoBehaviour và ECS cùng nhau

  • EntityCommandBuffer를 활용한 동적 엔티티 관리 기법

Dự án thực hành là game theo phong cách Vampire Survivors, được thiết kế để xử lý đồng thời hàng chục nghìn kẻ thù và đạn bắn, giúp bạn cảm nhận được hiệu suất của ECS. Sau khi hoàn thành khóa học, bạn có thể ngay lập tức áp dụng ECS vào các dự án của mình.

Khái niệm cơ bản về ECS

  • Thay vì các bài học lý thuyết dài dòng, khóa học giúp bạn học các khái niệm cốt lõi của ECS một cách ngắn gọn, sau đó ngay lập tức viết code thực tế để làm quen với cấu trúc lập trình ECS.


Cách sử dụng cơ bản ECS

  • Ban đầu, chúng ta sẽ bắt đầu từ việc triển khai logic cơ bản thông qua Component, System và Authoring.

  • Quá trình xử lý va chạm và tối ưu hóa sử dụng Unity Physics sẽ được tiến hành.

Cung cấp shader hoạt ảnh sprite 2D

  • Trong ECS thuần túy hiện tại chưa hỗ trợ hoạt ảnh sprite. Phương pháp chắc chắn nhất cho vấn đề này là sử dụng kỹ thuật shader, đây là giải pháp tối ưu nhất.

  • ECS에 tối ưu hóa Sprite Offset để sử dụng shader graph hoàn chỉnh được cung cấp, và học về kỹ thuật triển khai animation 2D trong môi trường ECS. (Trong bài giảng không đề cập đến phần tạo shader graph.)

Cách sử dụng chế độ xem giám sát chuyên dụng ECS

  • Khi phát triển ECS, tích cực sử dụng các chế độ xem giám sát thiết yếu để tiến hành trong khi xác minh dữ liệu chính xác.

  • Chế độ xem Entity Hierarchy

  • Chế độ xem Components

  • Chế độ xem Systems

  • Archtypes view


Giám sát để tối ưu hóa

  • Xác minh việc kích hoạt Job Worker Thread sử dụng IJobEntity trong profiler.

Xác minh trạng thái kích hoạt Hybrid Batch Group

  • Tiến hành trong khi giám sát xem có phần nào Batch bị vỡ trong Frame Debugger hay không.

  • Trong ECS, GPU Instancing được xử lý tự động, trong khi đó chúng ta sẽ xem xét quá trình kiểm tra việc kích hoạt Hybrid Batch Group.

Chuyển cảnh và khởi tạo hệ thống

Trong ECS, việc chuyển đổi scene cũng phải trải qua một quy trình phức tạp. Trong quá trình tải scene với Monobehaviour, các đối tượng scene đã unload sẽ được dọn dẹp tự động, nhưng ECS phải xử lý thủ công trực tiếp.


  • Triển khai logic chuyển đổi sang scene menu chính

  • Triển khai logic khởi động lại

Sau khi hoàn thành khóa học

  • Năng lực ECS có thể triển khai ngay vào thực tế công việc

    • Dự án game hoạt động hoàn chỉnh cho portfolio

    • Nắm vững các mẫu thiết kế ECS và Best Practice

    • Khả năng phân tích và giải quyết vấn đề hiệu suất (phân tích Frame Debugger, Profiler)


  • Nắm vững công nghệ stack khác biệt

    • Unity ECS/DOTS chuyên môn - Nhóm nhà phát triển vẫn còn hiếm

    • Kinh nghiệm tối ưu hóa Burst và Job System

    • Tư duy lập trình hướng dữ liệu


  • Kiến trúc game có thể mở rộng

    • Cấu trúc xử lý dễ dàng hàng nghìn đến hàng chục nghìn entity

    • Có thể áp dụng cho nhiều thể loại khác nhau như multiplayer, mô phỏng quy mô lớn (Netcode for Entities)

Đây là khóa học được chuẩn bị thông qua khoảng 30 dự án mẫu để phát triển chương trình học tối ưu có thể từ từ nâng cao độ khó của việc học. Do đó, tôi nghĩ các bạn sẽ không gặp khó khăn gì trong việc học môi trường phát triển ECS.

Những lưu ý trước khi học

Môi trường thực hành

  • Hệ điều hành : Windows, macOS

  • Unity 6 (6000.2.10f1 trở lên)

  • IDE : Visual Studio 2022 hoặc Rider được khuyến nghị

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Nhà phát triển có kiến thức cơ bản về Unity nhưng cần tối ưu hóa hiệu suất

  • Những người muốn tạo ra game xử lý các object quy mô lớn

  • Những người muốn học stack công nghệ mới nhất của Unity

  • Những người muốn trang bị năng lực cạnh tranh để xin việc/chuyển việc

Cần biết trước khi bắt đầu?

  • Cú pháp cơ bản C# (Class, Struct, Interface)

  • Unity cơ bản cách sử dụng (GameObject, Component, Scene)

Xin chào
Đây là

599

Học viên

57

Đánh giá

59

Trả lời

4.9

Xếp hạng

8

Các khóa học

Xin chào, tôi là Lee Jae-hyun.

Tôi đã bắt đầu tự học Unity với ước mơ trở thành nhà phát triển game độc lập, và từ năm 2009 đến năm 2012, tôi đã phát hành khoảng 10 loại trò chơi di động thông qua hình thức phát triển độc lập. Tôi đã xuất bản cuốn sách Khóa học tuyệt đối! Unity và tiến hành các bài giảng trực tiếp. Trong quá trình giảng dạy, tôi luôn nhận ra rằng việc am hiểu kiến thức và việc truyền dạy tốt là hai điều hoàn toàn khác nhau. Dựa trên những kinh nghiệm này, tôi luôn nỗ lực để truyền đạt kiến thức của mình đến các bạn một cách hiệu quả nhất.

Hy vọng bài giảng lần này sẽ là một điểm khởi đầu tốt đẹp, góp một phần nhỏ giúp các bạn tiến bước vào thế giới phát triển game đầy thú vị. ~


Lịch sử giảng dạy chính

  • Bài giảng đặc biệt tại NC Soft

  • NHN Entertainment

  • Học viện Game Netmarble

  • Fast Campus - Unity Camp khóa 1 ~ khóa 8

  • Gia sư trực tuyến tại Team Sparta

  • T-Academy

  • ETRI (Viện Nghiên cứu Điện tử và Viễn thông Hàn Quốc)

  • KOCCA, GCA, Cơ quan Thúc đẩy Công nghiệp Seongnam

  • Bài giảng đặc biệt tại KAIST, Đại học Sogang, Đại học Chung-Ang, Đại học Hansung, Đại học Dankook

Hoạt động chính

  • Tác giả cuốn sách "Tuyệt đỉnh Unity!" (Xuất bản tại Nhật Bản, Trung Quốc)

  • Bài giảng chuyên đề tại phiên họp Unity UNITE 2014

  • Bài giảng chuyên đề phiên thực hành (Hands-on session) tại Unity UNITE 2018

  • Bài giảng chuyên đề Hands-on Session tại Unity Industry 2022

  • Hoạt động từ khóa 2 đến khóa 5 với tư cách là Masters chính thức của Unity Korea

    Giảng viên đặc biệt tại phiên hội thảo Unity UNITE 2014 Giảng viên đặc biệt tại phiên thực hành Unity UNITE 2018 Giảng viên đặc biệt tại phiên thực hành Unity Industry 2022 Hoạt động với tư cách là Unity Korea Certified Masters từ khóa 2 đến khóa 5

Giảng viên đặc biệt tại phiên thảo luận Unity UNITE 2014 Giảng viên đặc biệt tại phiên thực hành Unity UNITE 2018 Giảng viên đặc biệt tại phiên thực hành Unity Industry 2022 Hoạt động với tư cách là Unity Korea Certified Masters từ khóa 2 đến khóa 5

Chương trình giảng dạy

Tất cả

27 bài giảng ∙ (6giờ 6phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

7 đánh giá

5.0

7 đánh giá

  • 123123123123123님의 프로필 이미지
    123123123123123

    Đánh giá 34

    Đánh giá trung bình 3.7

    5

    100% đã tham gia

    Khóa học này khó hơn bất kỳ khóa học nào tôi từng học. Có rất nhiều khái niệm mới xuất hiện. Có vẻ như tôi cần phải lặp lại nhiều lần. Thật tốt khi được biết những khái niệm mới.

    • indiegamemaker
      Giảng viên

      Bạn đã hoàn thành khóa học thực sự rất nhanh.~ Vì đây là phương pháp hoàn toàn khác với cách phát triển truyền thống nên chắc hẳn bạn đã gặp nhiều khó khăn. Tôi nghĩ việc thực hành chuyển đổi sang ECS từ những logic nhỏ sẽ chắc chắn giúp ích cho bạn.

  • sdkbh4117님의 프로필 이미지
    sdkbh4117

    Đánh giá 1

    Đánh giá trung bình 5.0

    5

    33% đã tham gia

    • l4f0님의 프로필 이미지
      l4f0

      Đánh giá 2

      Đánh giá trung bình 5.0

      5

      33% đã tham gia

      • haku님의 프로필 이미지
        haku

        Đánh giá 4

        Đánh giá trung bình 4.5

        5

        100% đã tham gia

        Lần đầu tiên tôi đã thực hành ECS/DOTS! Mặc dù không đề cập đến mọi thứ về mặt lý thuyết nhưng đây là khoảng thời gian giúp tôi hiểu rõ ràng ECS là gì. Tôi nghĩ các bạn học viên khác cũng nên học thông qua tài liệu chính thức của Unity về các tính năng khác nhau sau khi hoàn thành khóa học, điều này sẽ rất hữu ích. Sau khi hoàn thành khóa học, tôi đã thử sửa đổi script để ôn tập và tự học, tôi nghĩ các bạn học viên khác cũng nên thử thách bản thân! Cảm ơn vì khóa học tuyệt vời!!!! --- [Ôn tập và Tự học] 1. Movement System Tôi đã refactor PlayerMovementSystem và ProjectileMovementSystem để hoạt động dựa trên IJobEntity, nâng cao hiệu quả biên dịch Burst và cho phép xử lý song song. - Mặc dù PlayerMovementSystem là một entity đơn lẻ nhưng tôi nghĩ tốt hơn là nên duy trì tính nhất quán với các phần khác nên đã thêm cấu trúc Job và đảm bảo toàn bộ logic được biên dịch Burst. - Tôi đã loại bỏ vòng lặp foreach trong ProjectileMovementSystem và sử dụng ScheduleParallel để sửa đổi sao cho khi nhiều projectile di chuyển đồng thời thì sử dụng work thread một cách hiệu quả. 2. HP Bar System Tôi đã thêm kiểm tra ComponentLookup.DidChange() trong PlayerHpBarSystem và EnemyHpBarSystem, và sửa đổi để chỉ tính toán FillAmount khi dữ liệu của PlayerComponent và EnemyComponent thực sự thay đổi. 3. Collision Tôi đã sửa đổi ProjectileCollisionSystem từ cách tạo EntityCommandBuffer thủ công và chờ hoàn thành Job với Complete, Playback sang cách sử dụng EndFixedStepSimulationEntityCommandBufferSystem. 4. Audio Sau khi hoàn thành việc triển khai hiệu ứng âm thanh cuối cùng, khi chuyển từ scene chính sang scene game Có vẻ như lỗi xảy ra do entity không được tạo ngay lập tức trong AudioManager. Do đó, giống như đã làm trong các script System khác, tôi đã sửa đổi để kiểm tra (audioBufferEntity == Entity.Null || !entityManager.Exists(audioBufferEntity)) và xác nhận sự tồn tại của entity trong Update trước khi phát.

        • indiegamemaker
          Giảng viên

          Cảm ơn bạn đã để lại đánh giá quý báu về khóa học. ~ Việc bạn giới thiệu chi tiết cả quá trình refactoring chắc chắn sẽ giúp ích rất nhiều cho những người khác.

      • graffiti님의 프로필 이미지
        graffiti

        Đánh giá 1

        Đánh giá trung bình 5.0

        5

        100% đã tham gia

        2.057.301 ₫

        Khóa học khác của indiegamemaker

        Hãy khám phá các khóa học khác của giảng viên!

        Khóa học tương tự

        Khám phá các khóa học khác trong cùng lĩnh vực!