Tới nội dung

Đột nhiên tôi muốn remake lại Zing Me

Tôi gần như không đụng vào game. Nói trước vậy, không thì chuyện Chủ nhật tuần trước nghe vô lý lắm.

Tôi tải bản Đảo Rồng remake trên điện thoại, con game ngày xưa cứ đi học về là tôi cày. Tôi tự nhủ ngó năm phút thôi. Rồi bắt gặp mình đang ngồi ngắm mấy con rồng, nghe tiếng game, và một thứ gì đó rất cụ thể quay về. Đây cũng là game đầu tiên trong đời tôi móc tiền thật ra nạp, thẻ cào giấy, nhập từng con số, chỉ để có một con rồng. Cảm giác đó khó tả lắm. Không hẳn là vui. Nó giống như gặp lại.

Gameplay Đảo Rồng
Đảo Rồng giờ vẫn sống trên điện thoại. Rồng nhìn mới hơn, cảm giác thì y nguyên. (Ảnh: Đảo Rồng Mobile trên App Store.)

Tối hôm đó một ý nghĩ bám lấy tôi không buông: hay remake lại Zing Me?

Zing Me là gì, cho ai chưa từng nghe

Zing Me là mạng xã hội Việt Nam đầu tiên cho ra hồn, VNG dựng lên, mở cửa tháng 8/2009 sau một năm chạy thử. Ngày 23/9/2009 nó báo có 945.000 người dùng, qua mặt Facebook ở Việt Nam lúc đó mới 918.000. Lúc đỉnh nó lên tới tầm 6,8 triệu người, gấp đôi Facebook ở thị trường này, về sau có số liệu còn ghi gần 10 triệu. Ba phần tư người dùng là học sinh sinh viên. Một tài khoản xài chung cho nhạc, tin tức, blog, album ảnh, với cả đống game flash: Thành phố vui vẻ, Khu vườn trên mây, Nông trại vui vẻ, và con game bắt tôi dính, Đảo Rồng.

Tháng 10/2011 nó mở Zing Appstore với hơn 200 ứng dụng và game.

Giao diện Zing Me V5
Giao diện Zing Me đời V5, làm lại xoay quanh game, cho tự trang trí theme với cover. (Ảnh: GenK, 2015.)

Năm 2012 nó bắt đầu biến mình thành nền tảng, cho lập trình viên ngoài vào xây app trên hạ tầng với cổng thanh toán của nó. Được một thời gian. Rồi làn sóng điện thoại cuốn phăng mọi thứ. Facebook lên số một khoảng giữa 2012, và sau đúng một thập niên, tháng 1/2020 Zing Me tắt đèn.

Tháng trước, chính người đẻ ra nó dành gần hết bài phát biểu ở lễ khai giảng Bách khoa Hà Nội để nói về nó. Không phải nói về Zalo với 81,3 triệu người dùng mỗi tháng. Mà nói về thứ đã chết. Ông bảo khoảng cách lộ ra ở ba chỗ: mạng lưới người dùng, con người, nguồn lực. Ba thứ đó thì đội kỹ sư có thức đêm mấy cũng không bù nổi bằng sức.

Tôi đọc tới đó, nghĩ về mấy con rồng của mình.

Archive còn giữ xác, nhưng hồn thì không

Đây là đoạn tôi không ngờ lại dễ. Zing Me chết rồi, nhưng Wayback Machine còn nhớ nó. Từng trang snapshot, HTML render đúng như ngày xưa người ta từng thấy.

Ngay tối đó tôi thả Claude Code vào goal mode, chĩa thẳng vào archive. Mẹo nhỏ làm được việc này: thêm id_ vào sau chuỗi thời gian trong URL Wayback là lấy được file gốc, không toolbar, không link bị viết lại, không script lạ chèn vào. Source sạch. Từ đó chỉ còn việc crawl: lôi HTML thô từng trang, kéo CSS, ảnh, font về, viết lại link cho chạy local.

