Game Studio
Liên kế mạng xã hội

Game Studio


7 cách để nội địa hóa indie game của bạn trong Unity

Unity là một trong những game engine phổ biến nhất đối với các nhà phát triển độc lập. Với Unity, những người bình thường hay những “studio-một thành viên” vẫn có thể tạo ra được thành công vang dội không thua gì các studio AAA trong ngành công nghiệp.

Tuy nhiên, vấn đề lớn đối với con đường phát triển độc lập là bạn phải làm nhiều việc hơn so với các team lớn. Nhưng Unity đã giúp bạn bằng cách tinh giản quá trình phát triển, do đó bạn có thể làm được nhiều việc hơn chỉ với đôi tay của bạn.

Và hỗ trợ nội địa hóa (localization) cho game cũng không nằm ngoài những lợi ích mà Unity mang lại, nội địa hóa là một yếu tố rất quan trọng bởi vì nó giúp cho game của bạn được nhiều người trên thế giới sử dụng mà không vấp phải những rào cản về ngôn ngữ, văn hóa.... Tuy nhiên, bạn cần phải cẩn thận vì nội địa hóa cho game là một quá trình khó khăn - vì vậy chúng ta hãy nhìn vào những gợi ý sau đây của Damien để nội địa hóa cho game với Unity.

# 1: Sử dụng Smart Localization extension và I2 Localization extension (cẩn thận)

Smart Localization (miễn phí và có phí)

Tiện ích mở rộng (extension) này được thiết kế để làm cho việc nội địa hóa của bạn trở nên dễ dàng hơn. Smart Localization được phát triển bởi janeTech, và có hai phiên bản: một phiên bản miễn phí và một phiên bản Pro có phí. Dưới đây là những gì Smart Localization sẽ giúp bạn:

- Tạo cấu trúc thư mục cho các ngôn ngữ khác nhau của bạn

- Import và export files

Đây là những gì bạn cần để cấu trúc cho các bản dịch của bạn. Đừng lãng phí thời gian của bạn bằng cách sử dụng các tính năng dịch được hỗ trợ bởi Microsoft Translator vì chúng chỉ để tạo ra các bản dịch tạm thời cho quá trình phát triển, chứ không phải cho bản dịch chính thức.

I2 Localization ($45)

Trong số các assets có thu phí thì I2 Localization được phát triển bởi Inter Illusion game studio chắc chắn đại diện tốt nhất dành cho bạn.

Đồng bộ hóa trực tiếp Google Spreadsheet và tự động hiển thị từ phải sang trái dành cho tiếng Ả Rập là một số tính năng tiện dụng được cung cấp bởi asset này.

"I2 Localization là một công cụ tuyệt vời để nội địa hóa cho game. [...] Đầu tiên và quan trọng nhất là khả năng nhập dữ liệu trực tiếp từ một Google Spreadsheet, kể cả sau khi game của bạn đã được phát hành. Điều này rất hữu ích, vì hầu hết các công ty nội địa hóa cung cấp cho bạn kết quả trong một tập tin Excel, nên đơn giản là bạn chỉ cần chuyển nó sang một Google Spreadsheet và import tất cả các dữ liệu.” Một nhà phát triển cho biết.

Cả hai phần extension là sự lựa chọn phổ biến của các nhà phát triển Unity (đặc biệt là phiên bản miễn phí của Smart Localization, vì những lý do khá rõ ràng). Chúng chắc chắn là những công cụ hữu ích, nhưng bạn phải sử dụng chúng một cách cẩn thận vì không có một tiện ích nào có thể lo liệu cho toàn bộ nhu cầu nội địa hóa cũng như quá trình dịch thuật của bạn.

# 2: Tìm một dịch giả chuyên nghiệp

Không có cách nào khác để bạn có thể thay thế một người dịch thuật chuyên nghiệp nếu bạn nghiêm túc về việc phát hành game của bạn cho các thị trường nước ngoài. Bạn cần phải tìm được cho mình một người chuyên nghiệp từ rất sớm và để bạn có thể bắt đầu phát triển dự án.

Bạn phải có được bản thảo của bản dịch trước tiên, trước khi bạn bắt đầu phát triển.

