Hướng dẫn

Source code game bi-a: bên trong gói HTML5 bi-a 8 bóng

Vật lý, luật chơi, máy đối thủ và dữ liệu lưu nằm ở các file riêng: mã nguồn Velvet Pool gồm những gì và người mua thường sửa gì trước.

Ảnh minh họa Velvet Pool: cây cơ ngắm sau bi trắng trên bàn xanh, các bi số 3, 8 và 4 gần lỗ góc.

Source code game bi-a đáng mua khi ba thứ nằm ở các file riêng, dễ đọc: vật lý của bi, luật bi-a 8 bóng và máy đối thủ. Nếu chúng rối vào nhau, mỗi lần đổi màu nỉ hay độ khó của máy lại thành một buổi gỡ lỗi. Velvet Pool, template bi-a 8 bóng của chúng tôi, tách riêng chúng, và bài viết này đi qua gói mã nguồn theo từng file.

Chúng tôi nói về cách tổ chức code, người mua thường sửa gì trước, cách host hoặc đóng gói thành app, giấy phép cho phép gì và phiên bản này không có gì. Mọi tên file dưới đây đều lấy từ hướng dẫn cho người mua đi kèm game.

Tóm gọn: Velvet Pool là JavaScript thuần chạy trên WebGL2, không thư viện 3D, không bước build. Bạn sửa một file, chép vào thư mục game và tải lại trang.

Source code game bi-a này gồm những gì

Velvet Pool là một game bi-a 8 bóng hoàn chỉnh, không phải engine hay bộ khởi đầu. Gói tải về có bốn thư mục: game/ là bản build sẵn sàng tải lên, source/ là cùng game đó ở dạng phiên bản cho lập trình viên kèm README, package.json và test, documentation/ chứa hướng dẫn có hình minh họa bằng tiếng Anh và Bồ Đào Nha, còn THIRD-PARTY-LICENSES/ giữ văn bản giấy phép font chữ.

Bản thân game chơi bi-a 8 bóng có lỗi phạm quy, ball-in-hand (bi trên tay) và chọn bi trơn hoặc bi sọc. Có ba cấp độ máy (Easy, Medium và Hard), một bàn luyện tập tự do có hoàn tác, đặt bi và xếp lại bi, cùng chế độ hai người chơi trên một thiết bị. Người chơi có thể đánh xoáy tới, xoáy lui hoặc xoáy ngang cho bi cái, và các thành tích lưu trên máy mở khóa năm màu nỉ và năm kiểu cơ. Giao diện có 14 ngôn ngữ.

  • Công nghệ: JavaScript thuần (vanilla), ES modules và WebGL2. Không Three.js hay thư viện code nào khác.
  • Code: JavaScript thuần, có định dạng, trong source/src và game/src. Không có gì bị nén (minify) hay gộp (bundle).
  • Test: tùy chọn, với Node.js 20 trở lên. Kiểm tra vật lý, luật 8 bóng, các trận đấu với máy và khóa dịch thuật.
  • Phiên bản tại thời điểm viết: 1.1.0, cập nhật ngày 22/10/2026.

Xem trang Velvet Pool, demo và tài liệu hướng dẫn

Các file được tổ chức thế nào

game/ và source/ có cùng cấu trúc, nên một đường dẫn trong thư mục này trỏ tới cùng file trong thư mục kia. Với game bi-a, phần tách quan trọng nhất là giữa src/core/ (mô phỏng và luật chơi) và src/game/ (mọi thứ người chơi chạm vào).

  • src/core/physics.js: mô phỏng bi, độ xoáy và phản hồi khi chạm băng.
  • src/core/rules.js: luật 8 bóng và quyết định phạm quy.
  • src/core/ai.js: cách máy chọn cú đánh.
  • src/game/controls.js: nhập liệu ngắm, lực và xoáy.
  • src/game/progress.js: thành tích, màu nỉ, cây cơ và tính điểm trận đấu.
  • src/game/i18n.js: chữ trong 14 ngôn ngữ, liệt kê trong LANGS.
  • src/game/localRecords.js: lịch sử điểm lưu trên máy.
  • src/game/audio.js: phát hiệu ứng và nhạc.
  • css/style.css và css/fonts.css: giao diện, bố cục responsive và khai báo font.
  • assets/: hình ảnh, âm thanh và font, với các file logo trong assets/logo/.

