Lý thuyết & Ứng dụng Camera trong Game cuộn ngang
- Hùng Vũ
- May 5, 2019
- 38 min read
CẢNH BÁO: bài viết có chứa nhiều ảnh GIF, ngốn nhiều mobile data.

Bài viết gốc Scroll Back - The Theory and Practice of Cameras in Side-Scrollers bởi Itay Keren, giám đốc studio Untame, nhà phát triển tựa game Mushroom 11. Dịch bởi Canh Minh Bui.
"Bài viết này là bản sửa lại của một bài phát biểu của tôi ở Independent Games Summit tại GDC 2015. Bài viết bao gồm một số kiến thức bên lề của game cuộn cảnh 2D (2D sidescroller) cùng với vô số hoài niệm về game cổ điển. Hy vọng các bạn thấy bài viết hữu ích và thú vị!"
Tổng quan
Trong quá trình làm Mushroom 11, tôi đã phải đối mặt với nhiều thách thức về thiết kế và công nghệ khác nhau. Tôi không trông mong vào việc tìm ra các tài liệu tham khảo cho các vấn đề như hình dạng thay đổi linh hoạt hoặc vertex animation, nhưng tôi khá ngạc nhiên khi chuyển động của carema, một chủ đề có hơn 30 năm lịch sử trong ngành game, lại hầu như không được thảo luận tới.
Tôi quyết định sẽ làm một cuộc hành trình xuyên suốt lịch sử game 2D, ghi lại những thách thức, cách tiếp cận và cách thức cải tiến các giải pháp của họ. Ngoài ra, vì thiếu các thuật ngữ thích hợp cho nhiều giải pháp khác nhau, tôi sẽ tập hợp và phân loại chúng thành các nhóm, cung cấp bảng chú giải của tôi, chí ít là với mục đích để cho cá nhân tôi tham khảo.
Cuộn cảnh
Cuộn cảnh hoặc Lia máy là phương pháp để hiển thị một khung cảnh lớn trong giới hạn nhỏ của một màn hình. Có rất nhiều khó khăn tiềm tàng với việc cuộn cảnh, như là chọn những gì người chơi cần xem, những gì nhà thiết kế muốn người chơi tập trung vào, và cách để làm điều đó thật trơn tru và dễ chịu cho người chơi.
Mặc dù tôi sẽ tập trung vào các hệ thống camera 2D, nhiều khái niệm chung này cũng áp dụng cho 3D.
Thần kinh học cơ bản
Trước khi chúng ta tìm hiểu về game, hãy nói qua một chút về thần kinh học của việc cuộn cảnh để có thể hiểu rõ hơn tầm nhìn và nhận thức của chúng ta. Bằng cách này, chúng ta có thể biết khi nào việc cuộn cảnh có vấn đề.

Hố lõm trung tâm (fovea-centralis) là thụ thể bên trong nhãn cầu của chúng ta giúp cho tầm nhìn trung tâm được sắc nét và chi tiết. Các vành đai thụ thể thứ hai và thứ ba, parafovea và perifovea, có khả năng vượt trội trong việc đơn giản hóa hình ảnh và chuyển động thành những khuôn mẫu cho phép các sự thay đổi nhanh chóng được nhận ra, bao gồm các hình dạng quen thuộc và biến đổi về tốc độ hoặc hướng chuyển động.
Hình ảnh đầu vào này dùng đường dẫn nhanh tới thẳng Hạch hạnh nhân, đưa ra phản hồi tức thời trong khi phần vỏ não xử lý hình ảnh đang giải mã đầu vào. Rèn luyện bộ não của bạn, đặc biệt là bằng cách gắn các sự thay đổi tầm nhìn ngoại vi vào các điều khiển cơ bắp sẽ có tác dụng theo thời gian.

Hệ thống tiền đình nằm ở phần tai trong của chúng ta chịu trách nhiệm duy trì thăng bằng và cung cấp định hướng trong không gian. Các tín hiệu mà nó gửi cho phép cơ thể duy trì thăng bằng, trong khi vẫn tập trung thị giác vào các chi tiết cụ thể.
Một số người như tôi, nếu cố gắng đọc trên xe, việc gia tốc thiếu sự đồng bộ với phản hồi trực quan tương ứng có thể dẫn đến buồn nôn và chóng mặt.
Điều ngược lại cũng đúng, khi vùng perifovea nhận được một sự thay đổi trong khung cảnh, nó chờ một phản hồi tương ứng từ hệ thống tiền đình. Khi không có phản hồi (giả dụ bạn ngồi vững trước máy tính), sẽ có hiệu ứng buồn nôn chóng mặt tương tự.
Vì vậy, các tín hiệu cảm giác mâu thuẫn nhau (thị giác và tiền đình) có thể dẫn đến cảm giác khó chịu và buồn nôn, và dù nó tệ hơn trong 3D (đặc biệt là VR), nó vẫn có ảnh hưởng mạnh trong các game 2D.
Sự chú ý, tính tương tác và độ thoải mái
Để giúp hiểu các vấn đề trong cuộn cảnh, tôi đã phân loại các yếu tố của nó thành ba thách thức chính:

Sự chú ý (Attention): Sử dụng camera để cung cấp đủ các thông tin và phản hồi về game (những gì người chơi cần thấy)
Tương tác (Interaction): Cung cấp cho người chơi sự kiểm soát rõ ràng về những thứ hiện lên, khiến việc thay đổi khung cảnh có thể đoán trước và gắn chặt với các nút điều khiển (những gì người chơi muốn thấy)
Độ thoải mái (Comfort): Làm mượt chuyển động và bối cảnh hóa việc thay đổi khung cảnh (cách để trung hòa những nhu cầu trên một cách trơn tru và dễ chịu)
Hoài niệm game cuộn cảnh

Được rồi, giờ thì chúng ta hãy thử quay trở lại những năm 1980, khi các nhà thiết kế đang cố phát minh ra các phương án hoàn toàn mới với những hạn chế kỹ thuật khó có thể tưởng tượng nổi ở thời điểm 30 năm sau.
Bạn cũng sẽ thấy nhiều mối tương quan với các game indie nổi bật chủ yếu trong 10 năm trở lại đây, có xu hướng luôn cho thấy sự đổi mới, sự chú ý và sự chăm sóc đáng khâm phục từ các nhà thiết kế độc lập, kể cả với hoạt động của camera.
Theo sát hành động
Giữ sự chú ý vào đối tượng điều khiển
Hãy bắt đầu với những thứ cơ bản. Nói chung thì, người chơi có quyền kiểm soát hoàn toàn nhân vật chính nên chắc chắn là sự chú ý phải được hướng vào nhân vật thông qua việc theo sát nó bằng camera.
Đầu những năm 80, cuộn cảnh là một nhiệm vụ khó khăn và nhà phát triển phải đối mặt với những hạn chế về CPU, dung lượng và phân khúc bộ nhớ. Ngay cả với những thách thức đó, một số game cuộn cảnh ngang tuyệt vời đã được phát hành, tinh tế khắc phục những hạn chế này. Tuy nhiên, trong nhiều trường hợp, chuyển động đều được thông cảm ở dạng tối giản hoặc phân giải thấp.
Cần chú ý là vào năm 1980, một game như Rally-X đã có thể khắc phục những hạn chế về công nghệ và trình làng một camera trục kép thực sự. Nó sử dụng cơ chế khóa vị trí mặc định, giữ xe luôn ở tâm và chuyển động của camera hoàn toàn có thể dự đoán được.

Position-locking (Khóa vị trí) – camera được khóa ở vị trí người chơi.
Chú ý: Từ này là do tôi tự đặt ra cho các tài liệu và công việc của tôi, và sẽ được sử dụng trong suốt bài này. Nhưng cũng sẽ rất tuyệt nếu ai đó thấy nó hữu ích, hoặc cải tiến, và phản hồi lại cho tôi.
Kung-Fu Master là một ví dụ khác cho position-locking, được thiết kế bởi Takashi Nishiyama, người đã làm ra Moon Patrol, và sau đó là Street Fighter.
Game này sử dụng một cơ chế cơ bản khác mà tôi gọi là khóa rìa (edge-snapping), chỉ đơn giản là đưa camera vào rìa của một màn, cho phép nhân vật được di chuyển khỏi vị trí cố định.

Position-locking [edge-snapping* - đặt một rìa cố định cho camera]
*Edge-snapping quá phổ biến khi nói tới nhiều game, nên từ giờ sẽ tạm bỏ qua.
Position-locking tuy khá là cơ bản nhưng vẫn luôn hữu ích. Đối với một game phiêu lưu sáng tạo như Terraria, với một nhân vật khá nhỏ so với màn hình với những cú nhảy ngắn, position-locking hoạt động rất tốt, cung cấp nhiều tầm nhìn theo mọi hướng.

