dựng sẵn
Đặc điểm: trong một game, chuyển động animation là điều không thể thiếu. Điều này làm tăng tính hấp dẫn cho game. Chính vì vậy, game trên mobile hầu hết đều sử dụng các chuyển động animation.
Phân tích
Trong một game, các chuyển động animation có thể được xây dựng bằng nhiều cách :
1. Nạp danh sách các hình chuyển động của đối tượng lên và sau đó thể hiện lần lượt từng hình ra màn hình.
2. Ghép các hình chuyển động của đối tượng lại làm 1 dãy các hình ảnh trong cùng một tấm hình.
3. Chỉ xây dựng 1 phần các chuyển động, phần còn lại sử dụng các phép biến hình để tạo ra hình chuyển động còn thiếu.
4. Xây dựng các chuyển động bằng cách sử dụng hoàn toàn các phép biến đổi hình ảnh. Đây là với trường hợp các hình chuyển động được chia nhỏ ra cho từng bộ phận của đối tượng.
Với cách đầu tiên, các hình chuyển động được tách ra thành nhiều tập tin, mỗi tập tin lưu 1 khung hình trong chuyển động đó của đối tượng. Khi cần thể hiện chuyển động cho đối tượng, ta cần phải nạp tất cả danh sách các hình chuyển động vào bộ nhớ và thể hiện lần lượt từng hình ảnh ra màn hình cho mỗi chuyển động. Với các làm này, ta sẽ dễ dàng trong việc thay đổi hình chuyển động của đối tượng nào đó bằng cách thay đổi các hình cho từng khung hình của đối tượng đó. Thậm chí có thể thay đổi chỉ một khung hình cho chuyển động đó cũng khá dễ dàng. Tuy nhiên, số tập tin ta cần phải nạp vào bộ nhớ khá nhiều, điều này làm tốn dung lượng cũng như xử lý chậm vì việc đọc quá nhiều tập tin.
Hình 2-13-Dãy chuyển động gồm nhiều hình riêng lẻ
Cách thứ 2 có thể được làm tương tự như cách thứ nhất. Tuy nhiên, thay vì ta nạp danh sách các hình cho 1 chuyển động lên thì ta chỉ nạp duy nhất một hình lưu đầy đủ các khung hình của chuyển động rồi khi vẽ ra ta tính vị trí từng khung hình để vẽ ra cho hoàn thành chuyển động. Cách này thông dụng trong các tài liệu về lập trình game vì tính đơn giản của nó. Chỉ cần nạp duy nhất 1 tập tin là ta có thể xử lý chuyển động cho đối tượng. Có thể nói, phần nào cách này cũng làm giảm một phần bộ nhớ. Cách cài đặt cũng đơn giản. Tuy nhiên, khuyết điểm ở đây là tất cả các khung hình đều phải được xử lý trước để tạo thành một tập tin duy nhất. Bên cạnh đó, khi thay đổi một khung hình nào đó, ta buộc phải làm lại toàn bộ tập tin.
Hình 2-14-Dãy chuyển động trong một hình
Cách thứ 3 có thể coi là cách mở rộng thêm cho 2 cách đầu tiên. Nếu như 2 cách đầu tiên thiên về việc lưu trữ, thể hiện các hình thì ở đây, cách này thiên về việc giảm không gian lưu trữ cho tài nguyên. Thông thường, 1 đối tượng game có thể di chuyển 4 hướng hoặc 8 hướng, và các hướng này đối xứng với nhau. Chính vì vậy, thay vì ta xây dựng dầy đủ các hình cho từng hướng thì ta chỉ cần xây dựng cho 2 hướng (trái và trên với đối tượng chỉ di chuyển theo 4 hướng) hoặc 4 hướng
(trên, trái trên, trái, trái dưới với đối tượng di chuyển theo 8 hướng) nhờ đó ta tiết kiệm được một nửa không gian lưu trữ. Tuy nhiên, ta phải lấy đối xứng hình đã nạp vào khi muốn hiển thị các hướng không có.
Cách cuối cùng thường không phù hợp với các game đồ họa 2 chiều vì thể hiện quá phức tạp, thời gian xử lý sẽ tốn kém hơn rất nhiều so với các cách trên. Tuy nhiên, từ đó ta có thể phát sinh ra tổ hợp các loại chuyển động khác nhau dựa trên hình ảnh từng bộ phận của đối tượng.
Kết luận: Nhằm tận dụng tối đa bộ nhớ mà vẫn thể hiện các chuyển động animation một cách tốt nhất, chúng em sử dụng cách thứ 2 và 3 để lưu trữ và tạo các chuyển động animation cho game. Cụ thể, mỗi chuyển động trong game sẽ có 1 tập tin lưu các khung hình chuyển động đó theo một số huớng. Các hướng còn lại sẽ được thể hiện bằng cách lấy đối xứng dựa trên các hình đã có.