Vì vật lý, luật chơi và máy là các module riêng, bạn có thể cho máy dễ tính hơn mà không động đến chuyển động của bi, hoặc đổi một luật phạm quy mà không phải chỉnh lại băng. Sự tách bạch đó là điều quan trọng nhất cần tìm ở bất kỳ code bi-a nào bạn mua.

Người mua thường sửa gì trước

Phần lớn dự án đi theo cùng một thứ tự. Bắt đầu từ những gì người chơi nhìn thấy, rồi đến những gì họ cảm nhận, và để luật chơi sau cùng, vì đó là chỗ dễ sinh lỗi nhất.

  1. Thương hiệu: thay các file logo trong assets/logo/ và chỉnh kích thước tương ứng trong CSS. White label được cho phép, nên tên của bạn hoặc của khách hàng có thể thay cho tên chúng tôi.
  2. Diện mạo bàn: màu sắc và font nằm trong css/style.css. Định nghĩa màu nỉ và cây cơ nằm trong progress.js. Giữ nguyên ID của chúng, nếu không người chơi sẽ mất các vật phẩm trang trí đã mở khóa.
  3. Chữ và ngôn ngữ: mọi chuỗi chữ nằm trong i18n.js. Sửa câu chữ bạn cần; danh sách ngôn ngữ nằm trong LANGS.
  4. Độ khó của máy: việc chọn cú đánh nằm trong ai.js. Mỗi lần chỉnh một cấp độ và chơi trọn một trận với nó.
  5. Vật lý: ma sát, độ xoáy và phản hồi băng nằm trong physics.js. Ở đây thay đổi nhỏ đã có tác động lớn, nên hãy chạy test sau mỗi lần sửa.
  6. Luật chơi: các biến thể luật riêng thuộc về rules.js. Kiểm tra phạm quy và ball-in-hand bằng tay, ngoài bộ test.

Quy trình giống nhau cho tất cả: sửa file trong source/, chép sang cùng đường dẫn trong game/, phục vụ thư mục qua HTTP rồi tải lại. Hướng dẫn cho người mua khuyên mỗi lần chỉ đổi một tính năng và sau mỗi thay đổi thì kiểm tra menu, một trận đấu, tạm dừng, màn hình kết quả và tải lại trang.

Host, nhúng vào trang hoặc đóng gói thành app

Host là phần đơn giản nhất. Tải mọi thứ trong game/ lên một thư mục như public_html/velvet-pool/, giữ nguyên các thư mục con và mở địa chỉ. Phía server không cần npm, terminal, PHP, cơ sở dữ liệu hay tài khoản. Một gói host phục vụ file tĩnh qua HTTPS là đủ.

  • Đừng mở index.html bằng cách nhấp đúp: trình duyệt chặn các module của game trên file://. Để thử trên máy, chạy python -m http.server 8765 trong game/.
  • Nếu màn hình vẫn trắng, kiểm tra WebGL2 đã bật và tên file giữ đúng chữ hoa, chữ thường.
  • Nếu trình duyệt từ chối một module, server của bạn đang gửi file .js với MIME type sai.
  • Khi đặt trong iframe trên một cổng game, hãy cho phép fullscreen và autoplay.

Mọi thứ game cần khi chạy đều nằm trong game/, nên không có gì tải từ CDN hay trang khác. Mỗi lần tải trang mới vẫn gọi đến host của bạn, nên đây không phải app cài đặt chạy offline. Game chạy được trên màn hình cảm ứng: người chơi ngắm trên bàn và kéo thanh điều khiển lực.

Dự án app native không nằm trong gói. Nếu bạn muốn đưa game lên Google Play hoặc App Store, một lớp bọc như Capacitor, được nhà phát triển mô tả là runtime native đa nền tảng để làm app di động bằng code web, là một hướng phổ biến. Dựng và duy trì dự án cho cửa hàng là việc của bạn, hoặc là dịch vụ chúng tôi báo giá riêng.

Phiên bản này không có gì

