Raylı Sistem Simülasyonu Fikri

Bir fikir vardı aklımda, anlatmak da istiyordum. Bir tartışma konusu olsun;

Oyun yapmasını bilen arkadaşlar için de bir fikir olabilir diye düşündüm.

Bir raylı sistem simülasyonu düşünelim, şimdi normalde ray olan oyunlar hep önceden kodlanmış hazırlanmış bi hat (curve) üzerinde vagonların yol alması ve çeşitli animasyonlara sahip olması, değil mi?

Bu kez oyuna biraz daha fizik kısmından girilse ve trenler gerçekten raya oturuyor olsa ve tamamen fiziklere bağlı olarak oynanıyor olsa. Nasıl olur?

Tıpkı gerçekte olduğu gibi atıyorum X ton bi lokomotif arkasında da bilmemkaç tane kütle yani vagon var. Bunlar aynı gerçekte olduğu gibi raya girik biçimde oyun başlasa ve biz gaza bastıkça gerçekte olduğu kadar güçlü bir itkiyle tamamen gerçek fiziklere sahip bir oyun kurulsa?

Bunu aklıma getiren şu oldu aslında; her şeye izin verebilir. Rayı doğru açıklıkta (1435mm) modelledikten sonra herkes harita ve tren tasarlayıp oyuna mod yapabilir. Bu şekilde de her yer yapılabilir. Makas değiştirme olayları da gerçeğinde olduğu gibi kod yerine fiziksel olarak tekerlerin yönlendirilmesi ve trenin tamamen fiziksel ortamda hat değiştirmesi sağlanabilir.

Bunu yapınca mesela çoğu kod gerektiren işlemden kurtulabiliriz gibi geliyor. Şuanki simülasyonlar böyle çalışmıyor çok büyük ihtimalle ama bu fikri buraya sunmak istiyorum. Düşünsenize birinin bunu yaptığını… Zaten görselleştirme kısmı ve model kısmı en basiti. Ben bile yapabiliyorsam herkes yapabilir ama kodlamayı herkes yapamaz. Özellikle oyuna yapılabilecek eklentilerin haddi hesabı olmaz. Tamamen fiziklerle oynanan güzel bir simülasyon çıkarsa eğer, ben m2 levent metrosunun modunu yaparken biri marmarayı biri de belki de tramvay yapar. Bu fizik olayına girişilirse her türlü raylı sistem herkes tarafından kolaylıkla yapılabilir. İlginç bir fikir, paylaşayım dedim :slight_smile:

7 Beğeni

Aslında dediğin olay Roblox oyun motoruyla yapılabiliyor, bu oyun motoru oyuncular tarafından Minecraft ile aynı kefeye konuluyor çoğu zaman. Eh yanlış da değiller çünkü içerisinde barındırdığı oyunlar %90 küçük çocuklara hitap ediyor. Ben bu motorla geliştirme yapan taraftan olduğum için oyuncularla hiç muhatap olmuyorum, en son doğru düzgün 2014 yılında oyun olarak oynuyordum o yıldan beridir ağırlıklı oyun geliştirme. Bu sebeple yazımda sadece fizik-grafik motoru tarafından bakacağım.

Fizikle başlayalım, bahsettiğin %100 fizikle çalışma olayını yapan da var (ilk başlarda ben) ama geliştiricilerin büyük çoğunluğu saf fizik kullanmaktansa script+fizik kullanmayı tercih ediyor, ben şuan ikinci gruptanım. Neden saf fiziğin dezavantajlı olduğuna gelecek olursak da oyun motoru 2004’ten beri sürekli geliştirile geliştirile bugünkü halini aldı, dolayısıyla gördüğüm en kötü optimizasyona sahip motor (LOD kavramı yıl 2021 anca gelecek bekliyoruz, GTA’da uçakla uçarken bilgisayarın en ince ayrıntısına kadar sokakları renderladığını düşünün neyi kastettiğim anlaşılacak). Sırtımızı tamamen fiziğe yasladığımızda bu bize yüksek memory kullanımı, yüksek ping ve düşük fps olarak geri dönüyor. Belki boş haritada 1 tren sıkıntı yaratmaz ama train simulator klasmanında bir oyun tasarlamaya kalktığımızda 10 fps’leri görebiliyoruz.

