Khung công cụ game engine tạo bằng C++ (Học cấu trúc engine thông qua trò chơi Sokoban và game bắn súng)

Nếu bạn muốn hiểu về công cụ phát triển trò chơi (game engine), cách nhanh nhất là hãy tự mình tạo ra một cái. Đây là khóa học theo dạng dự án, nơi bạn sẽ triển khai cấu trúc cốt lõi của một game engine trên console bằng C++, và hoàn thành cả trò chơi Sokoban lẫn game bắn máy bay. Khóa học cung cấp góc nhìn giúp bạn hiểu sâu hơn về cấu trúc của các công cụ như Unreal và Unity.

(5.0) 12 đánh giá

43 học viên

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

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

C++
C++
oop
oop
Architecture
Architecture
dlls
dlls
C++
C++
oop
oop
Architecture
Architecture
dlls
dlls

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

5.0

5.0

최재우

100% đã tham gia

Trước đây tôi từng mơ hồ về các kiến thức CS, nhưng giờ đây tôi đã nắm vững các khái niệm đến mức có thể diễn đạt lại một cách chính xác. Ngoài ra, thông qua việc trực tiếp thiết kế trò chơi Sokoban và game bắn súng, cũng như học về RTTI và các tính năng va chạm, tôi đã tự tin rằng mình có thể tự tay tạo ra một trò chơi! Tôi rất muốn giới thiệu khóa học này cho bạn bè xung quanh!

5.0

안희준

100% đã tham gia

Tôi thực sự khuyên dùng khóa học này cho những ai muốn tự tay thiết kế và thấu hiểu cấu trúc nội bộ căn bản của một game engine, thay vì chỉ dừng lại ở việc sử dụng các tính năng có sẵn mà các engine thương mại cung cấp. Thông qua bài giảng này, tôi đã có được cái nhìn sâu sắc về nguyên lý hoạt động của các tính năng cốt lõi như vòng đời của Actor và quản lý Tick. Đặc biệt, phương pháp trực tiếp kiểm soát bộ nhớ bằng C++ để ngăn chặn rò rỉ tài nguyên, hay nguyên lý xử lý kế thừa đối tượng và downcasting an toàn bằng cách triển khai RTTI tùy chỉnh là những kinh nghiệm quý báu mà việc học hời hợt bên ngoài không bao giờ có được. Ngoài ra, quá trình tách biệt và liên kết engine bằng cách build dưới dạng DLL đã lấp đầy những kiến thức CS thực tiễn vốn khó có thể tiếp cận trong các tiết học chuyên ngành ở trường hay các bài hướng dẫn thông thường. Nếu bạn là một nhà phát triển muốn biết lý do thực sự đằng sau cách vận hành nội bộ của các engine như Unreal hay Unity, nhất định hãy thử nghe khóa học này.

5.0

Lelana

100% đã tham gia

Thực sự đã giúp ích cho tôi rất nhiều. Bắt đầu từ việc làm theo những đoạn mã nhỏ nhất, nhìn lại tôi đã thấy bản thân mình có thể tự tay tạo ra một trò chơi 2D hoàn chỉnh. Gần đây tôi cũng đang học Unreal, và bài giảng này đã hỗ trợ tôi cực kỳ nhiều. Từ những cái tên biến nhỏ nhặt cho đến tên các class đều có sự tương đồng nhất định với Unreal, nên nó cũng giúp tôi hiểu rõ hơn về cấu trúc của Unreal. Phần tôi thích nhất là RTTI, tôi đã cảm thấy rất thú vị khi tận mắt chứng kiến những thông tin runtime được thực thi bằng chính mã code mình viết và vận dụng hữu ích trong trò chơi. Tôi rất mong chờ bài giảng tiếp theo của giảng viên. Xin cảm ơn!

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

  • Tự tay xây dựng game engine bằng C++

  • Khả năng vận dụng Template và Smart Pointer trong C++

  • Thiết kế vòng lặp trò chơi và cấu trúc cấp độ Actor

  • Thực hiện cấu trúc mô-đun dựa trên DLL

  • Xây dựng hệ thống RTTI tùy chỉnh

  • Tự triển khai Double Buffering

  • Tự triển khai hệ thống va chạm (AABB)

  • Hoàn thành trò chơi Sokoban và bắn máy bay


