Nguyên thủy và Logic

Bài viết này chủ yếu giới thiệu các khái niệm liên quan đến trình soạn thảo nguyên thủy và các thành phần nguyên thủy trong CraftLand.

Tổng quan về Metablocks

Khi chỉnh sửa đồ họa, chúng ta cần quan sát hình dạng của từng khối đồ họa. Điều chúng ta cần làm là ghép các khối này lại với nhau theo các quy tắc cố định.

Các thao tác cơ bản

Trước khi vào trình soạn thảo nguyên thủy, trước tiên chúng ta phải mở một tập lệnh. Mở CraftLand, nhấp vào [Thêm] ở góc trên bên trái, sau đó nhấp vào [Khối tập lệnh]. Khi vào trình soạn thảo nguyên thủy, chúng ta sẽ mở ‘tập lệnh toàn cục’ theo mặc định.
image-20241031110011453

Giới thiệu giao diện

Sau khi vào trình chỉnh sửa phần tử, có 4 khu vực trong giao diện trình chỉnh sửa đáng chú ý, như thể hiện trong hình bên dưới. SeaTalk_IMG_20241031_113903

Số sê-ri Hình ảnh Mô tả
1 image-20241031114641450 Ở góc trên bên trái của giao diện là hộp tìm kiếm. Vì có nhiều khối nguyên thủy nên chúng ta có thể lấy các khối nguyên thủy mình muốn bằng cách nhập từ khóa vào hộp tìm kiếm.
2 image-20241031114811375 Ở góc trên bên phải của giao diện là danh sách lựa chọn tập lệnh. Nhấp vào biểu tượng bên phải để hiển thị tùy chọn thả xuống, hiển thị các tập lệnh hiện có. Các tập lệnh toàn cục được tạo theo mặc định.
3 image-20241031173408111 Chúng tôi chia các nguyên mẫu thành 6 loại. Chúng tôi có thể nhấp vào biểu tượng loại để mở rộng danh sách khối nguyên mẫu.
4 image-20241031114830172 Biểu tượng bên trái là nút hoàn tác, có thể hoàn tác thao tác cuối cùng. Biểu tượng bên phải là nút làm lại, có thể làm lại thao tác cuối cùng đã hoàn tác.

Đặt các nguyên hàm

1. Kéo khối ra: Sau khi hiểu giao diện, trước tiên chúng ta mở danh mục đầu tiên ở góc dưới bên trái, chọn một khối nguyên thủy từ đó và kéo nó đến khoảng trống làm điểm bắt đầu cho logic của chúng taimage-20241031171419878

2. Kết nối các khối: Chúng ta chọn một khối có phần lõm ở trên cùng từ danh sách khối. Chúng ta sẽ thấy rằng khi kéo khối xuống dưới cùng của khối bắt đầu, sẽ có một lời nhắc UI màu vàng ở phần nhô lên bên dưới khối bắt đầu. Khi thả ngón tay ra, chúng ta sẽ thấy rằng hai khối sẽ tự động được hấp thụ vào nhau. Vậy là chúng ta đã hoàn thành một logic đơn giản. image-20241031171627914

3. Điền dữ liệu: Đầu tiên, chúng ta kéo dữ liệu ra trong khối nguyên thủy hoặc kéo kiểu dữ liệu thích hợp ra trong danh sách nguyên thủy.

image-20241031174335831

Sau đó kéo khối dữ liệu vào không gian dữ liệu tương ứng. Một hộp nhắc giao diện người dùng màu vàng sẽ xuất hiện trong không gian dữ liệu, cho biết loại khối hiện tại có thể được đặt. Khi bạn thả ngón tay ra, khối dữ liệu sẽ tự động được hấp thụ vào không gian. image-20241031175503431

Lưu ý: Khi kiểu dữ liệu được điền không nhất quán với kiểu dữ liệu trong khoảng trống, trình soạn thảo sẽ có lời nhắc rõ ràng và tự động bật lên khối dữ liệu không khớp với kiểu.

image-20241031183111256

4. Tháo rời các khối Khi chúng ta di chuyển một trong nhiều khối đồ họa được kết nối với nhau, tất cả các khối được kết nối bên dưới nó sẽ bị tháo rời cùng nhau.

