Anh em nghĩ code game là làm shader cháy nổ? Nhầm rồi, render chữ mới là thứ hãm nhất. Cùng xem 10 năm của Slug - thư viện vẽ font cân mọi thể loại game.

Nhắc tới làm game hay code giao diện người dùng, anh em thường hay ảo tưởng về những thứ hoành tráng: shader xịn xò con bò, physics đâm chém giật đùng đùng, hay ray-tracing xập xình. Chứ ít ai biết cái thứ hãm l*n và dễ gây trầm cảm nhất quả đất lại chính là... render font chữ. Hôm nay tôi kể cho các ông nghe về Slug – một cái thư viện mà tác giả của nó đã dành tròn 1 thập kỷ chỉ để làm đúng một việc: vẽ chữ trên GPU.
Nói nhanh cho vuông: xử lý text trong đồ họa 3D là một cơn ác mộng. Cách truyền thống là dùng CPU "rặn" ra từng pixel rồi lưu thành mấy cái ảnh bitmap (texture atlas). Hậu quả? Phóng to thì vỡ hạt, răng cưa nát bét, chưa kể mấy ngôn ngữ loằng ngoằng như Ả Rập hay Thái Lan là dễ toang hoặc cắn RAM vãi chưởng.
Đúng 10 năm trước, pháp sư Eric Lengyel (chủ xị Terathon Software) đập bàn bảo: "Đ*o làm thế nữa!". Lão vứt luôn cái trò dùng bitmap, thay vào đó đem toàn bộ mớ toán học ma giáo (Bezier curves) nhét thẳng vào GPU để nó tính toán và vẽ đường cong theo thời gian thực.
Thế là Slug ra đời.
Dân tình mà nhìn vào cái thư viện này thì thường chia làm mấy phe:
1. Hội Dev Game (Đặc biệt là C++ / Graphics dev): Bái phục sát đất! Chỉ những thằng từng cắm mặt tự viết engine render font chữ mới thấu hiểu sự đau khổ của việc tính toán khoảng cách (kerning), đường cong, và mipmapping. Nhìn code của Slug chạy mượt, nhiều anh em chỉ biết khóc vì nó quá "bá đạo".
2. Hội chiếu mới "Why not AI?": Mấy thanh niên quen dùng AI gen code dạo gần đây thì hay tặc lưỡi: "Ủa sao không dùng AI mà vẽ text?". Xin lỗi các đồng đạo, AI có thể viết thơ, nhưng bảo nó tính toán chính xác hàm giao cắt đường cong Bezier ở cấp độ pixel shader thì chắc chắn là sập server hoặc chạy ra một nùi rác.
3. Hội Indie / Freelancer nghèo: Nhìn giá bản quyền của Slug (dành cho studio lớn) mà xót xa. Nhưng bù lại, họ lấy đây làm động lực để học toán. Muốn kiếm tiền tỷ, phải giải quyết được bài toán khó!
Góc nhìn thực dụng từ C4F: Anh em thấy đấy, làm tech không nhất thiết phải đẻ ra một cái app to vật vã, mạng xã hội tỷ đô hay chạy một con vps đắt tiền với microservices lằng nhằng.
Lão Eric chỉ tập trung giải quyết MỘT cái pain point duy nhất (render font), làm nó cực kỳ hoàn hảo, và bán nó cho các studio game suốt 10 năm trời. Đó là tư duy "làm cái đinh ốc nhưng là cái đinh ốc không thể thay thế". Đôi khi, sự nghiệp của một Senior Dev vĩ đại chỉ cần xoay quanh một vấn đề cực khó, và nhai đi nhai lại nó cho tới khi cả thế giới phải quỳ lạy trả tiền cho bạn.
Cứ code chăm chỉ đi, đừng khinh những thứ nhỏ nhặt!
Nguồn: A Decade of Slug