משחק ג'אוה - שרת לקוח

neko

New member
משחק ג'אוה - שרת לקוח

היי אנשים. יש לי משחק ג'אוה שבניתי באפלט, ושרת שהמשחק מתחבר דרכו (המשחק הוא לשני שחקנים, צריך שרת שיקשר ביניהם). הבעיה היא שאני צריך איכשהו לשמור את המהלכים של השחקנים בשרת. יש לכם הצעה מה הדרך הכי פשוטה לעשות את זה? אני לא בטוח איפה השרת ירוץ ואם אני אוכל להריץ DB במקביל, אני בכלל מעדיף שלא ולהשתמש במשהו פנימי של JAVA, אבל אני לא בדיוק מבין מה קורה שם בתחום ה-DB. חוצמזה, קיבלתי המלצות לשנות את השרת לPHP על HTTP כדי שלא יהיו בעיות עם חסימת פורטים בכל מיני מקומות. זה נשמע לכם סביר? חשבתי שאפלטים לא בעייתיים בתחום הזה...
 

user32

Well-known member
מנהל
עשית סלט שלם

ברגע שאפלט מתקשר לאינטרנט הוא הופך לבעייתי מבחינת חסימת פורטים. זו בעצם תוכנה שיושבת בלקוח ומתקשרת למחשב מרוחק וכך גם תוכנות ההגנה מתייחסות אליה. PHP בכלל לא רלוונטי לנושא הזה. HTTP דווקא כן. אם אכן תשנה את השרת לעבוד עם HTTP סטנדרטי בפורט 80 יהיה לך יותר קל מבחינת פיירוול ותוכנות הגנה. לא בטוח שזה לגמרי ישים כי אם השרת צריך להתקשר ללקוח ולשלוח לו הודעות יזומות זה אומר שהלקוח צריך פורט פתוח ואז שוב יש את בעיית האבטחה. באופן כללי כדאי להשתמש בשרת סטנדרטי ולא לפתח אחד משלך (אלא אם זה תרגיל אוניברסיטה או משהו כזה). שרתי קוד פתוח מעולים (מהטובים בעולם): Apache, Tomcat, JBoss, Geronimo, Jetty, GlassFish ועוד ועוד. אני לא נכנס כאן להבדלים בין Application Server לServlet container כדאי שתקרא על זה קצת חומר לפני שתחליט על מה להתבסס. מבחינת DB תלוי במספר משתמשים ועומסים. בגדול זה מתחלק בערך כך: DB "אישיים" שמותאמים לעומסים קלים ביותר ומתאימים בעיקר לתוכנות שולחניות: Derby, HSQL ועוד כמה מבוססים וממומשים Pure Java DB חצי מקצועיים: כוללים שרת עם תמיכה טובה בעומסים ופיצ'רים מתקדמים אבל פחות מתאימים לנפחים כבדים ולמערכות מקצועיות שדורשות הגנה וביצועים גבוהים במיוחד: MySQL הידוע ויש גם את PostGreSQL DB מקצועיים שעולים כמובן סכומים נכבדים: Oracle MS SQL Server IBM DB2 Sybase זהו פחות או יותר...
 

neko

New member
יש נקודה קריטית: אני אמור להריץ את זה

באחסון שאינו בשליטתי. אני לא יכול להבטיח שיהיה שם סרבר כמו APACHE אם TOMCAT. גם לא בדיוק ברור לי מה שרתים כאלה נותנים לי. כתבתי שרת פשוט בג'אוה שמקבל תקשורת (את המהלך של השחקן) ושולח כמה מילים לאפלט (את המהלך של השחקן השני בעיקר) - אני יכול להשתמש במקום זה בשרת סטנדרטי שידע לעשות את זה? ואם כן, זה אומר שאני אצטרך לתכנת את מה שכבר עשיתי בג'אוה שוב באיזו שפת סקריפט של APACHE נניח? או שהתוכנה שאני כותב בג'אוה מתממשקת איכשהו לשרת הסטנדרטי במקום לפתוח את הסוקטים בעצמה? אם אני עובר לשרת סטנדרטי אני אצטרך לשנות את הלקוח ככה שיתנהג כמו שהסרבר רוצה? לגבי DB, אני מעדיף כמה שיותר פשוט, ועדיף בלי להצטרך להריץ משהו חוץ מ-JAVA, שוב, בעיקר בגלל שאני לא שולט באכסון. אין הרבה מידע, זה ברמה של לשמור זוגות INTEGER-ים לכל מהלך, לא עמוס או מורכב. מתנצל על הבורות, אבל מעולם לא הגעתי לעולם האמיתי. הרעיונות הבסיסיים (מה זה שרת\לקוח, מה זה DB ואיך עובדים איתו וכו') ברורים לי, וכבר כתבתי את המשחק כולו והוא עובד - אבל ברגע שזה מגיע לטכנולוגיות ואינטגרציה אני אבוד לגמרי...
 

user32

Well-known member
מנהל
אתה רק מחזק את דבריי

רוב השרתים השיתופיים (כאלה שאתה שוכר מקום אצלם) לא יתנו לך להריץ שרת ג'אווה שאתה כתבת. במקום זה הם מקצים לך מקום בשרת כמו אחד מאלה שהזכרתי. השרתים שדיברתי עליהם הם שרתים שמריצים ג'אווה. בגדול אתה כותב את הקוד שלך ושם אותו בשרת. השרת מקבל את הבקשות מהקליינט ובתגובה מריץ את הג'אווה שלך ושולח את התגובה לקליינט. אי אפשר להסביר את כל הארכיטקטורה בפוסט בפורום. אני מציע שתקרא חומר על: Servlets, Java Application Server ו J2EE לגבי הבסיס נתונים: ברוב השרתים השיתופיים נותנים גישה לMySQL שזה יתאים לצרכים שלך. תוריד את המוצר ותתקין בבית הוא די פשוט ללימוד.
 
למעלה