Phân tích đồ họa Seiken Densetsu 3

Khái quát

Square Enix là một trong những tên tuổi lớn trong làng game hiện nay, được biết đến với những dòng game lừng danh như Final Fantasy và Dragon Quest. Cũng không thể phủ nhận rằng hầu hết các tựa game của hãng này đều có nền đồ họa rất ấn tượng, dù là trên bất kỳ nền tảng nào. Trong những năm gần đây, Square Enix có vẻ cạn kiệt ý tưởng cho những tựa game mới. Ta thấy xuất hiện khá nhiều bản remake hay remaster từ những tựa game cũ của họ như các phiên bản Final Fantasy đánh số, Live a Live,... Nhưng dù là phiên bản remake/remaster từ các tựa game cũ, ta vẫn thấy được kỹ thuật đồ họa cực kỳ đỉnh của hãng này. Một trong những game như thế là Seiken Densetsu 3 (hay Trials of Mana ở thị trường Mỹ) được phát hành cho PS4, Switch, Windows vào năm 2020 và các phiên bản cho Smartphone năm 2021.

Hình ảnh trong phiên bản remake của Seiken Densetsu 3/Trials of Mana trên PS4 năm 2020.

Phiên bản remake của Seiken Densetsu 3/Trials of Mana năm 2020 trên các hệ máy chơi game đương đại và PC nhận được nhiều hưởng ứng tích cực từ cộng đồng người chơi, dù nó không phải là game AAA. Và người chơi trẻ ngày nay cũng ít biết rằng phiên bản gốc năm 1995 trên hệ máy Nintendō Super Famicom (SFC)/SNES thực sự là một game AAA đương thời. Bản gốc năm 1995 trên SFC/SNES được đánh giá là một trong những kiệt tác để đời của Square Soft trong thời đại 16 bit. Chưa nói đến nội dung và gameplay, bản thân đồ họa của game này đã là một yếu tố khác biệt so với đại đa số game 16 bit cùng thời, và là một cột mốc đánh dấu cho sự khác biệt đẳng cấp giữa Square Soft (tiền thân của Square Enix ngày nay) với các hãng game khác.

Băng game Seiken Densetsu 3 chạy trên máy SFC/SNES năm 1995, dung lượng 4MB

Mặc dù người viết bài này đã biết đến sự tồn tại của series Seiken Densetsu (truyền thuyết Thánh kiếm) từ những năm 1995, nhưng mãi tới năm 2022 mới bắt đầu chơi phiên bản thứ 3 trong series, và đi đến kết luận rằng đây là game SFC/SNES có đồ họa đẹp nhất mà mình từng chơi. Và ý muốn viết một bài phân tích về đồ họa của game này cũng ra đời từ đó. Bài viết này bỏ qua yếu tố gameplay và nội dung, chỉ tập trung vào mảng kỹ thuật đồ họa để phân tích vì sao mà Seiken Densetsu 3 năm 1995 được ca tụng là một kiệt tác kỹ thuật của Square Soft.

Trong bài viết này có nhiều phần giải thích kỹ thuật mà nếu diễn giải bằng video sẽ trực quan và dễ hiểu hơn, nên bạn đọc có thể tham khảo video dưới đây.

Nói đến "đồ họa" là nói đến điều gì?

Khi ta nói đến yếu tố "đồ họa" của game là nói đến 2 yếu tố: nghệ thuật/mỹ thuật và kỹ thuật. Khá nhiều người đánh đồng cả 2 yếu tố này khi nói về đồ họa. Yếu tố nghệ thuật/mỹ thuật của đồ họa chính là nói đến nét vẽ của nghệ sĩ tạo ra những hình ảnh trong game, thường không lệ thuộc nhiều vào khả năng trình diễn của phần cứng. Còn yếu tố kỹ thuật của đồ họa chính là nói đến khả năng lập trình sao cho khai thác hết khả năng của phần cứng để mang lại hiệu quả hình ảnh tốt nhất có thể.  Chẳng hạn như hiệu ứng ánh sáng, đổ bóng,... Yếu tố kỹ thuật phụ thuộc rất nhiều vào khả năng phần cứng của hệ máy đó. Chẳng hạn, máy PS1 ra đời sau máy SFC/SNES, có thông số kỹ thuật tốt hơn, xử lý khỏe hơn, có khả năng thể hiện nhiều màu sắc đồng thời hơn nên cho màu rực rỡ hơn, ánh sáng tốt hơn,.... Và tương tự, máy PS5 ngày nay cho chất lượng hình ảnh tốt hơn máy PS1 rất nhiều. 

