Cards of War: Distributed Multiplayer & Offline Turn-Based Strategy Engine in #C
פרויקט גמר – לימודי הנדסאי תוכנה
תיאור הפרויקט
Cards of War הוא פרויקט גמר מלימודי הנדסאי תוכנה — מנוע משחק אסטרטגיה טקטי מבוסס-תורות (Turn-Based Strategy) מונחה-עצמים (OOP) בשפת #C מעל סביבת NET. המערכת תומכת הן במצב משחק מקומי (Offline) והן במודל רשת מבוזר (P2P PvP), תוך ניהול סנכרון מצב משחק (State Synchronization) בזמן אמת, מנוע קרב הסתברותי ומסד נתונים לניהול משתמשים ו-Sessions.
🏗️ ארכיטקטורה ומימוש טכנולוגי
💻 פיתוח ב-#C וארכיטקטורת OOP
תכנון ומימוש לוגיקת המשחק ב-#C תוך שימוש במחלקות מופשטות וממשקים (Interfaces) לייצוג יחידות צבאיות, קלפים ומצבי משחק — המבטיחים הרחבה מודולרית של חוקים ויחידות חדשות.
🌐 תקשורת רשת היברידית וסנכרון P2P
מימוש מודל תקשורת רשת ישיר (Sockets / TCP) ב-#C המאפשר לכל קליינט לתפקד כשרת (Host) או כעמית (Peer), ניתוב אירועי משחק בזמן אמת וצמצום Latency — ללא תלות ב-Dedicated Server.
🎲 מנוע לוגיקה וסימולציה הסתברותית
- מנגנון "ערפל קרב" (Fog of War) ומבנה נתונים מבודד עבור ה-Deck הפרטי של כל שחקן, להבטחת שלמות נתונים וחשיפת קלפים רק בעת פריסתם בלוח הקרב.
- אלגוריתם חישוב שרידות יחידות המבוסס על מטריצת נתוני תקיפה/הגנה ושקלול הטלת קוביות מבוססת מחולל מספרים אקראיים (RNG Simulation).
🔐 ניהול משתמשים, אבטחה ו-Persistence
אינטגרציה מול מסד נתונים (SQL / Relational DB) מתוך קוד ה-#C לשמירת פרטי משתמשים, אימות באמצעות סיסמאות מוצפנות, ורישום רציף של ניקוד, היסטוריית קרבות ומצב המשחק הנוכחי.
💬 ערוץ צ'אט וניהול Handshake
ערוץ צ'אט גלובלי בין משתמשים טרם פתיחת המשחק וניהול תהליך החיבור ויצירת ה-Session בין שני השחקנים.
📈 ערך מוסף ותוצאות
- עמידות וגמישות תפעולית: מעבר חלק בין Offline מקומי ל-Online PvP תוך שמירה מלאה על עקביות חוקי המשחק.
- סנכרון נתונים אמין (State Consistency): סנכרון יעיל ומדויק של אירועי המשחק והניקוד בין שני הקצוות — למניעת Desync.
- הפרדת רשויות וקוד נקי (Decoupling): חלוקה ברורה בין שכבת תקשורת, שכבת נתונים ומנוע המשחק — לתחזוקה נוחה ושדרוג קל.
תוצר
**פרויקט גמר** בלימודי הנדסאי תוכנה — מנוע משחק אסטרטגיה turn-based ב-**#C / .NET** עם P2P PvP, Fog of War, מנוע קרב הסתברותי, שכבת אבטחה ו-Persistence ל-SQL — ללא שרת מרכזי.
🎬 סרטונים ותמונות