Position-locking
Hạn chế chuyển động camera
Tránh các cú bật nhảy khó hiểu và khó đoán
Làm thế nào để tránh dịch chuyển camera nếu không thực sự cần thiết? 30 năm trước, việc cuộn cảnh có một số vấn đề: rất ngốn CPU, bởi nó cần một phần l. Và ngay cả khi thành công, lượng pixel lớn cùng lúc khiến cho việc cuộn cảnh bị giật. Cách tiếp cận tốt nhất là cho phép cuộn cảnh ở một mức tối thiểu. Một cách xử lý là cho nhân vật di chuyển trong một cửa sổ nhất định và chỉ cuộn cảnh khi đẩy vào các cạnh của cửa sổ đó.
Jump Bug được coi là game nhảy vách (platformer) đầu tiên, mặc dù chuẩn ra mà nói thì người chơi sẽ tự động nhảy liên tục và việc điều khiển bị giới hạn ở độ cao nhảy cũng như chuyển động trái/phải. Hầu hết game dạng này có camera tự động di chuyển, buộc người chơi phải theo kịp trong khi tránh chướng ngại vật, tương tự như nhiều game cuộn cảnh khác cùng thời.

Camera-window (Cửa sổ camera) – đẩy camera đi khi người chơi chạm vào rìa của cửa sổ.
Kỹ thuật camera-window hoàn thiện đã giải quyết một vấn đề mà nhiều nhà thiết kế thậm chí còn chẳng biết có tồn tại và đặt ra tiêu chuẩn cho hàng ngàn platformer noi theo. Kỹ thuật camera-window cũng tồn đọng một số vấn đề, như có rất ít góc nhìn về những gì phí trước hoặc bên trên khi người chơi nhảy về phía cuối màn.
Một trong những game yêu thích của tôi là Rastan Saga, đã mang tới chuyển động theo 2 trục với nhiều cách khác nhau. Đó cũng là một trong những game đầu tiên thực sự phát triển mối quan hệ giữa camera và cơ học. Camera-window này cao bằng một bước nhảy thường, do đó nhảy không khiến camera chuyển động dọc trừ khi Rastan nhảy tiến/lùi trong cửa sổ. Điều này loại bỏ việc phải giật camera liên tục.
Một lỗ hổng lớn với phương pháp này là kẻ địch từ phía trên ít được chú ý hơn, đặc biệt là nếu Rastan đã di chuyển theo chiều dọc trong cửa sổ. Ngoài ra thì di chuyển sang trái – vốn rất nhiều trong màn lâu đài – thực sự khó chịu vì nó để lại một tầm nhìn rất hẹp.

Camera-window
Kỹ thuật camera-window vẫn được sử dụng trong các game hiện đại. Như trong FEZ, camera-window ngang được duy trì thông qua dịch chuyển hướng nhìn và trên thực tế, trục dịch chuyển được chọn để giữ nhân vật nằm trong cửa sổ. Sự lựa chọn camera-window trong FEZ khác xa thông thường, đại diện cho giải pháp camera lý tưởng cho các cơ chế game độc đáo mà chúng ta sẽ xem sau. Theo chiều dọc, camera giữ dạng position-locking đơn giản, được làm mượt chuyển động sử dụng lerp, thứ chúng ta sẽ bàn sau.

Camera-window* (ngang) - Được sử dụng cả khi thay đổi góc nhìn
Position-locking (dọc)
Lerp-smoothing
Region-based-anchors
Manual-control* - Thanh analog phải (tay cầm) sẽ cho lia camera nhiều hơn
Chú ý: phần gạch chân chỉ các kỹ thuật camera sẽ được giải thích ở phần sau.
Bắt camera
Kéo camera về vị trí gốc
Chúng ta đã thấy cách sử dụng camera-window để giảm chuyển động của camera, nhưng như trong Jump Bug và Rastan, vẫn có một vấn đề là đôi khi người chơi sẽ phải chủ động nhảy lên hoặc cúi xuống để điều khiển cho camera trôi về hướng mà họ mong muốn. Sau đây là vài cách để khắc phục.
Trong Shinobi – game cổ điển yêu thích của tôi – có một số bước nhảy rất cao so với các platformer khác. Các nhà thiết kế nghĩ ra một hệ thống camera độc đáo: do theo chiều dọc có nhiều vách để nhân vật nhảy lên, Shinobi sử dụng camera-window dọc rất rộng. Sau khi nhảy, cửa sổ kéo camera về ngay lập tức. Vấn đề với cửa sổ cao (hoặc rộng) là sau một cú nhảy nhỏ, nhân vật có thể bị kẹt ở phần trên cửa sổ với góc nhìn phía trên đầu là rất ít, như trong Rastan Saga. Shinobi chỉ đơn giản là liên tục kéo camera một cách từ từ về vị trí của Ninja, tập trung vào hành động và trong hầu hết trường hợp giữ cho chuyển động tức thời của camera ở mức tối thiểu.

Position-snapping (Bắt vị trí; dọc) – liên tục giảm thiểu việc dồn góc cửa sổ bằng cách kéo dần trọng tâm vào người chơi
Camera-window (dọc)
Position-locking (ngang)
Static-forward-focus
Một trong nhiều tính năng mà Super Mario World mới có là bắt cảnh theo vách (platform-snapping). Giống kiểu camera-window, camera sẽ đứng yên cho đến khi nhân vật chạm vào cạnh cửa sổ. Nhưng do mario chắc chắn sẽ hạ cánh trên một vách nên ngay sau đó, camera sẽ ngay lập tức bắt tới vị trí của Mario.

Region-based-anchors
Platform-snapping (Bắt camera theo platform)* - camera bắt cảnh vào người chơi chỉ khi đứng trên một vách
Camera-window* (dọc) * Chỉ khi nào có thể dùng
Dual-forward-focus* - Chạm tới ngưỡng chặn
Manual-control* (ngang) - Tay cầm cho lia rộng hơn
(Đây là lần đầu tiên tôi đề cập đến tác phẩm của Miyamoto và chắc chắn chưa là lần cuối cùng. Nhận thức và sự chú ý đến từng chi tiết nhỏ là điều thực sự tạo nên một nhà thiết kế vĩ đại, chứ phải không chỉ cần cơ chế game thông minh.)
Bạn có thể thấy ý tưởng tương tự trong game Rayman đầu tiên. Lề trên màn hình chính là lề trên của camera-window. Để ý cách camera đứng yên khi Rayman nhảy, nhưng nhẹ nhàng bắt cảnh khi cu cậu chạm đất. Đây là một giải pháp rất thông minh do camera-window chỉ cao hơn bước nhảy của Rayman, cho thấy hệ thống camera là một phần không thể thiếu trong thiết kế game.

Platform-snapping*
Camera-window* (dọc)
Region-based-anchors
Dual-forward-focus*
Lerp-smoothing* - Chỉ khi nào có thể dùng
Kỹ thuật này vẫn hiệu quả cho tới nay, cho phép các nhà thiết kế giữ cho camera chạy mượt trong khi nhảy và chỉ căn chỉnh khi nhảy xong hoặc khi chạm vào camera-window. Lưu ý rằng platform-snapping chỉ hiệu quả khi người chơi có thể đứng trên vách. Trong các trường hợp khác, như nhân vật Jetpack trong Awesomenauts, người chơi chỉ sử dụng camera-window dọc.

Camera-window (dọc)
Platform-snapping
Position-locking (ngang)
Làm mượt chuyển động (smoothing)
Tránh việc thay đổi tốc độ và hướng đi bất chợt của camera
Chúng ta đã nói về vai trò của tầm nhìn ngoại vi và tác động tới sự thoải mái về thị giác. Thời trước, với một lượng pixel lớn cùng lúc, ngay cả việc làm mượt chuyển động bằng cách thêm khung hình nối (tweening) đơn giản cũng sẽ gây lag do các pixel lớn.

Vậy làm thế nào để làm mượt chuyển động của camera, trong khi bị giới hạn bởi một mạng lưới các pixel lớn cứng nhắc và thô sơ? Hiện tại, chúng ta có thể thiết kế các tác phẩm nghệ thuật pixel (pixel art) đẹp mắt, và sau đó chuyển vào mảng pixel mới nét hơn cả bản gốc. Và nếu bạn không cần một hình ảnh pixel quá nét, bạn có thể sử dụng các công cụ cắt pixel trong hầu hết các engine hiện đại.
Làm mượt (giả) vật lý
Giả vật lý có thể hỗ trợ việc smoothing một camera được position-locking (và bạn không sai khi nói rằng bất kỳ cơ chế vật lý nào trong game đều là giả).
Pac-Land được cho là platformer hiện đại đầu tiên. Nó có nhiều tính chất để được đưa vào thể loại này, chẳng hạn như nhảy lên trên vách, né kẻ địch và ăn tiền thưởng. Với smoothing, tốc độ của Pac-man từ 0 pixel trên mỗi khung hình lên 1, 2, 3, rồi đến tốc độ tối đa, sau đó về 0 khi dừng lại. Với camera position-locking tại nhân vật, kết quả đem lại rất mượt và rõ ràng. Pac-Land đã tránh được thử thách thực sự là di chuyển camera theo chiều dọc, do sự tăng giảm tốc độ nhanh khi nhảy và tiếp đất.

