top of page

Lý thuyết & Ứng dụng Camera trong Game cuộn ngang

  • Writer: Hùng Vũ
    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.

Rally-X © 1980 Namco
  1. 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.

Kung-Fu Master © 1984 Irem
  1. 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.

Terraria © 2011 Re-Logic
  1. 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.

Jump Bug © 1981 Hoei/Coreland (Alpha Denshi)
  1. 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.

Rastan Saga © 1987 Taito
  1. 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.

Fez © 2012 Polytron Corporation
  1. Camera-window* (ngang) - Được sử dụng cả khi thay đổi góc nhìn

  2. Position-locking (dọc)

  3. Lerp-smoothing

  4. Region-based-anchors

  5. 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 BugRastan, 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.


Shinobi © 1987 Sega
  1. 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

  2. Camera-window (dọc)

  3. Position-locking (ngang)

  4. 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.

Super Mario World © 1990 Nintendo
  1. Region-based-anchors

  2. 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

  3. Camera-window* (dọc) * Chỉ khi nào có thể dùng

  4. Dual-forward-focus* - Chạm tới ngưỡng chặn

  5. 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.

Rayman © 1995 Ubisoft
  1. Platform-snapping*

  2. Camera-window* (dọc)

  3. Region-based-anchors

  4. Dual-forward-focus*

  5. 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.

Awesomenauts © 2012 Ronimo Games
  1. Camera-window (dọc)

  2. Platform-snapping

  3. 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.

Pac-Land © 1984 Namco
  1. Position-locking

  2. 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 © 1984 Nintendo - Devil World © 1984 Nintendo

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).

Super Mario Bros. © 1985 Nintendo
  1. 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ổ

  2. Camera-window* - một chiều

  3. 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.

  1. Camera-window (ngang/dọc)

  2. 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).

Donkey Kong Country © 1994 Nintendo (Rare Ltd)
  1. 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

  2. Position-locking (dọc)

  3. Region-based-anchors

  4. 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.

Super Meat Boy © 2010 Team Meat
  1. Lerp-smoothing

  2. 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à.

Never Alone © 2014 Upper One Games
  1. 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

  2. Position-averaging

  3. Cinematic-path

  4. Region-based-anchors

  5. 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.

Scramble © 1981 Konami
  1. 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.

Pac-Land © 1984 Namco
  1. Position-locking

  2. 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.


Defender © 1981 Williams Electronics
  1. 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.

Bonanza Bros. © 1990 Sega
  1. 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.

Super Mario World © 1990 Nintendo
  1. Region-based-anchors

  2. Platform-snapping* – Camera bắt cảnh vào nhân vật chỉ khi nhân vật đó đứng trên vách

  3. Camera-window* (dọc) - Khi có thể

  4. Dual-forward-focus* - Cần vượt qua ngưỡng nào đó

  5. 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.

Cave Story © 2004 Studio Pixel
  1. Position-locking (dọc)

  2. Dual-forward-focus

  3. Physics-smoothing

  4. 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.

Jazz Jackrabbit 2 © 1998 Epic Games
  1. Lerp-smoothing (dọc)

  2. 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

  3. 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ỏ.

Snapshot © 2012 Retro Affect
  1. Target-focus* - Trọng tâm là trung bình giữa nhân vật và con trỏ

  2. 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.

The Swapper © 2013 Facepalm Games
  1. Target-focus

  2. Physics-smoothing

  3. Region-based-anchors

  4. Cue-focus

  5. 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.

Secrets of Rætikon © 2014 Broken Rules
  1. 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

  2. Physics-smoothing

  3. Cue-focus* - Vị trí camera và độ thu phóng (zoom) dựa vào các vật gây chú ý (attractor)

  4. 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

  5. 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).

Luftrausers © 2014 Vlambeer
  1. Target-focus/projected-focus

  2. Physics-smoothing

  3. 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.

Wonder Boy © 1986 Sega
  1. Camera-path – Định sẵn lối đi của camera đến hết màn

  2. Camera-window* - Chỉ một bên

  3. 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.

Klonoa: Door to Phantomile © 1997 Namco
  1. Camera-path* - Thực tế là gợi ý đường đi. Có cả zoom và quay góc

  2. Camera-window (dọc)

  3. Lerp-smoothing

  4. 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.

  1. Lerp-smoothing

  2. Position-locking (dọc)

  3. 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

  4. 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.

Yoshi’s Story © 1997 Nintendo (N64)
  1. 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

  2. Dual-forward-focus

  3. Camera-window (dọc)

  4. Platform-snapping

  5. 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.

Insanely Twisted Shadow Planet © 2011 Shadow Planet Productions
  1. 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)

  2. Projected-focus

  3. Target-focus

  4. 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 đó.

Aether © 2008 Armor Games (Edmund McMillen, Tyler Glaiel)
  1. Cue-focus* - Định hướng của camera dựa theo hướng trọng lực

  2. Position-locking

  3. 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.

Limbo © 2010 Playdead
  1. Region-based-anchors* - Zoom, vị trí camera (và chỉnh sáng)

  2. Position-locking* - Thay đổi theo khu vực

  3. 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.

  4. 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.

