Xây dựng hệ thống chơi game Tá lả phỏm online (garagames)

Tớ sắp làm (trong nhóm) một cái game chơi bài, trò chơi nổi tiếng và rất phổ biến tại Việt Nam – Tá Lả – Phỏm. Nếu các bạn muốn biết kỹ năng, những gì diễn ra trong đầu tớ, … hay đơn giản là cũng muốn tham gia, muốn học làm một thứ tương tự như thế này, thì hãy theo dõi bài này nhé.

UPDATE: Hệ thống (đã cải tiến và nâng cấp về performance, scale) đang chạy trên http://www.vn-zoom.com , hoạt động ổn định. Chúng tôi cũng sẵn lòng cung cấp các game này như là dịch vụ (SaaS) để cùng hợp tác triển khai trên hệ thống thứ 3, cùng tối thiểu hoá chi phí đầu tư và tăng hiệu quả kinh doanh.

UPDATE: Dịch vụ chơi game này đang được Minh Viet JSC cung cấp (giám đốc Dũng Nguyễn – Googler)

CREDIT: Rất cảm ơn góp ý của @hoangxu, @gachien, @dungla, @tridm, @lehuongA2, @hoahongxam trong quá trình xây dựng tài liệu

Mô tả về trò chơi

Tớ dùng ngôn ngữ đời thường bình dân để mô tả, các bạn có viết doc cho doanh nghiệp, khách hàng nhớ đổi giọng văn nhé. Cách mô tả ở đây là dựng user story, hướng tới các bạn lập trình viên, để các bạn có thể dễ dàng biến mô tả này thành tổ chức dữ liệu và module business cho chương trình

Luật chơi Tá Lả thông dụng – quy ước, thuật ngữ

Quân = Cây: chỉ 1 lá bài
Số: chữ, số in trên lá bài, chỉ độ to của lá bài (A là nhỏ nhất < 2❤ … < Q < K là to nhất)
Chất: màu, kiểu lá bài: rô cơ bích tép (nhép) (RCBT)
Bài (để chơi): luôn luôn có 9 cây (mỗi Người luôn có 9 cây trên bài và cả các cây đã ăn)

Hội chơi: một nhóm người chơi liên tục các ván tạo thành Hội. Hội tan rã (kết thúc) khi có 1 Người nghỉ.

Ván: một ván có tối đa 4 người chơi là Người1, Người2, Người3, Người4
NgườiN: N là số từ 1 đến 4, người bất kỳ trong ván chơi đều có Người Trước và Người Sau. Người cầm Bài để chơi.

Bắt đầu Ván: khi bắt đầu chơi, hệ thống sẽ Chia bài cho các người chơi.

  • Các quân bài khi chia được phân phối ngẫu nhiên. Các quân còn lại (Nọc) cũng được sắp xếp ngẫu nhiên.
  • Vị trí Người chơi 1 2 3 4 cũng được sắp xếp ngẫu nhiên. (hoặc vào trước ngồi trước)
  • Nếu Ù, có option để cho chọn có random lại chỗ ngồi không
  • Khi bắt đầu ván đầu tiên, Random để chọn người Đánh đầu tiên. Người này sẽ được (hệ thống) tự động lấy thêm Cây đầu từ Nọc

Nọc: phần bài còn lại ngay sau khi chia xong, đặt ở giữa bàn.

Cạ: 2 Quân cùng số (số bằng nhau, VD cùng là 2, cùng là Q) hoặc 2 Quân cùng Chất có Số cách nhau 1 hoặc 2 đơn vị
Phỏm: (Note: Phỏm cũng đc coi là cạ, vì vẫn thoả mãn điều kiện của Cạ): gồm 3 Cây trở lên. Các Cây này cần thoả mãn tính chất: liên tiếp Số cùng Chất, hoặc các cây có cùng Số