Position-locking
Static-forward-focus
Shigeru Miyamoto
Tôi muốn bày tỏ sự tôn trọng tới Shigeru Miyamoto và lấy ví dụ bởi một số tác phẩm đầu tay của ông. Những đóng góp vô giá của ông cho ngành công nghiệp game, sự để tâm tới các chi tiết nhỏ nhất trong thiết kế game là không thể phủ nhận.
Năm 1984, ông bắt đầu thử nghiệm việc cuộn cảnh bằng cách thiết kế 2 game kiểu đó theo những cách hoàn toàn khác nhau. Trong cả 2 game này, người chơi có rất ít quyền kiểm soát việc cuộn cảnh. Nó giống như một căn phòng với 4 bức tường tự dịch chuyển.

Excitebike có chuyển động cuộn cảnh rất hiện đại, tác động bởi tốc độ của xe đạp. Cuộn cảnh đã đủ mượt, nhưng không thực sự có tác dụng trong game.
Devil World thì có đầy đủ mọi thứ để làm với việc cuộn cảnh. Trong game kiểu Pac-Man này, bạn là một con rồng sùng đạo chiến đấu với quỷ dữ, di chuyển bị giới hạn trong việc thay đổi hướng cuộn cảnh, đẩy dần đến gần phần biên. Nó cũng là game duy nhất của Miyamoto cấm phát hành ở Bắc Mỹ do sử dụng biểu tượng tôn giáo, nhưng cũng chẳng là gì so với sự nghiệp đồ sộ của ông. Tuy nhiên, nhìn lại các tác phẩm đời đầu và ít thành công của các thiên tài hiện tại là rất đáng giá và thường được truyền cảm hứng. Ngay cả các nghệ sĩ vĩ đại nhất cũng từng thử và sai.
Tua nhanh một năm sau, khó mà có thể diễn tả được sự tỏa sáng của Super Mario Bros. Gameplay là sự kết hợp với phong cách di chuyển theo chiều ngang từ trái sang phải đơn giản. Ngoài ra, nó không cho phép quay lại phía sau màn hình, một đặc điểm phổ biến của các platformer (chính xác được định nghĩa là camera-window một chiều).

Speedup-push-zone (Cửa sổ camera tăng tốc) – Khi nhân vật ở trong camera-window, tăng tốc dần camera cho đến khi chạm vào biên cửa sổ
Camera-window* - một chiều
Static-forward-focus
Khi Mario đi quá biên sau rồi chuẩn bị vượt lên biên trước của camera-window, tốc độ tăng từ 0 lên tối đa trong một khung hình, sẽ gây ra sự thay đổi lớn về tốc độ khung cảnh, tạo ra sự khó chịu khó tránh khỏi. Các nhà thiết kế đã giải quyết điều này bằng cách đưa vào một mốc ảo, cách trung tâm khoảng 25% độ rộng cửa sổ, tại đó camera sẽ tăng tốc để bắt kịp Mario, và khi Mario chạm vào biên phải, tốc độ camera đã bắt kịp.
Metroid là game tiên phong tạo ra một thể loại mới, kết hợp giữa game platform và thám hiểm. (Tiện đó thì người anh em thiện lành Castlevania cũng có camera dạng position-locking cơ bản như vậy)
Metroid sử dụng cơ chế đa trục, tùy tình huống. Game đưa ra một cách khác để xử lý chuyển động camera là cho phép nhân vật vượt quá biên cửa sổ, đồng thời tăng tốc camera để bắt kịp. Nhân vật vượt quá biên cửa sổ càng nhiều thì camera dịch càng nhanh, đem lại hiệu ứng camera rất mượt.
Camera-window (ngang/dọc)
Speedup-pull-zone (Cửa sổ camera tăng tốc) – Đẩy camera chạy sao cho bắt kịp với tốc độ nhân vật khi nhân vật đi vào vùng camera-window
Sự tiến bộ của công nghệ có ảnh hưởng trực tiếp đến hệ thống camera, với nhiều pixel và CPU trâu hơn. Nó cho phép camera di chuyển tự do, không bị nhiễu giảm chất lượng đặc trưng khi camera di chuyển, đặc biệt là ở tốc độ chậm chỉ chạy với vài khung hình trên giây.
Donkey Kong Country có rất nhiều giải pháp sáng tạo với camera và là game đầu tiên sử dụng làm mượt chuyển động lerp (Nội suy tuyến tính), tạo ra các cú nhảy mượt và khả năng đổi trọng tâm camera theo hướng hành động (sẽ nói sau).

Lerp-smoothing (Làm mượt lerp) – Liên tục giảm khoảng cách giữa camera và nhân vật bằng nội suy tuyến tính
Position-locking (dọc)
Region-based-anchors
Dual-forward-focus
Lerp-smoothing không được coi là một thành tựu lớn và nó trở thành một công cụ tiêu chuẩn để giảm việc tăng tốc camera bất ngờ, đặc biệt là khi nhảy.
Đây có lẽ là kỹ thuật smoothing hiệu quả và phổ biến nhất. Nó hoạt động tốt đối với các nhân vật di chuyển chậm hoặc nhanh như trong Super Meat Boy. Tuy nhiên, đối với các nhân vật lớn di chuyển cực nhanh, nó có thể dễ dàng chạm vào các cạnh của màn hình trước khi camera có thể bắt kịp, khiến kẻ địch bị ẩn đi cho đến khi camera chạy tới.

Lerp-smoothing
Position-locking
Never Alone là một game tuyệt đẹp xuất hiện vào năm 2014 chứa đựng nhiều yếu tố khác biệt mà chúng ta sẽ đề cập sau. Kỹ thuật smoothing chính của nó tính tới tốc độ camera hiện có, nghĩa là nó bắt theo hành động chậm hơn một chút và có thể đi quá điểm tới, đem lại chuyển động camera trơn tru, tự nhiên mặc dù phản ứng lại với chuyển động người chơi hơi rề rà.

Physics-smoothing (Làm mượt vật lý) – Camera là một đối tượng vật lý, liên tục rút ngắn khoảng cách tới mục tiêu đang được hướng tới
Position-averaging
Cinematic-path
Region-based-anchors
Cue-focus (trọng tâm vào ám hiệu)
Ở dạng code, nếu Lerp là EaseOut (nhanh đoạn đầu, chậm dần đoạn cuối), thì physics-smoothing là EaseInOut (chậm đầu, nhanh giữa, chậm cuối). Nếu có thể thì hãy thử SmoothDamp để rõ hơn hoặc điều chỉnh code của bạn để kiểm nghiệm khoảng cách đến mục tiêu cùng với vận tốc hiện tại.
Kiểm soát khung hình
Giữ các chi tiết quan trọng trên khung hình
Tự động cuộn cảnh không nằm trong phạm vi của bài này, vì đúng định nghĩa mà nói thì nó không cho người chơi quyền kiểm soát đối với việc cuộn cảnh. Tuy thế, nó cho chúng ta hình dung về vị trí mà người chơi muốn nhắm tới, tạo sự cân bằng giữa các mối đe dọa phía trước và để lại một số không gian cho các mối đe dọa đến từ phía sau.

Auto-scroll (Tự động cuộn cảnh) – Người chơi không thể điều khiển việc cuộn cảnh (nhưng thoải mái di chuyển trong khung hình)
Như chúng ta đã thấy ở Pac-Land, nếu bạn gắn camera vào nhân vật và cho phép điều khiển theo các hướng, bạn có thể nhắm camera về phía trước người chơi. Việc này sẽ cho nhiều khoảng trống ở phía trước, trong khi vẫn theo dõi được những gì phía sau - cũng được coi là cách để gợi ý lối đi, vì chúng ta luôn cố gắng nhắm vào trung tâm.

Position-locking
Static-forward-focus (Trọng tâm vào hành động phía trước) – Tầm nhìn rộng hơn cho hướng hành động chủ đạo
Tua lại xa hơn về đầu năm 1981 đánh dấu sự phát hành của Defender, một game bắn quái đã truyền cảm hứng cho cả một thể loại mới. Nó thể hiện cơ chế tập trung theo hai hướng theo radar bên trên. Defender luôn cố giữ tâm màn hình tại một điểm ảo bằng khoảng 25% chiều rộng màn hình ở phía trước con tàu. Hệ thống này hoạt động tốt cho một game có nhịp độ nhanh, khi hầu hết kẻ địch đến từ phía trước.