Đánh giá từ học viên!

“Giờ đây tôi đã có thể giải thích chính xác các khái niệm CS vốn dĩ từng gây nhầm lẫn.”

“Tôi đã bắt đầu nắm bắt được phương pháp thiết kế phù hợp với cấu trúc engine là như thế nào.”

“Tôi đã trở nên tự tin hơn khi trực tiếp tự mình làm ra trò chơi.”

“Tôi đã có thể hiểu về Unreal Engine một cách có hệ thống hơn.”


Nếu bạn muốn hiểu về công cụ trò chơi (game engine), hãy thử tự mình tạo ra nó.

Tự mình hiện thực hóa engine game console bằng C++,
và hoàn thành hai trò chơi bằng cách sử dụng chính engine mà bạn đã tạo ra.


Đây không đơn thuần chỉ là lớp học tạo ra trò chơi.

Đây không phải là việc sử dụng một engine đã có sẵn, mà là quá trình
tự mình thiết kế hiện thực hóa cấu trúc cốt lõi của game engine.


Trực tiếp xây dựng cấu trúc cốt lõi của engine.

Không chỉ đơn thuần là triển khai các tính năng, mà bạn sẽ trực tiếp tạo ra các yếu tố cốt lõi để hiểu được cấu trúc của các engine thương mại.

  • Thiết kế game engine dựa trên lập trình hướng đối tượng (Object-Oriented Programming) bằng C++

  • Vòng lặp trò chơi (Game Loop) Kiến trúc

  • Hệ thống quản lý thế giới dựa trên ActorLevel

  • Cấu trúc cập nhật dựa trên khung hình cố định

  • Xử lý đầu vào hệ thống

  • Hệ thống kết xuất Double Buffering

  • Hệ thống phát hiện va chạm dựa trên AABB

  • Tách biệt DLL (DLLs) thông qua thiết kế kiến trúc Engine/Nội dung (Engine/Game Architecture)

  • Hệ thống kiểu tùy chỉnh (RTTI)



Hoàn thiện trò chơi bằng chính engine đã tạo ra.

Lộ trình tiến độ bài giảng

Khóa học này không chỉ dừng lại ở việc tạo ra engine rồi kết thúc.

Thực tế sản xuất một trò chơi có độ hoàn thiện cao dựa trên công cụ (engine) tự mình tạo ra.

“Engine → Game” Bạn sẽ được trải nghiệm toàn bộ quy trình dẫn dắt cho đến tận bước cuối cùng.


1. Trò chơi Sokoban

Đây là dự án trò chơi đầu tiên sử dụng engine tự phát triển.
Bạn sẽ chế tạo Sokoban, một trò chơi giải đố nhấn mạnh vào các quy tắc.

Trò chơi giải đố Sokoban được thực hiện dựa trên engine tự phát triển

Đây là cấu trúc áp dụng tất cả các hệ thống nhập liệu/va chạm/kết xuất thời gian thực.

2. Trò chơi bắn súng

Đây là dự án trò chơi thứ hai sử dụng engine tự phát triển.
Chúng ta sẽ chế tạo một trò chơi bắn súng cho phép bạn trực tiếp triển khai xử lý đầu vào thời gian thực, tạo actor động và xử lý va chạm.

Trò chơi bắn máy bay thời gian thực được xây dựng dựa trên engine tự phát triển
Cấu trúc mà trong đó hệ thống xử lý đầu vào thời gian thực, phán đoán va chạm và hệ thống render hoạt động một cách hữu cơ

Bối cảnh lập kế hoạch bài giảng

Trong suốt thời gian dài giảng dạy về Unity, Unrealphát triển game dựa trên C++, nhiều học viên đã đặt ra câu hỏi như thế này.

“Tôi không hiểu tại sao engine lại hoạt động như thế này.”
“Tôi biết về Tick, nhưng không nắm bắt được cấu trúc tổng thể.”
“Tôi không thể hình dung được vòng đời của Actor trong đầu.”
"Tôi có thể triển khai các tính năng đơn giản, nhưng rất khó để giải thích về cấu trúc."

