Nhảy tới nội dung
Moonlit CafeDocs

Quy trình hoạt hình pixel art: Hướng dẫn cho người mới

Hướng dẫn quy trình tạo hoạt hình chạy đơn giản cho nhân vật platformer pixel art trong phát triển game.

Nguồn gốc

Xin chào! Mình là Kyle, và hôm nay chúng ta sẽ xem nhanh quy trình mình đã làm hoạt hình Ostrich Knight này như thế nào.

Bài này không đi sâu vào các sắc thái chuyển động trong hoạt hình, mà tập trung vào bản thân quy trình hoạt hình. Mình làm gì? Bắt đầu từ đâu? Hãy nói về điều đó.

Bước 1: Thiết kế nhân vật

Để trả lời câu hỏi hay gặp nhất trước: mình làm toàn bộ pixel art và hoạt hình bằng Aseprite.

Vậy thì, việc đầu tiên là bạn cần một thiết kế nhân vật. Đây là bản thiết kế lại Ostrich Knight của mình. Một chàng hiệp sĩ trông oai phong làm sao. Ở giai đoạn này, mình hướng tới một sprite nhân vật hoàn chỉnh, chi tiết. (Cách thực hiện cụ thể có thể là chủ đề của một bài khác.) Mọi thứ bạn muốn có trong sản phẩm cuối cùng nên có mặt ở đây — từ các quyết định thiết kế lớn đến các sắc thái ánh sáng. Đây là nền tảng bạn sẽ dùng cho mọi thứ sau này, nên hãy dồn hết sức. Tuy nhiên, hãy nhớ rằng trong lúc hoạt hình, bạn có thể phát hiện một số phần của thiết kế gốc không hoạt động vì nhiều lý do, nên việc quay lại chỉnh sửa là bình thường — đừng căng thẳng. Khi bạn hài lòng với sprite nhân vật và hiện không dự đoán cần thay đổi thêm, bạn đã sẵn sàng bắt đầu quy trình hoạt hình.

Bước 2: Thiết lập

Bạn đã sẵn sàng hoạt hình nhưng chưa chắc bắt đầu thế nào. Đây là cách mình thiết lập workspace ban đầu — tin mình, chuẩn bị kỹ sẽ giúp ích rất nhiều, đừng bỏ qua bước này. Tuy nhiên, hãy tự do điều chỉnh setup cho phù hợp sở thích của bạn — sự thoải mái là chìa khóa. Mình khuyên bạn đặt từng phần tử riêng trên layer riêng. Việc đó sẽ khiến cuộc sống dễ hơn rất nhiều. Đặt nhãn. Mọi thứ.

Bên trái mình đặt thiết kế nhân vật gốc, và đặt layer của nó cùng các layer setup còn lại thành constant cho mọi frame (mọi thay đổi trên một frame sẽ áp dụng cho tất cả frame). Đây sẽ là kim chỉ nam mình tham chiếu khi vẽ từng frame. Quan trọng là luôn nhớ nhân vật trông như thế nào để họ không bị biến dạng tỷ lệ và chi tiết xuyên suốt hoạt hình. Điều này có thể và sẽ xảy ra nếu không có hướng dẫn phù hợp, và bạn không muốn lãng phí hàng giờ liên tục quay lại frame gốc vô cớ.

Sau đó, mình thiết lập một đường hướng dẫn mặt đất thẳng ở chân nhân vật. Theo dõi mặt đất rõ ràng là hữu ích, nhưng đặc biệt quan trọng với các hoạt hình có phần tử rời và chạm lại mặt đất, ví dụ như chân. Bạn cũng có thể thêm các đường hướng dẫn khác khi cần — đỉnh nhân vật, đường eo, hoặc phần tử quan trọng khác. Điều này thay đổi tùy từng hoạt hình.

Cuối cùng, mình lấy thiết kế nhân vật và đặt một bản sao ở giữa canvas. Đây là nơi mình sẽ thực sự hoạt hình. Nó hữu ích theo nhiều cách, nhưng chủ yếu vẫn là một tham chiếu khác giúp bạn theo dõi hình dạng và kích thước thực của nhân vật. Chưa có blob vô định (chưa)! Đặt opacity của hướng dẫn trung tâm thấp, khoảng 50% hoặc thấp hơn, để dễ phân biệt với những gì bạn đang vẽ. Với các phần đó đã setup, bạn sẵn sàng chuyển sang giai đoạn hoạt hình thực sự.

Bước 3: Blob

Giai đoạn đầu tiên khi thực sự hoạt hình chú chim đẹp của chúng ta cũng là dễ nhất: blobbing. Giai đoạn này tách các phần của nhân vật thành các hình đơn giản, dễ phân biệt. Nói chung, mọi phần có chuyển động riêng sẽ có màu riêng, và mỗi phần sẽ có layer riêng. Ngoại lệ trong ví dụ này là bộ lông đuôi và đầu — mình để cùng layer vì dễ di chuyển chúng cùng nhau, và hoạt hình của phần này không ảnh hưởng phần kia, nhưng màu riêng vẫn giúp hình dung. Trong ví dụ này, mình có layer riêng cho Đầu, Cánh, Chân trước, Thân, và Chân sau. Tất cả layer đó cũng được gom vào một group để giữ workspace gọn gàng, tách khỏi các tham chiếu. Đặt nhãn. Mọi thứ.