Geometry Wars © 2003 Bizarre Creations
  1. 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.

Vessel © 2012 Strange Loop Games
  1. 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

  2. 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

  3. Cue-focus

  4. Physics-smoothing

  5. 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.

Tomba! © 1997 Whoopee Camp
  1. 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.

  2. Dual-forward-focus (ngang)

  3. Platform-snapping

  4. 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.

Aztez © 2017 Team Colorblind
  1. Gesture-focus* - Zoom (to hoặc nhỏ) đổi góc may xảy ra theo hành động trong game

  2. Position-locking (dọc)

  3. Lerp-smoothing

  4. 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 đó.

Streets of Rage © 1991 Sega
  1. 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

  2. Region-based-anchors

  3. 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 HominidCastle 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.

Alien Hominid © 2004 The Behemoth
  1. Region-based-anchors

  2. Cinematic-path

  3. 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.

Gauntlet © 1985 Atari Games
  1. 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.

Samurai Gunn © 2013 Teknopants
  1. Position-averaging

  2. Lerp-smoothing

  3. 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.

Street Fighter © 1987 Capcom
  1. 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.

Super Smash Bros. © 1999 Nintendo (HAL Laboratory)
  1. Zoom-to-fit

  2. Position-averaging* - Luôn đặt trọng tâm vào vị trí trung bình

  3. 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à.

ROCKETSROCKETSROCKETS © 2014 Radial Games
  1. zoom-to-fit

  2. 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.

Never Alone © 2014 Upper One Games
  1. Physics-smoothing

  2. Position-averaging

  3. Cinematic-path

  4. Region-based-anchors

  5. 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.

Spelunky © 2008-2012 Mossmouth (Derek Yu)
  1. position-locking

  2. lerp-smoothing

  3. [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.

Super Mario World © 1990 Nintendo
  1. Region-based-anchors

  2. Platform-snapping* – Camera bắt cảnh vào nhân vật chỉ khi nhân vật đó đứng trên vách

  3. Camera-window* (dọc) - Khi có thể

  4. Dual-forward-focus* - Cần vượt qua ngưỡng nào đó

  5. 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.

Osmos © 2009 Hemisphere Games
  1. Position-locking

  2. 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.

Jazz Jackrabbit 2 © 1998 Epic Games
  1. Lerp-smoothing (dọc)

  2. 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

  3. 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.

Spelunky © 2008-2012 Mossmouth (Derek Yu)
  1. Position-locking

  2. Lerp-smoothing

  3. 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.

Mario Bros. © 1983 Nintendo

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.

Super Crate Box © 2010 Vlambeer

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.

The Legend of Kage © 1985 Taito
  1. Position-locking (dọc)

  2. 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ừ.

Shinobi © 1987 Sega
  1. Position-snapping (dọc)

  2. Camera-window (dọc)

  3. Position-locking (ngang)

  4. 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.

Sonic the Hedgehog © 1991 Sega
  1. platform-snapping

  2. camera-window

  3. static-forward-focus

  4. 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.

Cave Story © 2004 Studio Pixel
  1. Position-locking (dọc)

  2. Dual-forward-focus

  3. Physics-smoothing

  4. 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.

Fez © 2012 Polytron Corporation
  1. Camera-window (ngang) - Được giữ nguyên khi chuyển hướng

  2. Position-locking (dọc)

  3. Lerp-smoothing

  4. Region-based-anchors

  5. 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.

Vessel © 2012 Strange Loop Games
  1. 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

  2. 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

  3. Cue-focus

  4. Physics-smoothing

  5. 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.

The Swapper © 2013 Facepalm Games
  1. target-focus

  2. physics-smoothing

  3. region-based-anchors

  4. cue-focus

  5. 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).

  1. Region-based-anchors* - Đặt sẵn các đường thẳng và hệ số zoom cho từng khu vực

  2. Position-averaging*

  3. Static-forward-focus*

  4. Cue-focus* - tùy từng vùng

  5. Projected-focus

  6. 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Ữ

  1. 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

  2. Đường của camera (Camera-path): Định sẵn lối đi của camera đến hết màn

  3. Cửa sổ camera (Camera-window): Đẩy camera đi khi người chơi chạm vào cạnh cửa sổ

  4. Đườ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

  5. 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)

  6. 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

  7. Khóa trục (Edge-snapping): Đặt một trục cố định cho camera dịch chuyển

  8. Tập trung động tác (Gesture-focus): Gameplay sẽ tác động tới hành động của camera

  9. 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

  10. 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

  11. 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

  12. 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

  13. Khóa vị trí (Position-locking): Camera khóa chặt ở vị trí nhân vật

  14. 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

  15. 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

  16. 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

  17. 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

  18. 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

  19. 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ổ

  20. 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

  21. 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

  22. 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


Like ViNa Ludens trên Facebook

© 2018 ViNa Ludens. All Rights Reserved.

Background & Header by freepik.com

Muốn hợp tác cùng ViNa Ludens? Liên hệ với chúng tôi tại Fanpage hoặc địa chỉ email alex.vu@vinaludens.com

bottom of page