Tuy nhiên, chất lượng hình ảnh không chỉ lệ thuộc vào sức mạnh phần cứng, mà còn phụ thuộc vào tính thẩm mỹ trong khâu thiết kế hình ảnh của game đó nữa. Điều này giải thích cho việc ngày nay vẫn còn nhiều người thấy những tựa game cũ từ đời 8 bit, 16 bit đẹp hơn hẳn đời game Switch, PS4, PS5. Nói về sức mạnh phần cứng thì Switch ngày nay hơn hẳn máy FC/NES hay SFC/SNES, nhưng đó cũng chỉ là một yếu tố giúp cho hình ảnh của game đương đại dễ dàng được chấp nhận hơn so với game Retro của triều đại trước chứ không phải là yếu tố quyết định. Ngày nay chúng ta thấy không ít game Switch, PS4 được thiết kế hình ảnh khá cẩu thả, thẩm mỹ thua kém rất nhiều so với những tựa game 8 bit hay 16 bit từ hơn 20 năm trước.

Seiken Densetsu 3 là một trong số ít game đỉnh ở cả 2 mặt: kỹ thuật lẫn mỹ thuật/thẩm mỹ.

Một vài hình ảnh trong Seiken Densetsu 3 phiên bản 1995

Tính nghệ thuật/mỹ thuật trong mảng đồ họa của game này là một điều không thể bàn cãi. Nhân vật được thiết kế rất hợp nhãn và sinh động. Cảnh vật cũng cực kỳ phóng khoáng, tráng lệ. Nhưng ở đây, tôi sẽ không đề cập đến mảng mỹ thuật này, mà chỉ tập trung phân tích về kỹ thuật để giúp bạn hiểu được tại sao tựa game này lại được đánh giá là một kiệt tác về kỹ thuật.

Nói thêm, game này cho phép bạn tùy chỉnh âm thanh ở chế độ Stereo hay Mono. Đây cũng là điều thường thấy ở nhiều game SFC/SNES khác. Nhưng điểm đặc biệt là nếu bạn chọn chế độ Stereo thì game còn có thêm 2 tùy chọn khác là "Wide" và "Normal". Đây là điều tôi chưa từng thấy ở bất kỳ game SFC/SNES nào khác. Nếu TV có cặp loa đủ tốt, hoặc có cổng kết nối với headphone thì bạn sẽ dễ dàng nhận ra sự khác biệt trong chế độ "Wide" và "Normal".

Nói về Background

Máy SFC/SNES hay hầu hết các máy chơi game qua mọi thế hệ đều có 2 thành phần đồ họa chính được hiển thị trên màn hình. Đó là Background (cảnh nền) và Sprite. Sprite là những thành phần đồ họa di chuyển được trên màn hình, thường được dùng để diễn tả nhân vật. Vị trí của Sprite có thể thay đổi từ chỗ này sang chỗ kia trên màn hình. Đó là một đặc tính chỉ có ở Sprite.

Còn Background (cảnh nền) chính là hình ảnh tĩnh, thường được dùng để tạo khung cảnh. Máy SFC/SNES có 8 mode hiển thị hình ảnh, hay nói cách khác là 8 chế độ hiển thị Background. Hầu hết các phân cảnh trong Seiken Densetsu 3 sử dụng mode 1, cũng giống như nhiều game khác. Ở mode hiển thị này, màn hình có thể hiển thị tối đa 3 lớp Background và 128 màu khác nhau đồng thời. Mode 1 là chế độ hiển thị ảnh khá phổ biến, hầu như game nào cũng dùng đến. Nhưng phần lớn chúng đều không sử dụng hết 128 màu, nên trông kém sắc hơn so với Seiken Densetsu 3.

