Ne zaman tahmin etmeliyim ve ne zaman araya girmeliyim?


16

Ne zaman ve ne zaman enterpolasyon yapacağımı anlamakta zorlanıyorum. Oyunlardaki gafferda enterpolasyon yapacağını söyledi, ancak başka bir makalede oyuncuyu tahmin etmeyi önerdi. Benim sorum şu: Ne zaman tahmin etmek daha iyi ve ne zaman enterpolasyon yapmak daha iyi?


22
İki çeşit insan var. Eksik verilerden tahmin edebilenler
Almo

2
@Almo ve diğer tür ne? Lütfen söyle bana, bilmeliyim!
DJMcMayhem

4
@ DJMcMayhem ... ve balık parmaklarını yemekten hoşlananlar.
user253751

4
Soruyu anlamıyorum. {(1, a), (2, b)} noktalarını (3, c) 'de c'yi tahmin etmek için "enterpolasyon" yapmanın bir yolunu açıklayabilir misiniz? Ve bunu nasıl tahmin edersiniz?
user541686

Yanıtlar:


29

'Before' ve 'after' değerlerini bildiğinizde enterpolasyon yaparsınız .

Örneğin: bir tıkla ve bas oyununda, oyuncu şu anda X konumunda ve arayüzünden Y noktasını tıklıyor . İki değeri bildiğiniz için X ve Y arasındaki yer değiştirmeyi enterpolasyon etmeniz gerekir .

Zaten bildiklerinize dayanarak gelecekteki değer ne olacağını tahmin ettiğinizde tahmin edersiniz.

Örneğin: birinci şahıs nişancı oyununda, oyuncu X konumunda ve son saniyede klavyesinde YUKARI okunu bastırıyor , bunu bir sonraki saniye için tekrar yapacağını varsayabilirsiniz , çünkü bu temelde oyununuzdaki en sık davranış; böylece bir sonraki kare olacağı konumu tahmin edersiniz . Sunucu diğer oyun istemcilerine gönderir, bu da sunucudan oyunculara aktarımdaki gecikmeyi açıklar.

Ekstrapolasyon esas olarak hareket tahmini için kullanılır. Oyun sunucusu için gerekli değildir , ancak oyun istemcileri oyunculara düzgün bir görsel deneyim sağlamak için oyunun durumunun gerçekçi ve güncel bir vizyonunu göstermesi gerekir.


O kısmı anlıyorum ama anlamadığım şey her birini ne zaman kullanmam gerektiğidir. Örneğin, eğer bir oyuncuyu enterpole edersem, aslında hareketi görmesi için bir gecikme olur, ancak tahmin edersem daha anlık olur ama doğru olmayabilir ve düzeltilmesi gerekecek. Anında yapılan dışlama hareketinin veya enterpolasyondan daha tutarlı hareketin olması genellikle daha mı arzu edilir?
J leong

@Jleong Oyunun kullanıcılara olabildiğince düzgün sunulmasını istiyorsunuz. Oyunun şu anki durumunu enterpolasyonluyorsunuz ve oyunun birkaç karede nasıl olacağını tahmin ediyorsunuz. Ağ aktarımındaki gecikmeyi hesaba katmak için hesaplanan değerleri diğer oyunculara gönderirsiniz. Enterpole edilmiş değerleri gönderirseniz, oyun gecikmiş gibi görünecek ve eğlenceli olmayacaktır. (Cevabımı düzenledim. Umarım biraz daha temizler.)
Vaillancourt

oh ok öylesine ekstrapolating istemcinin ne olacağını tahmin etmesini istediğinizde kullanılır? Eğer öyleyse, oyunu gerçek zamana yakın tutmak için her zaman tahmin edebiliyorsanız enterpolasyonun anlamı nedir? Peki bir FPS gibi, oyuncu tahmin edilebilir ve diğer oyuncular enterpole edilir mi?
J leong

Genellikle sunucu her şeyi yapar: bildiklerine enterpolasyon yapar ve buna dayanarak, değerleri tahmin eder ve bunları istemcilere gönderir, böylece oyunculara sunulmak için zamanında ulaşırlar. Bir FPS'de enterpolasyon, mermiler, AI ve benzeri şeyleri görüntülemek için kullanılır. Çerçeve B (Çerçeve A'dan geliyor) gerçekleştirilirken, Çerçeve B'nin durumu için enterpolasyon yapılır; Ayrıca bilinen değerlerin enterpolasyonu ile Kare C'yi tahmin etmeye başlayabilir , ancak bilmediği değerleri tahmin etmek zorunda kalacaktır (oyuncu girişleri). Daha sonra "gelecek" durumunu istemciye gönderir.
Vaillancourt