Dual-forward-focus (Trọng tâm vào hành động cả 2 bên) – Người chơi đổi hướng sẽ khiến trọng tâm camera hướng vào phần phía trước
Bonanza Bros. là một game trộm cướp cuộn cảnh ngang hấp dẫn được Sega phát hành cho hệ máy thùng (arcade) vào năm 1990. Nó có tính năng chia màn hình cho chế độ co-op 2 người độc nhất vô nhị, khi hai anh em cùng nhau đi cướp.
Tất nhiên, tầm nhìn phía trước rộng là cần thiết cho một vụ trộm cắp nên chế độ tập trung tầm nhìn cho cả 2 bên được sử dụng. Tuy nhiên, cần thêm một số bước để camera bắt kịp biên cửa sổ mới, khiến cho toàn bộ chuyển động trở nên mượt hơn trong khi vẫn cung cấp nhiều khoảng trống. Tốc độ của camera gấp đôi người chơi, nghĩa là camera sẽ chỉ di chuyển khi người chơi di chuyển. Theo dõi nhân vật đỏ dưới đây.

Dual-forward-focus* - Tốc độ camera phụ thuộc vào tốc độ nhân vật
Thủ thuật camera tiếp theo là trong Super Mario World, và là một trong những kỹ thuật camera 2D tôi thích nhất, với sự chú tâm đáng nể tới các chi tiết gameplay cụ thể của game.

Region-based-anchors
Platform-snapping* – Camera bắt cảnh vào nhân vật chỉ khi nhân vật đó đứng trên vách
Camera-window* (dọc) - Khi có thể
Dual-forward-focus* - Cần vượt qua ngưỡng nào đó
Manual-control* (ngang) - tay cầm sẽ cho lia camera rộng hơn
Lần nữa, lại có 2 điểm cố định cho phép nhìn rộng về phía trước theo bất kỳ hướng nào mà người chơi chọn. Tuy nhiên, ngay cả khi người chơi bắt đầu quay ngược lại (rất thường xuyên trong SMW), camera vẫn sẽ giữ vị trí cho đến khi Mario chạm ngưỡng đặt sẵn, chỉ khi đó camera mới chuyển điểm cố định. Điều này cực kỳ hữu ích với các chuyển động trái/phải liên tục không đảm bảo một sự thay đổi hướng rõ ràng trong SMW.
Gần đây hơn, Cave Story sử dụng dual-forward-focus để từ từ dịch camera từ bên này sang bên kia, dựa theo tốc độ nhân vật. Khá tương tự như trong Bonanza Bros, mặc dù ở đây camera di chuyển về 2 bên liên tục, nhưng chỉ tăng tốc khi người chơi di chuyển.

Position-locking (dọc)
Dual-forward-focus
Physics-smoothing
Manual-control* - tay cầm sẽ cho lia camera rộng hơn
Jazz Jackrabbit 2 là một game platform hay từ thời kỳ đầu của Epic Games. Camera của game có một yếu tố thực sự độc đáo: camera sẽ dịch khỏi nhân vật tùy theo lệnh điều khiển, theo cả ngang lẫn dọc.
Đây là ví dụ hoàn hảo cho Target-focus, khi người chơi đưa ra chỉ dẫn về nơi cần tới của camera, dựa trên mục tiêu hoặc đích đến của họ. Khi bạn đi sang trái, bạn sẽ muốn nhìn bên trái rõ hơn. Khi thả nút ra, trọng tâm lại trở về nhân vật.

Lerp-smoothing (dọc)
Target-focus (Trọng tâm vào mục tiêu) – Camera theo sát hướng điều khiển cung cấp tầm nhìn tập trung về phía trước. Cần analog/nút điều khiển đẩy trọng tâm theo hướng chỉ định
Manual-control* - Tầm nhìn dọc là mở rộng của Target-focus
Target-focus có thể sử dụng trên các mục tiêu cụ thể hơn, như trong các game sử dụng con trỏ. Trong Snapshot, bạn dùng chuột để chụp lại một bức ảnh và thả nó ở chỗ khác để giải các câu đố. Con trỏ cơ bản dùng để mở rộng tầm nhìn của bạn và trọng tâm của camera là vị trí trung bình giữa nhân vật và con trỏ.

Target-focus* - Trọng tâm là trung bình giữa nhân vật và con trỏ
Lerp-smoothing
The Swapper có một số kỹ thuật camera rất tiến bộ mà chúng ta sẽ nói sau. Với target-focus, vị trí đặt của thiết bị nhân bản chính là tầm nhìn của người chơi, tạo ra một trọng tâm camera hoàn hảo. Điều này hoạt động tốt cho bất kỳ game nào có các thiết bị hoặc vũ khí có khả năng nhắm mục tiêu đơn lẻ. Người chơi thậm chí có thể đi lùi và vẫn ngắm về phía trước được, cung cấp hoạt động camera linh hoạt, tuy vẫn cần nút điều khiển phụ cho camera.

Target-focus
Physics-smoothing
Region-based-anchors
Cue-focus
Cinematic-path
Secrets of Rætikon có nhiều tính năng camera thú vị, nhưng về mặt khung hình cơ bản, nó sử dụng projected-focus, là phép ngoại suy đơn giản cho vị trí nhân vật dựa trên tốc độ hiện tại.
Lưu ý rằng kỹ thuật này có thể không hoạt động tốt với các vách, đặc biệt là theo chiều dọc, khi mà nhảy và hạ cánh không được ngoại suy tốt.

Projected-focus (Trọng tâm vào hướng đi) – Camera đi theo hướng định tới (ngoại suy) của người chơi
Physics-smoothing
Cue-focus* - Vị trí camera và độ thu phóng (zoom) dựa vào các vật gây chú ý (attractor)
Gesture-focus* - Các hành động cụ thể làm thay đổi cách xử lý của camera, ví dụ như phóng to ra khi bay
Cinematic-paths
Luftrausers thì kết hợp một số tính năng camera hay với tổ hợp các kỹ thuật trọng tâm rất thú vị vào vị trí máy bay đang hướng tới (target-focus), nơi mà nó thực sự muốn tới (projected-focus) và một số ám hiệu khác như nước, tàu chiến và đạn lạc tạo ra trọng tâm camera khi tới gần (cue-focus, như phía dưới).

Target-focus/projected-focus
Physics-smoothing
Cue-focus
Hướng đi
Thiết lập ám hiệu, bối cảnh và tiến trình game
Từ đầu tới giờ chúng ta đã xem xét cách để mang lại cho người chơi một trải nghiệm chuẩn xác về tầm nhìn và khả năng điều khiển, nói chung là những gì mà người chơi muốn thấy (tính tương tác, như trong sơ đồ ở đầu). Chúng ta cũng đã đề cập tới các cách khác nhau để làm cho tầm nhìn được thoải mái và hiệu quả (độ thoải mái).
Nhưng với tư cách là chỉ đạo sản suất game, chúng ta cũng muốn hướng sự chú ý của người chơi vào những gì mà chúng ta biết là họ cần phải thấy, do bối cảnh, tiến trình game, thậm chí là từ độ kịch tính và cốt truyện của game.
Wonder Boy, (lại) một game ưa thích khác của tôi, là một game platform tốc độ cao, chỉ cho phép đi lên phía trước bằng cách sử dụng camera-window cổ điển. Không như Super Mario Bros., nó không có vùng tăng tốc để ngăn sự tăng tốc của camera, nhưng nó đem tới một kỹ thuật camera thú vị mà tôi gọi là đường của camera (camera-path). Camera sẽ được cố định và di chuyển theo một đường để nhìn thấy những chướng ngại sắp tới.

Camera-path – Định sẵn lối đi của camera đến hết màn
Camera-window* - Chỉ một bên
Static-forward-focus
Thế hệ console thứ 5 của Playstation, N64 và những thứ khác, đã mở ra nhiều cơ hội mới bởi phần cứng tốt hơn và ý niệm về game 3D thực thụ. Kỹ thuật camera 3D là một chủ đề lớn và có sự hấp dẫn riêng, nhưng các hỗ trợ về 3D cũng có ảnh hưởng rất lớn đến các game 2D. Các nhà thiết kế có thể sử dụng chức năng zoom, quay máy (tiling) và thậm chí kết hợp 2D và 3D thành cái gọi là 2.5D, khi game diễn ra trên mặt phẳng 2D, trong thế giới 3D.
Klonoa trên hệ máy Playstation là một game như vậy. Người chơi có cơ chế điều khiển 2D cơ bản, nhưng game diễn ra trong một thế giới 3D phức tạp. Klonoa sử dụng đường camera 3D đem lại hướng đi, sự tập trung vào gameplay và các chi tiết cốt truyện. Đường camera đó cung cấp vị trí, góc quay và khả năng zoom trong tất cả các màn chơi và thực ra còn đóng vai trò là gợi ý cho hướng hành động và nhảy.