image-20241031182555866

5. Xóa khối: Khi bạn nhấn và giữ bất kỳ khối đồ họa nào, một ‘thùng rác’ sẽ xuất hiện ở phía bên phải của giao diện. Chúng ta có thể xóa khối đồ họa bằng cách di chuyển nó vào thùng rác.

image-20241031182311721

Tất nhiên, chúng ta cũng có thể kéo nhiều khối vào ‘thùng rác’ để xóa nhiều khối cùng một lúc.

image-20241031183322347

Hình dạng

Mô tả khối Biểu tượng
Chỉ có khối nổi bên dưới là điểm bắt đầu của logic. image-20241030185836296
Khối chỉ có phần trên chìm thường là điểm cuối của logic. image-20241030185844004
Nếu không có phần lõm ở trên cùng và không có phần nhô ra ở dưới cùng, điều đó có nghĩa là khối này là một phần dữ liệu, có thể được áp dụng cho các khối khác như một tham số trong một số phép toán logic. image-20241030185856813
Nếu một khối có cả đỉnh nhô lên và đáy lõm, điều đó có nghĩa là khối đó có thể được liên kết với các khối khác có đáy nhô lên và cũng có thể được liên kết với nhiều khối bên dưới nó. Nó có thể là một nút của logic. image-20241031101239718
Trong phân loại khối, chúng ta sẽ tìm thấy một khối có hình dạng đặc biệt. Khối đặc biệt này là một biểu thức điều kiện, được chia thành các vùng lồi và lõm ngoài và các vùng lồi và lõm trong. Chúng ta có thể kết nối các khối khác một cách bình thường trên các vùng lồi và lõm ngoài của khối biểu thức điều kiện giống như kết nối các khối khác hoặc chúng ta có thể liên kết các khối bên trong biểu thức điều kiện và logic được viết bên trong nó cần đáp ứng một logic điều kiện nhất định trước khi có thể tính toán được. image-20241031101800841

Phân loại

Để tìm các khối cần thiết hiệu quả hơn trong trình soạn thảo nguyên thủy, chúng tôi chia các khối thành 7 loại.

Như thể hiện trong hình sau:

Loại Sơ đồ Tổng quan
Sự cố SeaTalk_IMG_20241030_143100 Loại sự kiện: Nói chung, khi là thời điểm bắt đầu logic, khi chúng ta viết logic nguyên thủy, trước tiên chúng ta cần làm rõ thời điểm chúng ta muốn logic này được kích hoạt. Ví dụ, khi người chơi được hồi sinh, chúng ta muốn đưa cho họ một khẩu súng hoặc khi vòng đấu bắt đầu, chúng ta muốn đặt một hộp tiếp tế thả từ trên không ở giữa bản đồ, thì ‘Khi người chơi được hồi sinh’ và ‘Khi vòng đấu bắt đầu’ là các nút thời gian cần thiết cho logic này.
Thực thể SeaTalk_IMG_20241030_143101 Kiểu thực thể: là một khái niệm quan trọng trong CraftLand (xem ‘Các khái niệm quan trọng’ để biết chi tiết). Trong quá trình chỉnh sửa nguyên thủy, chúng ta thường gọi hoặc thay đổi các thuộc tính của một thực thể.
Game SeaTalk_IMG_20241030_143105 Loại trò chơi: Trong loại trò chơi, chúng tôi cung cấp nhiều chức năng thường dùng cho người tạo CL. Những chức năng này thường là các thiết lập thường cần điều chỉnh trong một số trò chơi. Những chức năng này cũng rất liên quan đến lối chơi, chẳng hạn như tạo quái vật, thay đổi skybox hoặc tham gia kênh thoại.
Dữ liệu SeaTalk_IMG_20241030_143106 Kiểu dữ liệu: Khối dữ liệu có thể là các tham số bắt buộc cho hầu hết các hoạt động logic. Nó có thể là một phần dữ liệu được sử dụng trong các khối khác hoặc một phần hoạt động để tính toán giá trị.
Logic SeaTalk_IMG_20241030_143109 Kiểu logic: Trong kiểu logic, chúng tôi cung cấp nhiều phép toán logic phức tạp. Kiểu phép toán logic này thường được sử dụng khi xử lý dữ liệu. Nó có thể lọc, đánh giá hoặc đưa ra quyết định dựa trên các điều kiện cụ thể. Ví dụ, xác định xem một số có lớn hơn một số khác không, sau đó quyết định thực hiện các hành động khác nhau.
Biến SeaTalk_IMG_20241030_143111 Kiểu biến: Trong kiểu biến, chúng ta có thể tự tạo biến. Các biến được tạo theo cách này là biến tập lệnh, được sử dụng để xử lý dữ liệu tập lệnh hiện tại. Trong các tập lệnh khác, các biến có thể được lấy và đặt bằng tham chiếu bên ngoài.
Chức năng SeaTalk_IMG_20241030_143113 Loại chức năng: Trong loại chức năng, bạn có thể tạo các sự kiện tùy chỉnh. Các sự kiện tùy chỉnh mà chúng ta tạo ra có thể đóng gói một phần logic, giúp logic rõ ràng hơn, dễ hiểu và dễ bảo trì hơn.