So sánh giữa Seiken Densetsu 3 và một game RPG khác, có thể thấy game của Square Soft có độ chi tiết cao hơn và màu sắc sinh động hơn hẳn

Ở mode hiển thị 1, lớp Background thứ 3 có độ sâu màu là 2 bit cho mỗi pixel, tức nó có thể hiển thị tối đa 4 màu đối với mỗi palette màu. Background thứ 3 này thường được dùng để hiển thị chữ trên màn hình. Còn với Background thứ 1 và Background thứ 2, mỗi lớp có độ sâu màu là 4 bit cho mỗi pixel, tức chúng có thể hiển thị tối đa 16 màu đối với mỗi palette màu. Mỗi lớp Background như thế có thể sử dụng đến 8 palette màu khác nhau để cho ra 128 màu khác nhau. Do đó Background #1 và Background 3 thường được dùng để diễn đạt cảnh nền trong game, như nhà cửa, cây cối. 

Cảnh nền chủ yếu trong Seiken Densetsu 3 cũng được cấu thành từ lớp Background #1 và Background #2. Cả 2 lớp Background này đều sử dụng chung nguồn tileset (dữ liệu đồ họa) nên chúng có thể sử dụng chung 8 palette màu. Như vậy, cả Background #1 và Background #2 đều có thể sử dụng hết 8 palette, tức 128 màu đồng thời. Việc này giúp cho mỗi lớp Background có thể sử dụng được nhiều màu sắc hơn so với khi mỗi lớp lại dùng nguồn tileset khác nhau. Nhiều game SFC/SNES khác sử dụng 2 nguồn tileset khác nhau cho Background #1 và Background #2, việc này khiến số lượng màu sắc mà mỗi Background có thể sử dụng được giảm đi đáng kể.

Các thành phần trong một khung cảnh ở mode 1

Thông thường, lớp Background #1 được hiển thị với mức độ ưu tiên cao hơn Background #2. Cho nên Background #2 thường được dùng để biểu thị cho cảnh vật nền, những gì trông thấy từ xa. Còn Background #1 được dùng để diễn đạt những cảnh vật đập vào mắt ở cự ly gần, những thứ nằm ở phía trước. Tuy nhiên, qua hình ảnh ví dụ bên trên thì ta có thể thấy cả Background #1 và Background #2 đều được dùng để diễn tả một khung cảnh với độ xa-gần như nhau. Nếu để ý kỹ, ta có thể thấy tại bất kỳ một vị trí nào trong khung hình, nếu như ở Background #1 đã xuất hiện thành phần đồ họa thì ở vị trí đó trên Background #2 sẽ không có thành phần đồ họa khác (thay bằng màu đen) và ngược lại. Vị trí khuyết hình ảnh (màu đen) trên từng lớp Background giúp cho khi chồng 2 lớp Background lên nhau thì mọi thành phần trong khung cảnh sẽ hiện ra đầy đủ.

Thực chất, người ta chỉ cần dùng một lớp Background ở mode 1, chẳng hạn chỉ Background #1 hoặc chỉ Background #2 là đủ diễn tả mọi thành phần đồ họa trong một khung cảnh. Khá nhiều game SFC/SNES giải quyết vấn đề theo lối đơn giản này. Vậy thì tại sao ở đây Square Soft lại chọn tới 2 lớp Background cho một khung cảnh? Điều này liên quan tới hiệu ứng đổ bóng và ánh sáng được nhắc tới ở phần sau. 