Lượt: Ván tá lả chơi theo lượt, lần lượt từng người chơi (Từ Người1 đến NgườiN, sau NgườiN là Người1). Mỗi khi đến Lượt (có Lượt), Người chơi phải làm hai việc: Lấy bài và Đánh bài. Lấy bài là quyết định Ăn cây Rác của Người Trước hoặc bốc một Cây từ Nọc lên. Đánh bài là Đánh, hoặc Ù. Lượt đổi luân phiên Ngược chiều kim đồng hồ.
Đánh: một Người khi đến lượt chơi, luôn luôn phải đánh Cây Rác (Người Sau có thể Ăn). Không được đánh cây đã Ăn. (Note: Đánh cây trong Cạ, trong Phỏm đều được) (Note: Móm vẫn phải đánh)

Cây Rác: Khi đến lượt, sau khi Lấy Bài (Người chơi sẽ có 10 Cây), Người chơi phải Đánh ra một Cây Rác (để bài luôn có 9 Cây)
Cây Đã Ăn: Người chơi ăn Cây Rác của Người Trước thì Cây đó sẽ trở thành Cây Đã Ăn của Người Chơi (đang có Lượt). Cây Đã Ăn phải luôn lật cho tất cả Người chơi trong Ván được biết.
Bốc: lấy một Cây từ Nọc khi đến Lượt
Chốt: khi Người chơi có Lượt mà Người Sau đã có 3 Cây Rác thì lần Đánh này gọi là Chốt.
Ăn: một Người khi đến lượt chơi, có thể ăn của Người Trước, chỉ được Ăn nếu cây đó Ăn vào Cạ –> trở thành Phỏm. Mỗi Phỏm chỉ được Ăn vào 1 Cây. (VD: có Cạ 2R3R, có thể ăn 1R, 4R. Sau khi ăn 1R, không được ăn 4R nữa. Nếu có cạ 2R3R 5R6R, có thể ăn 1R và 4R, trường hợp này không tính là Ăn 2 lần vào Phỏm vì 4R ăn vào Phỏm 5R6R chứ không phải ăn nối vào 1R2R3R).

Tạm thời không cho phép ăn khống. (hoặc bố trí đây là ràng buộc Option)
Chú ý với các phỏm dọc, thì số nhỏ nhất là A, số lớn nhất là K. (VD chỉ có thể có Phỏm 1 2 3, J Q K, không cho phép Q K A)

Chuyển: khi có người Ăn, Cây Rác trên cùng (vì mỗi Người có thể có nhiều Cây Rác) được chuyển Ngược chiều kim đồng hồ 1 mức.
Tái: sau khi Chuyển, Người nào có Cây Rác giảm xuống từ 4 -> 3 thì Người đó lại được có Lượt tiếp (Ăn/Bốc và Đánh tiếp)
(Note: Móm vẫn được Tái).

Ăn Chốt: Người chơi Ăn Cây Rác của Người Trước khi mà mình đã có sẵn 3 Cây Rác

Kết thúc ván: khi một Người đến Lượt mà đã có 3 Cây Rác, sau khi Ăn/Bốc, họ phải thực hiện các hành động theo thứ tự sau:

  • Hạ (nếu có Phỏm)
  • Gửi (nếu có thể)
  • Đánh (bắt buộc phải đánh, Móm cũng phải đánh)
  • Ngồi đợi với phần bài còn lại để tính điểm (nếu ván kết thúc bằng tính điểm)

Hạ: Khi Người nào đã có 3 Cây Rác, đánh Cây Rác thứ 4 thì phải Hạ, trình tất cả các Phỏm của mình ra, thực hiện các lần Gửi. giữ lại các Cây còn lại để tính điểm. Thứ tự hạ trước sau có liên quan đến thắng thua. Nếu tổng số điểm bằng nhau, Người nào Hạ trước sẽ thắng. (Note: một Người có thể Hạ nhiều lần, do họ có thể được Tái)

Gửi: khi Hạ, nếu Người chơi có Phỏm để hạ thì sẽ được Gửi. Người chơi đưa các cây trên bài mình vào các Phỏm của Người đã Hạ trước sao cho Phỏm đó vẫn đảm bảo tính chất Phỏm sau khi Gửi.
Móm: khi Hạ, nếu không có Phỏm, Người chơi sẽ bị Móm. Móm không được Gửi.
Ù: Bất kỳ lúc nào khi 9 Cây trên Bài có thể sắp xếp thành các Phỏm mà không còn thừa cây nào thì Người chơi có thể Ù. Thời điểm Ù khi nào do Người chơi quyết định. Khi Ù, Ván kết thúc ngay lập tức.
Khi Hạ, sau khi trình hết Phỏm ra, Người chơi có thể Gửi đến mức không còn Cây nào (Tính điểm = 0) thì cũng là Ù. Ván chơi kết thúc lập tức.

