איך תנצחו בקודגורו אקסטרים

עמוד

ברוכים הבאים לאתר תחרויות קודגורו! פורומים אקסטרים איך תנצחו בקודגורו אקסטרים

מוצגות 10 תגובות – 1 עד 10 (מתוך 10 סה״כ)
  • מאת
    תגובות
  • #76734
    Son
    משתתף

    טוב, אחרי כמה שנים של מעורבות בתחרות (השתתפתי, לימדתי), יכול להיות שיש לי כמה דברים מעניינים להגיד על איך מנצחים.

    אז הנה העקרונות שלי למשתתפים שבאמת רוצים לנצח, בסדר יורד של חשיבות (אם אתם לוקחים רק חלק, קחו את הראשונים):

    סגלו לעצמכם את ההרגל שכל פעם שיש לכם שאלה או רעיון שאתם לא יודעים אם הוא יעבוד, תפתחו אסמבלר ותנסו, ורק אז תשאלו או תגידו או תכתבו בפורום. זה יפתח לכם שרירים טכנולוגיים ממש גדולים.

    משום מה אנשים ניגשים לתחרות עם שורדים שלא היו מנצחים בתחרות של שנה שעברה. קל לוודא שהשורד שלכם מנצח בתחרות של שנה שעברה, פשוט מורידים את כל השורדים של שנה שעברה ומריצים אותו איתם. אם הוא לא מנצח, עדיין כיף לגשת ולבוא לתחרות, אבל תזכרו שהצוותים הרציניים לא ויתרו לעצמם. תגישו במקום זה את הזוכה של שנה שעברה, זה לא מנוגד לחוקים :-)

    איך מתכוננים? שני דברים במקביל:
    1. מריצים תחרות שבועית בתוך הצוות. כל אחד מגיש שורד כל שבוע ומריצים במוצ"ש. המפסידים קונים לזוכה בקבוק ליטר וחצי פיוזטי. מגישים כל שבוע משהו, גם אם הוא שיפור קטנטן על הזוכה של שבוע שעבר.
    2. קוראים את כל המקומות 1-3 של כל השנים הקודמות, וכדי לוודא שמבינים מה הם עושים, כותבים שורדים שפועלים באותה דרך.
    ככה תלמדו את כל מה שיש לדעת על התחרות, תביאו את הידע הזה מהתאוריה למעשה, ותאגרו המון רעיונות מקוריים (לאו דווקא טובים, זה פחות משנה כי בדרך כלל מה ש"טוב" זה שילוב של כמה דברים בינוניים). ביום שתגשו לכתוב את השורדים הסופיים לתחרות, כל זה יתחבר ליכולת לעשות משהו מדהים שעדיין לא עשו.

    תכתבו לעצמכם כלים: שיפורים לדיבאגר זה הבסיס, אבל גם סקריפטים שבודקים "מה אם" במעט מאמץ (למשל, משהו שמריץ אתכם בכל אחת מהתחרויות שכבר היו ואומר לכם איפה אתם עומדים, במקום שזה יהיה שעות של עבודה) וסקריפטים שעוזרים לכם לעשות אופטימיזציה לשורד שלכם. הכי מתקדם זה סקריפטים שעוזרים לכם לכתוב אסמבלי נוראי במיוחד, אבל אם תצטרכו כזה ותהיו מנוסים בסקריפטים כנראה שתדעו את זה. עדיין לא ראיתי שורד מתקדם מספיק כדי להצדיק את זה.

    תעשו משהו טוב עם הזומבים. השנה הקבוצות שהשתלטו על זומבים היו בליגה אחרת מאלה שלא. הקבוצה שפתרה לגמרי את החידה לקחה את כל השאר בהפרש עצום בסיבוב הראשון. בסיבוב השני הם הורידו את הקוד שתופס זומבים וירדו משמעותית בניקוד (ר' כתיבת כלים שיעזרו לכם לעשות החלטות)

    תביאו לתחרות עוד שורד טוב, שונה מאד מהמקורי שלכם, למקרה שיסתבר ששלכם לא מוצלח בתנאים של אותה שנה. אני רואה מעט מאד צוותים שעושים את זה, והשנה צוות כזה ניצח.

    תלמדו טוב את החוקים. צוותים מנצחים בדרך כלל עושים הרבה
    rule hacking.
    תבינו מה אתם צריכים בכל שלב – למשל, אם יש לכם שורד שאתם ודאיים שיביא אתכם לטופ 4 ועוד שורד אפילו יותר טוב, זה יתרון רציני להגיש את הפחות טוב בשלב הראשון – בטופ 4 לא מתחשבים בהרצות קודמות, ויש יתרון אדיר לשורד שאף אחד לא ראה קודם ולא יכל לנסות לעצור. הצוות שניצח השנה היה מאד טוב בזה.

    בחודש לפני התחרות, תתכוננו לשבת על זה ימים ולילות. זה אדיר וכיף, וזה מביא אתכם לרמה אחרת לגמרי. שבו ותכתבו המון שורדים, ותריצו אותם אחד נגד השני, ותשלחו את הכי טוב מבין 10 או 20 רעיונות.

    הזמן להתחיל להתכונן לתחרות הבאה הוא עכשיו, כשנגמרה התחרות הקודמת. לידע לוקח זמן להספג, וככה תוכלו גם להקדיש לזה מעט זמן כל שבוע ולתחזק גם חיים. כמובן, בחודש האחרון – אטרף! אחרת מה זה שווה?

    תביאו הרבה שוקולד.

    יאללה, בהצלחה!

    #77836
    noyalo
    משתתף

    תודה רבה!
    אקח הרבה ממה שאמרת עכשיו, תודה!

    רק שאלה:
    אתה יכול להסביר קצת לגבי איך באמת סקריפטים יכולים לעזור?
    אני לא כל כך מבין איך ואיפה ולמה זה יכול לעזור על כך….
    אשמח אם תוכל להסביר קצת יותר..

    תודה

    #77834
    Son
    משתתף

    סקריפט זה להחליף עבודה ידנית בעבודה של מחשב.

    בהרבה מקרים זה עושה אותך שמח יותר כי אתה לא צריך לעשות דברים משעממים.

    בגלל שמחשב עובד הרבה יותר מהר מבן אדם, ובגלל שמחשב לא אוכל וישן ומשתעמם, לפעמים זה מאפשר לך לעשות דברים שאחרת פשוט לא היית עושה. או כי לא היה לך זמן עד התחרות, או כי לא היית עומד בללחוץ על אותם שלושה כפתורים במשך 80 שעות.

    דוגמה ממש פשוטה:

    יש לך שורד, והרגע שיפרת אותו. זאת אומרת, שינית אותו, צריך לבדוק כדי לראות אם זה שיפור.

    לבדוק זה אומר לקמפל, להעתיק לתיקייה של המשחק, לפתוח את המשחק, לכתוב "10" בשדה של "כמה משחקים", ללחוץ על הכפתור, לחכות קצת, ולהסתכל בגרף, ואז להזכר איך היה נראה הגרף קודם ולהחליט אם הגרף הפעם יותר טוב.

    כמה זמן זה היה חוסך אם היית יכול ללחוץ על קיצור מקשים שהיה עושה את כל זה, נכון? בינתיים במקום להתעסק בזה היית יכול להמשיך לחשוב על רעיונות לשורדים.

    ורגע… בעצם, אתה יכול אפילו שזה לא ידרוש קיצור מקשים! מתכנתים היום עובדים עם "רמזור" כזה שמריץ ברקע כל פעם שהם שומרים את הקובץ את כל התהליך הזה, ובסוף מצייר אדום אם יש שגיאת קמפול, צהוב אם זה פחות טוב מאשר לפני ה"שיפור" כביכול וירוק אם זה באמת היה שיפור. זה פשוט נמצא שם בתחתית המסך ואתה יכול להעיף מבט ולוודא שאתה עדיין מתקדם בכיוון הנכון. כמה זמן זה חוסך, וכמה מאמץ…

    ואפשר אפילו יותר טוב! אם כבר מי שעושה את הבדיקה זה מחשב ולא אתה, וזה לא מציק לך, אז למה להסתפק בבדיקה אחת? תריץ את זה בלחיצת כפתו נגד *השורדים של כל תחרות קודגורו*! ככה תוכל לראות אם אתה מקבל ציון טוב כי אתה טוב, או אם אתה מקבל ציון טוב פשוט כי בין השורדים שבחרת לבדוק את עצמך נגדם יש כמה שחלשים נגדך, ואתה יכול לראות מהר תכונות של השורד שלך – מה החוזקות שלו, מה החולשות שלו, ועוד.

    זה נותן לך המון מידע שעוזר לך לבנות שורדים טובים יותר, בלי לעלות לך זמן! אולי צריך לחכות קצת, אבל לא נורא – תריץ את זה ברקע בזמן שאתה עובד על שורד אחר, ואחרי רבע שעה תחזור לחלון של זה ותראה מה הייתה התוצאה.

    ואפשר להמשיך ולהמשיך. הרעיון הוא כל הזמן לעבוד, וכל פעם שאתה שם לב שאתה עושה משהו משעמם, או נמנע מלעשות משהו רק כי הוא משעמם, להוסיף לסקריפטים שלך פיצ'ר שעושה אותו, ואחרי שאתה עושה את זה במשך זמן מה יש לך סקריפטים שעושים אותך מכונת עבודה משוגעת.

    היה מובן?

    #77833
    noyalo
    משתתף

    כן… עכשיו השאלה היא, *איך* בדיוק עושים את מה שאנחנו רוצים בכדי שיהיה יותר מהר ויעיל ויתר…

    למרות שדי התרגלתי לעניין שעבודה שחורה נטו, היא פרמטר חשוב בתחרות….
    :P

    #77832
    Son
    משתתף

    אתה מתכנת. עבודה שחורה נטו זה דבר שאתה צריך לא לעשות. תתרגל מחדש :-)

    התשובה לשאלה עצמה מאד מגוונת. כמו שכבר אמרתי בכמה פתילים אחרים לאחרונה, רוב התשובה הוא "מפשילים את השרוולים, נכנסים לזה, ולא יוצאים עד שמנצחים איכשהו".

    בפרט במקרה הזה זה כנראה יכלול קצת תכנות בג'אווה (לא באמת צריך לדעת איך, פשוט עושים ניסוי וטעייה) וכמות בינונית של תכנות ברובי או פייתון או משהו בסגנון.

    קשה לי להסביר איך עושים אוטומציה בפוסט אחד. אני מעביר על זה קורסים של שבועיים. עודד הציע לתת קורס כזה בתור פרס בתחרות הקרובה, אני לא יודע אם זה רעיון טוב כי אני כבר לא נער ולא יודע מה נערים רוצים היום (אני רציתי עבודה) ואף אחד לא עונה לפתיל שבו שאלתי (רמז רמז :-) ).

    #77831
    Son
    משתתף

    האמת שזו שאלה שכדאי לשאול את צוות ריידן לו ריד.

    תגידו, לפני שהתחלתם לכתוב סקריפטים עבור התחרות של השנה, מה ידעתם על ג'אווה? פייתון?

    כמה הייתם צריכים כל אחד מהם?

    איך התמודדתם עם דברים שלא ידעתם?

    ובכלל, אם אתם כבר כאן, מה דעתכם על הטיפים שלי? השתתפתם יותר פעמים ממני :-)

    #77824
    Dave
    משתתף

    האמת היא שעל ג'אווה לא ידענו כלום. אבל יש לנו רקע של סי שארפ אז מנוע המשחק היה קריא לגמרי. אנחנו פשוט שיחקנו עם כל מיני משתנים בשביל שזה יתחיל אוטומטית וממספר הסיבובים שאנחנו רוצים.
    בנוגע לפייתון, יש לנו ידע די בסיסי או בינוני. בגדול הסקריפט שכתבנו לא מסובך מדי. הסקריפט נועד לעזור לנו לבחור את רווח הקפיצה האופטימלי. שמנו לב שאם אנחנו משנים את רווח הקפיצה שלנו אז אנחנו מקבלים תוצאות בטווחים שונים לגמרי. לדוגמה עם רווח מסוים ניצחנו 20 פעמים ועם רווח אחר ניצחנו 60 פעמים. זה הבדל לא קטן אז כתבנו סקריפט שישנה את הרווח ויבחר לנו את הרווח האופטימלי.

    מה שזה דורש מבחינת ידע תכנותי זה איך לפתוח קובץ טקסט, או אסמבלי במקרה הזה, לערוך אותו, ואז להריץ תוכנה שתקמפל אותו ותריץ אותו במנוע המשחק , תשמור את התוצאות ותדווח לנו על התוצאות הטובות ביותר ומה השינוי שגרם אותן.

    בימים אלו ממש אנחנו מנסים לשכתב אותו כך שיתאים לכולם ושיהיה ניתן להוריד אותו

    לגבי דברים שלא ידענו, כמו שאאור לימד אותנו
    גוגל הוא חברו הטוב ביותר של האדם

    #77823
    Matan
    משתתף

    אני מסכים עם דביר, הפער בין הידע שמתחילים איתו לפני התחרות לעומת הידע שמסיימים איתו את התחרות הוא עצום. פשוט צריך להתחיל ולחקור, והאינטרנט יעזור לך בדרך.

    לגבי סקריפטים ואוטומציה – יש כל כך הרבה רעיונות לסקריפטים שיכולים לשפר את חווית הכתיבה בקודגורו אקסטרים, ואאור באמת העלה רעיונות מעולים.

    לגבי מה שאנחנו עשינו, כמו שדביר אמר – הרעיון הוא תוכנה שמחליפה את המרווחים ושומרת את התוצאה הטובה ביותר. מה שכתבנו הוא מאוד ראשוני ויש לו עוד הרבה לאן להתפתח, ואנחנו עובדים בימים אלה על שיפור הקוד ובקרוב תוכל לראות אותו כפרויקט בגיטהאב :)

    עוד טיפ כללי לגבי התחרות: עבודה מסודרת.
    כשניגשנו לתחרות בפעם הראשונה עבדנו בצורה מבולגנת מאוד, ובגלל שהיינו שלושה בצוות קרו לנו הרבה מקרים של חוסר סנכרון בין גרסאות ובעיות בניהול גרסאות.

    לכן, אחד הטיפים שיישמנו השנה הוא עבודה מסודרת: כל שורד שכתבנו, הוא עובד והוא תחרותי במשחק (כלומר, לא גרוע) – תיעדנו בתיקייה משלו, עם קובץ טקסט שמסביר בדיוק מה הרציונל שלו ובמה הוא שונה מהשורדים האחרים שכתבנו. אין לך מושג כמה זה עוזר בעבודה השוטפת, במיוחד כשיש לך כמה רעיונות לשורדים ואתה מפתח כמה במקביל.

    #77822
    Son
    משתתף

    קשה לי לשמוע את המילים "עבודה מסודרת" במשפט שלא מכיל את המילים "source control".

    אז הנה.

    בפרט, הפתרון הנכון הוא שכל שורד יהיה בתיקייה בgit עם הערה בהתחלה שמסבירה את הרציונל וכו'.

    #77821
    Matan
    משתתף

    source control זה בלי ספק מילות המפתח כאן, לא יכולתי להסכים יותר :)

מוצגות 10 תגובות – 1 עד 10 (מתוך 10 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.