شبیه ساز راه آهن روسیه (RRS): اولین نسخه عمومی

روزی که منتظرش بودم فرا رسید که بالاخره بتوانم این پیشرفت را ارائه کنم. این پروژه دقیقا یک سال پیش، حداقل در 1 سپتامبر 2018 آغاز شد مخازن RRS در Gtihub اولین کامیت دقیقاً این تاریخ را دارد.

قطار مسافری در ایستگاه اصلی روستوف (قابل کلیک)

شبیه ساز راه آهن روسیه (RRS): اولین نسخه عمومی

RRS چیست؟ این یک شبیه ساز متقابل پلتفرم باز از سهام نورد گیج 1520 میلی متری است. خواننده طبیعتاً این سؤال را مطرح می کند: "ببخشید، اگر تعداد کافی شبیه ساز راه آهن اعم از تجاری و باز وجود داشته باشد، این پروژه برای چیست؟" برای پاسخ به این سوال، پیشنهاد می کنم به زیر گربه نگاه کنید

تاریخچه پروژه

روزی روزگاری در سال 2001 منتشر شد شبیه ساز قطار مایکروسافت (MSTS)، که باعث ایجاد جامعه عظیمی از راه آهن در کشور ما شد. در طی چندین سالی که این پروژه وجود داشت (تا زمانی که مایکروسافت آن را رها کرد و به چیزهای جالب تری برای آن رفت، مانند ورشکستگی نوکیا و غیره)، این پروژه انبوهی از موارد اضافه شده برای آن به دست آورد: مسیرها، وسایل حمل و نقل، سناریوها

بر اساس MSTS، تعدادی پروژه دیگر متعاقبا ایجاد شد، مانند OpenRails, RTrainSim (RTS) و سایر اضافات و مشتقات. پروژه های تجاری نیز ظاهر شد، مانند معروف آموزش. و همه چیز خوب خواهد بود ، اما بسیاری از طرفداران حمل و نقل ریلی به دلایل کاملاً عینی از این محصولات راضی نیستند - آنها به هیچ وجه منعکس کننده ویژگی های حمل و نقل داخلی که در فضای پس از شوروی کار می کند و توسعه یافته است. این امر به ویژه در هنگام مشاهده نحوه اجرای ترمزهای قطار حادتر است - هیچ یک از پروژه های ذکر شده اجرای عادی ترمزهای خودکار سیستم ماتروسوف را ندارند یا خواهند داشت.

در سال نه چندان دور 2008 ، پروژه دیگری ظاهر شد - شبیه ساز ZDS، توسعه یافته توسط ویاچسلاو Usov. این پروژه از این جهت قابل توجه است که نواقص ذکر شده در بالا را در نظر گرفته و اصلاح می کند، در حالی که در ابتدا بر روی وسایل نورد گیج روسی تمرکز می شود. اما یک "اما" بزرگ وجود دارد - این پروژه انحصاری و بسته است و از نظر معماری اجازه معرفی سهام نورد خود را نمی دهد.

من خودم در سال 2007 که شروع به کار کردم به موضوع راه آهن رسیدم JSC VELNII، به عنوان پژوهشگر و پس از دفاع از پایان نامه دکتری خود در سال 2008 به عنوان پژوهشگر ارشد. از آن زمان بود که با آخرین دستاوردها در زمینه بازی های شبیه سازی راه آهن در آن زمان آشنا شدم. و من چیزی را که دیدم دوست نداشتم و پروژه ZDSimulator در آن زمان وجود نداشت. بعداً، مجذوب پویایی وسایل حمل و نقل، به دانشگاه حمل و نقل ایالتی روستوف آمدم (RGUPS) با موضوع پایان نامه دکتری دینامیک ترمز قطار باری. امروز من توسعه مجتمع‌های آموزشی حمل‌ونقل ریلی را برای دانشگاه خود رهبری می‌کنم و رشته‌های تخصصی را در بخش راه آهن کششی تدریس می‌کنم.

در ارتباط با همه موارد فوق، ایده ایجاد یک شبیه‌ساز به وجود آمد که به توسعه‌دهنده یک افزونه برای آن اجازه می‌دهد تا کنترل کاملی بر فرآیندهای فیزیکی رخ‌داده در انبار نورد داشته باشد. مشابه شبیه ساز فضایی Orbiter، که من زمانی برای آن افزودنی را در قالب خانواده ای از وسایل پرتاب مبتنی بر R-7 توسعه دادم. یک سال پیش این کار را شروع کردم و خودم را در آن انداختم. 26 دسامبر 2018 اینجا نور را دید این فناوری نمایشی.

کار من مورد توجه علاقه مندان قرار گرفت و در حلقه های راه آهن، خالق محتوای بصری برای ZDsimulator شناخته شده بود. رومن بیریوکوف (رومیچ راه آهن روسیه) به من پیشنهاد کمک و همکاری در توسعه بیشتر پروژه داد. بعداً یک توسعه دهنده دیگر به ما پیوست - الکساندر میشچنکو (Ulovskii2017)، ایجاد کننده مسیر برای ZDsimulator. همکاری ما ما را به اولین نسخه مان رساند. این ویدیو نمای کلی از ظاهر بازی برای اولین نسخه آن را نشان می دهد

ویژگی های شبیه ساز RRS

