Tôi nên xử lý việc tạo sprite cho các ký tự 2D tùy chỉnh như thế nào?


8

Tôi muốn tạo hoạt hình avatar (họa tiết) cho MMORPG dựa trên trình duyệt. Người chơi có thể tùy chỉnh nhân vật và nội dung thay đổi thường xuyên (vũ khí mới, áo giáp, v.v.). Làm thế nào tôi có thể quản lý một cách có cấu trúc việc tạo và cập nhật tất cả các trang sprite?

Số lượng kết hợp khác nhau đủ lớn để tạo ra tất cả các hoán vị sẽ không hoạt động.

Đây có thể là máy chủ hoặc dựa trên máy khách, nhưng nếu nó hoạt động hoàn toàn trên máy khách, vui lòng giữ nó ở chế độ HTML5 / CSS / Canvas / WebGL.


3
sáng tác người chơi của nhiều họa tiết + pha màu
LearnCocos2D

Một bài viết liên quan về việc tạo ra các loại sprite này: gamasutra.com/bloss/DavidYork/20161130/286500/ợi
MichaelHouse

Câu trả lời:


14

Để thực hiện điều này một cách hiệu quả mà không cần 'tạo ra tất cả các tùy chọn có thể', bạn sẽ muốn sử dụng cách tiếp cận phân lớp ... ít nhất là về mặt lý thuyết, ngay cả trong thực tế, cuối cùng bạn thu gọn các kết cấu lớp thành một sprite để giảm cuộc gọi rút thăm , mà tôi nghĩ bạn nên và sẽ chi tiết sau.

Cách tiếp cận phân lớp liên quan đến việc có một bộ sprite cho tất cả các nhân vật của bạn mà không có vũ khí hoặc trang bị, và các bộ sprite riêng lẻ cho mỗi vũ khí hoặc thiết bị được căn chỉnh sao cho chúng có thể được đặt lên trên các nhân vật cơ sở để tạo thành nhân vật tổng hợp, cuối cùng.

Đối với các họa tiết đơn giản với ít góc nhìn (như các họa tiết chiến đấu của các game Final Fantasy truyền thống), điều này tương đối dễ dàng. Đối với các sprite phức tạp hơn (chẳng hạn như các nhân vật của Diablo II, có nhiều mặt và phối cảnh đẳng cự), các sprite vũ khí và áo giáp sẽ khó chế tạo hơn vì bạn phải để lại "khoảng trống" trong sprite khi nó xuất hiện phía sau tính cách. Một cách đơn giản để giảm bớt vấn đề đó là cho phép các thiết bị được chia nhỏ hơn nữa thành một lớp "tiền cảnh" và "nền". Quá trình của bạn để hiển thị một sprite sau đó là hợp lý:

  1. Kết xuất các lớp nền bánh răng (thường chỉ vũ khí).
  2. Kết xuất sprite ký tự cơ sở.
  3. Kết xuất các lớp bánh trước (thường chủ yếu là áo giáp).

Phương pháp này không phải là bằng chứng (đặc biệt là khi bạn tăng số lượng thiết bị có thể thay thế độc lập có thể được trang bị và cũng có thể tác động đến một nhân vật được kết xuất), nhưng nó sẽ hoạt động với phần lớn thiết bị khi nghệ sĩ của bạn bị treo của kỹ thuật tác giả.

Một công cụ chỉnh sửa sprite với các lớp có khả năng chuyển đổi sẽ rất quan trọng bởi vì thật khó để làm sống động một thanh kiếm hoặc nhân viên bị vung trong không khí mà không có lớp tham chiếu của nhân vật vung nó. Nếu các họa tiết của bạn thực sự được tạo trong một công cụ 3D, việc thiết lập đường ống này có thể dễ dàng hơn nhiều .

Bạn có thể sử dụng kỹ thuật này ở dạng vanilla như mô tả ở trên. Tuy nhiên, bạn cần lưu ý rằng điều đó có nghĩa là tăng số lượng cuộc gọi rút thăm trên mỗi nhân vật trên màn hình một cách đáng kể , đây có thể là một vấn đề nghiêm trọng trong MMO khi ít nhất phải tính đến khả năng nhiều nhân vật sẽ xuất hiện trên màn hình thời gian.

Nướng lớp kết hợp kết xuất thành một tấm sprite duy nhất là một công cụ hữu ích để chống lại vấn đề này. Bạn nên có một số mã sẽ thực hiện các bước kết xuất ở trên thành một kết cấu mà bạn có thể lưu vào đĩa hoặc bộ nhớ cache trong bộ nhớ. Bằng cách đó, bạn có thể trả chi phí kết xuất tăng thêm một lần, bất cứ khi nào người chơi chuyển thiết bị của họ, nhưng sau lần kết xuất ban đầu đó, bạn chuyển sang sử dụng bảng kết cấu hỗn hợp đã nướng cho tất cả các khung tiếp theo.

Để có hiệu quả thời gian chạy tối đa, hãy đảm bảo tất cả các bảng sprite cho ký tự và bánh răng căn chỉnh chính xác để bạn chỉ có thể hiển thị toàn bộ trang tính chứ không phải các khung riêng lẻ. Bạn có thể sử dụng các hình thức đóng gói bin ngoại tuyến khác nhau để tối đa hóa bố cục của các họa tiết trên trang tính, cũng như nén kết cấu, để tiết kiệm không gian ngoại tuyến.

Bạn cũng có thể tận dụng kỹ thuật này trong quá trình xây dựng nội dung trò chơi của mình: các nhân vật có thiết bị cố định, chẳng hạn như NPC, có thể được nướng sẵn để tiết kiệm thời gian chạy (đặc biệt đối với các nhân vật có thể xuất hiện thường xuyên).

Bạn cũng sẽ muốn đảm bảo trò chơi của mình như một cách để báo cáo cho bất kỳ người chơi nào về loại nhân vật cơ bản và trang bị của những người chơi khác gần đó, để bạn có thể thực hiện trước việc kết hợp trên máy của khách hàng khi cuối cùng những người chơi gần đó đến vào tầm nhìn của người chơi địa phương.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.