Russian Railway Simulator (RRS): rilis publik pertama

Hari yang ditunggu-tunggu telah tiba ketika saya akhirnya bisa mempresentasikan perkembangan ini. Proyek ini diluncurkan tepat setahun yang lalu, pada 1 September 2018, setidaknya dalam repositori RRS di Gtihub, komit pertama memiliki tanggal tersebut.

Kereta penumpang di stasiun Rostov Glavny (dapat diklik)



Apa itu RRS? Ini adalah simulator lintas-platform terbuka dari 1520 mm rolling stock gauge. Pembaca secara alami akan mengajukan pertanyaan: "Maaf, mengapa proyek ini diperlukan, jika ada cukup simulator kereta api, baik komersial maupun terbuka ,?" Untuk jawaban atas pertanyaan ini, saya mengusulkan untuk mencari di bawah kucing

Sejarah proyek


Suatu hari, pada tahun 2001, Microsoft Train Simulator (MSTS) melihat cahaya hari, menelurkan komunitas besar kereta api membara di negara kita. Selama beberapa tahun proyek ini bertahan (sampai Microsoft meninggalkannya, melakukan hal-hal yang lebih menarik untuknya, seperti kebangkrutan Nokia, dll.), Proyek ini tumbuh menjadi penambahan yang dibuat untuknya: rute, rolling stock, skenario.

Berdasarkan MSTS, selanjutnya, sejumlah proyek lain dibuat, seperti OpenRails , RTrainSim (RTS) dan add-on dan turunan lainnya. Proyek komersial juga telah muncul, seperti Trainz yang terkenal. Dan semuanya akan baik-baik saja, tetapi banyak penggemar transportasi kereta api tidak puas dengan produk ini karena alasan yang cukup objektif - mereka sama sekali tidak mencerminkan spesifikasi rolling stock domestik yang dioperasikan dan dikembangkan di ruang pasca-Soviet. Ini sangat akut ketika melihat bagaimana rem kereta api diterapkan - tidak ada proyek yang terdaftar dan tidak akan menjadi implementasi normal dari rem otomatis sistem Matrosov.

Sudah tutup pada 2008, proyek lain muncul - ZDSimulator , dikembangkan oleh Vyacheslav Usov. Proyek ini luar biasa karena memperhitungkan dan memperbaiki kekurangan yang disebutkan di atas, sementara awalnya berfokus pada rolling stock dari ukuran Rusia. Tapi ada satu "tetapi" besar - proyek ini adalah milik dan ditutup, secara arsitektur tidak memungkinkan pengenalan rolling stock sendiri.

Saya sendiri datang ke subjek kereta api pada tahun 2007, ketika saya mulai bekerja di VELNII OJSC sebagai peneliti, dan setelah mempertahankan disertasi saya pada 2008, saya menjadi peneliti senior. Kemudian saya berkenalan dengan prestasi terbaru saat itu di bidang game simulasi kereta api. Dan apa yang saya lihat, saya tidak suka, dan proyek ZDSimulator pada waktu itu tidak ada. Belakangan, saya, terpesona oleh dinamika rolling stock, datang ke Rostov State Transport University ( RGUPS ) dengan topik disertasi doktoral tentang dinamika pengereman kereta barang. Sampai saat ini, saya memimpin pengembangan simulator kereta untuk transportasi kereta api untuk universitas kami dan mengajarkan disiplin profil di Department of Traction Rolling Stock.

Sehubungan dengan semua hal di atas, muncul ide untuk membuat simulator yang akan memungkinkan pengembang add-on baginya untuk mendapatkan kontrol penuh atas proses fisik yang terjadi di rolling stock. Mirip dengan simulator ruang Orbiter, yang pernah saya kembangkan dalam bentuk keluarga roket pembawa P-7. Setahun yang lalu, saya mengambil pekerjaan ini dan pergi dengan kepala saya. Pada 26 Desember 2018, demo teknologi ini dirilis .

Pekerjaan saya diperhatikan oleh para penggemar, dan Roman Biryukov (Romich RZDUZ) , pencipta konten visual untuk ZDimulator, yang terkenal di kalangan pemandu kereta api, menawarkan saya bantuan dan kerja sama dalam pengembangan lebih lanjut proyek. Kemudian, pengembang lain bergabung dengan kami - Alexander Mishchenko (Ulovskii2017 ), pembuat rute untuk ZDsimulator. Kolaborasi kami membawa kami ke rilis pertama. Di video - beberapa ikhtisar tentang tampilan permainan saat rilis pertama


Fitur Simulator RRS