Camera-path* - Thực tế là gợi ý đường đi. Có cả zoom và quay góc
Camera-window (dọc)
Lerp-smoothing
Dual-forward-focus
Cơ chế điều khiển kiểu này cho ta nhiều phương án để thấy trước kẻ địch, tạo bất ngờ hoặc làm thót tim cho game của chúng ta. Khi camera trong Klonoa phóng to ra để hiển thị boss, bạn sẽ biết rõ cần phải làm gì tiếp theo.
Donkey Kong Country đã mang tới vài dấu ấn thú vị mà về sau đã trở thành tiêu chuẩn trong các game platform: cho nhà thiết kế màn chơi các công cụ để xử lý camera theo nội dung của mỗi màn, thậm chí đến mỗi khu vực trong từng màn. Các khu vực cần phản ứng nhanh trong màn chơi đòi hỏi một tầm nhìn rộng về phía trước bằng cách hi sinh tầm nhìn đằng sau. Một số khu vực cần được khám phá kĩ yêu cầu tầm nhìn rộng hơn về cả hai bên.
Lerp-smoothing
Position-locking (dọc)
Region-based-anchors (Trọng tâm tùy khu vực) – Mỗi khu vực (kể cả giữa các màn) sẽ có vị trí và hướng tập trung của camera khác nhau
Dual-forward-focus
Như chúng ta đã thấy trong Klonoa, công nghệ dùng để kiến tạo môi trường 3D có thể cho ta các công cụ định hướng camera khác nhau, chẳng hạn như sử dụng zoom/dolly. Zoom là hành động thay đổi góc của trường nhìn thấy (FOV – field of view) và dolly (xoay góc) là thuật ngữ trong dựng phim chỉ việc di chuyển camera theo một đường cố định. Cả hai đều có tác dụng chỉnh lại bối cảnh, mặc dù cách tiếp cận khác nhau, và xoay góc mang lại cảm giác thực hơn (nếu được dùng). Chi tiết hơn về sự khác biệt giữa dolly và zoom có thể tìm trong các trang web và cơ sở dữ liệu về dựng phim. Tuy nhiên để đơn giản thì chúng ta sẽ gói gọn cả hai kỹ thuật trong cụm thu phóng hợp lý.
Lấy Yoshi’s Story làm ví dụ, khung hình được bao quanh Yoshi, con boss và cái cột, làm nổi bật tất cả các yếu tố mà người chơi cần chú ý: mục tiêu (boss) và giới hạn (cột). Camera không chỉ bao quát các yếu tố trên, nó còn có thể thu lại (chính xác là dolly) khi cần thiết.

Zoom-to-fit (Thu phóng hợp lý) – Phóng to/nhỏ hoặc dịch camera tiến/lùi để có một cái nhìn đầy đủ các yếu tố cần thiết
Dual-forward-focus
Camera-window (dọc)
Platform-snapping
Manual-control
Insanely Twisted Shadow Planet có hệ thống camera ảnh hưởng lớn đến tốc độ nhân vật (Projected-focus), mục tiêu của bạn (Target-focus), quan trọng nhất, đây là một trong những game đầu tiên sử dụng các attractor để hướng sự tập trung của người chơi vào các ám hiệu bên ngoài. Hãy xem blog của ITSP để rõ hơn về hệ thống camera nổi bật này.

Cue-focus (Trọng tâm vào ám hiệu)* – Sự tập trung của camera bị ảnh hưởng bởi các ám hiệu trong game (hay gọi là attractor). Vị trí camera và độ phóng dựa trên attractor dạng vòng kép cho nhiều loại ám hiệu như kẻ địch hay điểm lưu (checkpoint)
Projected-focus
Target-focus
Physics-smoothing

Insanely Twisted Shadow Planet sử dụng attractor dạng vòng kép quanh các ám hiệu khác nhau trong game như checkpoint và kẻ địch. Vòng ngoài dần dần hướng trọng tâm camera về phía ám hiệu, sử dụng trung bình cộng có trọng số. Khi nằm bên trong vòng trong, vị trí của con tàu hoàn toàn bị bỏ qua, camera sẽ chỉ tập trung vào ám hiệu. Các ám hiệu khác nhau có các vòng khác nhau, và các vòng có thể chồng lên nhau, tạo ra dịch chuyển trơn tru giữa các attractor.
Có nhiều cách khác biệt để thu hút sự chú ý vào các ám hiệu của game, nhưng dạng vòng là một cách đáng tin để tạo sự chú ý đến các yếu tố gameplay cần thiết. Điều này cũng có thể dùng theo cách ngược lại: đánh lạc hướng người chơi khỏi các thành phần gameplay bằng cách sử dụng Detractor để đẩy camera ra xa. Nó cũng sẽ tạo cảm giác hồi hộp và bí mật đối với các yếu tố ẩn.
Aether là một game Flash rất hay được sản xuất vào năm 2008 bởi Edmund McMillen và Tyler Glaiel, giới thiệu một cách tiếp cận độc đáo tới ám hiệu game: nó bay lung tung trong vũ trụ chỉ để chỉ tìm kiếm một dấu hiệu cho hành tinh gần đó, mang lại cảm giác yên tâm và an toàn, do trọng lực chắc chắn sẽ dẫn đến mặt đất. Khi bạn đang bay trong không gian và bị cuốn vào một trường trọng lực bất kỳ, màn hình sẽ bắt đầu hướng về phía trọng lực đó.

Cue-focus* - Định hướng của camera dựa theo hướng trọng lực
Position-locking
Lerp-smoothing
Quá là thiếu sót khi nói về camera mà không kể tới Limbo. Bằng cách chỉnh sáng, vị trí camera và độ zoom, Limbo đã tạo ra một không gian thực sự độc đáo. Trong Limbo, mỗi khu vực đều có các đặc tính riêng biệt, cố định camera tại một vị trí trên màn hình, cho phép các đối tượng nhất định tham gia vào điều chỉnh hướng camera, ví dụ như các attractor trên kẻ địch.

Region-based-anchors* - Zoom, vị trí camera (và chỉnh sáng)
Position-locking* - Thay đổi theo khu vực
Cue-focus* - Các hành động cụ thể sẽ mở ra ám hiệu, vd khi kẻ địch tấn công, v.v.
Physics-smoothing
Một cách tiếp cận khác đơn giản mà hiệu quả là sử dụng region-focus, như trong Geometry Wars. Vị trí camera là trung bình vị trí của con tàu với tâm của màn chơi; nghĩa là màn hình luôn chuyển động theo hướng con tàu, với tốc độ bằng một nửa. Người chơi luôn nắm rõ họ đang ở đâu trong màn chơi bằng cách quan sát khoảng cách so với tâm. Cách này hoàn hảo đối với các game có màn chơi giới hạn khép kín, đặc biệt là khi các mối đe dọa thường tụ tập lại ở trung tâm.

Region-focus (Trọng tâm trong khu vực)* – Camera hướng vào một điểm trong khu vực của màn (vd tâm màn chơi), kết hợp với vị trí người chơi. Vị trí camera là trung bình vị trí con tàu và tâm màn chơi.
Vessel là một game giải đố cổ điển bắt người chơi phải chú ý đến nhiều yếu tố khác nhau để có thể giải các câu đố sử dụng chất lỏng trong game, vì vậy vị trí hoạt động của camera có vai trò quan trọng hơn. Giống như trong Geometry Wars, Strange Loop đã giải quyết bằng cách giữ tập trung vào các khu vực, cho camera gần như đứng yên khi giải một câu đố. Đây là một cách diễn giải hiện đại cho các game giải đố trong phòng kín cổ điển, nhưng đối với Vessel, ý tưởng về căn phòng linh hoạt hơn, với nhiều kích cỡ và các đặc điểm khác nhau.