@Jleong İstemci ve sunucu arasındaki farkı düşünmeden kullanabilirim bilinen iki nokta arasında bir yer elde etmek enterpolasyon (çerçeveler arasında meydana gelebilecek bir çarpışmayı kontrol etmek gibi şeyler için) veya dahası, bu veri kümesini alıp hız / yörünge ve ivme, bir dizi nokta verildiğinde ve bilinen son hız / ivme / yörünge göz önüne alındığında, gelecekte bu nesnelerin nerede olabileceğini tahmin edebilirim. Sunucu-istemci iletişimi için, "iyimser" dışlanmış konum kullanılır.
Norguard

14

İnterpolasyon, hem başlangıç ​​hem de bitiş değeriniz olduğunda yapılır ve bu başlangıç ​​ve bitiş değeri arasında ne olacağını tahmin etmek istediğinizde yapılır. Örnek olarak, bir oyuncuyu akışkan bir hareketle Konum A'dan Konum B'ye taşımak olabilir.

Ekstrapolasyon, bir başlangıç ​​değeriniz olduğunda yapılır, ancak henüz son için veri yoksa. Daha sonra, sahip olduğunuz verilere göre tahmin yapabilirsiniz. Örneğin, bir oyuncunun önceki hareketlerine dayanarak, muhtemelen bir sonraki karede nerede olacağını belirleyebilirsiniz.


2

Mümkün olduğunda her zaman enterpolasyon yapın.

İnterpolasyon için yeterli bilgiye sahip olmadığınızda ekstrapolasyon yapmanız gerekir.

Gerçekten bu kadar basit, fazla düşünmeyin :)

Biraz daha açıklamak gerekirse:

Genel olarak enterpolasyon daha iyidir çünkü enterpolasyon her zaman doğrudur. Tahmin etmek için tahmin etmelisiniz. O zaman yanlış tahmin ettiğinizde olanlarla başa çıkmak zorunda kalırsınız, bu da lastik bantlamaya veya patlamaya ve her türlü sistemi tüm bunların ele alınmasına ve gizlenmesine yol açar.

Bir yarasa pozisyonunu tahmin edip doğru yere gittiğini ve topu zıpladığını gösterirseniz, daha sonra yanlış olduğunuzu ve topu zıplamadığını fark ederseniz ne olur? Bu senaryoyu ele almanın iyi bir yolu yoktur.


oh tamam pong, kullanıcının raket tahmin ve top ve diğer raket enterpolasyonlu?
J leong

Bu tamamen onu nasıl uyguladığınıza bağlıdır. Daha fazla bilgi için düzenlememe bakın.
Tim B

2

Bilinen değerler arasındaki durumları bulmak için enterpolasyon yaparsınız ve gelecekteki durumları bulmak için tahmin yaparsınız.

Problemi konumlar ve hızlar gibi durum değişkenleri açısından düşünün. Tüm senaryoların en iyisinde, durumla çalışması gereken her bilgisayar üzerinde çalışmak istedikleri süre için durum verilerine erişebilir. Örneğin, lazer tüfeği atış X'in oyuncu A'nın kafasını kesişip kesmediğini görmek için bir çarpışma algoritması, her durumda en iyisi, algoritmanın lazerin ateşlendiği sırada her nesnenin tam konumunu bildiği zamandır.

Gerçek dünyada, her zaman çok şanslı değiliz. Bazen aldığımız gerçek bilgileri daha seyrek olur. Örneğin, A oynatıcısı başka bir bilgisayardaki uzak bir oynatıcıysa, lazeri ateşlediğinizde nereye gideceğini tam olarak bilemeyebilirsiniz ve çekimi hesaplamanız gerekir. Bu durumda, A'nın konumu için, genellikle enterpolasyon veya ekstrapolasyon ile bir tahmin edici oluşturmanız gerekir.

