Chọn tốc độ khung hình cho hoạt ảnh sprite

“Hoạt ảnh của tôi nên có bao nhiêu fps?” thường được hỏi như thể chỉ có một đáp án. Thực ra có hai đáp án riêng: một hành động có bao nhiêu khung hình khác nhau và các khung hình đó được phát nhanh đến đâu. Nhầm lẫn hai yếu tố này khiến hoạt ảnh trông chậm dù có nhiều khung hình, hoặc giật dù phát nhanh.

Số khung và tốc độ phát là quyết định khác

Chu kỳ đi bộ 4 khung phát ở 8 khung mỗi giây mất nửa giây mỗi vòng. Chu kỳ 8 khung ở 8 fps mất một giây, dài gấp đôi, với cùng tốc độ phát. Số khung quyết định lượng chi tiết chuyển động trong vòng; tốc độ phát quyết định vòng lặp nhanh đến đâu. Bạn có thể có chu kỳ 12 khung chi tiết nhưng quá chậm để trông như đi bộ, hoặc chu kỳ 2 khung thô nhưng nhịp đúng và vẫn truyền đạt rõ hành động, vì nhận thức chuyển động của con người quan tâm thời gian hơn chi tiết.

Thực tế quan trọng vì hai nút đánh đổi với ngân sách vẽ cố định. Chỉ vẽ được 4 khung tấn công không bắt buộc hoạt ảnh tệ: chỉnh tốc độ, thời gian giữ (bên dưới) để 4 khung đọc đúng, không cho rằng thêm khung sửa thời gian.

Cảm giác thực tế của 8, 12 và 24fps

Số mô tả tần suất khung hiển thị đổi, độc lập tốc độ vẽ game.

  • 8fps — khung mới khoảng mỗi 125ms. Chuyển động theo bước rõ; mỗi tư thế hiện đủ lâu để nhận biết riêng trước khi tư thế tiếp theo xuất hiện. Tạo cảm giác có chủ ý, nặng hoặc cố ý cổ điển thay vì mượt.
  • 12fps — khung mới khoảng mỗi 83ms. Tốc độ “on twos” truyền thống của hoạt ảnh vẽ tay (vẽ nội dung mới mỗi hai khung của phim 24fps). Đủ mượt để phần lớn hành động game trông liền mạch mà vẫn ít tốn công vẽ.
  • 24fps — khung mới khoảng mỗi 42ms, khớp tốc độ khung phim. Chuyển động trông hoàn toàn mượt, không thấy bước chuyển. Cần lượng nội dung khung khoảng gấp đôi 12fps để lấp cùng thời lượng, hoặc cùng số khung phát trong nửa thời gian.

Không giá trị nào đúng một cách tuyệt đối. Giá trị phù hợp tùy thuộc thứ bạn đang làm chuyển động và cảm giác muốn truyền đạt; vì vậy phần tiếp theo phân tích theo hành động thay vì đưa ra một con số cho cả trò chơi.

Ba dải cùng bước đi: bốn khung 8 fps retro giật, sáu 12 fps chuẩn, 12 khung 24 fps mượt
Cùng bước đi vẽ ba cách. Hàng cao hơn không là hoạt ảnh tốt hơn, mà nhiều hình hơn, là chi phí lẫn quyết định chất lượng.

Vì sao game cổ dùng fps thấp — và vì sao giờ đây đó là lựa chọn phong cách

Máy chơi game và PC đời đầu tạo hoạt ảnh ở 6–10 fps không chủ yếu vì lựa chọn nghệ thuật; chúng chịu trần bộ nhớ cứng. Mỗi khung thêm là dữ liệu sprite phải vừa ROM băng trò chơi hoặc RAM hệ thống, đều đo bằng kilobyte. Studio tạo nhân vật 24 fps thay vì 8 fps cần khoảng ba lần ngân sách khung cho từng hành động, nhân lên mọi nhân vật, và thường không có ngân sách đó. Ít khung là hệ quả trực tiếp của giới hạn, và người làm hoạt ảnh trở nên rất giỏi chọn khung quan trọng nhất trong giới hạn ấy.

Ràng buộc đó gần như biến mất: lưu trữ, bộ nhớ không còn giới hạn số khung game 2D. Chọn 8fps nay là phong cách có chủ ý, thường gợi thời đó hoặc chuyển động thô từng bước hợp hình. Nên biết lý do nào cho dự án, vì “thấp fps để retro” và “thấp fps vì hết ngân sách khung” cho cùng kết quả từ lý luận khác; chỉ một là ràng buộc bạn có thể tự do bỏ.

Tốc độ gợi ý theo hành động

Hành độngSố khung thường dùngPhát thường dùngVì sao
Đứng yên2–44–8fpsChuyển động nhẹ như thở, chớp mắt không cần nhanh để nhận ra
Đi bộ6–810–14fpsCần nhịp rõ; quá chậm trông ì hoặc say
Chạy6–1014–20fpsNhịp nhanh truyền tốc độ dù cùng số khung với đi bộ
Tấn công3–6Không đều, ưu tiên chuẩn bị/va chạmTác động phải rơi vào một khung, không nhòe qua nhiều
Chuyển đứng yên sang cảnh giác2–38–12fpsThay đổi trạng thái nhanh, rõ quan trọng hơn độ mượt

