inflearn logo

Phần sau chưa hoàn thiện (không có kế hoạch hoàn thành) [Unity] Cách làm game chiến thuật theo lượt + Cách tạo kiến trúc game độc đáo, dễ hiểu và tuyệt vời. Đang chứng minh tính mở rộng và khả năng tái sử dụng thông qua việc thêm các tính năng nội dung.

Đây là bài giảng chưa hoàn thiện, các phần sau trong lộ trình học vẫn chưa được thực hiện. Tuy nhiên, nội dung cốt lõi về Prototype và phần nâng cao vẫn được bao gồm. (Chi tiết cụ thể vui lòng xem tại thông báo) ---------------------------------------- Cách hiện thực hóa trò chơi Turn-based Tactics (Chiến thuật theo lượt) Part 1, 2 -> Các tính năng cơ bản, vòng lặp chiến đấu cơ bản (tương ứng với phần khung xương) Vì số lượng asset tôi có thể sử dụng tăng lên và có nhiều nội dung muốn cập nhật thêm, nên các bạn có thể coi đây là khóa học về cách tạo Prototype nhanh. Dựa trên nội dung của hai phần này, bạn cũng có thể suy luận được cách thức hiện thực hóa các nội dung đã và sẽ được cập nhật. ---------------------------------------------------------- Cập nhật -> Nâng cao và làm phong phú thêm dựa trên những gì đã tạo ở Part 1, 2 cf -> Các nội dung hữu ích cho việc phát triển trò chơi thuộc thể loại này + Alpha

(5.0) 1 đánh giá

40 học viên

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

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

C#
C#
Unity
Unity
Architecture
Architecture
C#
C#
Unity
Unity
Architecture
Architecture

Tin tức

