Bản demo sprite động Thế hệ thứ 5 trong Pokémon FireRed, bản phát hành công khai sẽ sớm ra mắt
- Người viết: Thọ lúc
- Tin tức
Thế hệ Pokémon thứ năm luôn để lại ấn tượng sâu sắc nhất trong tâm trí. Bằng cách kết hợp các mô hình 3D với sprite 2D, theo nhiều cách, nó đã thể hiện được ý tưởng đằng sau khái niệm HD-2D của Square Enix; dù phải thừa nhận rằng nó cần một chút hỗ trợ từ các trình giả lập để trông hoàn hảo nhất. Bên cạnh thế giới bên ngoài, các trận chiến chưa bao giờ trở nên sống động đến thế nhờ việc mỗi con Pokémon trong số 649 loài giờ đây đều có hoạt ảnh lặp lại khi xuất hiện trên sân đấu. Và lần đầu tiên, chúng ta có thể hình dung được điều này sẽ trông như thế nào trên hệ máy GBA.
Được đăng tải bởi người dùng Reddit có tên Zyphrost, chúng ta có thể thấy một trận chiến ở giai đoạn đầu trong Pokémon FireRed với Geodude và Sandshrew hoạt động năng nổ hơn bình thường trên màn hình. Theo bài đăng của họ, mọi Pokémon xuất hiện trong thế hệ thứ ba đều đã được chuyển đổi sprite có hoạt ảnh, bao gồm cả các biến thể màu khác biệt (shiny). Mặc dù các sprite nhìn từ phía sau (back sprite) hiện vẫn còn tĩnh, nhưng đã có kế hoạch để thử nghiệm chúng, với một mối quan ngại đáng kể là dung lượng khổng lồ mà chúng sẽ chiếm dụng. Kết hợp với không gian hiển thị hạn chế dành cho các back sprite trước Thế hệ 5, có thể hiểu tại sao đây không phải là một công việc đơn giản.
Zyphrost cũng chia sẻ thêm một số thông tin chi tiết về quá trình tạo ra các sprite này trong một bình luận:
Zyphrost cho biết:Tôi nghĩ quy trình thực hiện đối với các back sprite cũng tương đối giống nhau, đặc biệt là khi tôi đã tìm ra nguyên nhân của nhiều lỗi phát sinh trong quá trình làm các sprite phía trước. Tuy nhiên, tôi cho rằng việc cắt xén hình ảnh sẽ đòi hỏi nhiều công đoạn thủ công. Với trường hợp các sprite phía trước, tôi không cắt xén hay giảm kích thước bất cứ thứ gì, mà chỉ chuyển trực tiếp các sprite 96x96 sang. Đối với các back sprite, mọi chuyện có thể hơi lạ lẫm hơn một chút, nhưng vẫn có vẻ khả thi.Thực tế, phương pháp này là thứ mà tôi chưa từng thấy trên mạng, việc tìm ra nó khá khó khăn vì lần thử đầu tiên của tôi là chạy một script để giảm kích thước sprite từ 96x96 xuống 64x64. Chúng trông rất tệ, nhưng về mặt kỹ thuật thì chúng vẫn hoạt động. Nhưng nó không đáng về mặt thẩm mỹ, và tôi biết rằng về mặt chức năng, tôi không thể tự mình giảm kích thước từng frame của từng Pokemon xuống 64x64, vì vậy tôi quyết định thử với các sprite kích thước đầy đủ.Về cơ bản, hạn chế là GBA chỉ có thể hiển thị tối đa 64x64 pixel dưới dạng một đối tượng duy nhất. Các sprite phía trước lớn hơn, vì vậy tôi đã chia chúng thành nhiều mảnh và sau đó ghép chúng lại với nhau như một trò chơi ghép hình. Một hạn chế khác là sprite Gen V có nhiều frame (ví dụ: Pidgey có 22 frame hoạt ảnh). Vì hầu hết canvas là trong suốt, tôi phải tối ưu hóa không gian bằng cách chỉ lưu trữ các tile 8x8 không trống, ánh xạ chúng đến vị trí của chúng trong lưới. Vì vậy, một canvas điển hình có thể có khoảng một trăm vị trí tile, nhưng bạn thường chỉ cần 20-40 tile tại một thời điểm.Dữ liệu hoạt ảnh này sau đó được đóng gói vào các file khác nhau, mỗi file cho một Pokemon, với một header chứa thông tin về kích thước canvas, số lượng frame, tọa độ neo, v.v., cũng như các phiên bản nén của dữ liệu frame. Vì vậy, engine của trò chơi có thể giải nén từng frame một, chuyển đổi nó sang định dạng tile GBA và sau đó tải lên VRAM. Mỗi frame lặp lại điều này.Sáng tạo (tôi nghĩ) là hệ thống bố cục subsprite. Về cơ bản, đây là thứ định nghĩa cách bạn cắt các canvas 96x96 thành các mảnh nhỏ hơn với các offset tile cụ thể để khi bạn ghép chúng lại với nhau, nó vẫn trông giống như một sprite duy nhất. Đây cũng là những gì tôi đã làm cho các backsprite HGSS (ngoại trừ dữ liệu hoạt ảnh) có kích thước 80x80, vì vậy chúng trông lớn hơn đáng kể so với các sprite phía trước.Nhưng mà đúng thật, khâu thực hiện đã phát sinh hằng hà sa số lỗi. Suốt một thời gian dài, cứ có mấy cái sọc dọc quái gở chạy ngang qua toàn bộ dữ liệu sprite (không hiểu kiểu gì mà chúng còn lây sang cả các sprite khác trong trò chơi chứ không chỉ riêng sprite chiến đấu), và dường như chẳng có cách nào sửa nổi. Nhưng cuối cùng thì tôi cũng đã giải quyết ổn thỏa vụ đó.
Những ai quan tâm muốn xem các sprite này hoạt động như thế nào có thể xem video và bài đăng gốc ở đường link bên dưới. Tôi đang có kế hoạch phát hành công khai, nên có thể các bạn sẽ thấy những sprite này xuất hiện trong các bản ROM hack tương lai.






