Yarış oyunlarında aşırı hız felaketini önleyin


9

Android'de GTA III oynarken, oynadığım hemen hemen her yarış oyununda beni rahatsız eden bir şey fark ettim (belki Mario Kart hariç): Doğrudan ilerlemek kolay, ancak eğriler gerçekten zor. Şerit değiştirdiğimde veya birini geçtiğimde, araba ileri geri dönmeye başlar ve düzeltmek için yapılan her girişim onu ​​daha da kötüleştirir. Yapabileceğim tek şey frenlere basmak. Bence bu bir çeşit aşırı hız.

Onu bu kadar rahatsız edici kılan şey, gerçek hayatta asla başıma gelmemesidir (şükür :-)), bu yüzden içerideki araçlara sahip oyunların% 90'ı (muhtemelen gerçekten iyi fizik motorlarına sahip olmasına rağmen) gerçek dışı hissediyor. Bu konu hakkında birkaç kişiyle konuştum ve ya yarış oyunlarını 'aldınız' ya da görmüyorsunuz. Çok pratik yaparak, bazı oyunlarda (örneğin Need for Speed ​​serisinden) çok dikkatli sürerek, çok fren yaparak (ve genellikle parmaklarımda kramp alarak) yarı iyi olmayı başardım.

Bir oyun geliştiricisi olarak aşırı rezonans felaketini önlemek ve sürüşü doğru hissettirmek için ne yapabilirsiniz? (% 100 gerçekçi fizik için çabalamayan sıradan bir yarış oyunu için)

Ayrıca Super Mario Kart gibi oyunların tam olarak farklı bir şekilde ne yaptığını merak ediyorum, böylece çok fazla aşırı hıza sahip olmuyorlar?

Sanırım bir sorun, bir klavye veya dokunmatik ekranla oynuyorsanız (ancak tekerlekler ve pedallar değil), sadece dijital girişiniz var: gaz basılı veya değil, sola / sağa yönlendirme veya yönlendirme ve verilen hız. Diğer şey, muhtemelen iyi bir hız duygusuna sahip olmamanız ve gerçekte (güvenli) olduğundan çok daha hızlı sürmenizdir. Başımın üstünden, bir çözüm direksiyon tepkisini hızla değiştirmek olabilir.


3
Ayrıca hedef kitlenizin kim olduğunu da düşünmeniz gerekir. Eğer oyuncuları sevmek isterse, onları sadece gerçeği 'sabitleyerek' yabancılaştıracaksınız. Muhtemelen araba yarışmıyorsunuz ve bir yarışın yüksek hızlarında yaşadığınız sorunun, gerçek yarış sürücüleri için sorun olan çok gerçek bir şey olduğunu anlamıyorsunuz. Gerçek 'düzeltme' daha rahat olmaktır ve Mario Kart farklı yapıyor. Fizikle daha gevşekler ve balık avlama yapmak için gereken kuvvetleri modellenmiyorlar ve bu nedenle hardcore sürüş oyunu hayranları için ilgi duymuyorlar.
DampeS8N

Buna ne kadar kolay erişiminiz olduğunu bilmiyorum, ama bunun yardımcı olabileceğini düşündüm. Uzun zaman önce Formula One adında bir PSX oyunu oynadım .. birçoğunu yaptılar ama ilk olan buydu. Her neyse, bu bir simülasyondu, ancak seçenekler, artırabileceğiniz veya azaltabileceğiniz bir kaydırıcı ile direksiyon ve kırılma yardımı seçeneklerine sahipti. Örneğin, kırma yardımcısı çok yüksek olsaydı, arabanız çok hızlı bir dönüşe girerse otomatik olarak kırılır ve sizin için de yönlendirir (ne kadar destek istediğinize bağlı olarak), böylece kontrol etmek isteyebilirsiniz bir çözüm için.
12'de

Yanıtlar:


7

