💡 Theo đánh giá của RetroLab, libretro là một giải pháp xuất sắc cho các nhà phát triển muốn đưa sản phẩm của mình lên nhiều nền tảng mà không phải đau đầu với các vấn đề driver hay GUI. Đội ngũ RetroLab tin rằng với sự phát triển không ngừng của hệ sinh thái libretro, đây sẽ là lựa chọn hàng đầu cho các dự án game và giả lập trong tương lai.
Libretro là gì?
Libretro là một giao diện lập trình ứng dụng (API) đơn giản nhưng cực kỳ mạnh mẽ, được thiết kế để tạo ra các trò chơi và trình giả lập. Về bản chất, nó cho phép bạn biến chương trình của mình thành một tệp thư viện duy nhất – gọi là libretro core. Một frontend hỗ trợ libretro có thể tải tệp thư viện đó và chạy ứng dụng. Nhiệm vụ của frontend là cung cấp tất cả các chi tiết triển khai cụ thể, chẳng hạn như trình điều khiển video, âm thanh và đầu vào. Trong khi đó, libretro core chỉ chịu trách nhiệm về chương trình chính. Điều này có nghĩa là bạn không cần phải lo lắng về việc viết các trình điều khiển video khác nhau cho Direct3D hay OpenGL, hay phải hỗ trợ mọi API đầu vào/âm thanh có thể có. Tất cả những điều đó nằm ngoài phạm vi của core libretro.