İkisi arasındaki fark, her iki tarafta veya yalnızca bir tarafta sınırlanmış verilerinizin olup olmadığıdır. Diyelim ki A oyuncusu t = 0 ve t = 1 için gerçek pozisyonlarını zaten açıkladı. Oyuncu B, t = 0.5'de bir lazer vuruyor. Birçok durumda Oyuncu A'nın t = 1'deki pozisyonunu açıklaması Oyuncu B tetikleyiciyi çekmeden önce gerçekleşebilir. Neden? Birçok oyunda, kontrollerin tepkisi mükemmel aniden daha azdır. Bir yarış simülasyonunda, oyuncunun pozisyonunun çoğu hareketli bir aracın fiziği ile sınırlıdır. "Gelecek pozisyonu" duyurmayı tercih edebilirsiniz, çünkü kısa bir süre içinde gerçekten o kadar fazla yönlendiremeyeceğinizi biliyorsunuzdur. Gelecekte bilginiz varsa, iki değer arasında enterpolasyon yapabilirsiniz.

= 1 değerine sahip olacak kadar şanslı değilseniz ne olur? Oyuncu A gelecekteki konumlarını açıklayacak bir konumda değilse ve yalnızca t = 0'dan gelen bilgilere ulaşıp vurmadığınıza karar verirseniz ne olur? Bu durumda tahmin etmek zorundasınız. Ekstrapolasyonda, hareketle ilgili bildiklerinizi, sahip olduğunuz verilerin ötesine geçmek için kullanırsınız. Oyuncu A'nın belirli bir hızı olduğunu biliyor olabilirsiniz, bu yüzden bunu zamanla çarparsanız, her seferinde bir pozisyon alabileceğinizi varsayalım.

Fark davranışlardadır. İnterpolasyon, her zaman sahip olmadığınız bir üst ve alt sınırınızın olmasını gerektirir. Bununla birlikte, hemen hemen her durumda, ekstrapolasyondan çok daha iyi sonuçlara sahiptir. Ekstrapolasyon kolayca gerçekçi olmayan hareketlere yol açabilir. İlerlerken vurulmaktan kaçınmak için sola ve sağa doğru koşan bir oyuncuyu düşünün. Herhangi bir noktada, hızları bir diyagonal boyuncadır, bu yüzden eğer tahmin ederseniz, oyuncu aslında hiç yapmadığı zaman yan tarafa kaçıyor gibi görünebilir. Yalnızca enterpolasyon yaparsanız, değerler gerçekçi değerlerin dışına çıkma eğilimindedir.

İnterpolasyon ve ekstrapolasyon, filtreleme dünyasında iki uçtur. İnterpolasyon ve ekstrapolasyon arasındaki özellikleri karıştırıp eşleştiren bu tür verileri işlemek için çok fazla çok sayıda filtre var. Buna göre, açıkça enterpolasyon veya açıkça ekstrapolasyon olmayan algoritmalar görürseniz şaşırmayın. Bu ikisi sadece buz kütüğünün ucu.


1

İnterpolasyon, veri kümesinin sınırları içindeki bir veriyi ('iç' önek dahil olmak üzere) hesaplamak için bilinen verileri kullanır. Ekstrapolasyon, mevcut verilerin sınırlarının dışındaki bir veriyi hesaplamaktır ('dış' öneki olmak üzere). Her ikisi de ek verilerin sentezlenmesi için kullanılır ve kesin hesaplama yöntemi üretilen verinin beklenen güvenilirliğini tanımlar.

Veya çok basit bir şemaya koymak için:

A - - - - - B - - - - - C - - - - - D

Veri noktaları göz önüne alındığında Ave Centerpolate Bve ekstrapolate edebilirsiniz D.


Bir enterpolasyonun veya bir ekstrapolasyonun doğruluğu, tamamen hesaplamadaki her değişkeni ne kadar iyi açıklayabileceğinize bağlıdır. Tüm değişkenleri biliyorsanız ve hepsini açıklayan bir denkleminiz varsa, enterpolasyon uygulayabilir veya eşit kolaylıkla tahmin edebilirsiniz.

Oyun mekaniği için, sınırlayıcı faktörler, değişkenlerin oyuncu tarafından veya bazı rastgele veya sahte rastgele elemanlar tarafından öngörülemeyen şekillerde etkilendiği noktalar olacaktır.

Örneğin, bir topun Breakout'taki hareketi (en basit haliyle), oyuncunun raketiyle potansiyel olarak etkileşime girebileceği noktaya kadar tahmin edilebilir. Tüm değişkenler bu noktaya kadar açıklanabilir ve böylece topun hareketlerini tam olarak modelleyebilirsiniz. Oyuncu etkileşiminin mümkün olduğu noktaya ulaştığında, bir dizi olası sonuç vardır ve gerçekte gerçekleşene kadar bunlardan hangisinin doğru olacağını modellemenin bir yolu yoktur. Bu oyun fiziği modelinin öngörücü sınırıdır.