Bạn sẽ tiết kiệm được khá nhiều thời gian coding nếu bạn có được một bản dịch từ sớm. Đặc biệt chú ý đến độ dài của các từ và các câu trong mỗi bản dịch so với phiên bản gốc là tiếng Anh (hoặc ngôn ngữ của bạn). Bằng cách này bạn có thể ngay lập tức điều chỉnh trong code hoặc hoặc quay lại làm việc với dịch giả để tìm ra các lựa chọn thay thế.

Nếu bạn nội địa hóa sau khi phát triển xong game, thì nó thực sự là một cơn ác mộng.

# 3: Chọn định dạng phù hợp cho các văn bản của bạn

Một khi bạn bắt đầu phát triển, thì điều đầu tiên bạn cần phải làm xét theo một góc độ của nội địa hóa là chọn cách thức định dạng cho các văn bản của bạn. Điều này cũng khá quan trọng vì nó sẽ quyết định độ dễ /khó khi bạn muốn thêm ngôn ngữ mới vào game hoặc chỉnh sửa bản dịch hiện tại của bạn trong tương lai.

Unity hỗ trợ một số định dạng, nhưng phổ biến nhất có lẽ là: JSON, XML, YAML, CSV.

Bạn cũng có thể tạo ra định dạng tùy chỉnh của riêng bạn, nếu bạn thích. Tuy nhiên, điều này có thể vướng phải các lỗi tiềm tàng và chắc chắn là nó sẽ làm cho quá trình nội địa hóa của bạn trở nên phức tạp. Vì vậy, chúng ta sẽ không nói về nó vì mục đích của bài viết này.

Nếu bạn đang phát triển game của bạn trong JavaScript thì JSON sẽ mang lại cho bạn cảm giác an toàn hơn. Đây là một định dạng đơn giản, gọn nhẹ mà các nhà phát triển đã áp dụng trong những năm qua. Ngoài ra nó cũng dễ dàng để đọc, kể cả những người không phải là nhà phát triển - đó là một lợi thế lớn để dịch và chỉnh sửa trong tương lai.

Nhiều nhà phát triển vẫn thường dùng XML, đó cũng là một lựa chọn tốt nếu bạn thích làm việc với ngôn ngữ đặc biệt này. Tuy nhiên, đây không phải là ngôn ngữ hiệu quả nhất và khó đọc hơn, đo dó xem xét các vấn đề có thể gặp phải với các code của game.

Đối với các tùy chọn khác, chúng chắc chắn có nhiều vấn đề hơn nếu xét từ góc độ dịch thuật, nhưng bạn phải chọn ra một định dạng mà bạn cảm thấy thoải mái nhất khi làm việc với nó. Chỉ cần chắc chắn rằng bạn đã làm việc với phiên dịch viên của bạn để cả bạn và họ đều có thể làm tốt công việc của mình. 

# 4: Cấu trúc cho các chuỗi

Cấu trúc cho các chuỗi (strings) bạn theo một cách hiệu quả nhất có thể là một thách thức. Không có hướng dẫn thiết lập dành cho bạn và Unity cho phép bạn thoãi mái cấu trúc cho chúng theo ý bạn. Tất nhiên là thoãi mái thì sẽ tốt, nhưng nó cũng vô tình mang theo những sai lầm.

Có ba yếu tố để cấu trúc chuỗi:

  1. Ngôn ngữ (Language)
  2. String IDs
  3. Văn bản (Text)

Ngôn ngữ (Language)

Đối với hầu hết các game (ngôn ngữ thường được chọn khi bắt đầu), bạn có thể lưu trữ các chuỗi của bạn trong các tập tin riêng biệt của mỗi ngôn ngữ - ví dụ: en.json, es.json, fr.json, vv… Đây là cách thông minh nhất để tách các chuỗi của bạn theo ngôn ngữ, do đó game của bạn sẽ không cần phải xử lý các tập tin bổ sung.

String ID

Tiếp theo, bạn phải suy nghĩ về String ID của bạn. Nhiệm vụ này nhiều hay ít phần lớn phụ thuộc vào số lượng của các chuỗi văn bản có trong game của bạn. Bạn cần phải lường trước vấn đề khi bạn tạo String ID, tạo cho mỗi chuỗi một ID riêng biệt và mô tả làm sao để bạn có thể dễ dàng để xác định trong tương lai.

Điều này cũng phụ thuộc vào sở thích cá nhân, nhưng luôn suy nghĩ về một ngày nào đó một nhà phát triển khác có thể sẽ làm việc với code của bạn.