Mô tả khối phần tử logic

Danh từ khối Sơ đồ Mô tả
Câu lệnh điều kiện (câu lệnh if) image-20241104111959461 Nếu điều kiện được đáp ứng, nút bên dưới IF sẽ được thực thi.
Câu lệnh điều kiện…else(if…câu lệnh else) image-20241104112010284 Nếu điều kiện được đáp ứng, nút trong IF sẽ được thực thi. Nếu điều kiện không được đáp ứng, nút trong ELSE sẽ được thực thi.
Vòng lặp có điều kiện (câu lệnh while) image-20241104112023063 Miễn là điều kiện được đáp ứng, các nút bên dưới sẽ chạy trong một vòng lặp.
Vòng lặp số nguyên (đối với câu lệnh chỉ mục) image-20241104112033968 Tham số i bắt đầu từ giá trị tối thiểu và mỗi lần chạy nút thấp hơn, i sẽ tăng giá trị bước cho đến khi i lớn hơn hoặc bằng giá trị tối đa.
Lặp lại mọi phần tử (cho mỗi câu lệnh) image-20241104112043683 Đối với mỗi KEY trong danh sách tham số/từ điển, hãy thực thi nút bên dưới một lần.
Kiểm tra giá trị null image-20241104112050652 Kiểm tra xem đó có phải là giá trị null không và xử lý giá trị null một cách thích hợp để tránh lỗi.
Tiếp tục đến phần tiếp theo image-20241104112056253 Bỏ qua vòng lặp này và nhập vòng lặp tiếp theo của thân vòng lặp.
Phá vỡ vòng lặp image-20241104112103316 Phá vỡ vòng lặp và tiếp tục thực thi nút sau thân vòng lặp.

ECA là gì?

Trong bối cảnh mã, ECA (Sự kiện-Điều kiện-Hành động) thường đề cập đến phương pháp biểu diễn quy tắc.

I. Thành phần

  1. Sự kiện
  • Một tình huống hoặc sự kiện cụ thể kích hoạt việc thực hiện một quy tắc. Ví dụ, một người chơi vào trò chơi, một người chơi giết người hoặc một người chơi rời khỏi trò chơi.

Ví dụ: Người chơi đã gây ra một vụ giết người và sau khi kích hoạt sự kiện này, người chơi nhận được 100 đồng vàng

SeaTalk_IMG_20241101_114133

  1. Điều kiện
  • Một biểu thức logic xác định có nên thực hiện các hành động tiếp theo sau khi một sự kiện xảy ra hay không. Hành động tương ứng sẽ chỉ được thực hiện nếu điều kiện là đúng. Ví dụ, nếu số lượng thây ma ít hơn 10, hãy tạo ra một thây ma, nếu số lượng người chơi bằng 1, hãy lấy một khẩu súng Gatling hoặc nếu tọa độ của người chơi bằng một giá trị nhất định, hãy dịch chuyển người chơi đến một tọa độ khác.