Region-focus* - Vị trí camera hầu như dựa theo điểm cố định của mỗi khu vực, tuy có dịch một chút nếu người chơi di chuyển
Region-based-anchors* - Mỗi khu vực khác nhau sẽ có điểm đặt camera cố định và hệ số zoom khác nhau
Cue-focus
Physics-smoothing
Cinematic-path
Một trong những ý tưởng sáng tạo nhất ở Vessel là ngay cả khi bị cố định trong một khu vực, camera vẫn đi theo người chơi với các chuyển động nhỏ. Điều này cho ta cảm giác nhiều quyền kiểm soát hơn, ngay cả trong một khu vực bị cố định góc máy. Hơn thế nữa, khi người chơi hoàn thành câu đố và chuẩn bị chuyển khu vực, camera chủ động di chuyển để giảm thiểu việc tăng tốc gây hỏng khung hình khi chuyển tiếp màn.
Một cách sử dụng camera để tạo sự chú ý và tăng điểm nhấn là dựa theo các hành động của người chơi để kích hoạt các kỹ thuật camera được chuẩn bị sẵn. Tomba là một game thú vị có từ thời đầu của game 2.5D trên Playstation. Camera ở đây thường giữ góc quay chính diện, nhưng sẽ chuyển sang các góc khác nhau khi người chơi thực hiện một số hành động nhất định, như leo trèo hoặc di chuyển giữa các vách. Camera dịch ra phía sau người chơi tạo ra trải nghiệm độc đáo, đồng thời cung cấp một tầm nhìn rõ hơn về phía trước.

Gesture-focus (Tập trung động tác)* – Gameplay sẽ tác động tới hành động của camera. Camera đổi vị trí để diễn tả hành động hoặc trạng thái.
Dual-forward-focus (ngang)
Platform-snapping
Camera-window (dọc)
Các hành động biến đổi gameplay có thể được sử dụng theo nhiều cách khác nhau trong nhiều loại và trục chuyển động, các phản ứng điều kiện, sự kiện dễ đoán vv…Tôi tin rằng chúng ta mới chỉ chạm vào phần nổi của tảng băng khi nói về mối quan hệ giữa các hành động do người chơi điều khiển và phản ứng camera sau đó.
Một ví dụ hay khác về tiềm năng của việc gesture-focus có thể thấy trong Aztez, một game hành động sắp ra mắt. Nó sử dụng các phản ứng khác nhau của camera như zoom (to hoặc nhỏ) hoặc quay góc, để nhấn mạnh bối cảnh và tăng độ kịch tính cho các sự kiện nhất định như giáp lá cà và đòn kết liễu.

Gesture-focus* - Zoom (to hoặc nhỏ) đổi góc may xảy ra theo hành động trong game
Position-locking (dọc)
Lerp-smoothing
Zoom-to-fit
Trong game đánh lộn (brawler) cổ điển Streets of Rage của Sega, camera chủ yếu theo sát hành động bằng cách sử dụng camera-window một phía, tiêu chuẩn chung cho các game brawler. Tuy vậy, sẽ có lúc camera dịch ra khỏi màn hình (đúng hơn là ra xa người chơi) cho một đoạn dẫn chuyện hoặc nút thắt nào đó.

Cinematic-paths (Đường camera kiểu phim) – Camera tạm dừng chức năng bình thường để chuẩn bị cho một đoạn dẫn chuyện ngoài màn chơi
Region-based-anchors
Camera-window* - Thường thấy trong game brawler: camera-window một bên, chỉ hiệu quả trong khi giao chiến
Cách này rất hữu hiệu, các nhà thiết kế có thể tạo ra một trải nghiệm điện ảnh mà không phá vỡ bối cảnh gameplay, kiểu một đoạn cắt cảnh nhưng không bị cắt.
Cinematic-path được sử dụng rất tốt trong The Behemoth’s Alien Hominid và Castle Crashers. Trong nhiều trường hợp gameplay thông thường sẽ bị ngừng lại và camera sẽ quay sang boss hoặc đoạn dẫn truyện. Việc này hoàn thành 2 mục tiêu: (1) đưa ra đoạn tường thuật hoặc hướng dẫn cho gameplay và (2) không làm xao nhãng người chơi khỏi hành động.

Region-based-anchors
Cinematic-path
Camera-window* - Thường thấy trong game brawler: camera-window một bên, chỉ hiệu quả trong khi giao chiến
Camera đa tâm
Tập trung vào nhiều đối tượng
Như chúng ta đã thấy, một trọng tâm camera đã có đủ thứ vấn đề; vậy làm thế nào để xử trí với game có nhiều người chơi hoặc đối tượng?
Gauntlet là một game đi cảnh (dungeon crawler) đột phá với công nghệ và thiết kế rất tiên tiến ở thời điểm đó. Với nhiều người chơi trên màn hình, đơn giản là nó khóa camera vào vị trí trung bình của các người chơi. Tuy nhiên, khi mỗi người chơi nằm ở một rìa màn hình, không ai có thể di chuyển trừ khi tất cả mọi người cùng đi một hướng. Trên thực tế, nếu một người chơi muốn chuyển màn nhưng người khác vẫn chơi thì mọi người đều bị kẹt lại vì người chơi không thể đi qua (hoặc đẩy) cạnh màn hình.

Position-averaging (Cân bằng các vị trí) – Tâm camera sẽ đưa vào vị trí cân bằng của vị trí các nhân vật
Samurai Gunn sử dụng kỹ thuật tương tự, nhưng việc cố tình tạo các cạnh rìa thông nhau mạng lại nhịp độ cuồng sát cho game. Nó còn được nhấn mạnh hơn bằng việc dừng hình và lọc hình thường xuyên. Với camera, do người chơi thường xuyên hồi sinh hoặc dịch chuyển tức thời (teleport), vị trí trung bình lập tức thay đổi, gây ra sự thay đổi chớp nhoáng của trọng tâm camera. Trên thực tế, cả việc edge-snapping cơ bản cũng bị bỏ qua, cho phép camera ra khỏi rìa màn chơi. Điều này phù hợp với không khí chung của game, nhưng có thể lại khó chịu khi xem, đặc biệt là với khán giả. Đương nhiên, khi điều khiển nhân vật, không phổ biến nhưng người chơi hoàn toàn có thể nhảy ra khỏi màn hình nếu thích do không hề bị chặn lại.

Position-averaging
Lerp-smoothing
Edge-snapping* - Để có được nhịp độ dồn dập, việc edge-snapping thường bị bỏ qua nên màn hình hầu như luôn di chuyển
Cách tiếp cận khác có thể thấy được trong Street Fighter từ xưa đến nay. Game sử dụng camera-window ngang nên camera được ổn định trong hầu hết thời gian. Giống nguyên lý chung của camera-window, người chơi nào chạm vào cạnh cửa sổ sẽ kéo camera theo. Khi camera di chuyển, nó có thể kéo người chơi kia đi cùng, giữ cả 2 luôn nằm trong cửa sổ. Camera (và người chơi) chỉ bị kẹt nếu cả hai cố gắng đẩy cạnh cửa sổ theo 2 hướng ngược nhau.

Camera-window* (ngang) - Chạm vào cửa sổ sẽ kéo theo camera, và có thể kéo theo cả người chơi kia
Một thương hiệu khác định nghĩa lại game nhiều người chơi là Super Smash Bros của Nintendo. Ngay từ phần đầu của series cũng đã có cách xử lý camera rất xuất sắc. SSB luôn hướng trọng tâm vào vị trí trung bình của tất cả người chơi và zoom hết sức khi khoảng cách giữa họ tăng lên.

Zoom-to-fit
Position-averaging* - Luôn đặt trọng tâm vào vị trí trung bình
Lerp-smoothing
Hệ thống này vẫn hoạt động tốt, và đối với ROCKETSROCKETSROCKETS thì nó còn có thêm tác dụng khác: vẫn hiện đủ mọi thứ trên màn hình, vẫn hướng trọng tâm về giữa, nhưng còn trừng phạt người chơi nếu họ có ý định tránh né các trận giáp lá cà.

zoom-to-fit
position-averaging
Như đã trình bày, với Never Alone bạn có thể có trung bình các vị trí của bất kỳ nhóm nhân vật nào, kể cả chơi đơn lẫn chơi nhiều người, với trung bình cộng có trọng số khác nhau.

Physics-smoothing
Position-averaging
Cinematic-path
Region-based-anchors
Cue-focus
Spelunky lại có cách tiếp cận khác cho vấn đề xung đột các vị trí bằng cách tập trung vào từng người chơi một. Nếu một người chơi chết, ngọn đuốc (cờ trắng) được chuyền cho người chơi khác. Điều này là một phần của gameplay khi bắt đầu tính giờ chết cho những ai đi ra khỏi màn hình.

position-locking
lerp-smoothing
[manual-control*] - Lên/xuống được mở rộng khi lia dọc
Điều khiển tay
Cung cấp khả năng điều khiển camera mở rộng
Trong một số trường hợp, các nhà thiết kế sẽ cần bổ sung thêm thông tin trực quan theo ý của người chơi. Một cách để làm điều vậy là liên kết camera với các nút điều khiển.
Super Mario World lại một lần nữa là tiên phong trong nút phụ điều khiển camera. Các nút L, R (tay cầm) sẽ đẩy camera về hướng tương ứng. Mặc dù đây là một ý tưởng thông minh, nhưng nó thường được coi là vô dụng, và hầu hết người chơi cũng chẳng biết đến tính năng này.