Văn bản (Text)

Đối với văn bản, khi nội địa hóa phải luôn nhớ về nó khi tạo các chuỗi. Vấn đề thường thấy nhất là độ dài giữa các ngôn ngữ khác nhau. Đừng để điều này làm ảnh hưởng đến chất lượng kịch bản của bạn. Rút ngắn các chuỗi lẻ hoặc viết lại theo một cách đơn giản có thể giúp đỡ bạn về sau.

Bằng cách làm theo phương pháp này, quá trình lưu trữ và lấy các chuỗi nội địa hóa sẽ đơn giản hơn nhiều. Bạn không chỉ làm giảm khối lượng công việc của bạn theo cách này mà còn làm giảm nguy cơ bị dính lỗi.

# 5: Tận dụng tối đa các components nội địa hóa trong Unity

Unity cho phép bạn tạo các components và khả năng cắt một đoạn một cách thủ công. Một lần nữa, điều này giúp bạn việc giảm nguy cơ dính lỗi cũng như tiết kiệm thời gian.

Bạn có thể tìm thêm thông tin về các components trong trang Unity resource. Đối với mục đích của chúng ta, chúng ta sẽ tập trung vào một vài thứ:

- Cho phép người dùng thay đổi ngôn ngữ

- Lưu lựa ngôn ngữ mới được lựa chọn

- Tự động thiết lập ngôn ngữ được lựa chọn khi game khởi động lại

- Load các chuỗi chính xác cho mỗi giá trị

Với các Unity components, chúng ta có thể lo liệu tất cả chỉ trong một hành động đơn giản!

Hầu hết các game thủ sẽ chỉ thiết lập ngôn ngữ của họ một lần là coi như xong phần ngôn ngữ. Một lựa chọn khác là bạn có thể phát hiện vị trí của người dùng và thiết lập ngôn ngữ mặc định cho họ - mặc dù vậy bạn cũng nên yêu cầu người dùng xác nhận ngôn ngữ khi họ mở ứng dụng lần đầu tiên, vì không phải tất cả người Mỹ đều coi tiếng Anh là ngôn ngữ gốc của họ.

Để làm điều này trong Unity, có thể tạo ra một “Master components” để gán ngôn ngữ mặc định. Nếu người dùng quyết định thay đổi ngôn ngữ của họ, nó sẽ được gán vào components và sẽ được xem như ngôn ngữ mặc định.

# 6: Nội địa hóa cho các yếu tố trực quan trong Unity

Nội địa hóa các yếu tố trực quan trong game của bạn có thể là một vấn đề lớn. Điều đầu tiên bạn cần nghĩ đến là font - không chỉ là trông nó như thế nào mà còn là những ngôn ngữ nào mà nó hỗ trợ. Dưới đây là một số điều cần xem xét:

- Phong cách

- Ngôn ngữ hỗ trợ

- Kích thước font

- Kích thước file

Phong cách có thể rất quan trọng đối với game của bạn. Bạn có thể tìm thấy một font khá tuyệt vời trong tiếng Anh, nhưng nó lại không hỗ trợ cho các ngôn ngữ bạn cần khi nội địa hóa. Quyết định của bạn là gì: Bạn có tìm kiếm một font mà có thể hỗ trợ mọi ngôn ngữ hay kết hợp các font khác nhau để hỗ trợ tất cả mọi thứ bạn cần?

Điều này phụ thuộc vào có bao nhiêu ngôn ngữ bạn cần cho chiến dịch nội địa hóa của bạn. Tìm một font có các ký tự có dấu (dành cho Tây Ban Nha, Pháp, Ý, vv..) không phải là quá khó khăn. Những sẽ rất khó để tìm ra một font mà có thể hỗ trợ cho nhiều ngôn ngữ châu Âu và cả hệ thống chữ viết châu Á. Và thậm chí nếu bạn có, thì kích thước của nó cũng sẽ khá lớn - do đó, đừng sợ khi phải sử dụng từng font riêng biệt cho các ngôn ngữ khác nhau, miễn là bạn hài lòng với phong cách của chúng.

Cũng nên nhớ rằng không chỉ văn bản, một số văn bản được đồ họa hóa và còn có rất nhiều yếu tố trực quan khác bạn cũng cần phải suy nghĩ về chúng.