Vì các engine thương mại đã được hoàn thiện sẵn, nên hầu như không có cơ hội để trực tiếp trải nghiệm cấu trúc bên trong của chúng.

Vì vậy, hầu hết việc học sẽ diễn ra như thế này:
→ Biết chức năng, nhưng không biết cấu trúc và nguyên lý hoạt động


Vì vậy, tôi đã tạo ra khóa học này

Nếu bạn trực tiếp thử tự mình hiện thực hóa engine

  • Tại sao vòng lặp game lại vận hành như thế

  • Các sự kiện như BeginPlay / Tick diễn ra như thế nào

  • Tại sao Actor / Level lại được tách biệt với nhau

  • Xử lý va chạm được thực hiện theo phương thức nào

  • Cách phân chia giữa engine và game như thế nào

Tất cả những điều này sẽ được kết nối và thấu hiểu một cách tự nhiên.

Khuyên dùng cho những người sau đây!

Đối tượng đề xuất của khóa học

Mục tiêu khóa học

Đây không đơn thuần là một bài giảng tạo ra kết quả đầu ra.

Đây là bài giảng giúp bạn xây dựng “góc nhìn về engine”.

Hiểu được cấu trúc của các engine thương mại và tạo ra các tiêu chuẩn,
giúp bạn thấy được "tại sao nó lại được thiết kế như vậy" khi đọc code,
và trang bị năng lực phát triển dựa trên thiết kế thay vì chỉ triển khai đơn thuần.

Kỹ năng thiết kế engine có được thông qua việc trực tiếp chế tạo và trải nghiệm.

→ Không chỉ dừng lại ở việc triển khai tính năng đơn thuần, chúng tôi mang đến trải nghiệm giúp bạn thấu hiểu cấu trúc hệ thống.

Bằng cách trực tiếp triển khai cấu trúc cốt lõi của engine,
bạn sẽ hiểu về vòng lặp trò chơivòng đời,
từ đó có được khả năng thiết kế toàn bộ luồng hoạt động.

Thiết kế cấu trúc Actor/Level dựa trên hướng đối tượng,
tổ chức thế giới trò chơi một cách hệ thống và
nắm vững phương pháp tạo ra cấu trúc có khả năng mở rộng.

Bạn sẽ hiểu về cập nhật dựa trên khung hình và xử lý thời gian (deltaTime), từ đó có được khả năng thiết kế cơ bản để triển khai logic trò chơi độc lập với tốc độ khung hình.

Bạn sẽ có thể hiểu một cách có cấu trúc về cách các hệ thống trò chơi kết nối với nhau
thông qua việc trực tiếp triển khai luồng xử lý đầu vào, kiểm tra va chạm và kết xuất (rendering).

Trải nghiệm cấu trúc tách biệt giữa engine và logic trò chơi (dựa trên DLL), bạn sẽ tự nhiên học được tư duy thiết kế dự án tương tự như các engine thương mại thực tế.

Vượt qua cấp độ "sử dụng" công cụ,
bạn sẽ phát triển thành một nhà phát triển có thể giải thích cấu trúc bên trong
và tự mình thiết kế chúng.

Khóa học này không đơn thuần chỉ là hướng dẫn viết mã theo mẫu.

Đây là quá trình tạo ra góc nhìn để thấu hiểu engine,
và tiến tới trở thành một nhà phát triển có khả năng tự mình thiết kế.

Hãy tự mình tạo thử ngay bây giờ.

Lưu ý trước khi học

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

  • Hệ điều hành và phiên bản (OS): Khuyến nghị Windows 11 (có thể dùng Windows 10)

  • Công cụ sử dụng: Visual Studio 2022 Community (Môi trường phát triển Visual C++)

  • Cấu hình PC: Hiệu năng tương đương máy tính văn phòng có thể chạy được Visual Studio 2022