Ta đã biết Background là thành phần đồ họa tĩnh, không thể chuyển động. Thế nhưng trong Seiken Densetsu 3, có không ít khung cảnh chuyển động. Chẳng hạn như quả lắc đồng hồ treo tường đu đưa qua lại, hay ngọn lửa bập bùng trong lò sưởi. Thật ra tất cả chúng đều là thành phần của Background tĩnh, chỉ là hình ảnh tương ứng của chúng trong tileset được cập nhật một cách định kỳ, sau một số frame nhất định. Chẳng hạn, từ frame 0 ~ frame 30 thì vẽ hình ảnh quả lắc ở vị trí bên trái, từ frame 31 ~ frame 60 thì vẽ hình ảnh quả lắc ở chính giữa, từ frame 61 ~ 90 thì vẽ hình ảnh quả lắc ở bên phải vào cùng một vị trí trong tileset sẽ khiến ta có cảm giác như quả lắc đang chuyển động. Đây là một thủ thuật thường thấy trong khá nhiều tựa game khác của Square Soft. 

Cách tạo ra hình ảnh quả lắc chuyển động

Nói về màu sắc

Bằng cách định kỳ cập nhật một phần hình ảnh của Background trong tileset, Square Soft đã tạo ra những thành phần Background chuyển động. Quả lắc đồng hồ và ngọn lửa bập bùng là một trong số đó. Nhưng ở ngọn lửa thì yếu tố chuyển động không phải là thứ duy nhất giúp cho cảnh nền trở nên sinh động, mà còn phải kể tới màu sắc. Square Soft vẽ rìa của bếp lửa, phía gần với ngọn lửa, bằng những pixel có màu gần với ngọn lửa. Tuy nhiên, màu sắc của những pixel này không cố định mà luôn biến đổi một cách định kỳ, sang những màu sắc tối hơn và sáng hơn một chút. Việc dành một phần palette màu để ghi những giá trị màu biến thiên giúp cho ta có cảm giác như ánh lửa bập bùng bên trong lò đang hắt ra phía rìa của bếp. Một chi tiết rất nhỏ nhặt rất khó thấy ở các game đương thời khác, nhưng nó mang lại điểm nhấn đặc biệt cho khung cảnh.

Màu sắc quanh rìa thành bếp biến đổi theo chu kỳ, mang lại cảm giác ánh lửa bập bùng

Kỹ thuật cập nhật màu sắc theo chu kỳ này còn được áp dụng để tạo ra cảm giác chuyển động cho Background, trong khi thực chất hình ảnh tileset đó là ảnh tĩnh. Chẳng hạn như hình ảnh ngọn nến bập bùng, chuyển động thực chất là do sự thay đổi màu sắc mang lại chứ không phải do chính hình ảnh đó thay đổi. Square Soft cũng dùng kỹ thuật này để tạo hiệu ứng mặt nước chuyển động mà không cần phải cập nhật hình ảnh của nước.

Màu sắc thay đổi một cách vi tế để tạo cảm giác ngọn lửa nến đang chuyển động

Thay đổi màu sắc để tạo ánh sáng lấp lánh trên cây thông

Màu sắc thay đổi cũng mang lại cảm giác như tileset đang thay đổi

Một ứng dụng khác của việc cập nhật màu sắc định kỳ là khái niệm thời gian trôi đi. Nếu là game RPG đương đại trên PS4 hay Switch thì người ta đã xa lạ với khái niệm ngày/đêm. Tuy nhiên, khái niệm này là một thứ cực kỳ hiếm gặp ở thời đại 16 bit trở về trước. Seiken Densetsu 3 là một trong số hai game SFC/SNES có khái niệm ngày/đêm mà người viết từng biết. Game còn lại là Tengai Makyō (Thiên ngoại Ma cảnh, game có dung lượng lớn nhất trong số game SFC/SNES từng được phát hành chính thức). Yếu tố thời gian có ảnh hưởng tới gameplay ở mức độ nhất định. Chẳng hạn như việc một số quái vật chỉ xuất hiện vào ban đêm, một số event chỉ diễn ra ban đêm. Nhưng ở đây tập trung vào mặt hình ảnh do yếu tố này mang lại.