Coi là khởi điểm, không quy tắc. Thử thật là xem vòng đúng cỡ/tốc độ game: số có vẻ đúng trong preview lớn có thể khác hoàn toàn khi sprite cao 48 pixel trên màn chuyển động.

Khung giữ và thời gian

Không phải khung nào trong một chuỗi cũng cần xuất hiện trong cùng một khoảng thời gian. Khung giữ là tư thế được hiển thị lâu hơn các khung xung quanh — lấy đà trước cú đấm, đỉnh của cú nhảy, khoảnh khắc ngay trước khi nhát kiếm chạm đích. Giữ các tư thế này lâu hơn một chút so với tốc độ khung hình đều giúp người xem kịp cảm nhận sự chuẩn bị trước đoạn nhanh. Đây là một dạng điều tiết nhịp: chuyển động hiếm khi tuyến tính, và thời gian của nó cũng không nên tuyến tính.

Thực tế hoạt ảnh tấn công không phải N khung fps cố định: khung chuẩn bị giữ 150 ms, hai khung chuyển nhanh mỗi 40 ms, va chạm giữ 100 ms và hồi phục giữ 200 ms. Phần lớn hệ thống cho đặt thời lượng từng khung vì thế. Nếu công cụ chỉ tốc độ cố định, giả giữ bằng nhân bản khung muốn dừng, chiếm hai hoặc ba nhịp thay một.

Fps hoạt ảnh không phải fps trò chơi

Trò chơi có thể kết xuất ở 60 hoặc 120 fps trong khi hoạt ảnh sprite phát ở 12 fps: đây là các con số độc lập. Vòng kết xuất của trò chơi vẫn vẽ từng khung; hệ thống hoạt ảnh quyết định tần suất chuyển sang khung sprite tiếp theo trong vòng đó, thường bằng cách theo dõi thời gian đã trôi và chuyển khi vượt ngưỡng, không gắn việc chuyển khung với nhịp kết xuất. Nhầm hai yếu tố là lỗi phổ biến của người mới làm hoạt ảnh sprite, vốn quen một môi trường nơi tốc độ khung hình chỉ có một nghĩa.

Tách biệt cho game camera/input mượt 60fps vẫn dùng nhân vật thô có chủ ý 8fps. Đổi fps game không bao giờ cần đổi thời gian sprite; nếu có, hệ thống gắn hai phần sai.

Vị trí của thiết lập này trong các engine phổ biến

  • Unity — trường sample rate của cửa sổ Animation đặt khung mỗi giây cho toàn clip; các keyframe riêng trên timeline vẫn có thể cách nhau không đều để tạo đoạn giữ trong tốc độ đó.
  • Godot — AnimatedSprite2D và SpriteFrames cho phép đặt fps mỗi hoạt ảnh và riêng hệ số thời lượng từng khung để giữ các khung cụ thể lâu hơn.
  • Tùy chỉnh/không phụ thuộc engine — phần lớn trình hoạt ảnh sprite tự viết theo dõi thời gian tích lũy so với mảng thời lượng từng khung thay vì hằng số fps duy nhất, là cách linh hoạt nhất khi bạn tự viết hệ thống.

Câu hỏi thường gặp

Đi bộ nhiều khung vẫn cứng. Vì sao?

Thường là vấn đề thời gian, không phải số lượng khung hình. Kiểm tra xem mọi khung hình có được phát với thời lượng bằng nhau hay không — khi đi bộ thật, trọng lượng phân bố không đều, và tốc độ phát đồng nhất làm mất sự khác biệt đó. Thử giữ các khung chạm đất (bàn chân chạm mặt đất) lâu hơn một chút so với các khung bước qua.

Có số khung tối thiểu để hoạt ảnh trông đúng không?

Không có tối thiểu cố định: chớp mắt đứng yên 2 khung hoặc lóe tấn công 2 khung đều rõ với thời gian đúng. Quan trọng đổi tư thế truyền hành động, không số bước giữa.

Mọi hoạt ảnh nên cùng fps cho nhất quán?

Không nhất thiết. Phong cách đồ họa nhất quán hưởng lợi từ số khung hoặc ngôn ngữ hình dáng nhất quán, nhưng các hành động khác nhau thực sự có tốc độ khác nhau — ép chu kỳ chạy có cùng fps với trạng thái đứng yên thường làm một trong hai trông sai.

Làm sao tạo hoạt ảnh nội dung cắt từ bảng tạo có khung không đều?

Thêm đệm để mọi khung có cùng canvas và pivot nhất quán trước khi thiết lập hoạt ảnh; nếu không, khung có hộp bao khác nhau sẽ giật hay trôi dù thời gian được chỉnh tốt đến đâu. Sửa vị trí trước, chỉnh fps sau.

Lấy khung sạch nhất quán để tạo hoạt ảnh

Thời gian chỉ đúng nếu cắt và đặt mọi khung nhất quán trước. Magic Slice của Cắt sprite sheet đọc phạm vi từ alpha và thêm đệm khớp, nên nguồn không đều không cản thời gian. Hoàn toàn trình duyệt.

Mở Cắt bảng sprite