Pertama-tama, ini adalah arsitektur perangkat lunak terbuka. Belum lagi fakta bahwa kode simulator terbuka, ada API dan SDK yang ditujukan untuk pengembang pengaya pihak ketiga. Ambang entri cukup tinggi - Anda memerlukan keterampilan pengembangan C ++ dasar. Simulator ditulis secara khusus di atasnya, menggunakan kompiler GCC dan versi MinGW untuk sistem operasi Windows. Selain itu, diharapkan untuk memperkenalkan pengembang ke kerangka Qt, karena banyak konsep darinya adalah inti dari arsitektur game.

Namun, dengan uji tuntas dan keinginan, proyek ini membuka peluang besar bagi pengembang tambahan. Rolling stock diimplementasikan dalam bentuk modul berdasarkan perpustakaan dinamis. Elemen struktural utama dalam simulator adalah unit rolling stock , atau mobile unit (PE) - mobil (non-self-propelled atau sebagai bagian dari mobil kereta motor) atau bagian dari lokomotif. API memungkinkan untuk mengatur torsi yang diterapkan ke pasangan roda PE, sebagai tanggapan untuk menerima kecepatan sudut dari pasangan roda, serta parameter eksternal, seperti tegangan dan jenis arus di jaringan kontak. Simulator tidak tahu apa-apa lagi dan tidak mau tahu, yang membuat fisika pengoperasian peralatan internal berdasarkan hati nurani pengembang lokomotif atau mobil tertentu.

Mudah ditebak bahwa pendekatan tingkat rendah yang demikian memungkinkan untuk mewujudkan nuansa terkecil dari rangkaian lokomotif. Selain itu, kit simulator termasuk satu set peralatan standar yang dipasang pada rolling stock domestik: kereta derek dari pengemudi konv. 395, distributor udara konv. 242, katup rem bantu No. 254 dan elemen lain dari peralatan rem. Pengembang tambahan hanya perlu menghubungkan elemen-elemen ini ke sirkuit pneumatik lokomotif atau mobil tertentu. Selain itu, ada API untuk membuat blok peralatan Anda sendiri.

Secara arsitektur, RRS dibangun di atas interaksi dua proses utama

  • simulator adalah mesin fisika dinamika kereta TrainEngine 2. Ini menerapkan fisika gerakan kereta dengan mempertimbangkan banyak faktor eksternal, dengan mempertimbangkan interaksi unit bergerak melalui skrup, memproses data dari modul eksternal yang menerapkan fisika peralatan rolling stock.
  • viewer - subsistem grafis yang mengimplementasikan visualisasi pergerakan kereta api, dibangun berdasarkan engine grafis OpenSceneGraph

Subsistem ini berinteraksi satu sama lain melalui memori bersama, diimplementasikan berdasarkan kelas QSharedMemory dari kerangka kerja Qt. Demo pertama menggunakan IPC berdasarkan soket, dan di masa depan direncanakan untuk kembali ke teknologi ini, mengingat penyelesaian beberapa bagian dari simulator dan kebutuhan dengan pandangan ke masa depan. Transisi ke memori bersama, sampai batas tertentu, merupakan tindakan paksa yang telah menjadi usang.

Saya tidak akan menjelaskan nuansa - banyak pasang surut pengembangan proyek ini sudah dijelaskan dalam publikasi saya tentang sumber daya, khususnya, saya memiliki serangkaian tutorial yang agak luas tentang mesin OpenSceneGraph , yang telah tumbuh hanya dari praktik mengerjakan proyek ini.

Dalam proyek ini, tidak semuanya semulus yang kita inginkan. Secara khusus, subsistem grafis sangat jauh dari sempurna dalam hal kualitas rendering, dan kinerja sim meninggalkan banyak yang harus diinginkan. Rilis ini memiliki satu tujuan - untuk memperkenalkan komunitas penggemar transportasi kereta api dengan proyek tersebut, menguraikan kemampuannya dan akhirnya membuat simulator kereta api lintas platform terbuka dengan API canggih untuk pengembang tambahan.

Prospek


Prospek terserah Anda, pengguna dan pengembang masa depan kami yang terhormat. Proyek ini terbuka, ada situs resmi di mana Anda dapat mengunduh simulator, dengan dokumentasi , yang komposisinya akan terus diperbarui. Ada forum proyek, grup VK , dan saluran YouTube tempat Anda bisa mendapatkan saran dan bantuan paling detail.

Terima kasih atas perhatian anda!

Source: https://habr.com/ru/post/id465689/


All Articles