Vào ban ngày, cảnh vật sáng sủa, nhà nhà đều tắt đèn. Khi màn đêm buông xuống thì khung cảnh trở nên tối hơn, ánh đèn từ cửa sổ mấy căn nhà bắt đầu hắt ra. Sự khác biệt giữa ngày và đêm cũng là một ứng dụng của kỹ thuật cập nhật màu sắc một cách định kỳ. Màu sắc của một khung cảnh không chỉ có ngày và đêm, mà còn có rất nhiều sắc thái trung gian giữa ngày và đêm. Mỗi lần chuyển đổi màu sắc thì màu của khung cảnh sau chỉ khác khung cảnh trước một ít, khiến cho cảm giác thời gian trôi đi rất tự nhiên.

Sự chuyển động của thời gian

Hiệu ứng đổ bóng và trong suốt

Hiệu ứng ngày/đêm còn có một điểm thú vị khác ngoài sự biến đổi màu sắc của khung cảnh. Đó là khi bạn bước vào một căn phòng có cửa sổ, nếu là thời khắc ban ngày thì sẽ thấy ánh sáng chiếu xuyên qua cửa sổ nhưng nếu vào ban đêm thì khung cửa chỉ có một màu đen.

Sự khác biệt giữa ngày với đêm

Những ai am hiểu về hệ máy SFC/SNES sẽ thấy rất ngạc nhiên và thú vị, không rõ Square Soft tạo ra nguồn sáng chiếu qua cửa sổ bằng cách nào. Bởi vì tính năng chiếu sáng, đổ bóng hoàn toàn không hiện diện trên hệ máy 16 bit này. Đồ họa của SFC/SNES là đồ họa kiểu mảng (tile). Mỗi một thành phần đồ họa được hiển thị trên màn hình là một tile, mỗi tile chỉ thể hiện được một số màu nhất định được chỉ định thông qua palette màu. Vậy thì hiệu ứng trong suốt được tạo ra bằng cách nào?

Thật ra thì máy SFC/SNES có khả năng cộng màu và trừ màu. Giả như có 2 màu sắc khác nhau chồng lên nhau, nếu lấy giá trị màu sắc của lớp trên trừ cho giá trị màu của lớp bên dưới thì sẽ tạo ra màu lai giữa 2 màu đó, nhưng tối hơn. Ngược lại, nếu cộng giá trị màu của 2 lớp màu thì sẽ tạo ra màu sáng hơn. Hầu hết game SFC/SNES khác sử dụng tính năng trừ màu sắc giữa các lớp Background để tạo hiệu ứng trong suốt. Nhưng cách tạo ra nguồn sáng của Square Soft ở đây có chút khác biệt.

Khái niệm cộng màu và trừ màu

Thật ra là không có một nguồn chiếu sáng thật sự nào trong khung cảnh bên trên, bởi vì máy SFC/SNES không có khả năng đó. Square Soft đã vẽ một tấm ván tại vị trí cửa sổ rồi lợi dụng kỹ thuật cộng màu, lợi dụng chế độ ưu tiên của các Background để biến tấm ván đó thành nguồn sáng vào ban ngày.

Ta đã biết là Background #1 có mức độ ưu tiên cao hơn Background #2, tức hình ảnh của Background #1 sẽ che khuất hình ảnh của Background #2 nếu chúng nằm chồng lên nhau. Chính vì vậy mà ở phần trước đã chỉ ra rằng tại một vị trí bất kỳ, nếu như Background #1 có hình ảnh thì Background #2 sẽ không có hình ảnh, và ngược lại. Điều này đảm bảo rằng mọi hình ảnh ở mọi lớp Background đều được hiển thị. Nhưng ở khung cảnh ánh sáng chiếu xuyên qua cửa sổ thì mọi việc không như vậy. Square Soft đã chọn Background #1 (nằm trên) để thể hiện khung cửa sổ và phần tường quanh nó. Còn Background #2 (nằm dưới) thể hiện một tấm ván ngay vị trí khung cửa. Có điều, mảng (tile) đồ họa thể hiện tấm ván được thiết lập chế độ ưu tiên, tức mặc dù nó thuộc Background #2, nằm bên dưới, bị che bởi Background bên trên nhưng nó không bị che hoàn toàn mà vẫn nổi lên, hòa với mảng đồ họa của Background #1. Màu sắc của tấm ván sẽ hòa với màu sắc của khung cửa. Trong khung cảnh này, Square Soft đã thiết lập chế độ cộng màu, tức là tại những vị trí mà Background #1 giao với (nằm đè lên) Background #2 thì màu sắc của bộ phận đó sẽ có giá trị bằng tổng giá trị màu tại vị trí tương ứng của 2 lớp Background. Điều này làm cho màu sắc của tấm ván ở Background #2 trở nên sáng hơn, có cảm giác như đi xuyên qua bức tường và khung cửa của Background #1.

