Pokemon Mechanic Complemented Guide Well, vậy là ½ hè đã trôi qua rồi:'> vì sắp tới tớ lại phải tiếp tục “cày cuốc” cho năm cuối cấp, nên tớ đã quyết định dùng những ngày còn lại để hoàn thành mechanic guide của ruby_norman, coi như quà cho anh em nhân sinh nhật đã qua từ lâu của tớ Cái này free, cứ sử dụng mà bỏ qua credit nhatanh, but hãy credit cho GVN Pokemon Fan Club và ít nhất hãy để lại link tới bản gốc này Đại cương về mechanic : Đầu tiên, game mechanic là gì? Bạn có bao h tự hỏi mỗi khi level up pokemon của mình, những chỉ số cộng thêm đấy lấy ở đâu ra không? Hay là khi catch pokemon, ai cũng biết là làm giảm bớt HP của pokemon, cho nó dính status và dung ball xịn sẽ làm tăng catch rate, nhưng catch rate đấy lấy ở đâu ra và tính thế nào? Game mechanic là một cấu trúc những qui tắc mà theo đó tạo ra gameplay của chúng ta. Nói toán học ra thì nó bao gồm các hàm xuất ra những kết quả phục vụ cho gameplay. Mechanic của RPG nói chung là khá phức tạp, nhưng mà pokemon mechanic phải nói là đặc biệt phức tạp:o nhưng mà chính sự phức tạp đội lốt trẻ thơ truyền thống đó (dĩ nhiên là còn nhiều thứ thú vị hơn được bổ sung vào mỗi bản mới) mà hàng năm, khi các version mới của pokemon được bán ra, bên cạnh đông đảo những nhóc con lính mới(dĩ nhiên là có cả rất nhiều thanh thiếu niên và người lớn nữa, đều là lính mới cả) bị thu hút, ta có thể thấy phần lớn còn lại đều là những cựu binh, những hardcore fan của dòng game này :hug: Guide của ruby_norman đã bao gồm các khái niệm cơ bản về EV và IV, tớ sẽ ko nhắc lại làm gì. Tớ sẽ bắt đầu với một số phần đi sâu hơn. . ___________Auto Merge________________ . 1/Statics của pokemon được tính thế nào? Đầu tiên các bạn, veteran thì ko nói làm j`, nhưng mà newbie phải lưu ý một số thứ sau để tránh tính trạng bị yêu ngôn hoặc chúng# + Việc trade pokemon không làm ảnh hưởng gì đến các chỉ số cơ bản hết, bao gồm EV, IV, base stat, level, gender, nature, EXP. Chỉ có chỉ số happiness là có thể thay đổi, thường thì về neutral, ko thích, ko ghét, nói toán học ra là ở chỉ số 70(cái này sẽ nói sâu hơn sau) + Pokemon shiny ko mạnh hơn pokemon thường. Cái này thì cả tỷ người biết rồi, nhưng mà nhắc lại : cho newbie, các veteran đừng bảo là thừa đấy Ok, bây h là công thức : với HP : ((( 2 * BS ) + IV + ( EV / 4 )) * Level / 100 ) + 10 + Level với stat khác : (((( 2 * BS ) + IV + ( EV / 4 )) * Level / 100 ) + 5 ) * Nature BS : Base stat EV, IV : cái này bài của ruby nói kỹ lắm rồi Nature : 1,1 nếu nature tăng stat đó và 0,9 nếu nature giảm stat đó. Về Nature, lại xem lại guide của ruby_norman Có thể hiểu hiểu đơn giản : base stats là đặc trưng của mỗi loài pokemon, IV là đặc trưng của mỗi cá thể pokemon, nature là tính cách của pokemon và EV là thước đo sự nỗ lực của pokemon đấy. Chú ý là khi chia chúng ta ko làm tròn (round) mà là lấy phần nguyên (trunc). Để dễ hiểu, ta lấy một ví dụ cụ thể : bạn có một con Tyranita level 61, giả sử nó có perfect 31 IVs ở mọi stats, 252 EVs Attack, 6 EVs HP, special attack ko có EV nào, Nature Adamant(+attack, - special attack). Base HP, PA(Physical attack, attack thường ấy, gọi thể cho gọn), SA(Special attack) lần lượt là 100/134/95. Ta sẽ tính HP, PA và SA : HP= (((2 * 100) + 31 + (6 / 4)) * 61/100) + 10 + 61 2*100 = 200 6/4=1,5 . Cái này ta sẽ lấy phần nguyên, nghĩa là còn 1 (200+31+1)*61/100 = 141,52; lấy phần nguyên còn 141. 141 + 10 + 61 = 212 vậy HP của con Tyranita này ở lvl 61 là 212. PA = ((((2 * 134) + 31 + (252/4)) * 61/100)+5)*1,1 = 247 SA = ((((2 * 95) + 31 + (0/4)) * 61/100)+5)*0,9 = 125 (đã check = Shoddy Battle, NetBattle và Casio fx500MS – máy tính bỏ túi quen thuộc của học sinh) Không khó hiểu lắm huh? vậy là stat mình được + khi level up đơn giản chỉ là hiệu của stat mới và stat cũ thôi Bổ sung cho ruby một tí ở phần EV nhé : cứ 4 EVs ta được 1 stat, nhưng là 1 stat ở level 100. Về Damage calcuting, ta sẽ nói ở phần sau, rất rất sau, vì cái đấy còn rất nhiều thứ in depth kể cả về luật lệ game và về mặt toán học. Tạm thời hôm nay thế đã, mấy hôm tới update sau.
2/Catch rate formula : OK, bây h mới là sự khốn nạn đặc biệt của pokemon world. Đã bao giờ bạn tự hỏi là tại sao có những pokemon dễ bắt như caterpie hay wurmple, thậm chí còn không cần đánh mà tung ball vài phát cũng tóm được ngay, hay tại sao bọn legendary lại khó bắt đến vậy hay chưa? Vì sao các veteran lại hay khuyên là giảm HP của pokemon và cho nó dính status trước khi quăng ball? Pokemon catching mechanic có phần đau đầu hơn stats một chút, bạn nào ghét học toán hay các bé còn chưa biết cả khai căn thì có thể bỏ qua Đầu tiên, ta xét equation sau : A = ((3*HPmax – 2*HPcurrent) * rate * PokeballBonus * StatusBonus) / (3*HPmax) (1) Trong đó : HPmax là HP của pokemon khi full health, HPcurrent là HP hiện tại, rate là chỉ số catch rate của riêng mỗi pokemon (có thể tìm thấy ở pokedex của Serebii.net, hoặc là Marriland Pokedex ), PokeballBonus là bonus của pokeball ( list sẽ đề cập sau) và StatusBonus là bonus của status (2 cho sleep và freeze; 1,5 cho paralyze, poison và burn, 1 nếu ko có status) Bọn legendary thường có catch rate là 3, có Groudon và Kyogree là 5, Phione, Dialga và Palkia là 30, Mew, Celebi và Shaymin là 45. Như Dialga và Palkia catch rate cao vậy là do gamefreak "nhân nhượng" tụi mình dù sao cũng là vừa đánh boss xong mà Theo equation trên, ta dễ thấy A thoả mãn Inequality : rate*1/3 <= A < rate * PokeballBonus * StatusBonus; nghĩa là A tối thiểu là rate/3 và luôn nhỏ hơn rate*PokeballBonus*StatusBonus. Nếu A>=2^8 -1, pokemon chắc chắn được bắt. Nếu A<2^8 -1, một equation tiếp theo được tính : (chú ý căn bậc 2 mình sẽ kí hiệu là sqrt, còn căn bậc x sẽ kí hiệu là {x}root, căn bản ngại gõ LaTEX rồi lại phải up hình lắm) B = 1048560 / {4}root(16711680 / A) = (2^16-1) * {4}root(A / (2^8 - 1)) (2) (đơn giản là giản ước đi thôi, thực ra là ko có trục căn thức:'> lúc trước mình nhìn nhầm hết mấy cái ngoặc với nhau cả::( sorry ) Sau đó máy sẽ generate ra 4 random number trong khoảng 0 đến 2^16 - 1 . Nếu 4 số này đều <=b, pokemon được bắt. Vậy theo lý thuyết xác suất, ta sẽ có p là xác suất bắt được pokemon được tính như sau : p = (B+1)^4 / (2^16)^4 = (B+1)^4 / 2^64 (3) Đơn giản là B sẽ là 2^16-1 nếu A=2^8 -1, vậy nếu A>= 2^8 - 1 thì P>=1 rồi, nên máy sẽ ko phải tính đoạn sau nữa Ta có thể phỏng đoán số lần R quăng ball để tóm được pokemon là khoảng 1/p : R ~ 1/p !!!WARNING!!! Bây h nếu bạn nào chưa học cấp 3, hay là kiến thức cấp 3 hổng trầm trọng thì ko cần quan tâm đến phần tiếp theo đây. Nhưng nếu vì lòng yêu game mà bạn lại có hứng thú với toán thì# Thay (3) theo (2), ta có thể khai triển tiếp P như sau : p = ( (2^16 - 1) * {4}root(A / (2^8 - 1)) +1 ) / 2^64 Khai triển tiếp theo nhị thức Newton( cái này viết ra hơi dài, bỏ qua đc ko) ta có : p = ((2^16-1) ^ 4 / 2^64) * A / (2^8 – 1) + ..... phần (.....)đấy là phần khai triển lằng nhằng, các bạn chỉ cần biết là lim nó xấp xỉ 0 là ổn (2^16 – 1)^4 xấp xỉ 2^64, nên 2 cái đấy chia nhau ta lấy = 1 vậy : p ~ A / (2^8 – 1) Sai số tiến tới 0 khi A tiến tới 2^8 – 1, và không vượt quá 0,02% Bây giờ có thể tính R một cách ngon lành và chính xác hơn : Dễ thấy khả năng ko bắt được pokemon là 1 – p, vậy khả năng để khi quăng R lần ball mà vẫn trượt là (1 – p) ^ R Vậy khả năng P để số lần quăng bóng không quá R là bắt được pokemon sẽ là : P = 1 – ( 1- p )^R <=> (1 – p)^R = 1 – P <=> R = log{1-p}(1-P) ( lôga cơ số (1 – p) của 1-P) gọn mắt hơn ta có thể viết là R = ln(1-P) / ln(1-p) Chú ý là bạn có thể gán giá trị nào đấy cho P để tính R, với 0<P<1 Dễ thấy R tiến tới vô hạn khi P tiến tới 1 (chắc chắn bắt đc) và R=0 khi P=0 END OF WARNING Đơn giản chỉ có thế thôi# nếu có thắc mắc thì vào topic hỏi đáp ok? hỏi gì thì trước khi hết tuần này thôi đấy! Bây giờ là đến List Ball Bonus : Pokeball : 1.0 Premier ball : 1.0 Dive ball : 1.0 (lưu ý là DP ko có đáy biển, ở RSE sẽ là 3.5 nếu underwater) Luxury ball : 1.0 , + 1 Happiness Heal ball : 1.0, Heal pokemon vừa bắt Great ball : 1.5 Ultra Ball : 2.0 Net Ball : 3.0 cho water và bug type, còn lại đều là 1.0 Repeat Ball : 3.0 cho pokemon đã registered trong pokedex, 1.0 otherwise Nest Ball : Lv 1-lv 19 Pokemon: 3.0 , Lv 20-lv 29 Pokemon: 2.0, Lv 30 and Above: 1.0 Timer Ball : bắt đầu là 1.0, cứ 10 lượt lại + 1.0. Max ở 40 lượt với rate 4.0 Dusk Ball : 4.0 khi trời tối hoặc ở chỗ tối, trong hang động. Còn lại đều 1.0 Quick Ball : 4.0 ở 5 lượt đầu, sau đấy cứ hết 5 lượt lại giảm 1.0 rate. Min ở 15 lượt với rate 1.0 Master Ball : Always capture Park Ball : Always Capture ( Pal Park only) Khi nào rảnh mình sẽ post hình các công thức nhìn cho đỡ đau mắt bây h tạm thời thế đã
3/Damage Calculating : Sau 1 tuần mất điện, về quê, học hành vất vả etc.... cuối cùng bây h cũng là lúc để mình release những chương cuối cùng của Pokemon Mechanic khởi đầu của sự khốn nạn đấy là công thức tính damage và ứng dụng:-“ cái này có thể không trâu bằng catch rate, nhưng khốn nạn và đau đầu hơn, vì đây mới là thứ thực sự có tác dụng khi thi đấu::( 3a/ Damage Formula : Đơn giản là thế này thôi : Damage = (((( 2L / 5 ) + 2 ) * A * P ) / D ) / 50 ) + 2 ) * M * STAB * R / 255 L : level của attacker A : chỉ số attack hoặc special attack của attacker(tuỳ theo move mà là PA hay SA) P : power của đòn tấn công D : defense hoặc special defense của defender(cũng tuỳ theo move của attacker) M : Multiplier, là type avantage hoặc disavantage, có thể là 4, 2, 1, ½, ¼ hay 0, tuỳ theo type đòn tấn công và type của defender STAB : same type attack bonus, 1.5 nếu như attacker cùng type với đòn tấn công R : Random value, nằm trong khoảng 217 đến 255 Nhớ là khi chia phải lấy phần nguyên chứ không làm tròn đâu nhé Một điểm cần lưu ý là phần (((( 2L / 5 ) + 2 ) * A * P ) / D ) / 50 mà lớn hơn 997, ta sẽ lấy 997 chứ không phải là kết quả mà ta có, dĩ nhiên là muốn có giá trị >= 977 thì không hề đơn giản đâu Thế hold item và bonus từ môi trường hay những chiêu như sword dance, belly drum thì nhét vào đâu? Chịu khó đọc kĩ hướng dẫn sử dụng trước khi dùng : cái nào raise power hay raise stat đều được ghi rõ cả rồi, ăn chắc thì lên những trang kiểu serebii.net mà đọc Bổ sung thêm tí nữa là hôm nọ có người hỏi mình là tại sao cái formula kia lại hơi khác với formula ở bên smogon? xin thưa là giống nhau cả thôi nhưng cái trên kia chỉ là formula pure damage, hoàn toàn chưa có modify gì (trừ type, mà cái này có lẽ nên cho vào pure damage, vì nó khác những cái modify kia). Các modify khác có thể là move tăng stat, held item, bị cut attack do burn, ability ảnh hưởng, môi trường.... Chúng ảnh hưởng đến phần nào trong formula thì hãy đọc kĩ hướng dẫn sử dụng trước khi dùng:'>nếu thấy cần thiết mình sẽ làm một phần phụ về cái này::) Cuối cùng là khuyến mãi cho mọi người cái types chart 3b/Confusion Damage : “Có thể em biết rồi”, như thầy dạy Lý hồi xưa của tớ châm chọc SGK cải cách, confusion damage được tính theo chỉ số attack của nạn nhân. Pokemon bị confusion sẽ tự đánh mình với 50% chance mỗi lượt, và sẽ hết confusion trong khoảng từ 1 đến 4 lượt. Những lượt nghỉ sau khi dùng hyper beam, blast burn etc... hay bị paralyzed ko đánh được ko tính vào số lượt bị confusion. Bị sleep và confusion cùng lúc nếu ko dùng snore hay sleep talk thì an toàn. Damage hoàn toàn tính theo công thức damage bình thường, A là Physical attack của mình, D là Physical Defense của mình, L là level của mình và P là 40, STAB = 1, M = 1. Chú ý là khi thi đấu, những pokemon ko dùng đến physical move như Alakazam thì tốt nhất là để IV cho attack = 0 luôn, và dĩ nhiên là ko cộng EV cho attack rồi cái này chỉ là cẩn tắc vô áy náy thôi 3c/ Stat modifiers : Đầu tiên các bạn xem qua cái này đã, chưa cần hiểu vội Chú ý : bảng này chỉ dùng cho các move mà boost stat của pokemon. Khi một chiêu thông báo là “X stat rose!” hoặc “Y stat fell!”, chỉ số đó sẽ tăng hoặc giảm 1 bậc. Nếu có thêm “Sharply” hay “Harshly” thì tăng hoặc giảm 2 bậc. Belly Drum đưa attack thẳng lên bậc 6. Lại chú ý : lấy phần nguyên, không làm tròn gì hết Nhớ rằng những stage trên kia là chỉ áp dụng cho move. Còn Ability và Held Item nhân chỉ số đấy riêng, ko can hệ đến stage trên kia. Ví dụ : Ability Swift Swim nhân đôi speed khi mưa, nếu dùng 1 agility nữa thì speed sẽ x4. Pokemon ko có ability kiểu đấy thì nếu dùng 2 agility cũng chỉ x3. 3d/ Tấn công và phòng thủ dưới con mắt toán học : Lại một lần nữa, nhưng vì cái này ko đau đầu như phần catch rate, nhưng mình xin phép được cảnh báo : bạn nào chưa học đến thì bỏ qua cái này cũng được:cool: nhưng mà đơn giản hơn công thức catch rate mở rộng nhiều, cái phức tạp chỉ là mình đã phải đau đầu ngồi nghiền nát cái công thức trên kia để nó có ứng dụng Ok, coi như tất cả các số khác đã xác đinh, ta thấy ngay biểu đồ của hàm tính damage theo biến defense là một hyperbol và biểu đồ của hàm tính damage theo attack là biểu đồ bậc nhất : một đường thẳng. (Credit nhanh : Maple 12 thật là tuyệt vời:'> bạn nào thích toán thì ngoài LaTEX hãy kiếm thêm bộ maple nữa cho khỏe:cool:) So what? thế thì có gì liên quan ở đây? thế mà có liên quan thôi rồi đấy thêm 1 attack sẽ tạo ra thêm 1 lượng damage tính theo HP ổn định bất kể attack đã cao tới đâu, nhưng 1 defense thêm vào ở defense thấp lại "đáng giá" hơn 1 defense thêm vào ở defense đã cao và ngược lại, ở defense đã quá cao thì 1 HP lại có ích hơn 1 defense:cool: Biết vậy để làm gì? để build tanker cho team là ổn nhất nhỉ? ví dụ 1 Blissey thì nên đổ 252 EVs vào defense thì sẽ chắn damage cho HP từ những đòn physical attack tốt hơn. Cũng là Blissey, nhưng để chắn các đòn special attack, ta nên nhét 252 EVs vào HP thì sẽ tốt hơn 252 EVs vào SD# Sâu xa hơn chút nữa, xét lại công thức damage : Damage = (((( 2L / 5 ) + 2 ) * A * P ) / D ) / 50 ) + 2 ) * M * STAB * R / 255 dĩ nhiên để sống sót được qua X đòn tấn công thì HP của mình phải >= X*damage+1, nghĩa là : HP-1 >= X*(((( 2L / 5 ) + 2 ) * A * P ) / D ) / 50 ) + 2 ) * M * STAB * R / 255 Gán B := ((( 2L / 5 ) + 2 ) * A * P )/ 50 cho dễ nhìn, vì những cái này cũng liên quan đến tấn công của đối phương cả thôi, thay số vào thế nào là tùy mình, và coi R/255=1 luôn : (B/D+2)*M*STAB <= HP - 1 <=> B*M*STAB/D <= HP - (1 + 2*M*STAB) <=> B*M*STAB <= (HP - (1+2*M*STAB))*D Thay M*STAB thế nào thì tùy các bạn giả định thôi, nhưng mà ta có thể thấy : để sống sót được, quan trọng nhất là (HP - (1+2*M*STAB))*D đạt max. Để xây dựng chỉ số cho sweeper thì cũng tương tự thôi, ngược lại là mình cho R =217, và giả định các chỉ số quyết định sự sống chết của đối thủ những cũng nên lưu tâm đến speed nữa Cơ bản thế là đủ rồi, bạn nào còn muốn sáng tạo thêm gì nữa thì cứ đóng góp nhé tớ nản rồi Chương sau của Mechanic Guide sẽ ra nhanh hơn chương này:'> Hi vọng mọi người quan tâm theo dõi:hug:
4/Experience và Level up : Experience point, hay EXP, là điểm kinh nghiệm, là một chỉ số để xác định mức độ nhiều ít mà một pokemon đã chiến đấu. Khi đạt được một lượng exp nhất định, pokemon sẽ level up và có thể học được move mới, hoặc evolve:cool: Chương này sẽ tập trung vào những formula quan trọng nhất về exp, và ko đề cập đến pokemon nào đến lvl nào sẽ được move gì hay khi nào tiến hóa etc... những cái đấy trong các pokedex online không thiếu, và mục đích của mình khi bắt đầu project về mechanic này là đem lại cho tất cả mọi người những gì ít được đề cập đến hơn và đi sâu hơn theo đúng nghĩa mechanic:'> tính đến thời điểm này có 6 kiểu phát triển khác nhau của pokemon, tương ứng với 6 formula và 6 đường cong trên biểu đồ phát triển : Type 1 : yellow. Type 2 : black. Type 3 : blue. Type 4 : purple. Type 5 : green. Type 6 : brown. Các công thức sau viết dưới dạng hàm e(n) = lượng exp cần có để đạt được level n Type 1: ("medium" or "medium fast" or "cubic"); max value = 1000000 ; e = n^3 Type 2: ("erratic"); max value = 600000; e tính như hình dưới. Chú ý kí hiệu phần nguyên, ko phải trị tuyệt đối đâu Type3 : ("fluctuating"); max value = 1640000; công thức phía dưới Type 4 : ("medium slow" or "parabolic"); max value = 1059860; e = (6n^3/5) - 15n^2 + 100n - 140 Type 5 : ("fast"); max value = 800000; e = (4n3/5) Type 6 : ( "slow"); max value = 1250000; e = (5n3/4) Lương EXP nhận được khi đánh thắng 1 pokemon được tính theo công thức đơn giản hơn nhiều : e = a(b * L / 7) b là base exp của loài (các pokedex online như serebii hay marriland có cái này, các bạn nên lên đấy tham khảo thì tốt hơn là liệt kê cả đống ra đây), L là level của pokemon, a = 1 ở điều kiện thường, +0.5 khi pokemon có chỉ số Original Trainer khác với pokemon của mình hoặc là đánh với pokemon của trainer khác trong game, +0.2 nữa khi pokemon của lục địa khác với quê quán của trainer mình điều khiển:'> đơn giản thế thôi ko đau đầu như mấy cái trên, nhỉ?