Công Cụ Trò Chơi Độc Lập Nền Tảng
Từ đầu, động cơ mới của chúng tôi đã được thiết kế với tư tưởng đa nền tảng. Điều này không phải xuất phát từ việc chúng tôi đặc biệt coi trọng người dùng ngoài hệ sinh thái Windows. Mà là bởi tôi luôn tin rằng một thiết kế tốt tự thân đã phải mang tính độc lập với nền tảng. Trong công ty, việc phát triển đa nền tảng vốn không được ủng hộ rộng rãi. Anh Đinh liên tục khuyên tôi nên tập trung vào những thứ thực tế hơn thay vì phí công vào các vấn đề nền tảng.
Thú thật, sau nhiều năm viết code, tôi luôn xem việc lập trình và thiết kế phần mềm như một thú vui tao nhã. Đối với tôi, đó không phải là công việc, mà là món đồ chơi cá nhân. Khi đã không còn lo lắng về kế sinh nhai, chẳng ai có thể ngăn tôi làm điều mình yêu thích. Hơn nữa, tôi tin chắc rằng một thiết kế xuất sắc sẽ tạo ra sản phẩm chất lượng. Những nỗ lực hôm nay có thể thấy là thừa thãi, nhưng về lâu dài sẽ mang lại lợi ích to lớn.
Nhớ lại thời làm client Tây Du, tôi từng cố chấp tối ưu bộ nhớ chỉ giữ ở mức 64MB để cả máy cấu hình yếu cũng chạy mượt. Để đạt được điều đó, tôi đã dành rất nhiều thời gian nghiên cứu: nén sprite trong RAM, thiết kế cơ chế tải bản đồ động, xây dựng hệ thống cache dữ liệu hình ảnh với khả năng hoán chuyển chủ động, cải tiến các cấu trúc dữ liệu “ngốn RAM”, và kiên quyết phản đối mọi ý tưởng thiết kế đồ họa gây tiêu tốn bộ nhớ.
Những cố gắng đó, kết hợp cùng sự tiến bộ của phần cứng qua các năm, đã tạo nền tảng vững chắc cho việc mở rộng gameplay và tài nguyên mỹ thuật về sau. Các nhóm phát triển hậu kỳ có thể “thoải mái tiêu phí” nhờ vào số lượng tài nguyên dồi dào. Chính những ràng buộc nghiêm ngặt ban đầu đã mở đường cho sự phát triển không giới hạn sau này, cho đến khi các dự án hoàn thành sứ mệnh của mình.
Tôi hy vọng vài năm nữa, vẫn sẽ có người ghi nhớ và trân trọng những nỗ lực tôi đang bỏ ra hôm nay.
Hai tháng qua, từ chỗ hoàn toàn mù mờ về hệ thống X, tôi đã đạt được những bước tiến đáng kể. Tài liệu lập trình cho X so với Windows vốn đã khan hiếm, chưa kể đến những vấn đề cụ thể tôi gặp phải với GLX - thứ gần như không có lời giải trực tiếp nào trên mạng.
Bao lâu nay, tôi âm thầm viết code trên X Window một mình. Khi đồng nghiệp hoàn thành module 3D của anh ấy, tôi hồi hộp chạy thử trên FreeBSD. Dù lý trí tin tưởng vào kiến trúc đa nền tảng của chúng tôi, cảm xúc vẫn không khỏi lo lắng. Kết quả thật bất ngờ: ngoài vài lỗi nhỏ về tên file (hệ thống *nix phân biệt chữ hoa/thường), chương trình chạy một mạch không vướng mắc. Khi hình ảnh 3D đầu tiên xuất hiện trên X Window, niềm vui sướng trào dâng mãnh liệt :D Cảm xúc ấy không chỉ đến từ thành công kỹ thuật, mà còn bởi thiết kế của chúng tôi đã được kiểm chứng. Điều đặc biệt là lập trình viên viết module kia hoàn toàn không cần bận tâm đến tính đa nền tảng - anh ấy chỉ cần tuân thủ các chuẩn mực chung mà chúng tôi đã thống nhất.
Đây thậm chí còn là sự tương thích nhị phân thực sự.
Sau đó, tôi thử nghiệm tiếp khả năng render từ xa qua OpenGL. Tôi cài XMing trên Windows và dùng thử vào tối hôm qua. Vấn đề nhỏ phát sinh ở GLX: server XMing chỉ hỗ trợ GLX 1.2 trong khi tôi ban đầu phát triển trên GLX 1.3. Tôi phải chỉnh sửa lại code, qua đó phát hiện thêm vài lỗi nhỏ khác. Cuối cùng mọi thứ cũng vận hành trơn tru. Dù khả năng này không mang nhiều ý nghĩa thực tiễn với game 3D yêu cầu cao về tương tác và hiệu năng, nhưng với tôi đây là một món đồ chơi thú vị. Đặc biệt, việc debug từ xa bằng DDD mang lại trải nghiệm rất tuyệt vời, đủ để tôi từ biệt giao diện insight vốn khó dùng bấy lâu.
P/s: Nếu các cao thủ đang làm việc với X Window hay Mac OSX đọc được bài viết này, xin vui lòng để lại thông tin liên hệ, chúng ta có thể giao lưu học hỏi lẫn nhau :D