Giới Thiệu
Trong thế giới phát triển game, không phải lúc nào cũng cần phải tạo ra một framework đồ sộ hay thực hiện một refactor kéo dài hàng tháng. Đôi khi, chỉ cần biến một thứ bạn yêu thích thành một trải nghiệm thú vị hơn. Cuối tuần vừa qua, tôi đã xây dựng một phiên bản web của trò chơi solo Hall of the Dwarven King do Robin Gibson sáng tạo. Mục tiêu rất đơn giản: giữ lại tinh thần của bản gốc nhưng loại bỏ những rắc rối về bút và giấy. Kết quả là một trò chơi đơn giản, nhanh chóng, thân thiện và tự động lưu tiến trình của bạn.
Chức Năng Của Game
- Chơi qua 20 lượt hành động dựa trên xúc xắc (Đánh, Uống, Nấu, Đào, Xây, Khai thác).
- Đặt các tòa nhà lên một lưới 5×5 với các quy tắc về độ sâu, sự kề cận, và tính duy nhất.
- Kiếm và chi tiêu vàng — đầu tư vào Vaults, một Phòng Ngai Vàng, hoặc thậm chí thay đổi một mặt xúc xắc.
- Tự động giải quyết các giai đoạn và tính điểm để bạn chỉ cần tập trung vào các lựa chọn.
- Tự động lưu và tiếp tục sau; giữ một bảng xếp hạng nhỏ địa phương cho những lần chơi tốt nhất của bạn.
- Chia sẻ tóm tắt điểm số chỉ với một dòng vào clipboard của bạn.
Để thử nghiệm, bạn chỉ cần tải về repo từ liên kết trên và mở tệp index.html
trong trình duyệt hiện đại.
Quy Tắc Cơ Bản
Game diễn ra với 7 xúc xắc bao gồm mọi thứ từ Đánh (⚔️) đến Khai thác (💰). Mỗi lượt chơi diễn ra như sau:
- Giai đoạn Lăn Xúc Xắc — Lăn, lăn lại (loại bỏ xúc xắc nếu cần), hoặc chi 5 vàng để đặt một xúc xắc.
- Giai đoạn Hành Động — Giải quyết theo thứ tự: Đánh → Uống → Nấu → Đào → Xây → Khai thác.
- Dọn Dẹp — Tiến về phía trước, vương miện cho Phòng Ngai Vàng nếu bạn có một, và tiếp tục.
Một vài yếu tố thú vị làm cho trò chơi trở nên hấp dẫn: Nấu ăn đóng vai trò như một cánh cổng (bỏ qua nó và bạn sẽ mất lượt nếu bạn không có một Nông Trại Nấm trên cấp độ hiện tại), độ sâu tăng lên mỗi 3 lần đào, và khai thác có tỷ lệ rủi ro/phần thưởng khi bạn xuống sâu.
Xây Dựng Phiên Bản Web
Tôi đã giữ cho stack công nghệ đơn giản:
- HTML/CSS/JS thuần. Không sử dụng framework, không bundlers.
- Trạng thái trong một đối tượng JS. Lượt, độ sâu, vàng, lăn xúc xắc, bản đồ, mọi thứ.
- Lưu trữ thông qua localStorage. Game tự động lưu và có thể tiếp tục sau khi làm mới.
- Kết xuất theo kiểu mệnh lệnh. Cập nhật DOM đơn giản, không cần virtual DOM.
Giao diện người dùng phản ánh bảng gốc nhưng dựa vào CSS đáp ứng và biểu tượng inline để cảm thấy gần gũi trên web. Điểm số bảng xếp hạng vẫn giữ ở địa phương (top 5), và mã nguồn đảm bảo rằng bạn chỉ thấy những hành động hợp lệ cho giai đoạn hiện tại.
Một Vài Quyết Định Thiết Kế
- Chọn lựa lăn lại rõ ràng. Nhấn vào xúc xắc để đánh dấu chúng cho lăn lại (trực quan hơn so với “giữ để loại trừ”).
- Tốc độ đào đơn giản hóa. Một độ sâu mỗi 3 bước — đủ nhanh cho việc chơi trên web, vẫn giữ được căng thẳng.
- Bố cục đáp ứng. Lưới + biểu tượng CSS thay vì lấy các phần hình ảnh từ phiên bản giấy.
- Rào chắn nhẹ. Giao diện người dùng chỉ đơn giản không cho phép bạn thực hiện các động tác không hợp lệ.
Hướng Đi Tiếp Theo
Phiên bản hiện tại là một trò chơi có thể chơi hoàn toàn, nhưng vẫn còn chỗ cho việc hoàn thiện:
- Làm cho “Đặt Mặt” có thể nhắm mục tiêu thay vì tự động gán.
- Đổi tên một số biến kế thừa (
held
→selected
) để rõ ràng hơn. - Thêm hoạt ảnh nhỏ cho việc lăn xúc xắc và đặt bản đồ.
- Cải thiện khả năng sử dụng trên thiết bị cảm ứng/máy di động với các mục tiêu lớn hơn và cử chỉ nhấn lâu.
Tại Sao Lại Xây Dựng Phiên Bản Này?
Bởi vì đôi khi bạn chỉ muốn chơi một trò chơi bạn yêu thích theo một cách hơi khác, và vì việc lập trình nó là một phần của niềm vui. Phiên bản này chỉ mất một cuối tuần: một vài tệp, vài trăm dòng JS thuần, và giờ đây tôi có một phiên bản nhanh chóng mà bất kỳ ai cũng có thể mở trong trình duyệt và thưởng thức.
Tín Dụng
Phiên bản web này là một sản phẩm do người hâm mộ tạo ra, không mang tính thương mại của Hall of the Dwarven King (v1.2, 2017) bởi Robin Gibson — metalsnail.net.