Hội nghị bàn tròn [Version 0.1]

Thảo luận trong 'World Editor' bắt đầu bởi raivor, 19/8/11.

  1. raivor

    raivor Dragon Quest Lão Làng GVN

    Tham gia ngày:
    24/7/09
    Bài viết:
    1,411
    Chủ đề lần này là MUI nhé, lâu quá chả đụng tới topic này, giờ đào lên cho vui nhà vui cửa.

    MUI là viết tắt của Multi-Unit Instanceability.
    Nói một chút về tác dụng của MUI:
    Các bạn thử tưởng tượng, các bạn muốn làm một spell slide bằng trigger, bình thường thì các bạn gán cho biến các giá trị có thể thay đổi (vd: tốc độ slide, gia tốc, góc, caster unit, hay target v.v....), như các bạn biết, các một trigger được CHẠY khi một event được thực thi, chứ không phải là khi event thực thi thì TẠO ra một trigger, vì thế, khi một trigger được chạy, các biến sẽ được gán lại các giá trị, tức các giá trị cũ sẽ bị chồng lên, tuy nhiên điều này cũng không ảnh hưởng nhiều tới một trigger thực hiện những "action" không kéo dài, tức là tất cả các "action" được thực hiện cùng lúc (tất nhiên thứ tự thực hiện các action vẫn từ trên xuống), còn đối với một trigger có "action" kéo dài như slide, dùng timer, thì khi trigger được thực thi trong lúc trigger đó vẫn đang chạy (tức là các "action" vẫn chưa thỏa điều kiện để trigger(timer) dừng) sẽ dẫn tới việc các biến sẽ bị gán chồng lên, target thay đổi, caster (có thể hoặc không) thay đổi, các giá trị thay đổi, và nếu "cái thứ mà bạn đang slide" nó đi ấy, là một unit(dummy, ở đây gọi là unit A cho tiện) thì chắc chắn nó đã được gán vào một biến unit (muốn sử dụng ở trigger khác thì tất nhiên sẽ phải gán vào biến), và khi biến unit đó bị đè lên, thì unit A ban đầu sẽ dừng lại, vì trigger timer chỉ tác động lên unit nằm trong biến unit kia mà unit A đã bị đá ra khỏi biến => unit mới được tạo thì vẫn cứ chạy, còn unit A ban đầu thì dừng lại và ở đó mãi vì các "action" vẫn chưa thỏa điều kiện để remove unit A đi hoặc là làm gì đó với nó. Các biến khác cũng tương tự vậy. Vậy thì MUI sẽ giúp chúng ta giải quyết vấn đề đó, tạo ra một unit mới hoạt động song song với unit cũ.
    Thế thì cách giải quyết là như thế nào? Chắc chắn là....................làm thêm vài trigger nữa cho các player khác và xác định luôn từng hero cast spell, và từng unit được tạo ra. Đấy là cái cách mà tôi đã nghĩ đến khi chưa biết tới cách dùng array, tuy nhiên có lẽ nó vẫn MUI tốt trừ khi spell không có cooldown hoặc cooldown xong trước khi trigger dừng hẳn. Dù sao thì cũng không phải là một cách tốt vì khá tốn công copy&paste.
    Thôi thì tìm tới array vậy.
    Ờm thì ở đây giải thích luôn vụ array cho các bạn chưa biết.
    Chúng ta có thể nhận thấy một biến có array sẽ như này : var[1], sau khi thấy cái tên của var hiển thị kiểu này, tôi thấy nó chả khác gì var1, tuy nhiên cái số ở trong [] có thể thay đổi, sẽ tốt hơn khi không phải copy&paste một đống var2, var3,....,varn. Ờm thì chắc chắn là var[1] cũng như var1 và var[2] cũng chả khác gì var2, nhưng quan trọng là var[1] khác var2 => var[1] khác var[2], nói vậy thì biết rồi đấy.
    Ngoài ra tôi còn khám phá ra một ứng dụng thú vị của biến integer, có thể gọi là increase, với công thức i = 0, i = i + 1 và khi cái hàm i = i + 1 chạy thì i sẽ tăng. Và một điều tôi thấy nó liên quan kiểu không ngẫu nhiên đó là cái số ở trong [] là integer và hoàn toàn có thể đổi giá trị trong [] đó thành một biến integer (tất nhiên). Và thế là ta đã có var, kết hợp với cái kiểu increase kia thì ta có một đống biến var chả liên quan gì tới nhau mỗi khi trigger chạy các bạn ạ. Ví dụ nhé:
    //===================
    Event: every 5s
    Action:
    set i = i + 1
    create 1 unit ....
    set var = last create unit
    //===================
    Với một trigger như vậy thì chúng ta đã có thể phân biệt được các unit được tạo ra trong mỗi 5s bằng các var tương ứng. Ví dụ:
    var[1] là unit được tạo trong 5s đầu.
    var[2] là unit được tạo trong 5s sau (tức 10s kể từ khi bắt đầu game).
    v.v...
    Như vậy có nghĩa là khi dùng array cho các biến, và áp dụng như trên, thì các biến sẽ không bị đè lên nhau mà khác nhau hoàn toàn và có thể hoạt động độc lập.
    Tiếp đê.
     
  2. vuongkkk

    vuongkkk T.E.T.Я.I.S

    Tham gia ngày:
    22/5/10
    Bài viết:
    588
    Nơi ở:
    Hà Nội
    Trước khi vào chủ đề MUI thì bình tí bài viết của raivor đã ;))
    Nghe thì có vẻ cái post trên giống tut nhưng cách trình bày thì giống nói chuyện phiếm (nhiều chữ lại ko có bố cục => Có chăm đọc ~ lười đọc)
    Chốt hạ lại là nên đọc cái post này của tớ trước thì mới nuốt nổi post trên của raivor!

    Đầu tiên phải nói về trigger...
    Nếu 1 trigger ko có wait thì bao h nó cũng chạy 1 mạch cho đến khi xử lý hết action trong trigger đó mới thôi.

    Nếu ko wait thì trigger sẽ chạy lần lượt, KHÔNG có trigger nào chạy trước lại kết thúc sau cả.
    Trigger ở đây là nói về cái xảy ra khi có cùng event chứ ko nói về trigger event khác nhau độc lập, riêng biệt với nhau.
    Thậm chí trigger mà chạy chưa xong thì trigger sau còn ko chạy (Lag... đến cứng hình :-s)
    Nên bt mà làm spell thì thậm chí chỉ cần 1->4 biến dùng chung cho trigger cả map cũng ko sao:-??
    Điển hình chính là GetTriggerUnit (Triggering Unit - GUI) dùng chung cho tất cả các thể loại event có liên quan đến 1 unit làm cái gì đó

    Tại sao chỉ 1 biến dùng chung cho cả map lại ko bị nhầm khi xử lý ???
    Cả khi nhiều trigger cùng 1 event xử lý vấn đề khác nhau cũng ko lo bị nhầm biến nọ và biến kia?
    Như ở trên đã nói lý do rồi đây vẫn cứ liệt kê lại 2 ý đó để nhấn mạnh vấn đề này :)
    - 1 trigger ko có wait được kích hoạt thì nó chắc chắn sẽ chạy 1 mạch cho đến khi xử lý hết action trong trigger đó mới thôi (trừ khi lỗi)
    - ko wait thì trigger sẽ chạy lần lượt
    Nghe thì có vẻ vô lý nhưng đúng là vậy, cùng 1 event Unit died chả hạn vẫn có thứ tự trước và sau. Ko tin? Hãy dùng Display Message để thử
    1 Cái đặt đầu trigger Ghi "Start Event ABC"
    1 Cái đặt cuối trigger Ghi "End Event ABC"
    Làm tương tự với 1 cái trigger khác cùng event và thay tên event "XYZ" vào sẽ thấy ko bao h có 2 cái "Start(End) Event ..." cạnh nhau cả
    Đây là demo cho ai lười cả test nữa (Attach cuối bài) :-??

    Không cần biết MUI nó như thế nào cũng được nhưng đã chơi WE thì tất cả mọi người nên biết vấn đề mình vừa nói trên

    Trên kia ta đang nói kiểu trigger one-shot chỉ cần xử lý ngay tại lúc xảy ra event
    Thế nếu khi nào cần xử lý ngay cả sau khi event đã hết và thậm chí là event mới ra mà vẫn đang xử lý cái cũ thì phải làm sao???
    Kinh điển ở đây như raivor nhà ta giới thiệu là Slide
    Và khi cần xử lý dài hơn trigger thì ta cần lưu riêng ra các biến ko trùng nhau để xử lý riêng từng cái.
    Ví dụ mỗi unit slide 1 hướng thì ta cần lưu hướng để tiếp tục bước slide sau đó.
    Vậy thì 1 biến sẽ ko đủ thì ta dùng nhiều biến cùng loại => array(mảng) là cái thích hợp và dùng index của mảng để phân biệt cho từng cá thể riêng biệt cần xử lý.

    Nói cách khác MUI chính là việc xử lý nhiều cá thể, cùng lúccó tính lâu dài

    Ví dụ cụ thể:
    - Slide: xài hàng Tut Slide của anh Tom

    Tái bút:
    Chán chả buồn lập topic mới nữa cứ nhét hết vào đây =))
    Vì lập ra cũng chả ma nào vào và ở đây cũng vậy => đỡ rác cơ sở dữ liệu trên server :-"
    Đáng ra nên lập 1 topic chỉ nói và hỏi về MUI, spell MUI ... nhưng có lẽ cũng chả cần thiết :-??
    Mà sao cậu raivor có vẻ chịu khó viết lách mà lười sắp xếp thế ? có tốn mấy tí đâu :-?
     

    Các file đính kèm:

    Chỉnh sửa cuối: 17/2/12
  3. raivor

    raivor Dragon Quest Lão Làng GVN

    Tham gia ngày:
    24/7/09
    Bài viết:
    1,411
    Tùy cách hành văn của mỗi người thôi. Cơ mà topic này mục đích không phải là viết tut mà là trao đổi thông tin, kiến thức nên cũng không quan trọng vấn đề trình bày cho lắm, đơn giản là "tán gẫu" có chủ đề một cách nghiêm túc.
    Chốt lại, đây là môi trường để trao đổi kinh nghiệm, đưa ra ý tưởng về vấn đề liên quan tới box chứ không phải thể loại hỏi/đáp hay là tổng hợp gì cả.
     
  4. vuongkkk

    vuongkkk T.E.T.Я.I.S

    Tham gia ngày:
    22/5/10
    Bài viết:
    588
    Nơi ở:
    Hà Nội
    Tùy cách hành văn của mỗi người thôi. Cơ mà topic này mục đích không phải là viết tut mà là trao đổi thông tin, kiến thức nên cũng không quan trọng vấn đề trình bày cho lắm, đơn giản là "tán gẫu" có chủ đề một cách nghiêm túc.
    Tớ đồng ý với cậu là thế đấy nhưng mà là tớ cũng có biết đôi chút về MUI đọc bài cậu thì còn dễ hiểu chứ ai chưa biết gì nhìn đồng chữ thế kia thì đọc cũng cảm thấy khó tiếp thu thậm chí ko muốn đọc => thì chỉ tổn công cậu viết thôi

    Chốt lại, đây là môi trường để trao đổi kinh nghiệm, đưa ra ý tưởng về vấn đề liên quan tới box chứ không phải thể loại hỏi/đáp hay là tổng hợp gì cả.
    À, Ý tớ là đáng lẽ cần có riêng 1 topic cho MUI vì nhiều bạn ko biết MUI cũng như là sao để MUI hoặc là MUI nhưng sao lại lỗi. Nhưng tớ thiết nghĩ chả có mấy người trigger + MUI cả nên vô đây share kinh nghiệm thôi :D
    Với lại ấy giải thích có gì khác giữa tut với share kinh nghiệm??? Đều là dùng những thứ mình đã biết viết ra để cho người khác biết mà.
    Topic này nói về nhiều vấn đề thì có đúng nó là tổng hợp :-?
    Tớ sẽ ko tham gia tranh luận vấn đề tổng hợp với tut này nữa :-<

    Mà hình như chưa có topic nào giới thiệu cũng như hướng dẫn về MUI thật :-s

    Cơ mà được rầm rộ có 1 lúc, h đâu hết rồi ??? Tưởng sẽ có ai tổng hợp lại tất cả các link hướng dẫn với demo các kiểu cơ mà. :-??
     
    Chỉnh sửa cuối: 21/12/11
  5. Tom_Kazansky

    Tom_Kazansky

    Tham gia ngày:
    28/12/06
    Bài viết:
    3,454
    Nơi ở:
    Hà Nội
    - tôi muốn viết lắm nhg vấn đề là tôi dốt văn nên viết tut, giải thích cặn kẽ thì không viết được, nói chung viết xong mình đọc cũng thấy khó hiểu =))
    cái vấn đề này khá trừu tượng, nói cụ thể ra thì không (hoàn toàn) đúng, nói không cụ thể thì người ta không hiểu :-?? khó đấy!

    - nói là một chuyện, làm lại là chuyện khác, cách xa nhau lắm :)>-
     
    Chỉnh sửa cuối: 21/12/11
  6. raivor

    raivor Dragon Quest Lão Làng GVN

    Tham gia ngày:
    24/7/09
    Bài viết:
    1,411
    Tất nhiên là khác:
    - Tutorial tức là môt bài hướng dẫn, và nó phải mang tính chính xác cao, trình bày mạch lạc, dễ hiểu, có minh họa giải thích và cách làm. Mục đích để hướng dẫn những người chưa biết về vấn đề nào đó.
    - Còn trao đổi kinh nghiệm thì chỉ đơn giản là sự trao đổi giữa những người đã biết hoặc biết nhưng còn sơ sài để hoàn thiện kiến thức cho nhau. Đơn giản chỉ là những ý kiến chứ không phải là một bài hướng dẫn. Và các ý kiến có thể đúng, hoặc sai.
     
  7. ShadowThanatos

    ShadowThanatos -|--Soul Reaper--|-

    Tham gia ngày:
    23/2/09
    Bài viết:
    2,119
    Nơi ở:
    Horror Depht
    Bất kể thế nào, wall of text là kể cả người biết và lẫn không biết, muốn trao đổi hoặc không đều không muốn đọc. Đồng thời cũng làm người ta đánh giá mình là người bê bối, khó tin tưởng được. Cơ mà chắc cũng không quan tâm vụ người ta đánh giá mình nên có thể ignore chỗ này =)).

    Đã viết thì phải trình bày mạch lạc dễ hiểu chứ không phải "viết rồi đấy, không đọc thì thôi".
     
  8. lonewolf020291

    lonewolf020291 T.E.T.Я.I.S

    Tham gia ngày:
    16/3/07
    Bài viết:
    579
    Nơi ở:
    Toy Box
    Nhìn raivor viết dài thật, nhưng đọc đến lần thứ 2 là hiểu, đó cũng là những điều mình đã từng nghĩ đến khi mới tập tành làm spell MUI. Mà thấy rõ raivor có giải thích đàng hoàng và hoàn toàn theo kinh nghiệm, thx bác lắm :))
    Xem xong post của tiến sĩ vuongkk nói thật hơi mơ màng, nhưng gói gọn cho rõ thì 1 câu Nói cách khác MUI chính là việc xử lý nhiều cá thể, cùng lúc và có tính lâu dài là đủ >:D<
     
  9. vuongkkk

    vuongkkk T.E.T.Я.I.S

    Tham gia ngày:
    22/5/10
    Bài viết:
    588
    Nơi ở:
    Hà Nội
    "tiến sĩ" vuongkk Cái này ko reply lại là bị hiểu lầm: tiến sĩ là học vị còn WE lại ko có trường lớp cũng chưa chính phủ nào công nhận nên gọi như thế thì hơi quá dù là ai :D
    Xem xong post của vuongkkk nói thật hơi mơ màng
    Chính là thế, cái tớ nêu hoàn toàn chỉ là vấn đề tại sao lại nảy sinh ra MUI, 1 khái niệm mang tính tổng quát để phụ họa cho bức tranh chữ của raivor.
    gói gọn cho rõ thì 1 câu Nói cách khác MUI chính là việc xử lý nhiều cá thể, cùng lúc và có tính lâu dài là đủ
    Cái thật sự tớ muốn mọi người hiểu là cách thức mà trigger hoạt động đã nói bên trên kia chứ ko phải MUI vì vậy tớ mới để cái đó lên đầu chớ.
    Cái đó thậm chí phải nói và cần phải biết trước cả MUI và cùng lúc với khi học trigger.
    Bởi vì mình thấy trigger rất nhiều bạn trên box này và thấy các bạn chưa có nắm rõ vấn đề này nên nhiều khi các bạn set thêm biến khác hoàn toàn là tốn ram. Cũng có nhiều lúc vì ko hiểu nên nhiều bạn nói rằng dùng Triggering Unit sợ nhầm với các event khác rồi cả việc tại sao dùng wait thì sau đó dùng những cái như Triggering Unit, Casting Unit, Target Position... hoàn toàn bị sai. Ko thực ra nó ko hề sai mà là các bạn đã dùng sai.
    Những cái đó là cái dùng ngay lúc trigger đó phát sinh mà thôi !!!
     
    Chỉnh sửa cuối: 21/12/11
  10. zollback

    zollback Youtube Master Race

    Tham gia ngày:
    16/5/10
    Bài viết:
    88
    đang định làm bài tut về zinc. Ko biết có ai ủng hộ ko :))
     
  11. dh-g

    dh-g Fire in the hole!

    Tham gia ngày:
    29/8/09
    Bài viết:
    2,654
    Nơi ở:
    Q1 TP.HCM
    thì bạn cứ viết, rất ủng hộ tinh thần đóng góp >:D<
     
  12. vuongkkk

    vuongkkk T.E.T.Я.I.S

    Tham gia ngày:
    22/5/10
    Bài viết:
    588
    Nơi ở:
    Hà Nội
    Ủng hộ, nhắc nhở là zinc nó có 1 sự cố với module đấy
    Cụ thể tớ chả rõ vì ko dùng zinc
    Dù nó mệnh danh là "good for brain"
     
  13. Doom_Sage

    Doom_Sage Mr & Ms Pac-Man

    Tham gia ngày:
    24/7/11
    Bài viết:
    147
    vậy.... làm thế nào để vừa MUI vừa hastable đc với nhau ....... :-?
    Tôi gà mới học MUI . Xin chỉ giáo !

    Ủa nghe nói Tom_Kz ốm nằm viện sao còn onl đc đây :-??
     
  14. King War

    King War

    Tham gia ngày:
    23/7/10
    Bài viết:
    2,136
    Nơi ở:
    kw_corp@yh
    ốm thì đâu phải nằm viện
    mà ốm đâu ai cấm xách cái lap đi chơi ;))
     
  15. vuongkkk

    vuongkkk T.E.T.Я.I.S

    Tham gia ngày:
    22/5/10
    Bài viết:
    588
    Nơi ở:
    Hà Nội
    Thấy forum được mấy hum xôm xôm lại xẹp nên mình làm vài tấm tự sướng cho các bạn vào chém tẹt:D
    Thực ra đây là do hồi thi terrain ko có thời gian nên nộp bài thô. Hum nay làm hẳn 2 tấm để gọi là tạ cái tội làm bài đối phó...
    [spoil]
    [​IMG][/spoil]
    [spoil][​IMG][/spoil]
     
  16. raivor

    raivor Dragon Quest Lão Làng GVN

    Tham gia ngày:
    24/7/09
    Bài viết:
    1,411
    Nước lại chảy từ bờ này sang bờ kia =)).
    Đến đoạn chảy xuống thì trông nó bị khớp, hơi vô lí.
     
  17. vuongkkk

    vuongkkk T.E.T.Я.I.S

    Tham gia ngày:
    22/5/10
    Bài viết:
    588
    Nơi ở:
    Hà Nội
    Chém hay lắm nhưng xưa rồi =))
     
  18. raivor

    raivor Dragon Quest Lão Làng GVN

    Tham gia ngày:
    24/7/09
    Bài viết:
    1,411
    Trong mấy cái hình chả có hình nào nước chảy ngang như thế cả, toàn chảy cong đấy thôi =)).
     
  19. vuongkkk

    vuongkkk T.E.T.Я.I.S

    Tham gia ngày:
    22/5/10
    Bài viết:
    588
    Nơi ở:
    Hà Nội
    Cùn quá! thôi được rồi, giỏi thì làm cái thác tốt hơn của tớ đi :))
     
  20. raivor

    raivor Dragon Quest Lão Làng GVN

    Tham gia ngày:
    24/7/09
    Bài viết:
    1,411
    [​IMG]
    Vào map để xem dòng chảy :)>-.
     

    Các file đính kèm:

Chia sẻ trang này