סימולטור הרכבת הרוסית (RRS): פרסום ראשון לציבור

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

רכבת נוסעים בתחנה המרכזית של רוסטוב (ניתן ללחוץ)

סימולטור הרכבת הרוסית (RRS): פרסום ראשון לציבור

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

היסטוריה הפרויקט

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

בהתבסס על MSTS, נוצרו לאחר מכן מספר פרויקטים נוספים, כגון OpenRails, RTrainSim (RTS) ועוד תוספות ונגזרות. הופיעו גם פרויקטים מסחריים, כמו המפורסמים טריינץ. והכל יהיה בסדר, אבל אוהדים רבים של תחבורה רכבת אינם מרוצים מהמוצרים האלה מסיבות אובייקטיביות למדי - הם בשום אופן לא משקפים את הפרטים של כלי רכב מתגלגלים מקומיים המופעלים ומפותחים במרחב הפוסט-סובייטי. זה חריף במיוחד כאשר מסתכלים על אופן יישום הבלמים ברכבת - לאף אחד מהפרויקטים המפורטים אין או יהיה יישום רגיל של בלמים אוטומטיים של מערכת Matrosov.

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

אני עצמי הגעתי לנושא הרכבת ב-2007, כשהתחלתי לעבוד ב JSC VELNII, כעמית מחקר, ולאחר שהגן על עבודת הדוקטורט שלו ב-2008, כעמית מחקר בכיר. אז התוודעתי להישגים האחרונים בתחום משחקי סימולציית הרכבת באותה תקופה. ולא אהבתי את מה שראיתי, ופרויקט ZDSimulator לא היה קיים באותה תקופה. מאוחר יותר, מוקסם מהדינמיקה של מלאי מתגלגל, הגעתי לאוניברסיטת רוסטוב הממלכתית לתחבורה (RGUPS) עם נושא עבודת דוקטורט על דינמיקת הבלימה של רכבת משא. היום אני מוביל את הפיתוח של מתחמי הכשרה לתחבורה ברכבת עבור האוניברסיטה שלנו ומלמד דיסציפלינות מיוחדות במחלקה למלאי מתגלגל.

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

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

תכונות של סימולטור RRS

קודם כל, זו ארכיטקטורת תוכנה פתוחה. שלא לדבר על העובדה שקוד הסימולטור פתוח, יש API ו-SDK המיועד למפתחים של תוספות של צד שלישי אליו. מחסום הכניסה גבוה למדי - נדרשות כישורי פיתוח בסיסיים ב-C++. הסימולטור נכתב בו, תוך שימוש במהדר GCC ובגרסת MinGW שלו עבור מערכת ההפעלה Windows. בנוסף, רצוי למפתח להכיר את ה-Qt framework, שכן רבים מהמושגים שלה עומדים בבסיס הארכיטקטורה של המשחק.

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

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

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

  • מדמה — מנוע דינמיקה של רכבת פיזית TrainEngine 2. מיישמת את הפיזיקה של תנועת הרכבת תוך התחשבות בגורמים חיצוניים רבים, תוך התחשבות באינטראקציה של יחידות נעות באמצעות התקני צימוד, מעבדת נתונים המגיעים ממודולים חיצוניים המיישמים את הפיזיקה של הפעולה של ציוד מלאי מתגלגל.
  • צופה - תת-מערכת גרפית הממחישה את תנועת הרכבת, הבנויה על בסיס מנוע גרפי OpenSceneGraph

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

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

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

סיכויים

לקוחות פוטנציאליים תלויים בכם, המשתמשים והמפתחים העתידיים היקרים שלנו. הפרויקט פתוח וקיים אתר רשמימאיפה אתה יכול להוריד את הסימולטור תיעוד, שהרכבו יתחדש ברציפות. קיים форум פּרוֹיֶקט, קבוצת VKו - ערוץ YouTube, שם תוכל לקבל את הייעוץ והסיוע המפורטים ביותר.

תודה לך!

מקור: www.habr.com

הוספת תגובה