Trong thế giới sáng tạo và phong phú của Minecraft, việc tạo ra các thực thể tùy chỉnh là một khía cạnh quan trọng để làm cho trò chơi trở nên độc đáo và thú vị hơn. Thực thể tùy chỉnh có thể mang đến những trải nghiệm mới mẻ cho người chơi, từ những sinh vật kỳ lạ đến các đối tượng có hành vi đặc biệt. Trong bài viết này, chúng ta sẽ tìm hiểu cách tạo và quản lý các thực thể tùy chỉnh cho addon Minecraft, bao gồm cả việc định nghĩa hành vi, thiết lập thành phần, di chuyển, tạo mô hình, và nhiều khía cạnh khác.
Ở đây, chúng ta sẽ tạo ra một thực thể heo, tấn công người chơi và thả ra vật phẩm thitheo của chúng khi chết. Giống như các vật phẩm, các thực thể được tạo ra từ hai phần:
- Các hành vi (di chuyển, tấn công)
- Các yếu tố trực quan Texture (hình ảnh, tên, hoạt cảnh, âm thanh)
Tạo thực thể tùy chỉnh trong Minecraft là một quá trình phức tạp, bao gồm hai phần chính: Hành vi (di chuyển, tấn công) và yếu tố trực quan (texture, hình ảnh, hoạt cảnh, âm thanh). Có hai tệp chính cần được tạo ra: Tệp máy chủ (server entity) và tệp khách (client entity).
Đầu tiên, chúng ta sẽ đi qua cách tạo ra một thực thể và xác định hành vi của nó. Tiếp theo, chúng ta sẽ xem cách thêm các yếu tố trực quan.
Hành vi của thực thể
Định nghĩa về hành vi của thực thể
Hành vi của thực thể là những phản ứng, hành động và cách thức tương tác với môi trường xung quanh. Chúng bao gồm các hành động như di chuyển, tấn công, phản ứng với các tác nhân khác, và nhiều hơn nữa. Việc xác định và điều chỉnh hành vi của thực thể là một phần quan trọng trong quá trình tạo và quản lý chúng.
Tầm quan trọng của hành vi trong quản lý thực thể
Hành vi của thực thể đóng vai trò quan trọng trong việc tạo ra các trải nghiệm trò chơi thú vị và đa dạng. Chúng giúp thực thể trở nên “sống động” và tương tác với người chơi và môi trường xung quanh một cách hợp lý và thú vị. Việc quản lý hành vi đảm bảo rằng thực thể hoạt động đúng cách và tạo ra những trải nghiệm trò chơi mong muốn.
Thiết lập hành vi cho thực thể
Chúng ta xác định tệp máy chủ của mình trong BP, dưới thư mục BP/entities/
Chúng ta sẽ gọi tệp này là heo.se.json. Ở đây, “.se” đứng cho server entity. Điều này giúp rõ ràng và được khuyến nghị trong Hướng dẫn về Kiểu dáng.
Tương tự như với các vật phẩm, chúng ta có phiên bản định dạng của mình và ở đây chúng ta có “minecraft:entity” vì đây là một tệp thực thể.
Đối với các thực thể, chúng ta có một ít thông tin hơn dưới phần mô tả:
Định nghĩa :
Khóa định danh phục vụ mục đích tương tự, chỉ định thực thể chúng ta đang nói đến. Các khóa khác xác định cách chúng ta có thể thêm thực thể vào thế giới của chúng ta:
"is_summonable"
: Cho biết liệu thực thể có thể được triệu hồi bằng lệnh /summon hay không."is_spawnable"
: Cho biết liệu thực thể có thể xuất hiện trong thế giới bằng một quả trứng sinh sản hoặc quy tắc sinh sản hay không."is_experimental"
: Cho biết liệu thực thể có phải là thực thể thử nghiệm không (nếu có, chỉ có thể thêm vào các Thế giới Thử nghiệm).
Components
Khái niệm về components trong quản lý thực thể
Trong quá trình tạo và quản lý thực thể, khái niệm “components” (thành phần) đóng vai trò quan trọng. Components là các khối xây dựng cơ bản tạo nên hành vi và đặc điểm của thực thể. Chúng được sử dụng để xác định các thuộc tính như sức khỏe, sức mạnh tấn công, tốc độ di chuyển, và nhiều hơn nữa.
Một thực thể có nhiều hành vi hơn so với chỉ một vật phẩm, vì vậy chúng ta cần xác định nhiều thành phần hơn cho nó.
Định nghĩa :
"minecraft:type_family"
: Định nghĩa nhãn gia đình cho thực thể."family"
: Danh sách các nhãn gia đình mà thực thể thuộc về, trong trường hợp này là “animal” và “heogaming”.
"minecraft:health"
: Xác định sức khỏe của thực thể."value"
: Giá trị sức khỏe của thực thể, ở đây là 20."max"
: Giá trị tối đa của sức khỏe, ở đây cũng là 20.
"minecraft:attack"
: Xác định sức mạnh tấn công của thực thể."damage"
: Sát thương mà thực thể gây ra, ở đây là 3.
"minecraft:movement"
: Xác định tốc độ di chuyển của thực thể."value"
: Giá trị tốc độ di chuyển của thực thể, ở đây là 0.2.
"minecraft:collision_box"
: Xác định hộp va chạm của thực thể."width"
: Chiều rộng của hộp va chạm, ở đây là 1."height"
: Chiều cao của hộp va chạm, ở đây là 2.
"minecraft:loot"
: Xác định đường dẫn đến bảng phần thưởng mà thực thể sẽ thả khi chết."table"
: Đường dẫn đến bảng phần thưởng, ở đây là “loot_tables/entities/heo.json”.
Di chuyển của thực thể
Cách thức di chuyển của thực thể trong không gian 3D
Di chuyển của thực thể trong không gian 3D được xác định bởi các thành phần di chuyển như minecraft:movement
, minecraft:navigation
, và minecraft:physics
. Các thành phần này quyết định cách thức thực thể di chuyển, nhảy, bay, và tương tác với môi trường xung quanh.
Luôn luôn cần có một thành phần movement và navigation nếu bạn muốn thực thể của mình có thể di chuyển.
Định nghĩa :
"minecraft:physics"
: Áp dụng trọng lực và xử lý va chạm cho thực thể của bạn."minecraft:jump.static"
: Cho phép thực thể nhảy qua các khối một cách tĩnh lặng để di chuyển."minecraft:movement.basic"
: Cho phép thực thể của bạn di chuyển bằng cách đi qua các khối cơ bản."minecraft:navigation.walk"
: Xác định cách thực thể đi bộ di chuyển."can_walk"
: Cho biết liệu thực thể có thể đi bộ không."avoid_sun"
: Điều chỉnh liệu thực thể có tránh ánh nắng mặt trời hay không."can_pass_doors"
: Cho biết liệu thực thể có thể đi qua cửa hay không."can_open_doors"
: Cho biết liệu thực thể có thể mở cửa hay không.
Các thành phần này có nhiều cài đặt khác nhau, tạo ra những thành phần đặc sắc. Các thiết lập mà tôi đã chọn cho phép Heo của tôi di chuyển trên mặt đất, tránh ánh sáng mặt trời, vượt qua các cánh cửa và mở cửa.
Ảnh hưởng của di chuyển đến hành vi của thực thể
Cách thức di chuyển của thực thể ảnh hưởng đến hành vi và trải nghiệm chơi game của người chơi. Một thực thể di chuyển linh hoạt và tự tin sẽ tạo ra cảm giác sống động và thú vị. Ngược lại, nếu thực thể di chuyển chậm chạp và không linh hoạt, sẽ làm giảm tính chân thực và hấp dẫn của trò chơi.
Thành phần hành vi thực thể
Trong khi chúng ta đã xác định cách thực thể của chúng ta thực hiện hành động, chúng ta vẫn chưa xác định khi nào hoặc hành động gì sẽ diễn ra. Đây là nơi các thành phần .behavior đến. Các thành phần này xác định các hành động cụ thể mà thực thể của chúng ta sẽ thực hiện.
Các yếu tố ảnh hưởng đến hành vi của thực thể
Hành vi của thực thể phụ thuộc vào nhiều yếu tố, bao gồm components, môi trường xung quanh, và tương tác với các đối tượng khác. Components quyết định các hành vi cơ bản như di chuyển, tấn công, và phản ứng. Môi trường xung quanh ảnh hưởng đến cách thức thực thể tương tác và di chuyển. Tương tác với các đối tượng khác như người chơi và thực thể khác cũng có thể thay đổi hành vi của thực thể.
Ví dụ, những người làng sẽ cố gắng sinh sản nên họ có thành phần minecraft:behavior.breed và các con chó đã được thuần phục sẽ đi theo chủ nhân của họ nên chúng có thành phần minecraft:behavior.follow_owner.
Tôi muốn con Heo của chúng ta có thể đi dạo và nhìn xung quanh, nhắm vào người chơi khi gần và sau đó tấn công họ. Dưới đây là các thành phần mà tôi sử dụng:
Định nghĩa :
"minecraft:behavior.random_stroll"
: Cho phép thực thể chọn một điểm ngẫu nhiên gần đó để di chuyển đến định kỳ."minecraft:behavior.random_look_around"
: Cho phép thực thể nhìn xung quanh một cách ngẫu nhiên."minecraft:behavior.look_at_player"
: Cho phép thực thể nhìn vào người chơi nếu họ ở trong phạm vi."minecraft:behavior.hurt_by_target"
: Khiến thực thể nhắm mục tiêu vào bất kỳ thực thể nào gây tổn thương cho nó."minecraft:behavior.nearest_attackable_target"
: Khiến thực thể nhắm mục tiêu vào bất kỳ kẻ thù gần nhất trong phạm vi của nó."minecraft:behavior.delayed_attack"
: Là cách thực thể thực sự tấn công mục tiêu của nó.
Mỗi hành vi này đều có các cài đặt cụ thể để điều chỉnh hành vi chính xác mà chúng ta mong muốn.
Ở ví dụ trên tôi sẽ định nghĩa ở trong phần code.
Trong mỗi hành vi đều chứa một trường “priority” (ưu tiên). Trường này được sử dụng để quyết định hành vi nào sẽ được thực hiện khi có nhiều hành vi có thể thực hiện cùng lúc.
Khi thực thể đang chọn hành động để thực hiện, nó sẽ tìm kiếm tất cả các hành vi từ ưu tiên thấp nhất đến cao nhất và chọn ra hành vi đầu tiên mà nó có thể thực hiện được. Vì lý do này, bạn cần đặt các hành vi quan trọng như minecraft:behavior.nearest_attackable_target có ưu tiên thấp hơn so với các hành vi như minecraft:behavior.look_at_player. Nếu hành vi look_at_player có ưu tiên thấp hơn, nó sẽ luôn được thực hiện đầu tiên khi người chơi ở gần, và thực thể sẽ không bao giờ tấn công.
Nói chung, các hành vi quan trọng sẽ có ưu tiên là 0 hoặc 1.
Toàn bộ hành vi sau khi đã thực hiện
Quá trình kiểm tra và đánh giá hành vi của thực thể
Sau khi đã thiết lập và điều chỉnh các hành vi và components cho thực thể, quá trình kiểm tra và đánh giá là bước quan trọng để đảm bảo tính chính xác và hiệu suất của hành vi. Kiểm tra bao gồm việc thử nghiệm các tình huống khác nhau, kiểm tra phản ứng của thực thể đối với các tác nhân khác nhau, và đánh giá khả năng hoạt động theo mục tiêu.
Với đó, chúng ta đã hoàn thành tập tin hành vi của thực thể.
Các thực thể có thể có các trạng thái khác nhau, khiến chúng hành xử khác nhau tùy thuộc vào trạng thái hiện tại của chúng. Ví dụ, một con sói hoang sẽ di chuyển tự do, nhưng sau khi được thuần hóa, nó sẽ theo sau người chơi. Các sự kiện như việc thuần hóa kích hoạt các thay đổi trạng thái, cho phép hành vi linh hoạt. Tính năng này cho phép tạo ra các thực thể đa dạng có khả năng thích ứng với các sự kiện khác nhau.
Khi triệu hồi thực thể của bạn bằng /summon myname:heogaming, nó sẽ hoạt động như mong đợi, tuy nhiên chỉ có một bóng trên mặt đất, và tên của nó có thể hiển thị dưới dạng khóa dịch.
Tiếp theo, chúng ta sẽ tìm hiểu cách tạo tập tin tài nguyên hoặc tập tin khách hàng và cách gán các hình ảnh, hình học và hoạt ảnh.
Tài nguyên của thực thể
Xác định các tài nguyên cần thiết cho thực thể
Tài nguyên của thực thể bao gồm mô hình, texture, hoạt cảnh, âm thanh, và các tài liệu hướng dẫn. Xác định các tài nguyên cần thiết giúp đảm bảo rằng thực thể hoạt động đúng cách và có hình ảnh, âm thanh hấp dẫn.
Quản lý và tối ưu hóa việc sử dụng tài nguyên
Quản lý và tối ưu hóa việc sử dụng tài nguyên giúp giảm thiểu tải trọng cho game và tăng hiệu suất cho thực thể. Sử dụng các công cụ quản lý tài nguyên, tối ưu hóa texture và mô hình, và kiểm tra định kỳ để đảm bảo rằng tài nguyên được sử dụng một cách hiệu quả.
Để thêm hình ảnh vào một thực thể, quá trình này khác hoàn toàn so với việc thêm hình ảnh cho một vật phẩm. Vì có nhiều thành phần hơn, chúng ta cần một tập tin riêng để xác định tài nguyên. Tập tin này được gọi là tập tin khách hàng thực thể và được đặt tên là heo.ce.json. Các tập tin này được đặt trong thư mục RP/entity/.
Trong phần này, chúng ta sẽ sử dụng các tài nguyên mẫu đã được tạo ra cho thực thể Heo để minh họa cách thêm chúng vào một thực thể. Trong phần tiếp theo của hướng dẫn, chúng ta sẽ giải thích cách sử dụng Blockbench, một công cụ chỉnh sửa 3D chuyên dụng, để tạo hình dạng và hoạt ảnh cho thực thể của bạn.
Mô hình (Blockbench)
Giới thiệu về Blockbench và vai trò trong tạo và quản lý thực thể
Blockbench là một công cụ mạnh mẽ cho việc tạo mô hình 3D cho Minecraft. Với giao diện dễ sử dụng và nhiều tính năng linh hoạt, Blockbench giúp người dùng thiết kế và chỉnh sửa mô hình một cách dễ dàng.
Cách sử dụng Blockbench để tạo mô hình cho thực thể
Để tạo mô hình cho thực thể trong Minecraft, bạn có thể sử dụng Blockbench để vẽ và chỉnh sửa các khối, kết cấu, và hoạt cảnh của thực thể. Bằng cách thêm các khối và kết cấu, bạn có thể tạo ra một mô hình 3D độc đáo và đẹp mắt cho thực thể.
Mô hình cho thực thể của chúng ta chính là hình dạng của nó, còn được gọi là ‘geometry‘. Điều này mô tả cách thực thể của chúng ta có dạng như thế nào, giống như cách một con lợn có hình hộp với 4 chân và một cái đầu trong khi một con gà có 2 chân, một cái đầu và đôi cánh. Hình học này được lưu trữ dưới dạng một tập tin JSON trong thư mục RP/models/entity/ và của chúng ta sẽ được đặt tên là heo.geo.json.
Tập tin này được tự động tạo ra bởi Blockbench cho chúng ta, vì vậy không cần phải học cú pháp của nó bằng tay. Vì vậy, chúng ta sẽ không đi vào chi tiết đầy đủ khi xem xét tập tin này. Nó lưu trữ dữ liệu về mỗi khối trong mô hình của chúng ta, như kích thước, vị trí và xoay.
Thông tin quan trọng mà chúng ta cần là định danh mà chúng ta sẽ sử dụng để tham chiếu đến tập tin hình học của chúng ta, ở đây là geometry.heo.
Kết cấu Texture
Ý nghĩa của kết cấu texture đối với thực thể
Kết cấu texture là bề mặt ngoài của thực thể, xác định hình dạng, màu sắc, và chi tiết của thực thể. Texture giúp tạo ra cảm giác thực tế và đồng nhất cho thực thể trong trò chơi.
Cách thiết lập và tùy chỉnh kết cấu texture cho thực thể
Để thiết lập và tùy chỉnh kết cấu texture cho thực thể, bạn cần sử dụng các công cụ chỉnh sửa hình ảnh như Photoshop, GIMP, Paint.net. Bạn có thể tạo ra các texture mới, chỉnh sửa màu sắc, ánh sáng, và chi tiết để tạo ra hình ảnh đẹp mắt và chân thực cho thực thể.
Thực thể của chúng ta hiện đã có hình dạng, nhưng nó cũng cần một bản vẽ texture. Texture này cũng có thể được tạo trong Blockbench và chỉ là một tập tin .png đơn giản.
Bạn có thể nhớ, khi chúng ta tạo vật phẩm, chúng ta đã gán một tên ngắn cho texture của chúng ta để tham chiếu sau này. Chúng ta sẽ làm một điều tương tự cho thực thể của chúng ta trong tập tin thực thể, vì vậy hãy đảm bảo bạn giữ lại đường dẫn tập tin đến texture.
Chuyển động Animations
Các loại chuyển động animations phổ biến
Chuyển động animations là các hoạt cảnh động được gán cho mô hình của thực thể, giúp thực thể di chuyển, tấn công, và phản ứng một cách linh hoạt. Các loại chuyển động phổ biến bao gồm di chuyển, nhảy, tấn công, và biểu cảm.
Cách tạo và áp dụng chuyển động animations cho thực thể
Để tạo và áp dụng chuyển động animations cho thực thể, bạn có thể sử dụng các công cụ như Blockbench, Blender, hay Maya. Tạo ra các keyframe, chỉnh sửa động tác, và thiết lập chu kỳ chuyển động để tạo ra hoạt cảnh sinh động và phù hợp với hành vi của thực thể.
Hoạt ảnh cho phép thực thể của chúng ta trở nên sống động hơn và di chuyển theo các cách khác nhau. Chúng ta có thể có bất kỳ số lượng hoạt ảnh nào cho một thực thể và cũng có thể kích hoạt chúng vào các thời điểm khác nhau bằng cách sử dụng một bộ điều khiển hoạt ảnh, mà chúng ta sẽ tìm hiểu ở phần tiếp theo.
Tùy thuộc vào thực thể của bạn, bạn có thể muốn có các hoạt ảnh khác nhau. Đối với Heo của chúng ta, chúng ta sẽ có các hoạt ảnh đứng yên (idle), tấn công và di chuyển. Những tập tin này cũng được tạo tự động trong Blockbench, vì vậy chúng ta sẽ không đi vào chi tiết đầy đủ về chúng.
Một tập tin hoạt ảnh có thể chứa một hoặc nhiều hoạt ảnh bên trong. Các hoạt ảnh của chúng ta sẽ được lưu trong một tập tin duy nhất có tên là heo.a.json trong thư mục RP/animations/.
Định nghĩa :
"format_version": "1.8.0"
– Đây là phiên bản định dạng của tập tin, cho biết cách dữ liệu được cấu trúc và đọc."animations": { }
– Đây là phần chứa tất cả các định nghĩa hoạt ảnh."animation.heo.idle": { }
– Định nghĩa hoạt ảnh cho trạng thái đứng yên của con heo. Điều này bao gồm các thông tin về cách thực hiện hoạt ảnh."animation.heo.attack": { }
– Định nghĩa hoạt ảnh cho trạng thái tấn công của con heo. Bao gồm các thông tin về cách thực hiện hoạt ảnh này."animation.heo.move": { }
– Định nghĩa hoạt ảnh cho trạng thái di chuyển của con heo. Bao gồm các thông tin về cách thực hiện hoạt ảnh này.
Đoạn mã đầy đủ :
Trình điều khuyển Animation Controller
Vai trò của Animation Controller trong quản lý chuyển động của thực thể
Animation Controller là công cụ quản lý chuyển động của thực thể, xác định cách thức thực thể phản ứng với các sự kiện và tương tác khác nhau. Controller quản lý việc chuyển đổi giữa các chuyển động animations và điều chỉnh tốc độ, hướng, và độ phức tạp của chuyển động.
Cách tạo và điều chỉnh Animation Controller cho thực thể
Để tạo và điều chỉnh Animation Controller cho thực thể, bạn cần xác định các trạng thái và sự kiện mà thực thể sẽ phản ứng. Tạo các transition giữa các trạng thái, thiết lập trigger và điều kiện kích hoạt để đảm bảo rằng chuyển động của thực thể diễn ra một cách mượt mà và hấp dẫn.
Bộ điều khiển hoạt ảnh giúp thực thể của chúng ta phát các hoạt ảnh vào thời điểm phù hợp. Bằng cách này, chúng ta có thể kiểm soát cách hoạt ảnh được hiển thị. Mỗi bộ điều khiển này bao gồm các trạng thái và chuyển đổi giữa chúng, cho phép chúng ta chỉ định hoạt ảnh cụ thể cho mỗi trạng thái và chuyển đổi giữa chúng khi thực thể đáp ứng các điều kiện nhất định.
Ví dụ, khi một thực thể đang di chuyển, chúng ta chuyển sang trạng thái di chuyển để phát hoạt ảnh di chuyển. Hoặc khi một thực thể đang tấn công, chúng ta chuyển sang trạng thái tấn công để phát hoạt ảnh tấn công.
Hãy xem xét bộ điều khiển hoạt ảnh của chúng ta cho việc tấn công.
Bạn có thể thấy chúng ta có hai trạng thái, mặc định (default) và tấn công (attacking). Thực thể của chúng ta bắt đầu ở trạng thái mặc định.
Dưới phần chuyển đổi, bạn có thể thấy chúng ta có một điều kiện, khi điều kiện này đúng sẽ chuyển thực thể sang một trạng thái khác.
Ở đây, trạng thái “tấn công” (attacking) là trạng thái mà sẽ được chuyển sang, và q.is_delayed_attacking là điều kiện cần phải đúng để chuyển trạng thái xảy ra. Điều kiện này được gọi là một truy vấn (query). Các truy vấn này có thể cho chúng ta biết về các thuộc tính của thực thể như nếu nó đang tấn công hoặc di chuyển. Truy vấn q.is_delayed_attacking sẽ trả về true khi thực thể đang thực hiện hành vi tấn công.
Khi thực thể ở trong trạng thái “attacking“, cũng có một chuyển tiếp trở lại trạng thái mặc định. Bây giờ điều kiện là !q.is_delayed_attacking. Ở đây, dấu ! có nghĩa là không, vì vậy nó sẽ trả về kết quả ngược lại so với q.is_delayed_attacking (Nếu q.is_delayed_attacking trả về true thì !q.is_delayed_attacking sẽ trả về false).
Trạng thái này cũng có các hoạt ảnh. Đây là các hoạt ảnh sẽ luôn phát khi ở trong trạng thái này. Lưu ý rằng tôi đang sử dụng tên ngắn cho hoạt ảnh của tôi ở đây, mà tôi sẽ tham chiếu trong tập tin thực thể của tôi sau này. Nếu không, các hoạt ảnh sẽ không được phát. Còn có khóa blend_transition, cho phép các hoạt ảnh chuyển đổi dần dần vào nhau. Một số lớn hơn có nghĩa là thời gian chuyển đổi mượt mà hơn.
Chúng ta cũng có thể tạo một bộ điều khiển tương tự cho hoạt ảnh di chuyển và đứng yên của chúng ta.
Điều này tuân theo một mẫu tương tự với một số bổ sung. Bây giờ chúng ta có initial_state mà nói cho bộ điều khiển biết trạng thái nào để bắt đầu. Nếu không có trạng thái nào được liệt kê thì nó sẽ bắt đầu ở trạng thái mặc định. Bạn cũng sẽ nhận thấy các truy vấn của chúng ta nhìn có vẻ khác biệt một chút. Ở đây, truy vấn q.modified_move_speed trả về một giá trị, vì vậy để trả về một boolean (tức là true hoặc false) chúng ta xem khi nào giá trị lớn hơn hoặc nhỏ hơn 0.1.
Bây giờ khi chúng ta đã có các bộ điều khiển hoạt ảnh của mình, chúng ta có thể thêm chúng vào tập tin bộ điều khiển hoạt ảnh của chúng ta. Tương tự như hoạt ảnh, khóa là định danh cho bộ điều khiển hoạt ảnh của chúng ta; controller.animation.heo.attack và controller.animation.heo.walk.
Tập tin của chúng ta sẽ được gọi là heo.ac.json và sẽ được đặt trong RP/animation_controllers/.
Sau khi hoàn thành tất cả các tài nguyên cần thiết cho thực thể của chúng ta, bây giờ là lúc tạo tập tin thực thể của chúng ta.
Tạo thư mục Entity Client File
Bước đầu tiên để tạo thư mục Entity Client File
Để tạo thư mục Entity Client File, bạn cần định nghĩa và tổ chức các file cần thiết cho thực thể. Mỗi file đóng vai trò quan trọng trong việc xác định hành vi, mô hình, hoạt cảnh, và texture của thực thể.
Cách tổ chức và quản lý các file trong thư mục Entity Client
Trong thư mục Entity Client, bạn cần tổ chức các file một cách logic và dễ quản lý. Sắp xếp các file theo chức năng và mục đích, đặt tên rõ ràng và dễ nhớ để dễ dàng tìm kiếm và chỉnh sửa khi cần thiết.
Trong tập tin khách, chúng ta sẽ chứa tất cả các tham chiếu đến các thành phần hình ảnh của thực thể. Tập tin này sẽ được đặt trong thư mục RP/entity/ và mang tên heo.ce.json. Dưới đây là cấu trúc cơ bản của tập tin này:
Chúng ta sử dụng cùng một định danh như trong tập tin hành vi của chúng ta để chỉ định đúng thực thể.
Để bắt đầu, chúng ta cần xác định hình ảnh của thực thể trong tập tin của chúng ta để biết chúng ta đang sử dụng các mô hình và hình ảnh nào. Chúng ta cũng cần làm điều tương tự cho các hoạt ảnh và bộ điều khiển hoạt ảnh của chúng ta.
Bộ điều khiển kết xuất
Định nghĩa và vai trò của bộ điều khiển kết xuất
Bộ điều khiển kết xuất là công cụ giúp hiển thị thực thể trong trò chơi, xác định cách thức thực thể được kết xuất và hiển thị trên màn hình. Bộ điều khiển quản lý texture, mô hình, và chuyển động của thực thể, đảm bảo rằng thực thể hiển thị một cách chân thực và hấp dẫn.
Cách sử dụng bộ điều khiển kết xuất để hiển thị thực thể
Để sử dụng bộ điều khiển kết xuất, bạn cần thiết lập và cấu hình các thông số cần thiết cho thực thể, bao gồm mô hình, texture, và chuyển động. Thiết lập các shader, lighting, và camera để tạo ra một hiển thị chất lượng và sống động cho thực thể.
Vì Heo của chúng ta có một số độ trong suốt, chúng ta cần một vật liệu sẽ hiển thị đúng điều này. May mắn thay, Minecraft có nhiều vật liệu được xây sẵn cho chúng ta để sử dụng như entity_alphatest sẽ cho phép chúng ta làm điều này. Bạn cũng có thể tạo vật liệu của riêng mình nhưng hãy cảnh báo rằng điều này rất phức tạp.
Để sử dụng các tài nguyên này, chúng ta cần xác định một tham chiếu đến chúng với một tên ngắn. Điều này tương tự như cách chúng ta làm cho các vật phẩm trong tập tin item_texture.json, trừ việc ở đây chúng ta làm điều này trong tập tin khách của thực thể. Dưới đây là cách bố cục.
Đối với mỗi danh mục, tôi đã chỉ định tên viết tắt “default” cho tài nguyên của tôi, đảm bảo sử dụng đúng đường dẫn và định danh. Mặc dù tôi có thể xác định nhiều trong số này, nhưng đó là một kỹ thuật phức tạp hơn. Bây giờ, chúng ta có thể sử dụng những tên viết tắt này để tham chiếu đến tài nguyên của chúng ta.
Để hiển thị các tài nguyên này, chúng ta cần chỉ cho trò chơi biết tài nguyên nào được sử dụng để hiển thị chúng. Điều này được điều khiển bằng một bộ điều khiển hiển thị. Bộ điều khiển cho biết cho trò chơi sử dụng hình học, vật liệu và texture nào cho thực thể, cho phép chúng ta nhìn thấy nó trong trò chơi.
Bộ điều khiển hiển thị được xác định trong một tệp riêng và sử dụng các tên viết tắt mà tôi đã thiết lập trong tệp thực thể của tôi. Tệp này được đặt tên là heo.rc.json và nằm trong RP/render_controllers/.
Cấu trúc này tương tự như bộ điều khiển hoạt ảnh và tệp hoạt ảnh, với định danh của bộ điều khiển hiển thị của tôi là controller.render.heo. Điều này cho biết cho trò chơi rằng tài nguyên được hiển thị sẽ là tài nguyên có tên viết tắt “default“. Bộ điều khiển hiển thị cũng cho phép tôi hiển thị các texture khác nhau hoặc áp dụng các vật liệu khác nhau cho các phần khác nhau của mô hình của tôi. Dưới phần vật liệu, tôi sử dụng dấu “*” để chỉ rằng tôi áp dụng vật liệu này cho tất cả các xương trong mô hình của tôi (tức là mỗi khối trong mô hình của tôi.)
Bây giờ để yêu cầu thực thể của bạn sử dụng bộ điều khiển kết xuất này, chúng ta thêm nó vào tệp thực thể của chúng ta như sau:
Sau khi thêm thành công tệp của chúng ta sẽ như này :
Scripts
Ý nghĩa và cách sử dụng scripts trong quản lý thực thể
Scripts là các đoạn mã lập trình được sử dụng để xác định hành vi và chức năng của thực thể trong trò chơi. Scripts giúp tạo ra các hành vi phức tạp và linh hoạt cho thực thể, bao gồm các tương tác, di chuyển, và phản ứng.
Bây giờ, hãy thêm các hoạt ảnh cho thực thể của chúng ta. Tương tự như với các tài nguyên khác, chúng ta cần xác định tên ngắn cho chúng. Hãy nhớ rằng, chúng ta cũng cần xác định tên ngắn cho bộ điều khiển hoạt ảnh của chúng ta.
Bạn sẽ nhớ rằng, đây là các tên ngắn mà tôi đã sử dụng trong bộ điều khiển hoạt ảnh của mình; Bất kỳ hoạt ảnh nào mà chúng tôi muốn sử dụng trong bộ điều khiển hoạt ảnh, phải được xác định bằng tên ngắn trong tệp khách của thực thể.
Bây giờ sau khi chúng ta đã có animation và bộ điều khiển hoạt ảnh được tham chiếu, chúng ta cần quyết định khi nào thực thể sẽ chạy chúng. Điều này được thực hiện thông qua các .scripts
.
Tại đây, thực thể được yêu cầu thực hiện một số hành động cụ thể tại các thời điểm cụ thể. Khóa sẽ kích hoạt bất kỳ hoạt ảnh hoặc bộ điều khiển nào được tham chiếu mỗi khi có sự đánh dấu. Điều này có nghĩa là mỗi lần đánh dấu trong bộ điều khiển hoạt ảnh của chúng ta sẽ kiểm tra xem liệu nên chuyển sang trạng thái mới hay không và thực hiện bất kỳ hoạt ảnh nào đang ở trong trạng thái hiện tại của chúng.scripts animate
Với điều này, hình ảnh động của chúng tôi sẽ hoạt động như mong đợi.
Sinh sản spawn
Định nghĩa và cách thực hiện sinh sản spawn cho thực thể
Sinh sản spawn là quá trình tạo ra các bản sao hoặc phiên bản mới của thực thể trong trò chơi. Quá trình này thường được điều chỉnh và kiểm soát bằng scripts và components để đảm bảo rằng số lượng thực thể không quá nhiều hoặc quá ít.
Ảnh hưởng của sinh sản spawn đến số lượng thực thể trong trò chơi
Sinh sản spawn ảnh hưởng đến số lượng thực thể trong trò chơi. Nếu quá nhiều thực thể được sinh sản, có thể gây lag và giảm hiệu suất của trò chơi. Ngược lại, nếu quá ít thực thể, trò chơi có thể trở nên nhàm chán và thiếu đa dạng.
Bước cuối cùng để hoàn thiện tệp khách thực thể của chúng ta, là tạo một quả trứng sinh sản cho thực thể của chúng ta. May mắn thay, tệp của chúng tôi có thể tạo một tệp với khóa .spawn_egg
Điều này sẽ tạo ra một quả trứng triệu hồi sinh vật của chúng ta khi sử dụng. Nó sẽ sử dụng mã hex trong base_color và overlay_color để tô màu cho quả trứng. Nếu bạn muốn một biểu tượng tùy chỉnh cho quả trứng triệu hồi của mình, thay vào đó hãy sử dụng khóa texture và đặt tên viết tắt cho texture bạn muốn.
Đoạn mã sau khi hoàn chỉnh :
Đặt tên cho thực thể
Tầm quan trọng của việc đặt tên cho thực thể
Việc đặt tên cho thực thể là một phần quan trọng trong quá trình phát triển trò chơi. Một cái tên hay và phản ánh đúng bản chất của thực thể không chỉ giúp người chơi dễ nhớ mà còn tạo nên sự liên kết giữa người chơi và thực thể đó. Tên thực thể cũng nên được chọn sao cho phù hợp với bối cảnh, thế giới, và mục đích của trò chơi.
Cách chọn và đặt tên phù hợp cho thực thể
Bước cuối cùng là thêm tên của thực thể vào các tệp ngôn ngữ. Bạn có thể đã nhận thấy rằng nếu bạn tạo một quả trứng sinh sản, nó cũng có một khóa dịch cho tên; chúng ta cũng cần thêm điều này. Trong tệp en_US.lang, đảm bảo bạn thêm tên cho cả thực thể và mục quả trứng sinh sản của thực thể.
Tổng quan
Những gì đã hoàn thành :
Một số lưu ý
Đảm bảo tính nhất quán giữa hành vi và components của thực thể
Một điều quan trọng khi phát triển thực thể trong trò chơi là đảm bảo tính nhất quán giữa hành vi và components của thực thể. Hành vi của thực thể nên phản ánh đúng các components đã thiết lập, và ngược lại, components cũng nên hỗ trợ và tương thích với hành vi của thực thể.
Luôn kiểm tra và cập nhật tài nguyên cho thực thể đều đặn
Để đảm bảo thực thể luôn hoạt động ổn định và chất lượng, bạn cần kiểm tra và cập nhật tài nguyên cho thực thể đều đặn. Bao gồm việc kiểm tra texture, mô hình, animations, scripts, và các file liên quan khác để đảm bảo rằng thực thể hoạt động một cách mượt mà và chân thực.
Thực hiện sao lưu định kỳ để tránh mất dữ liệu không mong muốn
Để bảo vệ công sức và dữ liệu đã đầu tư vào việc phát triển thực thể, việc thực hiện sao lưu định kỳ là rất quan trọng. Sao lưu dữ liệu thường xuyên giúp tránh mất mát thông tin do lỗi hệ thống, virus, hoặc sự cố khác, đồng thời giúp phục hồi dễ dàng khi có sự cố xảy ra.
Tải liệu tham khảo
Có rất nhiều tài liệu hướng dẫn trên google ở đây tôi sẽ gợi ý cho bạn thêm một số tài liệu để bạn có thể tham khảo thêm.
- bedrock.dev: Tài liệu tham khảo.
- wiki.bedrock.dev: Hướng dẫn và hướng dẫn.
- MS Docs: Cổng thông tin chính thức của microsoft creator cho addon.
Kết luận
Trong quá trình phát triển thực thể trong trò chơi, việc hiểu rõ về hành vi, components, di chuyển, và các yếu tố khác cần thiết là rất quan trọng. Bằng cách tập trung vào các phần này, bạn có thể tạo ra những thực thể sống động, linh hoạt, và phản ánh đúng bản chất của trò chơi. Hy vọng qua bài viết này, bạn đã có thêm kiến thức và kỹ năng để phát triển thực thể trong trò chơi một cách chuyên nghiệp và hiệu quả.
Anh có thể chỉ em làm mod rồng có thể cưỡi và bay đc ko ạ
Phải học từ cơ bản đi lên bạn ạ. Cứ học dần dần sẽ làm đực nhé
Anh có thể chỉ em làm mod đc ko
Học dần theo hướng dẫn trên web nha
Thêm cái gì đó tôi ko b tiếng anh nhìu nhưng bù lại nó hoạt động