Bilinen noktalarla çalıştığınız ve koşulların değişip değişmeyeceğini merak etmek zorunda olmadığınız için enterpolasyon daha basittir. Ayrıca, ilgili değişkenler üzerinde tam kontrole sahipsiniz ve bir nesnenin yolunu belirlemek için tanımladığınız kuralları kullanabilirsiniz. Kurallar ne kadar karmaşıksa enterpolasyon yapmak o kadar zor olabilir.

Yerçekimsiz bir oyun alanında (Koparma veya Pong gibi) basit çarpışmalarla nesne hareketi için yoldaki bir çizgi boyunca enterpolasyon mekanizması noktaların basit bir doğrusal enterpolasyonudur ve aynı hesaplama çizgiyi tahmin etmek için kullanılabilir. gelecekteki çarpışmalar için test. Bir çarpışma algılandığında, bu çarpışmanın ilgili nesneler üzerindeki etkisini tahmin edebilirsiniz.


Bu tam olarak kelimeler arasındaki farktır. B ve D'yi tahmin etmede farklı kelimelere sahip olmamızın nedeni A ve C'dir. B'yi doğru tahmin etmek D'yi doğru tahmin etmekten çok daha kolaydır. Topçu uzmanları enterpolasyonlu backeting diyorlar. Her iki tarafınızda da iki işaret turu var, hareket etmezseniz ölürsünüz. Ekstrapolasyon, hisse senedi fiyat çizelgelerine baktıktan sonra borsa oynadığınızda yapmaya çalıştığınız şeydir. Ekstrapolasyon zor.
candied_orange

@CandiedOrange Ekstrapolasyon yapan karmaşık sistemler zordur, fakat enterpolasyon da öyle. Veri noktalarınızın kalitesine ve sistemin ne kadar öngörülebilir olduğuna bağlıdır. Sistemi tanımlayan doğru bir denklem türetebiliyorsanız, o zaman doğrulukla enterpolasyon yapabilir veya ekstrapolasyon yapabilirsiniz - çizgilerin tahmin edilmesi basittir, eğriler olabilir, borsalar o kadar fazla değildir.
Corey

Şunu demek istiyorum ki, enterpolasyon, size kalkerin temel teoremini verir. Ekstrapolasyon yapmaz. A ve C, B'ye C'nin A'yı vermesini mümkün kılan bir yer olduğunu söyler. D'yi istemek geleceği tahmin etmeyi ister. Tüm bildiğiniz için C, oyuncunun öldüğü yerdir. Hangisi daha güvenilir ve kabul edilebilir: İnterpolasyon veya ekstrapolasyon? neden-olduğunu-ekstrapolasyon-
risk

@CandiedOrange Tabii ki, ekstrapolasyon tüm ilgili değişkenleri kontrol edebileceğiniz ve tahmin edebileceğiniz derece ile sınırlıdır. İnterpolasyon da öyle. Bir oyuncunun geçmişte işgal ettiği iki pozisyon göz önüne alındığında, oyuncunun doğrudan veya optimal bir yoldan farklı olabileceği için bir orta noktayı tam olarak enterpolasyonlayamazsınız. Her iki yöntem de sınırlıdır.
Corey

Elbette, ikisi de sınırlıdır. Ama biri kariyerleri diğerinden daha sık yok eder. Tahmin et hangisi. Benim iddiam enterpolasyonun mükemmel olduğu değil. Onları aynı tahmin gücüne sahip olarak görmek tehlikelidir.
candied_orange

0

Kısa cevap: Bilinen iki değer arasında bir değer tahmin etmeniz gerektiğinde enterpolasyon yaparsınız (yani: bir saatte değer 1, 3 saatte üç, değeri 2 ile en olası değer 2'de verilen değerleri). Ekstrapolat, bilinmeyenin bildiğinizin dışında olduğu zamandır, bu nedenle 1 ve 2 bilindiğinde 3 üzerinde eğitimli bir tahmin yapabilirsiniz.

İnterpolat: içinde Ekstrapolat: dışında

Buradaki uzun cevaplar büyük olasılıkla daha doğru ve bilimsel olarak doğrudur, ancak umarım basit açıklamam bazılarına mantıklı olabilir

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.