Tới giờ tôi đã vét hết những trang nào vét được. Câu đó phải kèm chú thích, vì archive có trần của nó và tôi đụng đủ mọi trần. Nó chỉ giữ HTML đã render xong, chứ không giữ backend. Không database, không phiên đăng nhập, không logic feed, không server game. Khu nào cần mật khẩu là mất. Kết quả tìm kiếm, trang cá nhân hóa, mọi thứ chạy động: mất sạch. Có trang chỉ còn cái vỏ, kiểu render bằng JavaScript mà nội dung chưa từng được chụp lại. Mấy trang đó đành port bằng tay, mò từ ảnh chụp với trí nhớ còn sót, kể cả trí nhớ của tôi.

Đường này người ta đi nhiều rồi. Có cả một dòng việc như vậy: tool đào site khỏi archive dựng lại cho chạy offline, project dựng lại frontend đã chết từng pixel từ stylesheet cũ. Khuôn nào cũng giống nhau. Archive cho bạn cái mặt. Cái máy chạy bên dưới thì không bao giờ có.

Thêm một cảnh gameplay Đảo Rồng
Thứ archive không giữ được: cái máy bên dưới. Giao diện thì chụp lại được, logic game thì phải viết lại từ đầu.

Tôi đang dựng cái gì

Tôi đang port UI sang Next.js, từng trang một. Không phải phủ một lớp áo cho có, cũng không phải trang tưởng niệm. Layout thật, cấu trúc thật, dựng lại thành component hiện đại, ảnh với chữ cứu được bao nhiêu đổ vào bấy nhiêu.

Rồi phần quan trọng hơn hoài niệm: ý nền tảng. Nước đi khôn nhất của Zing Me là biến mình thành chỗ cho người ngoài vào xây, xài chung đăng nhập với thanh toán. Tôi dựng lại đúng theo hướng đó. Mở API để ai cũng đăng được game của mình lên. Đảo Rồng chỉ là chỗ ý tưởng bắt đầu, không phải game đầu tiên chạy. Cái khung thì chung: cái vỏ nhìn như 2009 nhưng cư xử như một nền tảng, game là thứ cắm vào chứ không phải thứ tôi đẻ ra.

Đoạn này tôi còn đang tìm hiểu. Đăng nhập làm sao, đăng ký game thế nào, game nói chuyện với cái vỏ ra sao, API tối thiểu gồm những gì. Chưa có đáp án. Cái có trong tay là bản crawl, bản port đang dở, với một repo chứa hết: ultrabuilders.

Sao lần này thấy khác

Tôi có cả một thư mục toàn dự án chết dở. Viết rồi. Con nào cũng tới đoạn hay thì dừng, vì đoạn hay là đoạn dựng, còn đoạn chán là mọi thứ sau đó. Lần này có khi cũng chung số phận. Nói thẳng vậy.

Nhưng có một thứ lần này khác, phải ghi lại lúc nó còn đúng. Mọi dự án trước bắt đầu từ một ý tưởng. Lần này bắt đầu từ một cảm giác không gọi tên được, tối Chủ nhật, ngồi ngắm con rồng từng thấy hồi đi học về. Ý tưởng tới sau. Việc crawl tới sau nữa. Bình thường tôi phải nặn động lực. Lần này phải ghìm nó lại cho đủ chậm để làm tử tế mấy phần chán.

Ông Khải nói đúng, sức người không vá được mạng lưới, con người với nguồn lực. Tôi chỉ có một mình, một cái archive, một cái renderer. Sáu triệu học sinh thì không gọi về được. Cái gọi về được là chỗ đó, cái khung nền tảng, với một con rồng. Ai còn nhớ thì cắm tiếp con game của mình vào.

Nếu bạn còn nhớ Zing Me, nhớ Đảo Rồng, nhớ tấm thẻ cào nhập từng số, repo đang mở. Về dựng lại phần bạn nhớ đi.

← Tất cả bài viết

Chạm vào bất cứ đâu — mặt nước sẽ trả lời