Deney olsun diye az önce şekildeki gibi bir demiryolu parkuru hazırladım:

Aracımızı da şu şekilde basitçe ayarladım:

Ardından tekerleklerin merkez noktalarını ortadaki dikdörtgen parçaya menteşe (hinge) modifieri ile bağladım, bu sayede itildiğinde tekerlekleri dönerek sürtünme ile durana kadar hareketine devam edecek. Herhangi bir node,curve vb. takip etme sistemi olmadığı için de (script desteğiyle yapılabiliyor) tekerleklerin içine raydan çıkmasını engelleyecek daha büyük yarıçaplı bir silindir yerleştirdim. Basit bir vagon yapmış olduk yani.

Asıl kısım bundan sonra lokomotife çevirmeyle başlıyor, Robloxa ne zaman geldiğini bilmediğim açısal hız modifieri gelmiş yani anladığım kadarıyla tekerleklere ayrı ayrı dönme isteği verebiliyoruz. Fakat yeni modifierlara tam hakim olmadığım için script yardımı aldım, üstte yeni eklediğim koltuğa (seat) oturup W S tuşlarına basınca mavi kuvvet vektörü değişiyor, bir nevi arkadan itiyormuşuz gibi düşünülebilir ama vektör itiyor biz oturuyoruz.

Aracın işleyişi ise aşağıdaki gibi, tekerleklerin döndüğü belli olsun diye meşhur missing texture şeysinden yapıştırdım. Tekerlekler ileri hareket+araç ağırlığı+rayla teker arasındaki sürtünme sayesinde dönüyor, herhangi bir hıza bağlı dönme algoritması mevcut değil.

Bu anlattığım fizik kısmıydı, gelelim grafik kısmına. Oyun motoru size istediğiniz şeyi yapmak için belirli objeler sunuyor (dikdörtgen prizma, üçgen prizma, silindir ve küre), ayrıyeten ister obj ve fbx formatlı modelleri Roblox’a convertleme imkanı veriyor. Bu sayede gerçekte olan şeyleri birebir aktarıp kullanabiliyorsunuz, gerçekte bulunan yerleri yapabiliyorsunuz. Örneğin hobi amaçlı geliştirdiğim bir Aksaray-Kocatepe metro oyunum vardı, grafik olarak iyiydi ama oynanış için kod yazacak kadar iyi değildim (mesela tren spawnlama sistemi kodlayamazdım), bu sebepten yarıda bıraktım. Resimlerle baş başa bırakayım sizleri :sleepy:

ABB Tren seti

Aksaray istasyonu

Bayrampaşa istasyonu

Eh, uzun lafın kısası böyle bir şey var, oyunun kendi kodlamasını bilmeyenin de kullanabileceği bi program olması güzel, unity veya unrealdeki gibi uğraşmaya gerek yok, tek tıkla karakteriniz spawn oluyor, tek bir dikdörtgen prizmanın boyutunu değiştirip kopyalayıp renklendirip vs. attığım resimlerdeki gibi görüntüler elde etmek çok kolay. Fakat optimize olmayışıyla, glitchleriyle “alternatifi olsa bir an önce geçerim” dedirtiyor.

8 Beğeni

Süper olmuş bu bile hocam tebrikler :open_mouth:

4 Beğeni

Zaten bir takım fizik simülasyonlarında tren mevcuttu ve bahsettiğiniz gibi fizikle çalışıyordu.

3 Beğeni

Kurpta tekerleğin karşıya bakarken rayda kayarak dönüşü gerçekteki iki dingilli vagonlara bire bir uyumlu.

3 Beğeni

Doğru, BeamNG’yi tamamen unutmuşum

Roblox oyun motorunu bende kullanıyorum arada sırada senin gibi hobi amaçlı birşeyler yapıyorum Unreal’e alışmaya çalışırkende Roblox’ta alıştırma yapıyorum :smile:

Her ne kadar çocuklara hitap eden bir sistem olsada bence Roblox hem küçüklere hem gençlere hatta yetişkin oyunculara bile hitap eden bir sistem :slightly_smiling_face:

Bu arada ellerinize sağlık hocam süper gözüküyor :slightly_smiling_face:

2 Beğeni