

Cách đây 35 năm, máy Nintendo Entertainment System của Nhật Bản ra mắt ở Mỹ. Gần 4 thập kỷ qua, công nghệ đồ họa và phần cứng game đã thay đổi nhiều. Dám đoán, những kỹ sư tài năng sáng tạo ra máy 4 nút thời đó không thể tưởng tượng ngành game phát triển đến như vậy. Từ game trực tuyến qua internet đến thực tế ảo, trải nghiệm game ngày nay đã khác xa so với ngày xưa, khi phải ngồi trước màn hình TV chơi Mario để cứu công chúa.

Tuy nhiên, vẫn có những giá trị bền vững theo thời gian. Đó chính là phong cách đồ họa 8-bit với màu sắc và hình ảnh đơn giản nhất có thể, dù trò chơi hiện đại với đồ họa retro không liên quan gì tới hạn chế về phần cứng của thời đại console 8-bit. Shovel Knight, Stardew Valley, hoặc Undertale là những tựa game mang phong cách 8-bit. Nhưng cuối cùng, tất cả những tựa game này đều phát triển sâu sắc và ấn tượng hơn rất nhiều so với những gì các nhà làm game hơn 4 thập kỷ trước có thể làm được, nhờ vào hạn chế về phần cứng.


Dưới lòng đất
Khi NES xuất hiện, các tác phẩm đã trở thành kinh điển, như Siêu Mario Bros, Castlevania, Metroid, đều phải chọn phong cách đồ họa vuông vức do hạn chế phần cứng, không phải vì sở thích. Tất cả đều có thể giải thích từ cụm từ 8-bit trong tiêu đề bài viết. Đó là khái niệm mô tả khả năng của chip xử lý trung tâm trong những chiếc máy như NES và Atari 7800, chứ không phải về khả năng xử lý đồ họa ban đầu.

Trong lĩnh vực tin học cơ bản, 1 bit biểu diễn một giá trị nhị phân, là đơn vị cơ bản nhất mà máy tính của con người có thể xử lý (chưa kể đến qubit trong máy tính lượng tử đâu, quá xa vời). Một bit có thể mang hai giá trị, 1 hoặc 0, đúng hoặc sai, bật hoặc tắt, tùy theo ngữ cảnh. Về cơ bản, máy tính của chúng ta xử lý dữ liệu dưới dạng chuỗi nhị phân như vậy, để di chuyển, lưu trữ hoặc chỉnh sửa dữ liệu.

Ý tưởng về việc biến dữ liệu thành bit đã được phát minh từ rất sớm, vào năm 1732, bởi hai nhà toán học Basile Bouchon và Jean-Baptiste Falcon. Họ sử dụng các tấm giấy đục lỗ như là “thuật toán” để tự động điều khiển các máy dệt. Sau đó, khái niệm “bit” được nhà toán học Claude E. Shannon sử dụng lần đầu tiên trong tài liệu nghiên cứu mang tính cách mạng của mình, Lý thuyết Toán học về Truyền thông, một khái niệm đã thay đổi cách con người truyền dẫn dữ liệu.


Quay lại với máy NES, so với các console hiện đại, máy của Nintendo có khả năng lưu trữ dữ liệu thấp hơn rất nhiều. Điều này dẫn đến việc các nhà phát triển game phải làm việc trong không gian sáng tạo hẹp hơn, với các hạn chế về hiển thị trên màn hình. Ví dụ như số lượng màu có thể hiển thị trong một màn chơi, hoặc số lượng nhân vật khác nhau có thể hiển thị cùng lúc,…
Trong The Legend of Zelda phần đầu tiên, Link không thể có hơn 255 rupee, vì 256 (0 – 255) là giới hạn của dữ liệu 8-bit. Tương tự, nếu bạn đạt đến màn thứ 256 của Pacman, trò chơi sẽ bị crash và tạo ra một màn chơi trông như bị lỗi. Điều này được gọi là “kill screen”, khi phần mềm gặp sự cố.

Tuy nhiên, chính đồ họa 8-bit cũng đã tạo ra những nhân vật vĩ đại trong làng game, như quả bóng hồng Kirby hay anh chàng robot Rockman chẳng hạn.

Bộ xử lý hình ảnh của NES chia đồ họa trên TV thành hai lớp: background và sprite. Lớp background bao gồm 256 ô vuông 8x8 pixel, với giới hạn tối đa 256 màu độc lập. Lớp sprite có những mô hình nhân vật đầy răng cưa, với quy luật xử lý riêng.
Tất cả những hạn chế về mặt công nghệ này đã tạo nên thời kỳ đồ họa 8-bit. Ví dụ như con trùm khổng lồ trong Mega Man 2 thuộc lớp background, không đủ chỗ xử lý sprite lớn cỡ đó. Trong khi đó, Batman Return of the Joker sử dụng lớp background di chuyển để mô phỏng quá trình chuyển động của nhân vật.

Một ví dụ rất hay là video clip dưới đây của nhà phát triển Morphcat Games. Họ mô tả cách viết một trò chơi phức tạp với dung lượng chỉ 40 KB, giới hạn của chip RAM bên trong máy NES. Để so sánh, 40 KB chỉ bằng 2 giây âm thanh chuẩn mp3. Tất cả những mánh rất độc đáo này đều được khai thác.
Trong số 40 KB đó, có 32KB code và dữ liệu, chỉ còn lại 8KB dành cho dữ liệu đồ họa. Mỗi ô sprite là một hình vuông 8x8 pixel, chỉ sử dụng 3 màu sắc khác nhau. Mỗi lần màn hình quét, chỉ có 8 sprite có thể hiển thị, sprite nào thừa sẽ biến mất. Với các trò chơi có nhiều sprite phức tạp, các nhà phát triển sẽ phải áp dụng hiệu ứng flickering để hiển thị các mô hình nhân vật lần lượt.

Hạn chế tiếp theo là từ kích thước 256 ô sprite. Để có nhiều cử động cho nhân vật, ta phải gộp chung những ô sprite giống nhau để tiết kiệm dung lượng bộ nhớ.

Các meta sprite sẽ được chia thành nhiều phần, may mắn là NES cho phép lật ngang lật dọc sprite tùy ý, giúp quá trình tối ưu mất thời gian nhưng đáng giá.




Tiếp theo là thiết kế background. Những ô background trùng lặp sẽ được tái sử dụng, và đôi khi màn chơi được chia làm đôi để tối ưu dữ liệu và tạo ra màn chơi đa dạng hơn.




Chỉ là tối ưu dữ liệu đồ họa trong 8 KB, còn viết mã lập trình để game hoạt động lại là một câu chuyện phức tạp khác.
Đến giữa những năm 90, các nhà phát triển game đã thuộc lòng mọi chiêu trò để phát triển game 8-bit, đóng góp vào việc tạo ra những thế giới ảo đầy màu sắc như trong Kirby’s Adventure hoặc Excitebike. Còn những trò chơi 8-bit hiện đại chỉ sử dụng ý tưởng sáng tạo để khai thác hình ảnh, không thể nào nén vào dung lượng chip ROM của một chiếc băng NES. Ngay cả khi có thể nén được, phần cứng cũng không thể xử lý được.
Theo Inverse