Ví dụ: Khi một người chơi tham gia trò chơi và bật micrô, tên của người đó sẽ trở thành 'Tôi có micrô’SeaTalk_IMG_20241101_143623

  1. Hành động
  • Nếu sự kiện xảy ra và các điều kiện được đáp ứng, hành động cụ thể sẽ được thực hiện. Có thể là sửa đổi dữ liệu, gọi hàm, gửi tin nhắn, kích hoạt sự kiện khác, v.v.

Ví dụ: Đưa cho người chơi một khẩu AK47 khi bắt đầu vòng chơi và đặt lượng máu của người chơi ở mức 500

SeaTalk_IMG_20241101_145943

Các khái niệm quan trọng trong ECA

Tên khái niệm Mô tả
Hàm Hàm (thường được gọi là phương thức) là khối mã có thể tái sử dụng thực hiện một tác vụ cụ thể. Hàm đóng gói một hoạt động hoặc tác vụ cụ thể trong một khối phương thức độc lập, giúp các hoạt động và logic trở nên mô-đun hơn và dễ bảo trì hơn. Mã bên ngoài có thể thực hiện các tác vụ cụ thể bằng cách gọi một hàm mà không cần phải hiểu chi tiết triển khai của hàm.
Tham số Tham số là các giá trị được truyền cho các hàm hoặc phương thức khi chúng được gọi. Chúng bao gồm các tham số chính thức và tham số thực tế, có thể được chia thành các loại tham số để cung cấp tính linh hoạt và truyền dữ liệu, v.v.
Liệt kê Liệt kê là một khái niệm về việc thu thập dữ liệu liên tục, chẳng hạn như liệt kê phương thức tấn công, có thể chứa các tùy chọn như cận chiến, bắn, nổ, v.v. Các kiểu liệt kê khác nhau không thể được gán cho nhau, ngay cả khi giá trị của chúng có thể giống nhau, chúng không thể được gán do ngữ nghĩa khác nhau.

Sự kiện tùy chỉnh & biến tùy chỉnh

Sự kiện tùy chỉnh

Ở góc dưới bên trái của trình chỉnh sửa phần tử, chúng ta có thể tìm thấy tổng cộng bảy loại danh sách phần tử. Trong loại hàm, chúng ta có thể nhấp vào [CREATE FUNCTION] để tạo sự kiện tùy chỉnhSeaTalk_IMG_20241101_150402

SeaTalk_IMG_20241101_150359

Tổng quan về Giao diện Sự kiện Tùy chỉnh

Số sê-ri Hình ảnh Mô tả
1 image-20241101151951739 Tại đây chúng ta có thể điền tên sự kiện tùy chỉnh
2 image-20241101151917848 Nhấp vào dấu cộng để thêm tham số nội bộ vào sự kiện tùy chỉnh. Tham số này chỉ có thể được sử dụng trong sự kiện tùy chỉnh mà nó thuộc về.
3 image-20241101151927435 Nhấp vào dấu cộng ở góc dưới bên phải để thêm giá trị trả về vào sự kiện tùy chỉnh của chúng ta. Khi chúng ta gọi sự kiện này trong logic thuật toán khác, chúng ta có thể nhận được dữ liệu mình muốn.

Mô tả sự kiện tùy chỉnh

Khi chỉnh sửa các nguyên thủy, chúng ta sẽ tích hợp nhiều khối nguyên thủy vào một sự kiện tùy chỉnh. Chúng ta cũng có thể nói rằng chúng ta đóng gói nhiều logic tính toán trong một phương pháp. Có một số lợi thế khi thực hiện điều này:

1. Đặt tên rõ ràng: Sử dụng các sự kiện được đóng gói, chúng ta không cần phải đọc logic khối nguyên thủy phức tạp, chúng ta có thể hiểu toàn bộ ý định logic sự kiện chỉ bằng cách đặt tên

2. Đơn giản hóa cấu trúc nguyên thủy: Việc đóng gói các phép tính phức tạp trong các sự kiện tùy chỉnh có thể làm cho logic của cấu trúc chính ngắn gọn và rõ ràng hơn, giảm độ phức tạp của cấu trúc nguyên thủy và cải thiện khả năng đọc.