Region-based-anchors
Platform-snapping* – Camera bắt cảnh vào nhân vật chỉ khi nhân vật đó đứng trên vách
Camera-window* (dọc) - Khi có thể
Dual-forward-focus* - Cần vượt qua ngưỡng nào đó
Manual control (điều khiển tay)* (ngang) - tay cầm sẽ cho lia camera rộng hơn
Vấn đề với điều khiển tay của SMW là nó không trực quan. Các nút di chuyển thông thường không liên quan gì tới các nút phụ L, R.
Một ví dụ điển hình về việc cung cấp điều khiển camera tay trực quan là Osmos. Cũng không hẳn là game cuộn cảnh lắm, nhưng Osmos có ngầm sử dụng một cách để thay đổi camera. Chuột lăn trên PC hoặc zoom 2 ngón trên máy tính bảng sẽ tạo một kết nối rõ ràng giữa khả năng điều khiển và hành động của camera.

Position-locking
Manual -control (Điều khiển tay)* - Chuột lăn/di nhiều ngón để zoom
Như đã nói, trong Jazz Jackrabbit 2 các điều khiển phụ để lia camera dọc hoàn toàn tương tác với các định hướng ngang, nên đường đi của camera hoàn toàn rõ ràng và dễ đoán.

Lerp-smoothing (dọc)
Target-focus – Camera theo sát hướng điều khiển cung cấp tầm nhìn tập trung về phía trước. cần analog/nút điều khiển đẩy trọng tâm theo hướng chỉ định
Manual -control (Điều khiển tay)* - Tầm nhìn dọc là mở rộng của Target-focus
Nếu thực sự cần chỉnh camera thủ công, hãy tận dụng các nút hay dùng, như trong Spelunky, khi cúi xuống hoặc nhìn lên sẽ đổi trọng tâm camera tương ứng.

Position-locking
Lerp-smoothing
Manual -control (Điều khiển tay)* - Ấn lên/xuống sẽ mở rộng camera
Rung camera
Mất hết khả năng điều khiển
Như chúng ta đã thấy trong bài viết này, việc đem lại việc xử lý camera chân thực và rõ ràng gợi lên sự đồng điệu giữa người chơi và thế giới ảo nằm sau màn hình. Ngược lại vẫn đúng: sự bất đồng giữa camera và nút điều khiển, thông qua việc rung camera/màn hình, có thể mang lại cảm giác kịch tính mạnh mẽ hơn cả hành động thật của người chơi.
Trong khi nghiên cứu tôi đã cố gắng tìm ra game đầu tiên sử dụng camera rung. Không bất ngờ khi nó lại dẫn đến một tựa game khác của Miyamoto ra đời năm 1983: Mario Bros. Việc rung màn hình chỉ xảy ra trong một số phiên bản nhất định của game, có thể là do hạn chế về kỹ thuật hoặc thời gian.

Rung màn hình (và dừng hình, cũng cho tác động tương tự) đã được sử dụng trong vô số game và có thể thấy trong tất cả các sản phẩm của Vlambeer trong nhiều năm qua. Hãy thử xem nhà thiết kế của Vlambeer – JW nói về vấn đề này.

Camera tùy biến
Tổng kết: Thiết kế camera cho game của bạn
Mức độ chi tiết và sự chú tâm đặt vào game của bạn phải rất lớn. Tương đương với bất kỳ yếu tố nào khác, camera rất cần được chú ý. Trước khi bạn chế ra một kiểu camera mặc định khóa vào mục tiêu khác, hãy thử hình dung cách lý tưởng nhất mà bạn muốn camera hoạt động trong game của mình.
Dưới đây là một số quy tắc cơ bản mà tôi sử dụng khi tạo ra game của riêng mình, và cũng là ý tưởng của bài nghiên cứu này.
Tìm các điểm độc đáo và ý nghĩa trong game của bạn
Lấy cảm hứng từ các game cũng gặp những thách thức tương tự
Biến nó thành của bạn
Tất nhiên các nguyên tắc trên không dừng ở mỗi camera, nó được áp dụng cho mọi khía cạnh trong game của bạn, có thể về mặt nghệ thuật, âm thanh, công nghệ, v.v.
Đây là một ví dụ rất hay về việc điều chỉnh camera theo gameplay. The Legend of Kage của Taito là một trong những game platformer đầu tiên dùng trục kép cho camera. (Thú vị ở chỗ nó cũng là một trong những game đầu tiên và duy nhất đặt hướng hành động chính từ phải qua trái.) Để ý tới việc sử dụng camera-window ngang. Nhiều trận chiến hoành tráng diễn ra trên cây, vì thế camera-window rộng chính xác bằng cái cây nhằm tạo sự ổn định camera, tránh sự đổi hướng nhanh trong khi chiến đấu.

Position-locking (dọc)
Camera-window* (ngang) - Chiều rộng cửa sổ dựa theo chiều rộng cái cây
Một ví dụ điển hình khác về việc nhào nặn các hệ thống có sẵn thành thiết kế của bạn là Shinobi. Để có thể nhảy cao, game cần có một camera-window cao, gần tới rìa trên màn hình. Sau đó, để nhân vật tránh bị lệch khỏi trung tâm, camera thực hiện position-snapping một cách từ từ.

Position-snapping (dọc)
Camera-window (dọc)
Position-locking (ngang)
Static-forward-focus
Sonic the Hedgehog là một game platform đa trục tốc độ cao. Cửa sổ được thiết kế hẹp để giữ Sonic ở giữa màn hình mọi lúc, vì người chơi phải luôn cần giữ một tầm nhìn thoáng để xử lý tình hướng trước mặt. Cửa sổ hơi cao để hạn chế những chuyển động thẳng bởi các bước nhảy nhỏ. Điều này được xử lý bằng cách sử dụng platform-snapping để duy trì cân bằng theo trục dọc mỗi khi Sonic đứng trên vách.
Đâm vào cạnh của cửa sổ ở tốc độ cao có thể gây xé hình, đặc biệt là ở các vòng lộn hoặc khi chạm đáy cửa sổ với gia tốc trọng trường. Thế nên, việc giữ cửa sổ ngắn và hẹp sẽ giảm thiểu các hiệu ứng trên bằng cách giới hạn gia tốc camera có thể đạt được từ trạng thái tĩnh.

platform-snapping
camera-window
static-forward-focus
manual-control
Khi cần tầm nhìn phía trước rộng, nhưng chuyển động lại không bị bó buộc theo hướng nào, tầm nhìn cho cả 2 bên là lựa chọn hiển nhiên. Có nhiều cách khác nhau để đặt tầm nhìn vào vị trí cố định mong muốn sau khi chuyển hướng. Cave Story đã xử lý tốt, thay đổi linh hoạt tốc độ bắt cảnh dựa trên tốc độ chạy của người chơi (ví dụ như lấy tốc độ bắt cảnh cơ bản cộng với tốc độ chạy). Bonanza Bros. thì sử dụng phương pháp hơi khác đi một chút, chỉ giới hạn chuyển động khi người chơi di chuyển, phù hợp với một game trộm cắp, nhưng không cần thiết với một game platform nhiều kẻ địch như Cave Story.

Position-locking (dọc)
Dual-forward-focus
Physics-smoothing
Manual-control * - Tay cầm giúp lia camera dọc nhiều hơn
FEZ không có cả quân đoàn truy sát bạn, vì vậy sử dụng camera-window cơ bản là dễ hiểu. Nhưng nhà thiết kế FEZ đã khéo léo biến tấu kỹ thuật camera cổ điển này để phù hợp với thiết kế độc đáo của game. Cũng đúng khi nói rằng do các góc là vị trí thông thường để thực hiện xoay hướng, nên những gì nằm đằng sau thực sự quan trọng hơn những gì ở phía trước. Hơn nữa, khi thay đổi hướng nhìn, trọng tâm camera được đặt lại để tạo khoảng cách tối đa cho đến cạnh cửa sổ bên kia sau khi chuyển hướng xong.

Camera-window (ngang) - Được giữ nguyên khi chuyển hướng
Position-locking (dọc)
Lerp-smoothing
Region-based-anchors
Manual-control* - Cần analog giúp lia rộng hơn
Cách tiếp cận trong Vessel thể hiện một giải pháp thiết kế hoàn hảo cho một game giải đố theo kiểu một câu đố mỗi phòng. Việc sử dụng region-focus để lướt (và zoom) camera quanh tất cả các thành phần cần thiết của đố mang lại đầy đủ thông tin cho người chơi. Hoạt động của camera dựa theo người chơi đem lại cảm giác điều khiển tốt hơn kèm với sự hợp lý khi camera chuyển động giữa các vùng, tất cả là một sự kết hợp hoàn hảo giữa các khung hình định sẵn và cảm giác điều khiển đáng tin cậy.

