VietTechiesHIỂU CÔNG NGHỆ. MỞ GÓC NHÌN.
☰ Chuyên mục

Carol Shaw chỉ có 4 KB cho River Raid. Vì vậy bà tạo dòng sông bằng thuật toán thay vì lưu sẵn.

06/10/2026 · VietTechies · Biên tập

Carol Shaw cầm hộp River Raid bên trái, cạnh đó là sketch tối giản về cách generate dòng sông.


Carol Shaw chỉ có 4 kilobyte ROM cho River Raid.

Không đủ chỗ để lưu cả một dòng sông dài.

Vậy nên bà ngừng cố lưu nó.

Thay vào đó, bà lưu các quy tắc để tạo ra nó.

Giới hạn trở thành khung cảnh của game.

Atari 2600 chỉ mạnh nếu bạn thực sự hiểu giới hạn của nó

Chiếc máy chơi game này không được thiết kế như hệ thống đồ họa hiện đại.

Programmer phải làm việc rất sát hardware.

Bộ nhớ cực kỳ ít ỏi.

Đồ họa bị giới hạn bởi từng dòng quét của màn hình TV.

Lập trình viên thường phác thảo màn hình trên giấy ô vuông rồi tự chuyển thiết kế thành mã và dữ liệu.

Shaw đã học điện tử và lập trình trước khi vào ngành game.

Tại Atari, bà trở thành một trong những phụ nữ đầu tiên làm nghề thiết kế và lập trình trò chơi điện tử.

River Raid bắt đầu từ bài toán làm game bắn súng cuộn màn hình

Sau khi rời Atari rồi gia nhập Activision, Shaw muốn làm một game hành động.

Ban đầu, bà nghĩ tới bối cảnh không gian.

Nhưng game bắn súng không gian đã có quá nhiều.

Thế là bà tìm hiểu phần cứng Atari 2600 thực sự làm tốt điều gì.

Cuộn ngang sẽ trông giật cục vì cách đồ họa vùng chơi hoạt động.

Cuộn dọc có thể mượt hơn, từng dòng quét TV một.

Đặc điểm phần cứng ấy quyết định hướng di chuyển của game.

Rồi giới hạn hiển thị gợi ra một dòng sông

Phần cứng Atari 2600 cho phép phản chiếu một nửa vùng chơi sang nửa còn lại khá thuận tiện.

Shaw thử vẽ hình đối xứng trên giấy ô vuông.

Khoảng trống ở giữa trông giống mặt nước nằm giữa hai bờ.

Thế là xuất hiện ý tưởng về dòng sông.

Một cách tận dụng phần cứng bỗng không còn là giải pháp chấp nhận đánh đổi.

Nó trở thành ý tưởng hình ảnh chủ đạo.

Người chơi sẽ lái máy bay phản lực dọc dòng sông, tránh hai bờ, bắn kẻ địch và quản lý nhiên liệu.

Nhưng bà vẫn không thể lưu toàn bộ khung cảnh

Một màn chơi cuộn dài thường cần rất nhiều dữ liệu bản đồ.

River Raid chỉ có khoảng 4 KB ROM để chứa mã chương trình, đồ họa và các quy tắc hoạt động.

Shaw chọn lưu cách chuyển đổi giữa các độ rộng của dòng sông, thay vì một bản đồ cố định khổng lồ.

Dòng sông được chia thành từng đoạn.

Một bộ sinh số giả ngẫu nhiên quyết định độ rộng tiếp theo.

Nhờ dùng seed cố định — giá trị khởi tạo cho bộ sinh số — cùng một chuỗi có thể được tái tạo ở mỗi lần chơi.

Game tạo cảm giác đa dạng và kéo dài mà không phải lưu cả một thế giới khổng lồ.

Procedural generation giải quyết bài toán bộ nhớ trước khi trở thành xu hướng thiết kế

Ngày nay, procedural generation — tạo nội dung bằng thuật toán — thường gắn với thế giới game rộng lớn, roguelike và nội dung gần như vô tận.

Trong River Raid, lý do cơ bản hơn nhiều.

Không đủ memory.

Tạo khung cảnh thay vì lưu sẵn khung cảnh.