Nếu vậy thì vào ban đêm. làm sao ngăn được ánh sáng từ bên ngoài lọt qua khung cửa? Câu trả lời rất đơn giản. Vào ban đêm, Square Soft đổi màu của tấm ván thành màu đen. Màu đen có giá trị là 00, nên khi được cộng với màu sắc của Background #1 thì giá trị màu vẫn chính là màu vốn có của Background #1. Vì vậy nên vào khung cảnh ban đêm, ta không thấy hiệu ứng ánh sáng xuyên qua cửa sổ.

Phân tích cơ chế của nguồn sáng (ban ngày)

Cùng cơ chế, nhưng ban đêm thì không còn nguồn sáng

Đó là cơ chế hoạt động của nguồn chiếu sáng trong thời đại 16 bit. Vậy còn hiệu ứng đổ bóng là như thế nào?

Hãy nhìn kỹ cảnh lò sưởi dưới đây. Trong phần trước ta đã biết Square Soft cập nhật màu sắc theo chu kỳ để tạo hiệu ứng ánh lửa bập bùng hắt ra chung quanh lò. Nhưng điểm thú vị hơn nằm ở tấm thảm phía trước lò. Ta có thể thấy ánh lửa cũng đổ bóng lên trên tấm thảm này. Đây là một chi tiết cực kỳ khó tái hiện nếu chấm màu từng pixel trên tấm thảm.

Bóng của ngọn lửa hắt lên tấm thảm được tạo ra bằng cách nào?

Cách giải quyết vấn đề của Square ở đây cũng tương tự như cách họ biến tấm ván thành nguồn sáng. Tấm thảm được vẽ ở Background #1 nên nó nằm bên trên, nhưng không được thiết lập chế độ ưu tiên. Còn ở Background #2, người ta vẽ một vùng màu giống với màu lửa ở phía trước bếp lò. Vùng màu này tuy nằm bên dưới nhưng được thiết lập chế độ ưu tiên, nên nó vẫn nổi lên và hòa vào tấm thảm ở Background #1. Khung cảnh này cũng được áp dụng chế độ cộng màu, nên giá trị màu của vùng giao thoa giữa tấm thảm với vùng màu lửa bên dưới chính là tổng giá trị màu của tấm thảm và giá trị màu của vùng màu bên dưới. Điều này mang lại cảm giác như ngọn lửa đang hắt bóng xuống tấm thảm.

Cơ chế đổ bóng của lửa

Kỹ thuật này còn được áp dụng để tạo bóng đổ cho nhà cửa. Chỉ có một điểm khác biệt duy nhất là với bóng đổ của nhà cửa thì sau khi cộng giá trị màu của 2 lớp Background, giá trị này được chia đôi để tạo thành cái bóng nhạt hơn.

Cách tạo ra bóng đổ của căn nhà

Trên đây là một vài phân tích nhỏ cho thấy khả năng kỹ thuật của Square Soft để thấy được vì sao Seiken Densetsu 3 được ca tụng là một kiệt tác kỹ thuật đương thời. Square Soft thật sự hiểu rõ phần cứng mà họ đang làm việc với, cho nên đã đẩy năng lực xử lý của máy SFC/SNES đến mức giới hạn qua tựa game này.