Mình k biết diễn tả thế nào nữa. hi vọng khái niệm "core" là chính xác. Mình muốn hỏi tới phần lõi, core, engine... đại khái thế.. liên quan tới combat system trong war 3. Ví dụ thế này: Giả sử có 2 unit A và B bem nhau. Khi đó engine của game sẽ xử lí thông tin như thế nào? Nó sẽ có 1 class chung quản lí toàn bộ phần combat của tất cả các units trong game, hay các unit sẽ tự cập nhật thông tin của cá nhân nó? Chuỗi thông tin về atk sẽ được xử lí như thế nào..? khi atk của mối unit còn có các effect như critical strike, slow, disable (stun, doom, silence, root...) cộng dồn dam theo công thức nào? 2 đồ cùng cộng dam 1 đồ cộng raw dam (vd claw of atk + 9 dam) và cộng theo % (vd cộng 10% dam) thì sẽ cộng như thế nào? các items được đánh thứ tự ưu tiên khi stack như thế nào... ? Aura tác động như thế nào.. Nói chung mình cần 1 tài liệu toàn cảnh về toàn bộ tiến trình trong 1 combat , gồm toàn bộ các bước kiểm tra và tính toán trong war3 khi bem nhau... trước giờ chỉ đọc được tài liệu về orb effects, stack.. Ai đã từng vọc xuống phần lõi này cho mình vài í kiến được k.
Có lẽ bạn đi sâu rùi đó, bạn muốn làm 1 game lun hay đơn thuần làm 1 map, pm Blizzard xin mã nguồn là ok
Khi unit nhận dam hay buff tăng giảm các chỉ số nào đó thì chính các hàm gây dam, tạo buff đã tự cập nhật lại thông tin của unit đó rồi
làm 1 game thì việc gì phải nghiên cứu core của War3 làm gì, mình tự nghĩ ra cho xong việc xin mã nguồn thì chả biết đc --- Mỗi unit phải có 1 class gắn cho nó, class này lưu các thông tin về nó, cái này sẽ đc xóa đi khi unit "rời map". Về phần này, tôi cũng đã nghiên cứu và đã tạo một hệ thống theo như các nghiên cứu của mình. (nhưng "tài liệu toàn cảnh thì ko có) ví dụ có unit A đánh unit B unit A có: Animation Damage Point: adp (giây) Attack Range: 128 (melee) Attack Type: Normal Minimum Damage: minD Maximum Damage: maxD unit B có: Defense Type: Heavy (Large) Armor: 0 Khi B is attacked (bởi A), tôi gọi đây là lúc onAttack, thì tính toán minD và maxD của A. minD = min damage base * (1+ % damage bonus / 100) + damage bonus maxD = max damage base * (1+ % damage bonus / 100) + damage bonus ở đây kiểm tra luôn Critical Strike và lưu số lần crit vào. (Giả sử A không có attack speed bonus nào cả) thời gian từ khi "B is attacked" tới lúc bị "đánh trúng" sẽ là adp (giây) (tạm gọi là thời gian "attackSwing" ) trong thời gian attackSwing thì A có thể bị stop (do stun, player,...) do đó thời gian này sẽ dừng ngoài ra, nếu attack speed thay đổi thì thời gian này cũng sẽ giảm/tăng tương ứng với attack speed tăng/giảm khi hết thời gian attackSwing, lúc này đến "DamagePoint" của unit A, có thể nói unit A đã kết thúc attack của mình và sẽ: deal dmg nếu là melee hay instant, bắn missile về phía target (nếu là range) tuy nhiên phải kiểm tra vài điều kiện dẫn đến A bị hỏng attack, ví dụ: B ở ngoài Attack Range của A (nhưng khoảng cách này phải cộng thêm Range Motion Buffer nữa nhé, thường là 250) B bất tử, A có attack không phải là Magic và B Ethereal A Ethereal A hoặc/và B chết A có attack type Magic và B Magic Immunity (chắc còn điều kiện khác nữa nhưng tôi chưa tìm ra hết) hỏng attack dĩ nhiên là ko deal dmg gì cả giả sử A có attack thành công, vậy lấy random giữa minD và maxD để lấy ra damage deal. Nếu có crit thì phải nhân với số crit ở đây kiểm tra "miss" luôn nếu: A có debuff gây miss B có evasion B đứng cao hơn A (chỉ áp dụng với range) Nếu: không miss và A là melee hay instant: deal damage B là range: bắn missile về phía target (bắn trúng thì (và nếu có thể thì) sẽ deal dmg) miss thì: A là melee hay instant: ko làm gì cả B là range: bắn missile về vị trí đứng của target (miss thì show cái floating text nhá) Về các Orb Effect gì gì, kiểm cái nào mạnh/yếu ra sao để gây effect cho đúng, cái này tôi thấy rất là rắc rối nên tôi bỏ, cứ cho nó stack với nhau, ko cần check mạnh/yếu gì cả tất nhiên sẽ hạn chế nó bằng cách khác. về vụ "bắn missile" thì trước đây tôi dùng ability và DDS để nhận biết khi missile trúng mục tiêu, nhưng bây giờ tôi dùng system này: Projectile (awesome! ) cho việc đó. gắn ở dưới là test map có system attack của tôi và system trên. p.s: xin lỗi vì giải thích không được đầy đủ và khó hiểu, nhưng tôi rất tồi trong việc giải thích...
Cho mình mượn topic này hỏi nhé: Có ai nghiên cứu hay dùng đẫ dùng được các system trên mạng không? Giới thiệu cho mình cách dùng cũng như công dụng của sys đó nếu các bạn có time. Làm ơn nhé
cụ thể là system nào, hỏi vậy thì chúa mới trả lời đc nói ko rõ vậy bạn định dùng tất cả các system trên mạng hay sao
Thực ra cái em định hỏi chuẩn xác là có vài ng` hảo tâm, bik jass ko cần pro nhg chắc cần có time => lập ra 1 topic có thể giới thịu về các system và cách dùng hay không? Vì có nhìu bạn ngu tiếng A hoặc ít time để nghiên cứu hay nhà không có mạng như mình thì có thể vô đó tham khảo cho nhanh. Hay anh Tom mở hàng vụ này với cái "Projectile" giúp điều hướng missile nhỉ ---------- Post added at 13:18 ---------- Previous post was at 13:16 ---------- Hơn nữa là mìn hơi bị ngu, nhìu khi bik là mình cần làm gì nhưng còn chả biết có sys nào hỗ trợ hay ssys nào tốt cho vấn đề này nữa cơ
khó hỉu quá, chak chỉ dành riêng cho dân lập trình Tom giảng bài mà đọc k hỉu j với j lun
ôi, quên mất k vào thăm topic này thú thực mình đang lập trình game (game đơn giản thôi, trên Flash) muốn nghiên cứu sâu về war3, đặc biệt là hệ thống skill trong combat, vì trong war các skill rất mềm dẻo, dễ tùy biến, dễ bổ sung... và mình rất muốn mang được hệ thống combat thông minh này lên các game mình làm (quá tham vọng hehe) @Tom chân thành cám ơn bạn đã dành thời gian trả lời chi tiết cho mình! cho mình hỏi 1 chút là làm thế nào để đọc được source/xem được những thông tin như bạn vừa nêu. Hiện giờ mình chỉ biết tới world editor.. Cái mình cần nghiên cứu chính là các hàm kiểm tra của engine trong các hoàn cảnh ngoại lệ, chẳng hạn có sự can thiệp của bên ngoài. Ví dụ: Mình muốn xem trong warcraft3; bước kiểm tra Critical Strike được bố trí như thế nào. Mình muốn hỏi thêm là, 1 skill (active hoặc passive) trog war3 bao gồm những thuộc tính nào cấu thành. Ý mình là các thuộc tính/biến/tham số trong bảng Name/Value khi ta bật Object editor của World edit lên ấy. Mình k biết cách nào để world edit hiện lên đầy đủ các giá trị của 1 skill/spell, chẳng hạn như dam, dam type, aoe...
Uầy làm map học hỏi đc thêm nhiều kinh nghiệm về làm game lắm, ví dụ như quản lí unit dựa trên ID, chia ra dametype, armortype, weapon type... , multilthread. Trước cũng có mày mò lập trình với AS3, chúc ô bạn thành công
nên có một biến để lưu số lần critical, biến này lúc đầu bằng 1 khi kiểm tra critical strike, đơn giản là: nếu unit có ability critical strike A (X% deal Y times) thì random integer 1 -> 100 <= X set biến damageCrit = Y nếu nhiều ability critical strike thì ability "đầu tiên" sẽ được lấy, tôi ko rõ cái này tính thế nào để được gọi là "đầu tiên" nên tôi chỉ lấy damageCrit cao nhất. bạn có thể test cái này bằng cách tạo 1 test map, cho 1 unit có nhiều ability critical strike với 100% chance và số damage nhân khác nhau. cái này kiểm tra khi 1 unit bị tấn công để, nếu cần, play attack slam animation (nếu muốn) thật ra sự can thiệp thì có nhiều, tôi cũng chưa thể tìm hết được (thật ra tôi chỉ tìm các sự can thiệp gây ra hỏng attack mà thôi) còn các sự can thiệp khác thì tự mình tạo ra, ví dụ play attack slam animation khi crit đó về các thuộc tính cơ bản của 1 ability thì bạn có thể xem các ability "không có tác dụng gì" như Storm Hammer, Vopal Blade,... Art, Sound, Stats, Techtree, Text là các thuộc tính mà ability nào cũng có (tuy nhiên các thuộc tính này có tác dụng hay không là chuyện khác) các ability khác sẽ có thêm các thuộc tính riêng, thường được cho vào Data còn các giá trị đầy đủ: damage, AoE thì có mà mỗi damage type là không thôi, thật ra cái này là "hardcore" rồi, không can thiệp được p.s: thật ra tôi chưa hiểu ý bạn lắm Các điều tôi nói trên đều do nghiên cứu và thực nghiệm mà ra nên tôi thấy gì thì nói đó, cái core thực sự ra sao thì... chịu