Sự khác biệt này rất đáng chú ý.

Nhiều ý tưởng kỹ thuật tinh tế ban đầu chỉ là cách xoay xở để làm được việc.

Sau này, khi phần cứng mạnh hơn, kỹ thuật ấy mới trở thành một lựa chọn sáng tạo.

Mã chương trình gần như không có byte thừa

Shaw sau này kể chương trình được nén chặt đến mức nào.

Có lúc bà cho bảng màu dùng chung vùng nhớ với phần đầu một chương trình con, tận dụng mã thao tác của lệnh (opcode) làm giá trị màu.

Theo tiêu chuẩn hiện đại, cách làm này có thể bị phản đối ngay khi code review.

Trong một băng game 4 KB, từng byte là tài nguyên hữu hạn.

Giải pháp đẹp trước hết phải khiến game vừa với bộ nhớ.

Giới hạn phần cứng cũng định hình cách chơi

Shaw cho phép người chơi tăng hoặc giảm tốc độ cuộn màn hình.

Điều đó thay đổi nhịp điệu của game.

Bay nhanh hơn, chấp nhận nhiều rủi ro hơn.

Chậm lại để tiếp nhiên liệu.

Dòng sông dần hẹp lại.

Việc quản lý nhiên liệu cũng khắt khe hơn.

Độ khó không phải một hệ thống riêng được đặt chồng lên game.

Nó hình thành từ chính quy tắc tạo dòng sông và di chuyển.

Kết quả bán hơn một triệu cartridge

Activision phát hành River Raid cho Atari 2600 vào năm 1982.

The Strong National Museum of Play mô tả đây là game nổi tiếng nhất của Shaw và ghi nhận hơn một triệu băng được bán ra.

Nó trở thành một dấu ấn của thời kỳ máy chơi game gia đình.

Một số phiên bản còn in tên Shaw trên hộp — sự ghi nhận cá nhân khá hiếm với lập trình viên game khi ấy.

Giá trị của câu chuyện không nằm ở hoài niệm

Nó nằm ở cách giới hạn tạo nên sản phẩm.

Cuộn dọc bắt nguồn từ giới hạn hiển thị.

Dòng sông bắt nguồn từ đồ họa đối xứng.

Khung cảnh dài bắt nguồn từ thuật toán giả ngẫu nhiên.

Cấu trúc mã bắt nguồn từ dung lượng ROM ít ỏi.

Đây không phải những quyết định “động não sáng tạo” tách rời nhau.

Chúng là lời giải kỹ thuật, rồi trở thành bản sắc của game.

Đó là cách làm ngược với thiết kế như thể tài nguyên vô hạn

Các nhóm phát triển hiện đại thường coi giới hạn là sự bất tiện tạm thời.

Tối ưu sau.

Thêm dung lượng lưu trữ.

Thêm năng lực tính toán.

Thêm một thư viện phụ thuộc.

Nhưng giới hạn cứng có thể buộc cả nhóm tìm ra trải nghiệm cốt lõi.

Nếu không thể lưu bản đồ, có lẽ nên dùng thuật toán tạo nó.

Nếu không thể vẽ mọi thứ, có lẽ ngôn ngữ hình ảnh nên đơn giản hơn.

Nếu không thể hỗ trợ mọi tính năng, có lẽ cơ chế chơi còn lại sẽ được trau chuốt hơn.

Giới hạn có giá trị khi bạn thiết kế dựa vào nó, thay vì tìm cách né tránh

River Raid đáng nhớ vì phần cứng không chỉ giới hạn game.

Nó góp phần định hình game.

Shaw không làm một game bắn súng cuộn màn hình thông thường rồi cố nhét vào 4 KB.

Bà để cỗ máy gợi cho mình kiểu game mà nó có thể hỗ trợ tốt.

Kết quả khác biệt hơn chính nhờ giới hạn ấy.

Giới hạn nào trong sản phẩm hiện tại bạn vẫn cố chống lại, trong khi nó có thể trở thành cơ chế khiến sản phẩm độc đáo hơn?

Đọc bằng ngôn ngữ khác: English · Español · Deutsch · Français · Português (Brasil) · Tiếng Việt

Nguồn