Bir çözüm biraz aldatmak ve oyuncunun ne yapmak istediğini tahmin etmektir. Oynatıcı düz bir bölümdeyken ve sola bastığında, şerit değiştirmek istediğini varsayabilirsiniz. Bir eğriye veya kavşağa yakın olduğunda, kesinlikle dönmek istiyor. Oyuncu, virajdaki tam direksiyon açısını kontrol edemez, bu nedenle oyuncuya şüphe yaratacağına karar verebilir ve dönüş düğmesine doğru anda bastığında her zaman ideal açıdaki eğrilerden geçmesine izin verebilirsiniz ( fiziksel olarak mümkün - 200 km / s'lik bir saç tokası eğrisinden geçmeye çalışan herhangi bir oyuncu, çim üzerinde kısa bir uçuşla cezalandırılmayı hak eder).

Bu, elbette, oyuncu aslında düz bir bölüme dönmek istediğinde veya bir kavşaktan hemen önce şerit değiştirmek istediğinde zor olabilir.

Başka bir çözüm, bir tuşa dokunmak ile bir tuşu tutmak arasında bir fark olması olacaktır. Oynatıcı dönüş tuşunu ne kadar uzun süre tutarsa, dönüş açısı o kadar yüksek olur. Bu gerçekçi görünmüyor bile, çünkü direksiyon simidiniz olduğunda, onu sonuna kadar döndürmek için zamana ihtiyacınız var.

Düzenleme: Dokunmatik ekranda, direksiyon ve hızı analog bir şekilde kontrol etmek için düğmeler yerine kaydırıcılar kullanabilirsiniz. Ekran basınca duyarlı olduğunda, basıncı da yorumlayabilirsiniz (ancak maksimum basınç hakkında görsel geri bildirimde bulunabilirsiniz veya aşırı hevesli oyuncular ekranlarını kırabilir). Cihazın yönlendirme sensörleri olduğunda, direksiyonu kontrol etmek için cihazı yatırma özelliğini kullanabilirsiniz.


Düzeltmeniz için teşekkürler, @kotekzot. Ancak, sormak zorunda kalmadan doğrudan diğer kişilerin yayınlarında düzenlemeler önerebilirsiniz.
Philipp

senin fikrin iyi. Sağ düğmeye basıldığında (0/1), aracı eğriye bağlı bir açıyla döndürür. Tıpkı sürdüğünüz gibi: 'sola dönüyorum' (0/1) diyorsunuz, ancak aslında eğimi bağlı olarak direksiyon simidini aşağı yukarı döndürüyorsunuz. Ve ayrıca kayda değer bir şey: açı yavaş yavaş değişir, aniden değil.
GameAlchemist

0

Grand Theft Auto IV ve V'den başka hangi oyunların uygulandığını araştırırken bu (eski) soruya rastladım, ancak kontrol edilebilir aşırı hıza ulaşmak için iyi bir cevabım var. Grand Theft Auto V'deki sürüş modeliyle uğraşmak için biraz deneyimim var, ancak bu bilgiler biraz gerçekçi sürüş modelleri için geçerli olmalıdır.

Çoğu sürüş oyununda olan şey, bir tür (geçici) yumuşatma kullanılsa bile, araç direksiyon çıkışının doğrudan oyuncu girişine bağlanmasıdır. Bu, halsiz bir his veya sarsıntılı bir duyguya neden olur ve araba, kontrolleri bıraktıktan sonra kendini düzeltemez. Bu, otomobilin tekerlek üzerinde kuvvet bıraktıktan sonra kendini merkezleme eğiliminde olduğu gerçek bir otomobilin aksine. Bazı oyunlar, kullanım modellerini değiştirerek veya çarşı kullanım modellerine sahip olarak bunu düzeltmeye çalışır.

Grand Theft Auto V'de gözlemlenebilecek olan, kullanıcı direksiyon girişinin doğrudan direksiyon çıkışına bağlı olmamasıdır. Araç kendi başına, mevcut hız vektörüne doğru yönelir. Bu, hafif bir aşırı hız durumu zorlarken ve yönlendirilmiş tekerlekleri gözlemlerken görünür - herhangi bir girdi olmadan, kendi başlarına dengeliyorlar. Daha sonra bu "doğal" düzeltmelerin üzerine herhangi bir kullanıcı girişi eklenir.

Bununla birlikte, bu yaklaşımın bir dezavantajı, otomobilin bir güç kayması veya sürüklenmeye girmek için çok yapışkan ve biraz inatçı hissetmesidir - bu nedenle bu karşı değer değeri bir açı ile sınırlı olabilir.

Bu teori, direksiyon sistemini yeniden uygulayarak ve orijinal davranışla karşılaştırarak doğrulanabilir.

  • Girişi doğrudan çıkışa bağlarken, hıza dayalı direksiyon giriş sınırlayıcısını uygulamış olsa bile, aracın kontrolü son derece zordur.
  • Doğal dengeleyiciyi eklerken, davranış oyunların uygulanmasıyla neredeyse aynıdır, ancak arabalar "çok" stabildir.
  • Dengeleyiciye 15 derecelik bir sınır eklerken, davranış neredeyse aynıdır.

Akılda tutulması gereken bir şey, Grand Theft Auto V'un burada "ideal" olarak alındığı - ancak bu sistemi uygulayan başka bir oyun bulamadım.

Bazı kodları merak ediyorsanız, uygulamanızın bir pasajı.

// Returns in radians
float Racer_calculateDesiredHeading(float steeringMax, float desiredHeading,
    float reduction) {
    desiredHeading *= reduction;
    float correction = desiredHeading;

    // Get the relative velocity vector
    Vector3 speedVector = ENTITY::GET_ENTITY_SPEED_VECTOR(vehicle, true);
    if (abs(speedVector.y) > 3.0f) {
        // Simplify it to an angle
        Vector3 target = Normalize(speedVector);
        float travelDir = atan2(target.y, target.x) - static_cast<float>(M_PI) / 2.0f;
        if (travelDir > static_cast<float>(M_PI) / 2.0f) {
            travelDir -= static_cast<float>(M_PI);
        }
        if (travelDir < -static_cast<float>(M_PI) / 2.0f) {
            travelDir += static_cast<float>(M_PI);
        }
        // Correct for reverse
        travelDir *= sgn(speedVector.y);

        // Limit to some degree, R* uses 15 degrees
        travelDir = std::clamp(travelDir, deg2rad(-15.0f), deg2rad(15.0f));

        // User input deviation
        correction = travelDir + desiredHeading;
    }

    return std::clamp(correction, -steeringMax, steeringMax);
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.