Ù Khan: Ngay sau khi chia xong bài, nếu Người chơi không có bất kỳ Phỏm hay Cạ nào thì tính là Ù Khan, quyền lợi giống như Ù.

Ù Tròn: Người chơi khi đến lượt có 10 Cây trên bài, đều có thể ghép thành Phỏm cả –> được gấp đôi Ù

Đền: Một Người chơi phải chịu phạt thay các Người khác. Có nhiều tình huống dẫn đến phải đền:

  • Do ngốc: Nếu Người chơi nào bị ăn 3 Cây Rác (dẫn đến Người Sau được Ù) thì phải chịu thay các Người chơi (không Ù) còn lại phần phạt khi Ù.
  • Đền do Tái vòng: khi người được Tái lại Ù, người ăn chốt cuối cùng phải chi trả phí Ù (chi 15Chip) hộ hai người còn lại.
  • Đền do Ăn láo: Ăn 2 cây vào một Phỏm, Ăn không thành Phỏm (nếu gỡ bỏ ràng buộc khi Ăn sẽ xảy ra trường hợp này)
  • Đền do gửi: không áp dụng (VD: Người1 hạ 1R2R3R, Người2 hạ, rồi gửi con 4R vào, Người3 Hạ, rồi gửi 5R vào, Ù –> Người2 bị đền –> do tạo điều kiện cho Người sau Ù)

Hoặc trong quá trình hạ, người nào ăn cây thứ 4 của người trước đó và khi một trong những người hạ sau Ù

Tính Điểm: Sau khi các phỏm đã hạ hết xuống và gửi đi thì các Cây trên tay sẽ sử dụng để tính điểm bằng cách cộng lại số điểm của từng Cây (A=1, J=11, Q=12, K=13). Nếu bài nào có số điểm thấp nhất thì thắng. Trường hợp đồng điểm thì tính theo thứ tự Hạ, Hạ trước thì thắng.
Trường hợp tất cả cùng Móm, người nào Móm trước thì thắng.

Luật tính thưởng phạt

Đơn vị cơ bản cho một ván là Chip. Một Chip có thể đổi thành x Coin (tuỳ theo nhóm chơi quyết định).
Các thưởng phạt được tính theo quy tắc sau:

  • Ván kết thúc bằng Tính Điểm: Người nhất được lấy tất cả thưởng của các Người còn lại. Người nhì nộp 1Chip, ba nộp 2Chip, bét nộp 3Chip.
  • Móm phải nộp 4Chip.
  • Khi Ù, mỗi Người còn lại nộp cho Người Ù 5Chip (tổng cộng Người Ù ăn 15Chip)
  • Ù Khan, cũng như Ù
  • Ù Tròn, gấp đôi Ù
  • Người bị Ăn Chốt nộp 4Chip cho Người Ăn
  • Người nào ăn khống trong Lượt, khi đến cuối mà không có Phỏm cho Cây Đã Ăn ấy sẽ đền 5Chip cho mỗi Người còn lại (mất tổng cộng 15Chip).

Business

  • Hệ thống hỗ trợ chơi theo luật Phỏm Hà Nội
  • Hệ thống có API cho các client giao tiếp tự do (client có thể là wap, web, mobile app)
  • Không có chế độ cho máy chơi (do hạn chế thời gian nên không cài đặt AI cho máy được)
  • Luật nộp Gà: Option. Khi bị Ăn, Người bị Ăn nộp 1 Chip vào Gà.
  • Khi Ù (Ù, Ù Tròn, Ù Khan): Người Ù được nhận toàn bộ số Chip trong Gà.
  • Luật được thiết kế để không phá hỏng tính đúng của Ván bài, tuy nhiên không ràng buộc quá chặt –>Người chơi có thể mắc sai sót (dẫn đến phải Đền) như vậy mới hấp dẫn và hay, giống thực tế
  • Một số luật bổ sung nhưng không phổ biến, sẽ được xem xét để cài đặt sau hoặc để dạng luật option của Ván.

