Battle – Công thức trừ (1)

Lòng vòng….

Nợ bài đã lâu, hôm nay xin phép viết tiếp ….. vẫn như những bài trước, đây là những gì tôi đúc kết, học lóm, tổng kết cùng với quan điểm cá nhân, nên có sai thì hoan nghênh gạch đá ????

Nhắc lại bài trước (Hiểu thêm về chiến lực và chiến đấu qua mô hình chiến đấu cơ bản nhất) công thức tính P1 – P2 = Hp1 * Dps1 – Hp2 * Hp2 để biết kết quả trận đấu khá hợp áp dụng với game CATS ( https://www.zeptolab.com/games/cats ), chỉ cần loại trừ các trường hợp bất ngờ như bị lật xe, bị thổi bay thì tính hiệu số tích atk * hp của 2 phe rồi trừ hao quãng đường ,range attack thì đa phần là chuẩn. Tiện đây đa cấp luôn game này, lại một tác phẩm đầy sáng tạo Zeptolab, hy vọng không thọt vì những cái không đáng như Kings of Thieves, tuy còn nhiều cái chưa tốt nhưng vẫn rất đáng để chơi (cho biết).

Vào đề

Quay trở lại với nội dung hôm nay, mô hình chiến đấu cơ bản quá đơn giản và sơ sài, dễ gây nhàm chán và ít sự lựa chọn cho người chơi, nên người ta sẽ thêm vào nhiều biến số khác , trong đó có chỉ sổ phòng thủ ( hoặc giáp) là thường gặp nhất, cũng như làm chiến đấu da dạng hơn rất nhiều. Có hai cách áp dụng chỉ số phòng thủ là công thức trừ và công thức chia, cũng là 2 công thức tính dmg phổ biến nhất.Công thức trừ :
DMG = ATK – DEFCông thức chia :
DMG = ATK * ( 1 – DMG_REDUCTION%) , mà DMG_REDUCTION% được tính theo DEF.Hôm nay viết trước về công thức trừ, với ct này thì từ
P= DPS * HP
trong mô hình cơ bản sẽ chuyển thành
P = ( ATK – DEF)*SPEED*HP , vì DPS sẽ thay đổi theo Def của đối phương nên phải tách thành ATK, SPEED.
Và kết quả trận đấu sẽ được quyết định bởi
P1 – P2 = (ATK1 – DEF2)*HP1*SPEED1 – (ATK2 – DEF1)*HP2*SPEED2 lớn hơn , nhỏ hơn , hoặc bằng 0

Ví dụ 1

Đưa vào ví dụ, ngày xửa ngày xưa, có 3 con sói (Time to upload some BCS pictures…….)

Sói A: HP = 100, ATK = 5, DEF = 1, SPEED = 0.98 (hit/s)
Sói B: HP = 100, ATK = 10, DEF = 2, SPEED = 0.25
Sói C: HP = 100, ATK = 2.5, DEF = 0, SPEED = 3.5Nếu 3 unit này oánh nhau thì
AvsB = P_a – P_b = 300 – 255 = 69 -> A thắng
BvsC = P_b – P_c = 250 – 175 = 75 -> B thắng
AvsC = P_a – P_c = 500 – 525 = -35 -> C thắng=> A>B , B>C , và C>A

Từ công thức và ví dụ trên có thể thấy được đặc điểm đầu tiên của công thức trừ là chiến lực sẽ thay đổi tùy theo def của đối thủ, tự hình thành lên một quan hệ tương khắc tự nhiên, ví dụ:
Song kiếm có speed cao nhưng atk thấp, thì có lợi thế với các unit giáp thấp máu nhiều hoặc combo tốt với các skill trừ giáp, ngược lại với trường kiếm có speed thấp nhưng atk cực cao thì lại thích hợp đánh các unit giáp cao máu ít và hợp với các skill tăng crit.

đây là điều mà công thức chia không thể thực hiện được nếu không dùng các modifer ( ví dụ như ngũ hành tương khắc của game châu á, ví dụ như atk type vs armor type trong starcraft và warcraft)Một đặc diểm khác của công thức trừ là dễ bị cực đoan hóa, và giá trị của stats là không tuyến tính

Ví dụ 2 :

Unit A : ATK = 30 , SPEED = 2 (hit/s)
Unit B : HP = 1000 , DEF = 30
Dưới đây là chart thời gian A đánh thắng B (s) , khi ATK của A tăng từ 0 đến 100 vs DEF của B = 30, và khi DEF của B tăng từ 0 đến 100 vs ATK của A = 30. Khi ATK <= DEF , dmg = 1. Time càng thấp (nhanh) thì càng có lợi cho A, và bất lợi cho B, ngược lại khi time cao thì có lợi cho B và bất lợi cho A.

Time lớn nhất khi atk < def, tức 1000/ (1*2) = 500 giây, và time nhỏ nhất khi DMG > HP , tức ATK – DEF > 1000, đánh 1 hit chết, 0,5 giây.Từ ví dụ trên, ta thấy trừ dễ dẫn đến cực đoan hóa, khi chênh lệch giữa def và atk quá lớn hoặc quá nhỏ, một là đánh phát chết luôn hai là đánh mãi không chết.Ngoài ra giá trị của stats là không bằng nhau, như trên chart ta thấy khi mua ATK thì người chơi sẽ được lợi lớn nhất ở phân khúc từ 31 ~ 41 và giảm dần, sau khi trên 50 ATK thì build stats ATK gần như vô ích, tương tự với DEF sau 31 thì không có giá trị. Thêm nữa là value của ATK sẽ giảm dần còn value của DEF sẽ tăng dần, đấy cũng là lí do vì sao nghiên cứu Armor trong Starcraft luôn tốn kém hơn Atk rất nhiều ( uhm, blizzard cũng từng dùng công thức trừ đó…)

Giá trị của stats còn phụ thuộc và pool stats của người chơi và đối thủ lúc đó, ví dụ như khi ATK = 200, DEF = 20 thì 10 ATK sẽ không có giá trị bằng khi ATK = 200 , DEF = 190 ( giảm nửa thời gian đánh )Từ những đặc điểm trên cá nhân tôi nhận thấy công thức trừ thích hợp để làm game offline hơn, vì tính cực đoan hóa của nó khiến người chơi dễ dàng cảm nhận được feed back ngay sau khi build stats, lại dễ hiểu và trực quan với user vì không phải tính toán nhiều. Thêm nữa trong game offline ta có thể khống chế chặt chẽ pool stats của người chơi, ví dụ nnhư trong starcraft, các units có base và upgraded stats là cố định.Nhưng ngược lại, công thức trừ có vẻ không hợp dùng trong game online vì rất khó nắm bắt trải nghiệm của user ở từng giai đoạn khác nhau, nhất là khi có liên quan đến PVP và việc bán stats lấy tiền. Và khi thêm các stats cấp 2 như tránh né, counter, block, critical hoặc skill thì sẽ rất khó balance trải nghiệm của người chơi.

Chốt & Linh Tinh:

Chốt là có lợi có hại, vẫn phải xem tổng thể design và ứng dụng thực tế nữa, vì lý thuyết vẫn chỉ là lý thuyết thôi

Ví dụ như với starcraft thì công thức trừ kết hợp với tương khắc giữa atk type và unit size (thật ra là một dạng amor) mang lại những chiến thuật đa dạng và trải nghiệm phong phú, ví dụ như một đám marine bắn ultralisk mãi không chết nhưng bắn zerglings thì mái thoải !

Một ví dụ khác là Đại Chưởng Môn cũng dùng tốt công thức này, vì tập user chính mà game nhắm đến ở thời điểm đó (Game mobile bắt đầu bùng nổ ở TQ) là những người chưa chơi game bao giờ, nên họ cần cái gì đó đơn giản, dễ hiểu, user biết phải bỏ tiền vào đập stats gì cho ngon. Ngoài ra để control dc balance thì playcrab đã phải thêm rất nhiều các quy tắc (nổi và chìm), như kiểu chiến đấu 1vs1 trong 2 round đầu, lượt cuối đọ tổng hp+mp, các tỉ lệ giả trong quá trình bồi dưỡng, tổng sản lượng bồi dưỡng đan, hoặc như Huyết Chiến thay vì là thử thách người chơi trong việc chọn stats thì nó lại là sổ số xem có ra atk hay ko, vì các stats khác phế hết ( balance ko tốt), nhưng user thích đỏ đen… haiz.

đọ nội công hự hự hự

Cũng công thức trừ nhưng mang vào real-time + đánh đông người + hệ thống skill và stats phức tạp thì sẽ khó khống chế hơn rất nhiều, như khi tôi chơi MVL, thường hay bị cảnh đánh thường thì toàn 1 1 1 1 1 1 dmg, khi ra skill thì bùm cái bên kia lăn ra ngất @[email protected], hoặc 1 thằng đứng giữa cả đám quây lại đánh toàn 1 1 1 1 1 , no đánh cũng 1 1 1 1 nhưng bên nào ra chưởng trước thì bên kia đi . . . nhưng cuối cũng đây cũng chỉ là ý kiến cá nhân, nhìn chung thì user họ chấp nhận được là được rồi.

Cảm ơn vì đã kiên nhẫn đọc đến đây  hy vọng không làm phí thời gian của bạn, hẹn gặp lại ở bài kế, công thức chia. Chắc chắn còn nhiều game sử dụng thành công công thức trừ, nếu bạn biết, please comment xD

Các tài liệu đọc thêm:

http://wiki.teamliquid.net/starcraft/Damage

http://www.unitstatistics.com/warcraft3/

http://classic.battle.net/war3/basics/armorandweapontypes.shtmlhttp://classic.battle.net/scc/protoss/units/

P/s: nhiều khi viết xong cũng ko biết vừa viết gì đâu, có chỗ nào sai sót mong anh em chỉ ra, viết xong đau đầu vãi =))

Leave a Comment