Để tạo blob, cách làm tùy bạn. Với hình ban đầu, mình thích trace hình tham chiếu mờ vì nó giúp xây dựng cảm giác đúng về các form sẽ làm việc. Bắt đầu chính xác tốt hơn bắt đầu sai. Tuy nhiên, điều này không bắt buộc — bạn có thể phác thô nếu thích. Ở bước tiếp theo chúng ta sẽ tự do hơn nhiều.

Bước 4: Mock-up

Giai đoạn tiếp theo có lẽ là lớn nhất, nhưng cũng vui nhất. Đây là nơi phép màu xảy ra. Ở đây, chúng ta thiết kế hoạt hình thực sự trông như thế nào, và làm vậy bằng cách tiếp tục dùng kỹ thuật blob. Bạn sẽ thấy mình thêm vài màu vào phần đầu để hỗ trợ hình dung chuyển động; hoàn toàn tùy ý bạn — làm bất cứ gì giúp bạn nhìn thấy những gì đang làm.

Điểm hay của blob là chúng cực kỳ nhanh để vẽ, di chuyển và thay đổi. Ở giai đoạn này chúng ta không quan tâm chi tiết. Với mỗi frame, mình bắt đầu lại và vẽ các hình rất thô khi làm việc, tập trung chủ yếu vào chuyển động. Vẽ hình mới mỗi lần, thay vì copy, paste và di chuyển, theo kinh nghiệm của mình thường cho hoạt hình tự nhiên và sống động hơn. Mình chỉ copy-paste khi hình gần như không thay đổi hoặc thay đổi rất ít. Dùng thường xuyên hình tham chiếu mờ để đảm bảo form không trượt quá xa. Quan trọng là thể tích không bao giờ thay đổi (trừ khi cố ý)! Mình cũng khuyên dùng tính năng onion skinning (cho phép xem frame trước và sau) khi làm việc để chuyển động mượt hơn.

Đừng ngại thay đổi lớn và nhanh — đó chính là mục đích của blob. Khi chuyển động dần vững chắc, chúng ta sẽ từ từ đẽ gọt blob cho đến khi định hình hơn, cuối cùng dẫn tới các hình dùng trong hoạt hình kết quả. Trong quá trình, chỉ cần định hình blob ở mức đủ để cảm giác chuyển động chính xác. Thường xuyên kiểm tra playback hoạt hình khi làm (hoặc để nó chạy liên tục) để thấy hiệu ứng của các thay đổi, và hãy tự giúp mình một việc lớn: đảm bảo bạn đang xem hoạt hình ở kích thước dự định hiển thị. Nếu xem ở kích thước khác, các thay đổi bạn làm có thể không hiển thị như bạn nghĩ.

Khi đã hoàn thiện chuyển động và gọt xong blob, bạn sẵn sàng cho bước cuối cùng.

Bước 5: Chi tiết hóa

Không có nhiều để nói về giai đoạn này. Đây là công việc cầm cự, tốn thời gian, nhưng là giai đoạn khiến hoạt hình cuối cùng đẹp. Mình bắt đầu bằng flood fill trực tiếp lên blob đã gọt, phác màu tổng thể, rồi đi qua từng phần và tô màu từng frame. Đây là nơi bạn làm nhiều hoạt hình nội bộ — những thứ không được blob một màu bao phủ. Ví dụ là chuyển động xoay của áo choàng trên Ostrich Knight.

Tham chiếu hình gốc thường xuyên để màu sắc và ánh sáng luôn nhất quán. Phần lớn quy trình này chỉ là tạo lại sprite gốc đó, bao nhiêu lần tùy số frame, vì phần lớn chuyển động đã xong ở bước trước — bạn chỉ đang tô màu. Quan trọng là để bước này cuối cùng, vì nếu chi tiết hóa đồng thời với chỉnh chuyển động, bạn sẽ lãng phí rất nhiều thời gian khi phải thay đổi và làm lại chi tiết hóa liên tục. Làm việc theo từng giai đoạn hiệu quả hơn nhiều. Và khi hiệu quả, bạn có thêm thời gian và năng lượng để thêm các chi tiết hay làm hoạt hình sống động, thay vì chỉ muốn xong cho nhanh.

Mình kết thúc bằng một ghi chú vui — hoạt hình chạy gốc của Ostrich Knight từ một game jam khoảng 10 năm trước. Đó là một trong những hoạt hình đầu tiên của mình. Cậu ấy và mình đã đi một chặng dài từ đó, và qua nhiều luyện tập, bạn cũng sẽ tiến xa, bạn nhé.

Hết cho hôm nay. Hẹn lần sau!

-Kyle

Bài blog gốc được xuất bản trên Patreon của tác giả năm 2020.