2. Tái sử dụng: Khi nhiều khối logic đồ họa yêu cầu cùng một thao tác, bạn có thể tái sử dụng sự kiện tùy chỉnh được đóng gói để tránh phải viết lại cùng một logic đồ họa. Không chỉ vậy, khi chúng ta sửa đổi và duy trì sự kiện tùy chỉnh này, chúng ta cũng có thể sửa đổi nhiều khối logic đồ họa sử dụng lại sự kiện tùy chỉnh cùng một lúc để tránh phải sửa đổi cùng một mã ở nhiều nơi nhiều lần.

Biến tùy chỉnh

Tổng quan về Giao diện Biến tùy chỉnh

Trong danh sách loại phần tử, hãy chọn loại [BIẾN], sau đó nhấp vào [TẠO BIẾN] để tạo biến tùy chỉnhimage-20241101162644288

Khi tạo một biến tùy chỉnh, chúng ta có thể đặt tên biến và kiểu dữ liệu của biến

image-20241101162620704

Mô tả biến tùy chỉnh

Khi chúng ta viết logic đồ họa, đôi khi chúng ta có thể cần phải xác định các biến tham số của các kiểu dữ liệu theo nhu cầu cụ thể. Hàm biến tùy chỉnh giải quyết nhu cầu này.

Các biến bạn tạo cũng có thể được sử dụng để truyền dữ liệu giữa các phương thức khác nhau. Bằng cách lưu trữ dữ liệu trong một biến, bạn có thể truyền dữ liệu đó dưới dạng tham số cho phương thức khác hoặc trả về dữ liệu đó từ phương thức cho người gọi.

Ví dụ về sự kiện/biến tùy chỉnh

Chúng tôi sẽ tạo một logic để chứng minh cách sử dụng các sự kiện tùy chỉnh và các biến tùy chỉnh trong trình soạn thảo nguyên thủy

Ví dụ logic: Khi một người chơi giết ai đó, giới hạn sức khỏe của người chơi đó sẽ giảm 10 điểm và giới hạn tối thiểu sẽ giảm xuống còn 20.

  1. Đầu tiên, chúng ta tạo một biến tùy chỉnh có tên là ‘CurrentMaxHp’ và đặt kiểu dữ liệu thành ‘int’. Đồng thời, chúng ta tạo một sự kiện tùy chỉnh có tên là ‘DecreaseMaxHp’ để chuẩn bị sơ bộSeaTalk_IMG_20241101_175037

SeaTalk_IMG_20241101_175059

  1. Tìm và kéo sự kiện ‘Khi người chơi gây ra một lần giết’ và kết nối nó với sự kiện tùy chỉnh ‘DecreaseMaxHp’ mà chúng ta vừa tạo. Sau khi kết nối, chúng ta đã hoàn thành cơ sở logic để giảm giới hạn sức khỏe của người chơi khi người chơi giếtSeaTalk_IMG_20241101_183151

  2. Sau khi hoàn thành logic cơ bản, chúng ta có thể bắt đầu viết cấu trúc nguyên thủy của sự kiện tùy chỉnh. Đầu tiên, chúng ta gán giá trị của biến mà chúng ta vừa tạoSeaTalk_IMG_20241101_183704

  3. Tiếp theo, kết nối một thuật toán để đặt biến thành -10 mỗi khi sự kiện được kích hoạtSeaTalk_IMG_20241101_183713

  4. Thêm giới hạn sức khỏe tối thiểu, thêm chức năng kiểm tra xem giới hạn sức khỏe hiện tại có nhỏ hơn hoặc bằng 20 không, thì giới hạn sức khỏe hiện tại bằng 20SeaTalk_IMG_20241101_183808

6Gán lại biến tính toán cho thuộc tính giới hạn sinh mạng của người chơi. Cho đến nay, chúng tôi đã hoàn thành tất cả các logic cần thiết. SeaTalk_IMG_20241101_183902

  1. Xác minhSeaTalk_IMG_20241101_184513

Giới hạn sức khỏe được giảm chính xác và được xác minh chính xác. image-20241101184737595