Velvet Pool là phiên bản chơi trên trình duyệt, lưu cục bộ. Không có chơi mạng nhiều người hay phòng riêng, không có bảng xếp hạng trực tuyến, không có tài khoản đám mây và không có SDK quảng cáo. Hai người có thể chơi trên một thiết bị, và điểm cá nhân từ các trận đấu với máy hợp lệ được lưu trong trình duyệt. Chế độ luyện tập và trận đấu trên cùng thiết bị không lưu điểm.

Chơi trực tuyến cần server và công sức phát triển riêng của bạn. Đó là một dự án thực sự, nên hãy tính ngân sách ngay từ đầu thay vì kỳ vọng template sẽ tự lớn thành như vậy. Nếu danh mục của bạn cần thêm game thể thao, hai game dưới đây cũng được bán dưới dạng phiên bản trình duyệt sẵn sàng để host.

Puttide: golf mini 3D với 30 lỗ, cũng viết bằng JavaScript thuần

Golazo: bóng đá bàn với 50 đội tuyển quốc gia

Giấy phép và giá trong một đoạn

Velvet Pool có giá niêm yết 39 USD. Đến hết ngày 30/11/2026, chương trình Black Friday giảm 15% mọi template, nên giá còn 33,15 USD, và đơn từ hai template trở lên được giảm thêm từ 5% đến 20%. Mỗi lần mua là một giấy phép vĩnh viễn, không độc quyền cho một sản phẩm cuối, của bạn hoặc của một khách hàng. Bạn được sửa code, hình ảnh và âm thanh bên trong sản phẩm đó và gắn thương hiệu riêng. Người chơi có thể truy cập miễn phí hoặc qua quảng cáo. Bạn không được bán lại riêng template hay code của nó. Đã bao gồm sáu tháng hỗ trợ, hoặc 12 tháng nếu chọn gia hạn khi thanh toán; công việc tùy chỉnh, hosting và tích hợp SDK hay cổng game được báo giá riêng.

Đọc toàn bộ điều khoản giấy phép và hỗ trợ

Câu hỏi thường gặp

Source code game bi-a có dễ đọc hay đã bị nén?

Dễ đọc. JavaScript trong source/src và game/src là code thuần, có định dạng, không có file nén hay gộp.

Tôi có cần Node.js hay bước build không?

Không. Bạn sửa file trong source/ và chép sang game/. Node.js 20 trở lên chỉ cần khi bạn muốn chạy các test tùy chọn.

Tôi có thể cho máy dễ hơn hoặc khó hơn không?

Có. Việc chọn cú đánh của máy nằm trong src/core/ai.js, tách khỏi vật lý, nên bạn chỉnh được mà không đổi cách bi lăn.

Game có chạy trên điện thoại không?

Có. Hỗ trợ cảm ứng và điều khiển tự thích ứng với màn hình. Cần WebGL2, và hiệu năng tùy thiết bị, nên hãy thử trên những điện thoại người chơi của bạn dùng.

Người chơi có giữ được tiến trình nếu tôi chuyển game sang tên miền mới không?

Không. Dữ liệu lưu thuộc về origin của trình duyệt, nên đổi tên miền thì người chơi bắt đầu lại từ đầu. Hãy chọn địa chỉ chính thức trước khi ra mắt.

Tôi có thể thêm chơi mạng nhiều người không?

Chỉ với phiên bản này thì không. Cần server và công sức phát triển riêng. Chúng tôi có thể báo giá như một việc làm theo yêu cầu.

Code bi-a này hợp với ai

Nó hợp với một cổng game hay website muốn có game bi-a 8 bóng trong danh mục, một agency giao game bi-a gắn thương hiệu cho một khách hàng, và một lập trình viên muốn đọc cách viết vật lý và luật bi-a mà không có thư viện 3D chen vào. Nó ít phù hợp nếu kế hoạch của bạn dựa vào trận đấu trực tuyến hoặc bảng xếp hạng chung.

Hãy chơi demo trên điện thoại và laptop trước khi mua, và mở sơ đồ file trong tài liệu hướng dẫn. Nếu cách tách vật lý, luật chơi và máy khớp với cách bạn định làm việc, phần còn lại chỉ là vài buổi chiều chỉnh sửa.

Chơi thử demo Velvet Pool và mua giấy phép

Cần chỉnh sửa hoặc nhiều giấy phép? Yêu cầu báo giá