Text graphics

Thường thì bạn không cần phải nội địa hóa cho Text graphics. Vì nếu bạn quyết định nội địa hóa cho chúng, tên nhân vật của bạn sẽ phải được nội địa hóa cho mỗi ngôn ngữ, rồi những đồ họa liên quan đến tên (ví dụ như: badges, player icons, vv..) cũng cần phải làm riêng cho mỗi ngôn ngữ.

Tuy nhiên, những cái tên có nhiều nghĩa - như ẩn dụ hay một cách chơi chữ - có thể cần phải được nội địa hóa nếu không thì một số người chơi sẽ bỏ lỡ những điều thú vị. Bạn không chỉ phải suy nghĩ về tên nhân vật mà còn phải suy nghĩ về tên level, vũ khí và các item khắc trong game.

Trên tất cả, chắc chắn rằng bạn không bỏ sót bất kỳ Text graphics nào có ảnh hưởng đến gameplay. Nó có thể là một cái gì đó đơn giản như một yếu tố UI trong một mini-game… Bạn sẽ tự hành hạ bản thân mình nếu bỏ sót những chi tiết nhỏ như thế này.

Làm thế nào để nội địa hóa cho các Text graphics của bạn trong Unity

Một khi bạn biết được Text graphics nào bạn cần để nội địa hoá (và những gì không cần), Unity sẽ chuyển đổi đồ họa của bạn dựa trên sự lựa chọn ngôn ngữ mà người dùng sử dụng. Có 3 phương pháp bạn có thể lựa chọn, mỗi loại có những ưu và khuyết điểm riêng của chúng:

- Tạo các atlas trong Unity Sprite Packer

- Tạo các graphics riêng biệt và gọi cho chúng khi cần thiết

- Thay thế graphics với text và các yếu tố UI

Nếu bạn có thể làm được nhiều việc, bạn nên tạo các atlas trong Unity Sprite Packer. Bằng cách này bạn vừa có thể duy trì hiệu suất vừa có một giao diện bóng bẩy. Mặc dù phải mất nhiều thơi gian để tạo các atlas, nhưng công cụ sprite packer này sẽ giúp bạn tăng tốc độ thực hiện.

 

 

Một lựa chọn khác là thay thế toàn bộ Text graphics với các chuỗi văn bản và các yếu tố UI. Điều này có thể không tuyệt vời như các đồ họa tùy chọn nhưng nó là cách tiếp cận “gọn nhẹ” nhất có thể giúp bạn tối đa hóa hiệu suất.

# 7: Tận dụng Unity AssetBundles

Unity AssetBundles cho phép bạn tạo các packages mà người dùng sẽ download chỉ khi họ cần đến chúng. Điều này có nghĩa là bạn có thể làm giảm kích thước tổng thể cho game của bạn rất nhiều những vẫn có thể cung cấp đầy đủ asset cho mọi đối tượng bạn cần nội địa hóa.

Ví dụ, người dùng sẽ chỉ cần download các file tiếng Pháp nếu họ chọn đó là ngôn ngữ của họ. Nếu không thì họ sẽ không cần phải download những tập tin đó và những tập tin đó vẫn sẽ được lưu trữ một cách an toàn trên các máy chủ của bạn để “chờ đợi” những ai sẽ cần chúng.

Điều này cải thiện đáng kể hiệu suất không chỉ bằng cách giảm số lượng các resources phải download mà nó cũng làm cho game của bạn nhỏ hơn/nhanh hơn khi download. Trên hết, bạn không cần phải xử lý tất cả các tập tin và các asset mà bạn tạo để nội địa hóa. Bạn có thể phục vụ cho mọi đối tượng bạn cần, và họ sẽ không bị cản trở bởi bất kỳ resources nào mà họ không cần.

Đó là những gì bạn cần để nội địa hóa game của bạn với Unity. Tin xấu là bạn không thể làm điều này một mình - bạn nhất định phải có một dịch giả chuyên nghiệp. Tuy nhiên, tin tốt là Unity đã làm cho nhiều nhiệm vụ nội địa hóa khác của bạn trở nên dễ dàng hơn.

Những gợi ý ở trên có thể không phải là cách thức tốt nhất, và nếu bạn đồng ý với điều này, vui lòng chia sẻ cách thức tốt nhất của bạn trong bình luận bên dưới.