Bất kỳ dự án nào được chuyển sang hoạt động với API này đều có thể chạy trên bất kỳ frontend libretro nào – ngay bây giờ và mãi mãi. Bạn chỉ cần duy trì một cơ sở mã duy nhất xử lý chương trình chính, và sau đó nhắm mục tiêu vào một API duy nhất (libretro) để đưa chương trình của mình lên nhiều nền tảng cùng một lúc.
Các dự án khác có thể hưởng lợi từ thư viện phần mềm libretro core ngày càng mở rộng của chúng tôi bằng cách triển khai API libretro trong các dự án riêng của họ. Ví dụ, các dự án như XBMC đã bắt đầu viết trình điều khiển libretro dựa trên frontend tham chiếu RetroArch.
RetroArch là frontend tham chiếu chính thức, có sẵn trên hầu hết các nền tảng hiện đại. Nó được thiết kế để nhanh, đơn giản nhưng mạnh mẽ. Các frontend dành riêng cho nền tảng khác cũng đang được phát triển, bao gồm tích hợp gốc với nền tảng HTPC phổ biến XBMC.
Ai đang sử dụng Libretro?
Mặc dù trường hợp sử dụng phổ biến nhất của libretro là giả lập console, nhưng nó cũng phù hợp như một nền tảng cho hầu hết mọi trò chơi 2D. Ví dụ, NX Engine được sử dụng trong tựa game freeware nổi tiếng Cave Story đã được chuyển thành công sang libretro. Các game mã nguồn mở như Quake và Doom cũng đã được chuyển sang libretro. Và tựa game freeware mới Dinothawr hỗ trợ libretro một cách tự nhiên.
Libretro GL/Vulkan
Ngoài các game và trình giả lập phong cách retro phụ thuộc vào software rendering (nơi bạn thường chỉ cần khả năng hiển thị lên framebuffer), API Libretro còn cho phép bạn nhắm mục tiêu OpenGL và Vulkan. Điều này cho phép bạn tạo các cổng libretro sử dụng OpenGL hoặc Vulkan như một phần của quá trình rendering nội bộ. Từ góc độ tính di động, chúng tôi khuyên bạn nên cố gắng nhắm mục tiêu cả hai để cổng libretro GL của bạn hoạt động trên cả thiết bị di động và máy tính để bàn.
Tại sao các nhà phát triển nên nhắm mục tiêu Libretro?
Phần mềm nhắm mục tiêu API libretro ngay lập tức có quyền truy cập vào tất cả các nền tảng có frontend libretro. Điều đó có nghĩa là trò chơi của bạn có sẵn ngay lập tức cho người dùng của các nền tảng đó mà không cần phải lo lắng về trình điều khiển đầu vào/âm thanh/video, các vấn đề tương thích hay vô số điểm kỳ quặc của hệ thống chủ bên dưới. Tương tự, không cần phải viết mã GUI chuyên biệt cho từng nền tảng hoặc sử dụng các bộ công cụ đa nền tảng phức tạp và thường có lỗi như Qt và GTK+.
Hơn nữa, một khi trò chơi của bạn hỗ trợ libretro, tất cả các tính năng khác của frontend libretro sẽ đi kèm miễn phí, chẳng hạn như tính năng rewind thời gian thực của RetroArch, netplay che giấu độ trễ, quay phim/phát trực tuyến video không mất dữ liệu và hỗ trợ shader hậu kỳ tiên tiến.
Có lẽ điều tốt nhất: libretro là một đặc tả mở, hoàn toàn miễn phí để triển khai, không có phí cấp phép hay điều khoản ẩn nào.
Nếu bạn muốn tìm hiểu thêm về libretro, hãy để lại bình luận hoặc trò chuyện với chúng tôi trên IRC tại #retroarch trên Freenode.
Mục tiêu thiết kế của Libretro
Libretro là giao diện lập trình thư viện. Các chương trình được chuyển sang thư viện này và sau đó có thể chạy với bất kỳ frontend tương thích libretro nào. Frontend tham chiếu của chúng tôi là RetroArch. Hai dự án không giống nhau, và điều này được phản ánh trong giấy phép. RetroArch sử dụng GPL phiên bản 3, trong khi API libretro được cấp phép theo MIT.
Một số mục tiêu thiết kế cho libretro:
- Cho phép một cách tiếp cận không phải "bếp núc" (non-kitchensink) đối với tính di động đa nền tảng.
- Cho phép một cách tiếp cận không phụ thuộc nặng nề vào các thư viện bên ngoài. Chỉ cần một tệp tiêu đề duy nhất chứa các định nghĩa cho các callback âm thanh/video/đầu vào cần thiết.
- Quan tâm đến tương thích ngược. ABI (Giao diện nhị phân ứng dụng) của libretro chưa bao giờ bị phá vỡ trong nhiều năm, và các frontend libretro cũ từ nhiều năm trước trong hầu hết các trường hợp vẫn có thể sử dụng các core libretro được tạo ra ngày nay.
- Theo thiết kế, nó cho phép các chương trình được chuyển thành các thư viện động đơn lẻ, sau đó có thể được tải vào và ra khỏi các ứng dụng frontend nhờ API libretro.
- Buộc bạn, qua thiết kế của nó, phải suy nghĩ lại về mã nào thuộc về core land và mã nào thuộc về frontend land. Các core libretro lý tưởng nên có ít hoặc không có phụ thuộc vào bất kỳ API hệ thống/OS cụ thể nào, để cùng một core libretro có thể hoạt động trên bất kỳ frontend tương thích libretro nào.
- Được thiết kế với game, trình giả lập và đa phương tiện trong tâm trí. Các cổng libretro core giống với việc chuyển game lên các console độc lập hoặc thiết bị di động, nơi thiết bị đầu vào chính không phải là bàn phím và chuột (mặc dù libretro cũng hỗ trợ chúng).
- Không quan tâm đến các GUI WIMP bên ngoài (vì chúng không di động) hoặc bất cứ thứ gì có thể gắn liền với việc sử dụng PC desktop chủ yếu. Các core libretro lý tưởng phải hoạt động liền mạch trên thiết bị di động, PC desktop và console game.
- Yêu cầu bạn liên kết chương trình đã được chuyển sang libretro với một frontend libretro; việc tạo frontend libretro là tùy thuộc vào bạn hoặc bạn có thể chọn một trong các frontend libretro trưởng thành đã có sẵn.
Nguồn: RetroArch Blog - https://www.libretro.com/index.php/api/