Tài liệu học tập

  • Ví dụ được sử dụng trong bài giảng - (Tệp nén Zip)

  • Tài liệu bài giảng (Tài liệu ghi chú dưới video trên Inflearn)

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

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

  • Học viên đang học Unreal Engine nhưng cảm thấy bất an vì không hiểu cấu trúc bên trong.

  • Nhà phát triển cảm thấy bế tắc vì sử dụng công cụ game thương mại nhưng không thể giải thích được cấu trúc bên trong.

  • Nhà phát triển đã biết cú pháp C++ nhưng đang gặp bế tắc trong việc thiết kế framework

  • Người tìm việc đang lo sợ buổi phỏng vấn vì e rằng sẽ có câu hỏi về cấu trúc động cơ

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

  • Dành cho những người đã hiểu về cú pháp cơ bản của C++ (class/con trỏ/tham chiếu/con trỏ thông minh/template).

  • Bạn cần có kinh nghiệm thực hiện nhập xuất tệp cơ bản (nhập xuất tệp kiểu C++).

  • Yêu cầu có kinh nghiệm tạo và xây dựng dự án C++ bằng Visual Studio.

  • Cần hiểu về RTTI (RunTime Type Information).

  • Cần có kinh nghiệm sử dụng các cấu trúc dữ liệu cơ bản của STL (std::vector, std::unordered_map, v.v.).

Xin chào
Đây là RonnieJ

43

Học viên

12

Đánh giá

5.0

Xếp hạng

1

Khóa học

Jang Se-yoon

Hiện là nhà phát triển tự do/giảng viên/tác giả/dịch giả

Cựu kỹ sư tại Unity Technologies chi nhánh Hàn Quốc

Sách đã xuất bản

[Nhà phát triển Unity Engine hướng dẫn] Phát triển trò chơi RPG sử dụng Unity

Sách dịch

Phát triển trò chơi Unreal Engine 5 dựa trên dự án 2/e và 8 cuốn sách khác
Đào tạo và Boot camp (Unreal/Unity)

Đã thực hiện nhiều chương trình đào tạo lập trình viên (bootcamp) tại NCSoft, Nexon, Neople, Golfzon.

Blog

https://ronniej.sfuhost.com/

Thêm
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

12 đánh giá

5.0

