משחק online - עזרה...
אהלן אני מנסה לעשות מוד של משחק online לking pong 2 http://www.anykeysoft.net עכשיו, יש לי את המשחק (בפלאש) ואת האפליקציה שמשנה את הרזולוציה של המשתמש (בסי פלאס פלאס) עכשיו, הוספתי לאפליקציה שני קלאסים שכתבתי (אני גאה בעצמי שכתבתי אותם
במיוחד בהתחשב בעובדה שאני לא יודע סי פלאס פלאס
) * תקשורת בין האפלירציה לפלאש (בעזרת XMLSocket של פלאש וsocket רגיל באפליקציה) * תקשורת בין האפליקציה לאפליקציה במחשב מרוחק (בעזרת socket רגיל) עכשיו, תיאמתי בינהם והכל.... אני יכול לשלוח הודעות מפלאש לפלאש
התחלתי לעבוד על המשחק (בעצם אני עובד על זה כבר איזה חצי שנה... אבל רק אתמול עשיתי את התקשורת בין האפליקציה לפלאש ככה, עד אתמול השתמשתי בקוד גרוע שהורדתי מהאינטרנט שלא עבד כל כך טוב), ויצרתי משחק פשוט - כדור ושני פאדלים, בינתיים (בלי הבונוסים והיריות וכו'). עכשיו, הבעייה היא שיש לאג בין שני השחקנים... ויש לאג גם כשאני משחק בין שני חלונות על אותו מחשב
כרגע זה עובד ככה: * כל פאדל זז אצל השחקן הרלוונטי * כל שחקן שולח 10 פעמים בשנייה (בניגוד ל32 פריימים לשנייה - הFPS של המשחק) את המיקום של הפאדל שלו לשחקן השני * הכדור נוצר אצל הHOST, והמידע על המיקום שלו והמהירות ההתחלתית שלו נשלח לשחקן * כשהכדור פוגע באחד השחקנים, הוא שולח את המידע על המיקום של הכדור והמהירות שלו לשחקן השני עכשיו, הכל עובד טוב, אבל ככל שהמשחק מתקדם ככה לוקח לכדור יותר זמן עד שהוא קופץ מהפאדל השני. מה זאת אומרת? נניח אני הפאדל השמאלי, והכדור פוגע הפאדל הימני - אני לא רואה את זה מיד, אני רואה כאילו הכדור עובר דרך הפאדל הימני ופתאום הוא קופץ חזרה. עכשיו, יש לי חשד למה זה קורה... מה שאני חושב שקורה זה שאם נניח הכדור קופץ מהפאדל שלי ואני שולח את זה לשחקן השני, לוקח לזה נניח 2 פריימים להגיע לשחקן השני. ואז לא רק שהשחקן השני רואה את זה באיחור של 2 פריימים (זה לא נורא), אלא גם הכדור נמצא אצלו 2 פריימים לפני איפה שהכדור נמצא אצלי. ואז כשאני רואה שהכדור כבר הגיע אליו, אצלו יעברו רק עוד שני פריימים עד שהכדור יגיע לפאדל שלו, ואז יקח עוד 2 פריימים עד שהמידע על ההתנגשות יגיע אלי - ואז כבר יש לאג של 4 פריימים. וככה בכל התנגשות הלאג גדל... זאת ההשערה שלי. היא נראית לי די הגיונית
עכשיו, זה הפתרון שחשבתי עליו... לספור את מספר הפריימים שעברו מתחילת המשחק, וכל הודעה לשלוח עם מידע על הפריים שבו היא נשלחה. אז כששחקן מקבל הודעה, הוא בודק כמה פריימים עבר מאז שהיא נשלחה עד שהיא הגיעה אליו, נניח יצא לו 3 פריימים. ואז נניח הוא מקבל מידע על שינוי המיקום של הכדור - אז הוא משנה אותו, ואז מזיז אותו כאילו עברו עוד 3 פריימים. מה דעתכם? יש למישהו פתרון יותר טוב? איך עושים את זה במשחקים אחרים?
אהלן אני מנסה לעשות מוד של משחק online לking pong 2 http://www.anykeysoft.net עכשיו, יש לי את המשחק (בפלאש) ואת האפליקציה שמשנה את הרזולוציה של המשתמש (בסי פלאס פלאס) עכשיו, הוספתי לאפליקציה שני קלאסים שכתבתי (אני גאה בעצמי שכתבתי אותם