.

Design

Do thời gian thực hiện dự án quá ngắn, nên phải theo phương pháp phát triển dự án Agile. Phần design sẽ được giảm thiểu tài liệu.

Hạn chế cài đặt các luật Option

.

Code

PHP
lock/sync
RESTful API
Flash
JavaMobile

19 thoughts on “Xây dựng hệ thống chơi game Tá lả phỏm online (garagames)

  1. Pingback: Twitted by lockevn

  2. Luật thì không có gì, thiếu phần tái vòng. Tuy nhiên giải thích hơi bị lằng nhằng, giản tiện chút đi.

  3. hình như có 1 cty ở VN có làm tá lả online rồi mà!
    ongame thì phải!

  4. họ làm phải tải chương trình về chơi bạn ạ. Và luật của nó ko phong phú như mình tả.

    Mình nhắm tới khả năng bạn có thể ngồi cầm phone, cầm netbook lướt web, cầm iphone lướt web vẫn chơi đc với nhau bình thường

  5. ban a ? y tuong cua ban rat hay nhung ko nen de tien bang chip ma nen lay so tien thuc te hay hon vi du nhu 5000vnd hoac 1000 vnd hay hon va thuc te hon. ban phai can than nhe trang choi.vui da ngung choi phom roi do vi loi qua nhieu

  6. @hung chào bạn

    Mình để tiền bằng chip, vì luật thưởng phạt dựa trên chip, còn mỗi chip là bao nhiêu tiền (bằng giá trị) thì sẽ do lúc setup sới chơi quy định mà. VD: 1chip = 5000coin thì nhì ba bét sẽ là 5000 10000 15000, móm 20000, ù 25000

    Mình ko xài VND đâu nhé, nhạy cảm😉

    Bạn yên tâm, bọn mình làm ít khi lỗi😉 và lỗi thì ko dám release. Sợ nhất là hack và cheat thôi.

  7. Xin chào, mình tình cờ tìm thấy trang của bạn trên google vì mình cũng đang có 1 số ý tưởng về trò chơi này và mong muốn hợp tác với bạn. Mình chuyên làm về các ứng dụng flash.

    Tuy nhiên mình có 1 số câu hỏi như sau:

    – Chi phí xây dựng ban đầu theo bạn là bao nhiêu ? Chi phí duy trì server (vì đây là game online yêu cầu real-time communication nên chi phí cho bandwidth & server cũng không nhỏ)

    – Bạn sẽ kinh doanh trò chơi này như thế nào ? Thu lợi nhuận ra sao.

    – Hiện tại bạn đã hiện thực được game này đến đâu rồi và team của bạn có bao nhiêu người ?

    Mình muốn hỏi bạn các câu hỏi trên để tìm hiểu thêm về ý tưởng và kế hoạch của bạn trong tương lai. Mong nhận được hồi âm của bạn (send email trực tiếp cho mình nhé)

  8. ý tưởng cũng hay nhưng có nhiều cty làm rồi như ongame, choi.vui….
    mình cũng quan tâm như bạn DuyAnh ở trên :
    – Chi phí xây dựng ban đầu theo bạn là bao nhiêu ? Chi phí duy trì server (vì đây là game online yêu cầu real-time communication nên chi phí cho bandwidth & server cũng không nhỏ)

    – Bạn sẽ kinh doanh trò chơi này như thế nào ? Thu lợi nhuận ra sao.

    – Hiện tại bạn đã hiện thực được game này đến đâu rồi và team của bạn có bao nhiêu người ?

    Mình muốn hỏi bạn các câu hỏi trên để tìm hiểu thêm về ý tưởng và kế hoạch của bạn trong tương lai. Mong nhận được hồi âm của bạn (send email trực tiếp cho mình nhé)..

    mình cũng có viết game này nhưng chỉ chạy offline thôi .
    bạn thử xem:
    http://rapidshare.com/files/268920395/Phom.rar.html

  9. bạn DINHNHI gửi link trên rapid nhưng mình không load được. Nếu bạn cũng đang quan tâm đến game này thì chúng ta có thể hợp tác. bạn có thể gửi liên lac trực tiếp với mình qua hòm thư phomonline(at)gmail(dot)com được không ?
    Thanks

  10. @all : xin lỗi các bạn vì chậm trả lời, do bận quá, mình phải ôm vài prj lẫn lộn nhau nên không trả lời các bạn ngay được.

    Mình vắn tắt chút xíu cho các bạn quan tâm:
    – bản web bọn mình làm flash và webAPI
    – chấp nhận không real time hoàn toàn, để giảm tải
    – server mình có ít nhất 3 chiếc, riêng biệt, toàn Xeon 5xxx, ram 4GB, được tài trợ
    – bandwidth do thiết kế API rất nhỏ, nên không đáng kể, thêm nữa, cũng được tài trợ luôn
    – kinh doanh: thu phí vào chơi + quảng cáo
    – team 6 người (làm rất nhiều việc, systemdesign – là mình, code, design, optimize, mobile version, load test, whitebox blackbox test …)

    – có nhiều cty làm, nhưng bọn mình sẽ làm có khác biệt cơ bản, để kiếm tiền được, và hấp dẫn như thật
    – hiện phần lớn việc đã xong, phần game đã xong, đang để đối tác test, đồng thời bọn mình cũng phải chỉnh luật sao cho phong phú và phù hợp nhiều vùng miền nhất. Thêm nữa mình sẽ kết nối với hệ thống của vài đối tác, để ngay lập tức có nhiều user chơi ngay.

    @DINHNHI: mình ko down đc game thật
    @xsam: sẽ có event launch hoành tráng, bạn yên tâm😀 hoặc theo dõi post này nhé.
    @mình rất mong được góp ý cũng như hợp tác của các bạn. Các bạn có ý tưởng gì thì mail cho mình nhé, mình sẽ móc nối, chuyển cho PM dự án này (vì vai mình trong dự án này là technical system design thôi)😉

  11. Vấn đề chống cheat, chống replay và random là rất khoai trong những trò chơi bài nhé.

    VD: Các bạn mà dùng (new Random()).Next() là có bạn hacker vào đánh toàn thắng liền nhe, vì phân bố của Random ko đều.

  12. Hi, mình rất quan tâm và muốn tham gia cùng tuy nhiên không thấy bạn gửi email hay tìm thấy email của bạn ở trên trang này ?

  13. Chào bạn, mình rất vui khi đọc được web này và rất quan tâm tới dự án, bên mình sẵn sàng hợp tác và tài trợ 100% kinh phí cho dự án, đồng thời tạo nền tảng kinh doanh cho các bạn. nếu bạn quan tâm xin email lại.

    Chúc thành công!

  14. Chào các bạn,

    Dự án này mình đã hoàn thành xong từ lúc viết bài này (tháng 5/2009), chứ không phải giờ mới viết😀, các bạn chú ý ngày tháng nhé.

    @DuyAnh: email của mình là “lockevn tại gờ mail chấm com”

    @SocBay: mình sẽ liên hệ với chủ đầu tư cũ của dự án (vì mình làm tư vấn cho họ về kỹ thuật, scaling, chịu tải, performance , … chứ không sở hữu sản phẩm) để thông báo với bạn.

    Dự án này đã xong từ rất lâu, hoàn thiện nhiều tính năng, đặc biệt có gameplay và strategy tốt cho việc thu lợi nhuận (tổ chức giải đấu, ranking, …), rất hấp dẫn nhé.

  15. Cập nhật tình hình chiến cuộc cho các bạn:

    Thời điểm này (tháng 3/2011): nhiều bạn liên hệ mình, rục rịch triển khai game đánh bài lắm nhé😉

  16. Tôi là admin trang vnpet.com, tôi có xem qua project của bạn, và tôi nhận thấy mình có thể hợp tác khai thác project của bạn trên site tôi. vui lòng email lại nhé. K.Phúc.

  17. chào bên bạn có cung cấp API hay mã nguồn game không
    mình đang muốn mở 1 web game giống VNZ🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s