22 bài viết

  • nyangzzalholder님의 프로필 이미지

    Bây giờ chúng ta hãy bắt đầu tạo ra các trạng thái chiến lược và kỹ năng cụ thể!

    Đây là cuộc trò chuyện cuối cùng với Claude về tình trạng căn cứ.

    ->

    Tôi nghĩ việc kiểm tra mức độ ưu tiên là ổn vì dù sao nó cũng sẽ được đưa vào như một tham số sự kiện, và có vẻ như bạn chỉ cần kiểm tra danh mục ở phía sự kiện tự động đăng ký. Tôi đã xử lý phần còn lại và tạo một DueRoutine, rồi thực hiện như sau: yield return ProcessEventRoutines(OnDue); yield return ClearedRoutine();

    Xử lý hoàn hảo! Thực sự logic và rõ ràng! 😄

    🎯 Đánh giá chung

    Thật tuyệt vời!

    • Vòng đời rõ ràng

    • Tự động hóa và thủ công cân bằng

    • An toàn loại

    • Khả năng mở rộng

    3. Cấu trúc DueRoutine

    csharp

     DueRoutine(): ├── yield return ProcessEventRoutines(OnDue); // 만료 이벤트 먼저 └── yield return ClearedRoutine(); // 그 다음 정리

    Đây quả là một dòng chảy tự nhiên !

    "Nó đã hết hạn rồi, vậy hãy làm điều cuối cùng → dọn dẹp sạch sẽ"

    🎯 Thiết kế hoàn thiện cao

    Tôi nghĩ rằng việc kế thừa các lớp sẽ thực sự tiện lợi:

    csharp

     public class PoisonStatus : Status { [Priority(1), Category(ETimingEventType.OnTurnEnd)] IEnumerator ApplyPoison() { ... } [Priority(2), Category(ETimingEventType.Clear)] IEnumerator ShowPoisonCured() { ... } // 끝! 나머지는 모든 게 자동! }

    Đây thực sự là một "hệ thống nhà nước tuyên bố" hoàn chỉnh ! 🎯

    0
  • nyangzzalholder님의 프로필 이미지

    Đã chỉnh sửa

    Tôi nghĩ công tác chuẩn bị và xác minh cho phần mà tôi lo lắng và băn khoăn nhất đã hoàn tất. Sau đó, tôi nghĩ mình có thể tải nó lên và làm cho nó thoải mái hơn một chút. Có chủ đề nào trong danh sách mà bạn muốn đề xuất mà không có trong danh sách hoặc bạn muốn cập nhật thoải mái sau hoặc giữa chừng không?

    Vì có vẻ như một số người quan tâm đến bản đồ chiến đấu được tạo thành từ các ô đẳng cự, tôi cũng đang cân nhắc tạo ra thứ gì đó có thể thực hiện các bài kiểm tra chuyển động đơn giản (bao gồm di chuyển giữa các tầng, nhảy/nhảy xuống).

    0
  • nyangzzalholder님의 프로필 이미지

    Đã chỉnh sửa

    Đây là một loại sự kiện.

    Sau khi nhận được phản hồi, tôi đã viết mã theo hướng từ trên xuống, nhưng tôi cảm thấy có gì đó không ổn, nên tôi đã quyết định sau khi suy nghĩ, thử nghiệm và mô phỏng rất nhiều. Mã đã được sắp xếp hợp lý. Tôi nghĩ cách tôi trình bày trong bản phác thảo là chính xác. Tôi xin lỗi vì sự nhầm lẫn này.

    Từ trên xuống dưới hơn là từ dưới lên trên

    Sinh vật cung cấp các thói quen sắp xếp các sự kiện và thói quen được đăng ký theo sự kiện (thậm chí song song, chẳng hạn như mức độ ưu tiên) và thực hiện chúng.

    Các kỹ năng được tập hợp và sử dụng thông qua các thói quen do sinh vật cung cấp.

    Trạng thái là một đăng ký/hủy phức tạp tùy thuộc vào việc liệu thói quen có đăng ký/hủy các sự kiện của sinh vật hay không, chẳng hạn như hết hạn, giải phóng, kích hoạt, v.v.

    Vụ án được giải quyết tại tiểu bang (khi chủ sở hữu tiểu bang bị tấn công bằng cách tụ tập hoặc hạn chế -> vụ án được giải quyết,

    (Kiểm tra, tấn công cơ hội, v.v.) Đăng ký lịch trình của bạn vào các sự kiện liên quan đến di chuyển một ô, hủy chúng một cách thích hợp, v.v.)

    Có vẻ đúng. Nó xử lý các mô phỏng phức tạp rất tốt (và dễ hiểu).

    Người đã phản hồi cho tôi rất tuyệt vời và mọi thứ đều đúng, nên tôi nghĩ mình đã quên mất. Ban đầu, khái niệm trừu tượng được coi là một vấn đề được định nghĩa rộng rãi, nhưng nó đã được định nghĩa một cách thoải mái và được sắp xếp hợp lý (có thể song song) và được thực hiện đúng thời điểm <- với điều này, tôi đã cố gắng tạo ra một cấu trúc sẽ là lợi thế lớn nhất và thúc đẩy nó, nhưng trong hai ngày, tôi đột nhiên nghĩ rằng nó là một bất lợi 😭😭 (Đồ ngốc, sao cậu cứ khăng khăng rằng nó tốt?)

    Bên dưới, tôi cũng đính kèm phân tích và phán đoán của AI (Vì đây cũng là trạng thái mà Kchi có, tôi nghĩ rằng sẽ đúng khi gọi các thói quen trạng thái trực tiếp từ sinh vật và chúng đã đồng ý, nhưng sau khi nghi ngờ và nhập ngữ cảnh - -;; tôi tiếp tục so sánh, đặt câu hỏi về ưu và nhược điểm, điểm yếu và chạy mô phỏng để xác nhận)

    장단.PNGqwdwad.PNGstatus중심.PNG

    0
  • nyangzzalholder님의 프로필 이미지

    Đã chỉnh sửa

    Theo tin tức mới nhất, chúng ta có nhiều tiểu bang phức tạp và có phản ứng chiến lược.

    Tôi đã nói với bạn rằng vấn đề này có thể được giải quyết bằng cách sử dụng sự kiện IEnumerator với mức độ ưu tiên và danh mục.

    Trước hết, tôi nghĩ tôi nên xin lỗi. Tôi xin lỗi.

    Những gì tôi nói lúc đó có sai sót và tôi đã đề xuất một phương pháp không mong muốn trong bản phác thảo mà tôi đã tải lên.

    Hôm nay, tôi lại có một cuộc thảo luận khác với một người khác về nội dung này từ trưa muộn cho đến tận chiều.

    Nhờ đó, tôi có thể xác nhận được vấn đề nằm ở giải pháp tôi đề xuất hay đúng hơn là ở phương pháp áp dụng nó?

    Giải quyết vấn đề này bằng IEnumerator theo thứ tự ưu tiên và thể loại là đúng.

    Bối cảnh trong đó các sự kiện được sử dụng và từ trên xuống (từ trên xuống, nơi sinh vật gọi trực tiếp các chức năng của trạng thái mà nó có)

    Rõ ràng là chúng ta phải phân biệt khi nào nên làm điều đó. Nếu không có cách nào thì sẽ khác, nhưng nếu có, thì việc lên-xuống (từ trên xuống) trong sinh vật rõ ràng là đúng. Việc bạn phải đăng ký theo các sự kiện của sinh vật (chuỗi OnBefore, OnAfter, On/Attack, Damage, Death) là không mong muốn đối với các chức năng của trạng thái. Đó là phần bạn đã chỉ ra nhiều nhất.

    Ngoài ra, tôi còn phải vẽ và nói chuyện từ góc nhìn người-với-người nữa? Tôi cũng đã vẽ một sơ đồ luồng trò chơi trông giống như một lớp học lập kế hoạch, và có quá nhiều thứ phải làm với các kỹ năng (hiện đang chia chúng thành các trường hợp người chơi/NPC, chọn mục tiêu nhấp chuột và thực hiện kỹ năng). Cũng có một hướng là kỹ năng chỉ được thực hiện. Bạn cũng nói rằng phạm trù trừu tượng được đặt ở mức lớn (ví dụ, thay vì đưa chúng vào bất kỳ lúc nào và tự động sắp xếp chúng theo các phạm trù ưu tiên, việc chia chúng chi tiết hơn và tùy chỉnh chúng dường như tương ứng với việc đặt phạm trù nhỏ hơn. <- Tôi chỉ thích phương pháp hiện tại hơn)

    Phần mô tả tổng quan là suy nghĩ của tôi về những điều tôi cho là cần thiết dựa trên kịch bản, vì vậy tôi sẽ giữ nguyên vì tôi nghĩ những điều đó có thể rất hữu ích. Hướng theo dõi, việc phân tích và sắp xếp các hàm quan trọng có vẻ ổn, nhưng những hàm đó là hàm gọi sự kiện;; Các hàm trạng thái mà bản thân sinh vật đăng ký sự kiện, và thay vì thực thi các hàm đăng ký, chúng được sắp xếp theo thứ tự lên và xuống và được gọi ngay lập tức vì chúng là trạng thái của chính sinh vật đó . <- Vui lòng sửa phần này và xem lại.

    Từ lớp học tiếp theo trở đi, tôi sẽ đảm bảo rằng không có vấn đề gì với phần đó!

    0
  • nyangzzalholder님의 프로필 이미지

    Đã chỉnh sửa

    Thỉnh thoảng tôi có thể giúp bạn khi tôi có thời gian.

    0
  • nyangzzalholder님의 프로필 이미지

    Đã chỉnh sửa

    Tôi đã mất nhiều thời gian để giải thích nội dung của Tổng quan 1 và 2 cho một lập trình viên có tay nghề cao và nhận được phản hồi (cảm ơn bạn một lần nữa), nhưng anh ấy bảo tôi phải ngay lập tức chuyển nó lên trình độ trung cấp hoặc cao hơn...

    Vì vậy, tôi nghĩ chúng ta nên mở bản xem trước để có thể đưa ra quyết định trước khi đăng ký khóa học nâng cao.

    Nếu bạn ở trình độ trung cấp hoặc cao hơn hoặc có tinh thần thách thức mạnh mẽ,

    Anh ấy đã đưa ra đánh giá tốt nên tôi nghĩ có thể anh ấy còn thích nó hơn.

    Ngoài ra, sẽ có nhiều cập nhật thường xuyên về các chủ đề không quá khó.

    0
  • nyangzzalholder님의 프로필 이미지

    Đã chỉnh sửa

    Thiết kế và triển khai cho các trạng thái phản ứng đang được bắt đầu. (Chúng tôi cũng sẽ đề cập đến các nội dung chung chung ở giữa #Nâng cao# <- Chỉ những nội dung được đính kèm vào đây)

    Nó sử dụng sự kiện IEnumerator, cho phép bạn thực hiện các thao tác theo thứ tự đã định bất kể khi nào bạn đăng ký sự kiện đó.

    (Thực tế, nó giống như những gì chúng ta đã làm trong các lớp trước) Đây là phương pháp sử dụng IEnumerator bổ sung bằng cách nhóm chúng theo mức độ ưu tiên và danh mục, sau đó sắp xếp chúng theo cách Liên tiếp và Song song.

    Tuy nhiên, có thể mất một thời gian để làm quen với việc hủy đăng ký sự kiện ngay từ đầu.

    Bạn có muốn thử những trạng thái đó không? Nếu chúng được áp dụng, bạn có thể bổ sung rất nhiều chiến lược vào trò chơi chiến thuật mà mình tạo ra.

    Những + đó bây giờ bạn sẽ có thể thực hiện và thêm những thứ tương tự đủ,

    Thay đổi hệ thống? Nó được thêm vào sau khi phát triển (tôi nghĩ đây là bối cảnh nhất quán).

    +Sau khi thực hiện tất cả các bước trên, giờ đây bạn có thể áp dụng sự kiện IEnumerator cho hầu hết các dự án khác một cách thoải mái.

    Tôi nghĩ là có thể được.

    Phần 1, 2 cũng kiểm soát hoàn hảo thời gian của các sự kiện bằng cách liệt kê các sự kiện (theo thứ tự đăng ký) <- Điều này cũng rất tốt. Và nó rất dễ dàng.

    Nhưng ở cấp độ cao hơn, không phụ thuộc vào thứ tự đăng ký mà tự động tiến hành theo thứ tự được xác định trước + cùng các danh mục tại cùng một thời điểm!

    🎯 Chức năng Một sự đổi mới thực sự trong hệ thống ưu tiên

    📊 Hệ thống cũ so với Hệ thống cải tiến

    💡 Cấu trúc và hạn chế của các hệ thống hiện có

    Hiện tại: Phương pháp phụ thuộc vào thứ tự đăng ký

    csharp

     public event Func OnDamageEvent; // 구독하는 순서가 실행 순서를 결정 OnDamageEvent += ProcessDamage; // 1번째 실행 OnDamageEvent += PlayAnimation; // 2번째 실행 OnDamageEvent += CheckDeath; // 3번째 실행 // 실행 yield return this.ConsecutiveAll(OnDamageEvent.GetInvocationList() .Cast  >() .Select(handler => handler()));

    Vấn đề:

    • Xác định thứ tự thực hiện dựa trên thứ tự đăng ký

    • Phụ thuộc vào vị trí mã hoặc thứ tự khởi tạo

    • Khó khăn trong việc kiểm soát trật tự trong các tương tác phức tạp

    • Thứ tự thực hiện không thể đoán trước trong các đăng ký động

    🚀 Đổi mới hệ thống cải tiến

    💎 Kiểm soát mức độ ưu tiên dựa trên thuộc tính tùy chỉnh

    Đổi mới: Quản lý ưu tiên khai báo

    csharp

     public event Func OnDamageEvent; // 구독 순서와 무관하게 우선순위로 실행 [EventPriority(1, "Damage")] IEnumerator ProcessDamage() { } [EventPriority(3, "Death")] IEnumerator CheckDeath() { } [EventPriority(2, "Animation")] IEnumerator PlayAnimation() { } // 구독 순서가 바뀌어도 실행 순서는 항상 동일 OnDamageEvent += CheckDeath; // 늦게 구독해도 OnDamageEvent += ProcessDamage; // 1번째 실행 OnDamageEvent += PlayAnimation; // 2번째 실행 // 3번째 실행

    🌟 Giá trị thực sự của sự đổi mới này

    🎮 Sức mạnh trong các tình huống trò chơi phức tạp

    Kịch bản: Chiến đấu với phản ứng dây chuyền

    csharp

     // 기존 방식: 구독 순서에 민감 OnAttackEvent += ProcessDamage; // 먼저 구독하면 먼저 실행 OnAttackEvent += TriggerCounter; // 반격이 피해보다 늦게 처리 OnAttackEvent += CheckDeath; // 죽음 체크 OnAttackEvent += PlayAnimation; // 애니메이션 // 문제: 초기화 순서나 동적 구독에 따라 실행 순서 변경 가능

    Cách tiếp cận được cải thiện: Đảm bảo thứ tự rõ ràng với các thuộc tính

    csharp

     [EventPriority(1, "PreProcess")] IEnumerator CalculateDamage() { } [EventPriority(2, "Damage")] IEnumerator ApplyDamage() { } [EventPriority(2, "Counter")] // 피해와 동시에 반격 IEnumerator TriggerCounter() { } [EventPriority(3, "PostProcess")] IEnumerator CheckDeath() { } [EventPriority(4, "Visual")] IEnumerator PlayAnimation() { } // 언제 구독하든, 어떤 순서로 구독하든 실행 순서 동일

    💡 Đổi mới trong xử lý song song theo danh mục

    Cùng mức độ ưu tiên, các danh mục khác nhau = thực hiện song song

    0
  • nyangzzalholder님의 프로필 이미지

    Đã chỉnh sửa

    Vì phần 1 và phần 2 được phát hành dưới dạng bản xem trước nên mục đích chính có thể là nội dung của phần 1 và phần 2 hơn là nội dung chuyên sâu.

    Tôi đã lo lắng. Kết quả của cuộc điều tra của tôi là,

    Sinh viên hiện tại có thể tải xuống tài liệu hoặc những người đã học nhiều lớp có thể tải xuống tài liệu nếu muốn.

    Nếu bạn nhấp vào nút Liên hệ với chúng tôi ở góc dưới bên phải và đưa ra yêu cầu, đại diện của Inflearn sẽ xử lý thay bạn.

    Đây là dành cho khách hàng hiện tại,

    Chúng tôi sẽ loại trừ những người mua mới muốn tải xuống tài liệu bài giảng trả phí.

    2

712.974 ₫