Region-focus* - Vị trí camera hầu như dựa theo điểm cố định của mỗi khu vực, tuy có dịch một chút nếu người chơi di chuyển
Region-based-anchors* - Mỗi khu vực khác nhau sẽ có điểm đặt camera cố định và hệ số zoom khác nhau
Cue-focus
Physics-smoothing
Cinematic-path
Như chúng ta đã thấy, The Swapper có một cốt truyện rất công phu cùng với khung cảnh độc đáo, chỉ bằng cách vận dụng sáng tạo camera qua các cinematic-path khác nhau. Điều này giữ người chơi luôn tập trung, tăng độ kịch tính trong khi không làm mất định hướng – thứ hay trôi đi mất theo các đoạn cắt cảnh.

target-focus
physics-smoothing
region-based-anchors
cue-focus
cinematic-paths
Mushroom 11
Lựa chọn camera của tôi

Hệ thống camera trong Mushroom 11 là tổng hợp của định hướng camera tỉ mỉ cho từng khu vực. Mỗi màn bao gồm hàng chục khu vực khác nhau, mỗi khu vực có một đường dẫn thẳng góc riêng giới hạn cho camera. Mỗi khu vực cũng có chế độ zoom đặt sẵn (hệ số FOV).

Region-based-anchors* - Đặt sẵn các đường thẳng và hệ số zoom cho từng khu vực
Position-averaging*
Static-forward-focus*
Cue-focus* - tùy từng vùng
Projected-focus
Physics-smoothing* - Hệ số smoothing dựa theo vận tốc
Các khu vực được phân bố cẩn thận và camera được điều khiển bởi (các) mảnh nấm nằm ở khu vực được đánh số cao nhất. Bất kỳ mảnh nào, thậm chí là một mảnh duy nhất, chạm tới một khu vực được đánh số cao hơn, camera sẽ chuyển trọng tâm sang mảnh đó.

Lưu ý rằng viền màn hình sẽ phá hủy bất kỳ miếng nấm nào chạm vào, tạo ra một mốc làm tăng độ chính xác của camera. Điều này được minh họa rõ trong ví dụ trên, camera cung cấp đủ không gian cho người chơi nghĩ ra giải pháp, sau đó là dịch chuyển camera nhanh khi một mảnh nấm chạm tới khu vực mới. Tất cả những thứ trên được hoàn thành mà không một mảnh nấm nào bị phá hủy bởi viền màn hình.
Các khu vực chia thành hai loại chính: Định hướng trung bình và Định hướng tiến lên. Mỗi loại khu vực sẽ quyết định hành động của camera. Sau khi trọng tâm được xác định, camera sẽ cố gắng di chuyển về điểm đó cùng lúc bị hãm lại bởi đường dẫn thẳng của khu vực.
Khu vực định hướng trung bình
Một số khu vực sử dụng position-averaging giữa tất cả tế bào nấm, do đó trọng tâm camera sẽ hướng về phía mảnh nấm lớn. Điều này sẽ hiệu quả trong các khu vực mà người chơi được cần phải xử lý nhiều mảnh khác nhau hoặc khi không có lộ trình cố định. Loại khu vực này phù hợp với những câu đố trong một không gian hạn chế, khi các mảnh vẫn ở khá gần nhau (không sẽ bị màn hình hấp thụ hết).

Khu vực định hướng tiến lên
Các khu vực có bản chất tuyến tính cần tập trung vào phát triển nấm. Tại bất kỳ thời điểm nào, mảnh nấm đi nhanh nhất (theo tiến trình tuyến tính đặt sẵn của khu vực) sẽ điều khiển camera, trong khi các mảnh còn sót bị bỏ qua. Sau đó áp dụng static-forward-focus, vốn rất phù hợp với loại khu vực này.

Ám hiệu
Cả 2 loại khu vực đều có thể kết hợp với cue-focus. Khi đang ở trong mỗi loại khu vực, một số đối tượng và sinh vật nhất định có thể đóng vai trò là attractor, với hệ số hút được cố định/thay đổi. Như dưới đây, các màn đánh boss là ứng dụng rõ ràng của phương pháp này.

Smoothing
Smoothing được thực hiện bằng cách kết hợp projected-focus và physics-smoothing. Thực tế chứng minh nên là sử dụng hệ số smoothing dựa theo vận tốc của đám nấm: nếu người chơi di chuyển nhanh, camera cũng bắt nhanh (và giật) và nếu người chơi nhẹ nhàng cắt nấm, camera cũng dịch chuyển từ tốn.
Vì không có tính năng nhảy trong game nên việc sử dụng projected-focus là hoàn toàn tự nhiên. Bằng cách nhắm camera vào vị trí mảnh nấm (hoặc trung bình tất cả các mảnh) trong vài mili giây sắp tới, ta có được một hành động camera hoàn toàn chính xác và dễ đoán.

Một khi các hành động đều đã được xác định, hệ thống camera sẽ vào cuộc để xử lý các mảnh nấm đa hình với kích thước và tốc độ khác nhau, di chuyển nhanh chóng giữa các khu vực.

THUẬT NGỮ
Tự động cuộn cảnh (Auto-scroll): Người chơi không thể điều khiển việc cuộn cảnh
Đường của camera (Camera-path): Định sẵn lối đi của camera đến hết màn
Cửa sổ camera (Camera-window): Đẩy camera đi khi người chơi chạm vào cạnh cửa sổ
Đường camera kiểu phim (Cinematic-paths): Camera tạm dừng chức năng bình thường để chuẩn bị cho một đoạn dẫn chuyện ngoài màn chơi
Trọng tâm vào ám hiệu (Cue-focus): Sự tập trung của camera bị ảnh hưởng bởi các ám hiệu trong game (hay gọi là attractor)
Trọng tâm vào hành động cả 2 bên (dual-forward-focus): Người chơi đổi hướng sẽ khiến trọng tâm camera hướng vào phần phía trước
Khóa trục (Edge-snapping): Đặt một trục cố định cho camera dịch chuyển
Tập trung động tác (Gesture-focus): Gameplay sẽ tác động tới hành động của camera
Làm mượt lerp (Lerp-smoothing): Liên tục giảm khoảng cách giữa camera và nhân vật bằng nội suy tuyến tính
Làm mượt vật lý (Physics-smoothing): Camera là một đối tượng vật lý, liên tục rút ngắn khoảng cách tới mục tiêu đang được hướng tới
Bắt cảnh theo vách (Platform-snapping): Camera bắt cảnh vào nhân vật chỉ khi nhân vật đó đứng trên vách
Cân bằng các vị trí (Position-averaging): Tâm camera sẽ đưa vào vị trí cân bằng của vị trí các nhân vật
Khóa vị trí (Position-locking): Camera khóa chặt ở vị trí nhân vật
Bắt vị trí (Position-snapping): Liên tục giảm việc lệch màn hình đi bằng cách dần dần hướng camera lại vào nhân vật
Trọng tâm vào hướng đi (Projected-focus): Camera đi theo hướng định tới (ngoại suy) của người chơi
Trọng tâm tùy khu vực (Region-based-anchors): Mỗi khu vực (kể cả giữa các màn) sẽ có vị trí và hướng của trọng tâm camera khác nhau
Trọng tâm của khu vực (Region-focus): Camera hướng vào một điểm cố định của khu vực trong màn chơi, sẽ kết hợp với vị trí người chơi
Cửa sổ camera tăng tốc (Speedup-pull-zone): Đẩy camera chạy sao cho bắt kịp với tốc độ nhân vật khi nhân vật đi vào vùng camera-window
Cửa sổ camera gia tốc (Speedup-push-zone): Khi nhân vật ở trong camera-window, tăng tốc dần camera cho đến khi chạm vào biên cửa sổ
Trọng tâm vào hành động phía trước (static-forward-focus): Tầm nhìn rộng hơn cho hướng hành động chủ đạo
Trọng tâm vào mục tiêu (Target-focus): Camera theo sát hướng điều khiển cung cấp tầm nhìn tập trung về phía trước
Thu phóng hợp lý (Zoom-to-fit): Phóng to/nhỏ hoặc dịch camera tiến/lùi để có một cái nhìn đầy đủ các yếu tố cần thiết
Cám ơn!
Tôi muốn cảm ơn cộng đồng game indie tuyệt vời vì những đóng góp sâu rộng trong bài nghiên cứu này, và lời cảm ơn đặc biệt tới NYU Game Center vì sự hỗ trợ to lớn của họ.
Comments