12 đánh giá

  • wodn6983님의 프로필 이미지
    wodn6983

    Đánh giá 1

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    Trước đây tôi từng mơ hồ về các kiến thức CS, nhưng giờ đây tôi đã nắm vững các khái niệm đến mức có thể diễn đạt lại một cách chính xác. Ngoài ra, thông qua việc trực tiếp thiết kế trò chơi Sokoban và game bắn súng, cũng như học về RTTI và các tính năng va chạm, tôi đã tự tin rằng mình có thể tự tay tạo ra một trò chơi! Tôi rất muốn giới thiệu khóa học này cho bạn bè xung quanh!

    • naru032779858님의 프로필 이미지
      naru032779858

      Đánh giá 2

      Đánh giá trung bình 5.0

      Đã chỉnh sửa

      5

      30% đã tham gia

      Trước đây, do không có kiến thức về thiết kế mà chỉ tập trung vào việc triển khai nên mã nguồn của tôi rất lộn xộn. Tuy nhiên, thông qua bài giảng lần này, tôi đã học được cách triển khai phù hợp với cấu trúc của engine và trò chơi, giúp khả năng đọc mã tốt hơn và tôi cũng đã nắm bắt được phần nào hướng đi trong thiết kế. Nhờ đó, tôi nghĩ rằng việc học Unreal Engine trong tương lai sẽ dễ dàng và có hệ thống hơn nhiều. Đây là một bài giảng đóng vai trò như một người hướng dẫn tuyệt vời.

      • awer000님의 프로필 이미지
        awer000

        Đánh giá 1

        Đánh giá trung bình 5.0

        5

        100% đã tham gia

        Thực sự đã giúp ích cho tôi rất nhiều. Bắt đầu từ việc làm theo những đoạn mã nhỏ nhất, nhìn lại tôi đã thấy bản thân mình có thể tự tay tạo ra một trò chơi 2D hoàn chỉnh. Gần đây tôi cũng đang học Unreal, và bài giảng này đã hỗ trợ tôi cực kỳ nhiều. Từ những cái tên biến nhỏ nhặt cho đến tên các class đều có sự tương đồng nhất định với Unreal, nên nó cũng giúp tôi hiểu rõ hơn về cấu trúc của Unreal. Phần tôi thích nhất là RTTI, tôi đã cảm thấy rất thú vị khi tận mắt chứng kiến những thông tin runtime được thực thi bằng chính mã code mình viết và vận dụng hữu ích trong trò chơi. Tôi rất mong chờ bài giảng tiếp theo của giảng viên. Xin cảm ơn!

        • hidolee님의 프로필 이미지
          hidolee

          Đánh giá 1

          Đánh giá trung bình 5.0

          5

          100% đã tham gia

          Tôi thực sự khuyên dùng khóa học này cho những ai muốn tự tay thiết kế và thấu hiểu cấu trúc nội bộ căn bản của một game engine, thay vì chỉ dừng lại ở việc sử dụng các tính năng có sẵn mà các engine thương mại cung cấp. Thông qua bài giảng này, tôi đã có được cái nhìn sâu sắc về nguyên lý hoạt động của các tính năng cốt lõi như vòng đời của Actor và quản lý Tick. Đặc biệt, phương pháp trực tiếp kiểm soát bộ nhớ bằng C++ để ngăn chặn rò rỉ tài nguyên, hay nguyên lý xử lý kế thừa đối tượng và downcasting an toàn bằng cách triển khai RTTI tùy chỉnh là những kinh nghiệm quý báu mà việc học hời hợt bên ngoài không bao giờ có được. Ngoài ra, quá trình tách biệt và liên kết engine bằng cách build dưới dạng DLL đã lấp đầy những kiến thức CS thực tiễn vốn khó có thể tiếp cận trong các tiết học chuyên ngành ở trường hay các bài hướng dẫn thông thường. Nếu bạn là một nhà phát triển muốn biết lý do thực sự đằng sau cách vận hành nội bộ của các engine như Unreal hay Unity, nhất định hãy thử nghe khóa học này.

          • ckrgkstpwhdd9870님의 프로필 이미지
            ckrgkstpwhdd9870

            Đánh giá 1

            Đánh giá trung bình 5.0

            Đã chỉnh sửa

            5

            26% đã tham gia

            Tôi đã luôn muốn thử sử dụng engine, và tôi nghĩ đây là cơ hội để kiểm tra quá trình hoạt động của engine mà bấy lâu nay tôi đã ngó lơ. Trước đây tôi từng đọc cuốn sách 'Lập trình game □□□ bằng C', và tôi nhớ trong đó họ sử dụng hàm sleep() để cố định khung hình (frame). Vì vậy, ban đầu tôi thấy kỹ thuật chỉ định khung hình này rất thú vị.🤔 Lần nào tôi cũng chỉ thấy hứng thú rồi lại vấp phải bức tường của engine (với vô vàn tính năng và giao diện...) nên đành gác lại việc làm game, nhưng nhờ sự giải thích tận tình của bạn mà nỗi sợ hãi về engine của tôi đã giảm bớt phần nào. Vì bạn giải thích kỹ về vòng đời và quá trình hoạt động, nên tôi nghĩ những ai đang lo sợ trước sự đồ sộ của engine có thể tiến gần hơn một bước đến hệ thống game thông qua việc tự tạo ra một engine nhẹ nhàng. Vì bài giảng hoàn toàn chỉ diễn ra trên Visual Studio, nên tôi có thể tạm dừng video để gõ theo code và vừa nghe giải thích vừa học. Do đó, dù thời gian bài giảng hơi dài nhưng cá nhân tôi thấy việc gõ theo mang lại hiệu quả học tập tốt... nên tôi rất thích. Trong ghi chú bài giảng, bạn đã tổng hợp lại nội dung đã học và lý do tại sao lại học nội dung đó, nên tôi đã dùng Gemini để tạo câu đố và ôn tập lại. Mặc dù chúng ta sẽ vừa nhìn code vừa gõ theo, nhưng để theo kịp tốc độ bài giảng thì tôi nghĩ nếu bạn đã quen thuộc với C++ ở mức độ nào đó thì hiệu quả học tập sẽ tốt hơn. Với tôi thì C++ hơi khó... nên việc học có hơi chậm một chút, nhưng dù vậy tôi vẫn rất hài lòng với bài giảng này. Tôi sẽ cố gắng học tập thật chăm chỉ !! 🥰

            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!

            Ưu đãi có thời hạn, kết thúc sau 7 ngày ngày

            64 ₫

            49%

            3.431.319 ₫