اول از همه، این یک معماری نرم افزار باز است. ناگفته نماند که کد شبیه ساز باز است، یک API و SDK برای توسعه دهندگان افزونه های شخص ثالث برای آن وجود دارد. مانع ورود بسیار زیاد است - مهارت های اولیه توسعه C++ مورد نیاز است. شبیه ساز با استفاده از کامپایلر GCC و نوع MinGW آن برای سیستم عامل ویندوز در آن نوشته شده است. علاوه بر این، توصیه می شود توسعه دهنده با چارچوب Qt آشنا باشد، زیرا بسیاری از مفاهیم آن زیر بنای معماری بازی هستند.

با این حال، با همت و میل لازم، این پروژه فرصت های زیادی را برای توسعه دهنده افزونه باز می کند. سهام نورد در قالب ماژول هایی بر اساس کتابخانه های پویا پیاده سازی می شود. عنصر ساختاری اصلی در شبیه ساز واحدی از وسایل نورد است، یا واحد متحرک (MU) - یک ماشین (غیر خودکششی یا به عنوان بخشی از قطار چند واحدی) یا بخشی از یک لوکوموتیو. API امکان تنظیم گشتاور اعمال شده به مجموعه چرخ های پلی اتیلن را در پاسخ به دریافت سرعت زاویه ای مجموعه چرخ ها و همچنین پارامترهای خارجی مانند ولتاژ و نوع جریان در شبکه تماس می دهد. شبیه ساز چیز دیگری نمی داند و نمی خواهد بداند، که فیزیک تجهیزات داخلی را به وجدان سازنده یک لوکوموتیو یا ماشین خاص واگذار می کند.

حدس زدن اینکه چنین رویکرد نسبتاً سطح پایینی امکان اجرای کوچکترین تفاوت های ظریف مدار لوکوموتیو را ممکن می کند دشوار نیست. علاوه بر این، کیت شبیه‌ساز شامل مجموعه‌ای از تجهیزات استاندارد نصب شده بر روی خودروهای نورد داخلی است: تبدیل جرثقیل قطار راننده. پلاک 395 وضعیت پخش کننده هوا. شماره 242 وضعیت سوپاپ ترمز کمکی. شماره 254 و سایر عناصر تجهیزات ترمز. توسعه دهنده افزونه فقط باید این عناصر را به مدار پنوماتیک یک لوکوموتیو یا ماشین خاص متصل کند. علاوه بر این، یک API برای ایجاد واحدهای سخت افزاری خود وجود دارد.

از نظر معماری، RRS بر روی تعامل دو فرآیند اصلی ساخته شده است

  • شبیه ساز - موتور دینامیک قطار فیزیکی TrainEngine 2. فیزیک حرکت قطار را با در نظر گرفتن بسیاری از عوامل خارجی، با در نظر گرفتن تعامل واحدهای متحرک از طریق دستگاه های کوپلینگ، پیاده سازی می کند، داده های بدست آمده از ماژول های خارجی را پردازش می کند که فیزیک عملکرد تجهیزات انبار نورد را اجرا می کند.
  • بیننده - یک زیرسیستم گرافیکی که حرکت قطار را تجسم می کند و بر اساس یک موتور گرافیکی ساخته شده است OpenSceneGraph

این زیرسیستم ها از طریق حافظه مشترک که بر اساس کلاس QSharedMemory از چارچوب Qt پیاده سازی شده اند، با یکدیگر تعامل دارند. اولین نسخه‌های نمایشی از IPC مبتنی بر سوکت استفاده می‌کردند و برنامه‌هایی برای بازگشت به این فناوری در آینده با در نظر گرفتن اصلاح برخی از بخش‌های شبیه‌ساز و نیازهای آینده وجود دارد. انتقال به حافظه مشترک تا حدی اقدامی اجباری بود که از مفید بودن آن گذشته است.

من تفاوت های ظریف را توصیف نمی کنم - بسیاری از فراز و نشیب های توسعه این پروژه قبلاً در انتشارات من در مورد منبع ذکر شده است، به ویژه، من یک منبع نسبتاً گسترده دارم. مجموعه ای از آموزش ها در مورد موتور OpenSceneGraph، که حاصل تمرین کار روی این پروژه است.

همه چیز در پروژه آنطور که ما می خواهیم صاف نیست. به طور خاص، زیرسیستم گرافیکی از نظر کیفیت رندر بسیار عالی است و عملکرد سیم کارت بسیار مطلوب است. این نسخه یک هدف دارد - معرفی جامعه علاقه مندان به حمل و نقل ریلی با این پروژه، تشریح قابلیت های آن و در نهایت ایجاد یک شبیه ساز راه آهن باز و چند پلتفرمی با یک API پیشرفته برای توسعه دهندگان افزونه.

چشم انداز

مشتریان بالقوه به شما، کاربران و توسعه دهندگان عزیز آینده ما بستگی دارد. پروژه باز است و وجود دارد وب سایت رسمی شرکتاز جایی که می توانید شبیه ساز را دانلود کنید مستندات، که ترکیب آن به طور مداوم دوباره پر می شود. وجود دارد فروم پروژه، گروه ВКو کانال یوتیوب، جایی که می توانید دقیق ترین مشاوره و کمک را دریافت کنید.

با تشکر از شما!

منبع: www.habr.com

اضافه کردن نظر