İçeriğe atla

Hatalar ve türler

Türler

Oyuncular, skorlar, maç durumu, diskler, tekrarlar ve SDK'nın döndürdüğü diğer şekiller.

Her tür, nereden içe aktarılabileceğini belirtir. Ad ile dışa aktarılmayan türler de genel sözleşmenin bir parçasıdır; bunlara, onları döndüren değerler üzerinden ulaşın, örneğin ReturnType<NodeRoom['getState']>.

Oyuncular ve skorlar

HostPlayer

İçe aktarmaball2dball2d/node

interface HostPlayer
idnumberzorunlu
Oyuncu odada olduğu sürece sabit kamuya açık ID. Ayrıldıktan sonra tekrar kullanılmaz. Host oyuncusu 0dır.
peerIdstringzorunlu
Oyuncunun bağlantısının tanımlayıcısı. Oyuncu yeniden katılırsa değişir.
namestringzorunlu
Oyuncunun seçtiği ad, 1–24 karakter. Güvenilmeyen görüntüleme metni.
team0 | 1 | 2zorunlu
0 izleyiciler, 1 kırmızı, 2 mavi.
adminbooleanzorunlu
Oyuncunun bu odada yönetici haklarına sahip olup olmadığı.
mutedboolean
true iken oda sohbeti bastırılır; eski host’larda bulunmaz.
avatarstring | null
Oyuncunun diskine çizilen avatar: sizin geçersiz kılmanız, yoksa oyuncunun kendisi, yoksa null.
position{ x: number; y: number; } | nullzorunlu
Bir maç sırasında oyuncunun diskinin merkezi. Lobide ve izleyiciler için null.
inputnumberzorunlu
Geçerli yetkili tuş bit maskesi: yukarı 1, aşağı 2, sol 4, sağ 8, şut 16.

HostScores

İçe aktarmaball2dball2d/node

interface HostScores
rednumberzorunlu
Kırmızının attığı goller.
bluenumberzorunlu
Mavinin attığı goller.
timenumberzorunlu
Saniye cinsinden oynanan süre. Duraklatıldığında ve goller arasında durur.
scoreLimitnumberzorunlu
Kazanmak için gereken gol sayısı; sınır yoksa 0.
timeLimitnumberzorunlu
Saniye cinsinden maç süresi; sınır yoksa 0.

Maç durumu

MatchState

Adıyla dışa aktarılmaz; onu döndüren değerler üzerinden erişin.

interface MatchState
lastTouchBallTouch | null
Host’un simüle ettiği temas; bu başlama vuruşunda topa kimse dokunmadıysa null.
goalTouchBallTouch | null
Kale çizgisinde dondurulur; kendi kalesine atılan gollerde oyuncunun takımını da içerir.
ticknumberzorunlu
Stadyum yüklendiğinden itibaren simülasyon tick’leri, saniyede 60. Her aşamada ilerler.
elapsednumberzorunlu
Oynanan sürenin tick’leri. Yalnızca başlama vuruşu alındıktan sonra sayılır, duraklatılmışken veya goller arasında sayılmaz.
rednumberzorunlu
Kırmızının attığı goller.
bluenumberzorunlu
Mavinin attığı goller.
phase'lobby' | 'playing' | 'goal' | 'finished'zorunlu
lobby, playing, goal (bir golden 5.5 s sonra) veya finished (bir galibiyetten 5 s sonra).
pausedbooleanzorunlu
Maçın duraklatılıp duraklatılmadığı.
resumeTicksnumberzorunlu
Devam ettirme geri sayımında kalan tick sayısı, 0–119.
countdownnumberzorunlu
goal veya finished aşamasında kalan tick sayısı.
kickoff1 | 2zorunlu
Başlama vuruşunu alacak takım: 1 kırmızı veya 2 mavi.
kickoffActivebooleanzorunlu
Başlama vuruşu alınana kadar true.
scoreLimitnumberzorunlu
Kazanmak için gereken gol sayısı; sınır yoksa 0.
timeLimitnumberzorunlu
Saniye cinsinden maç süresi; sınır yoksa 0.
kickRatenumberzorunlu
Şut hızı sınırı, min | rate << 8 | burst << 16 şeklinde paketlenmiş.
discsnumber[]zorunlu
Ham disk verisi: disk başına 18 sayı, önce stadyum diskleri, ardından 32 oyuncu yuvasının tümü. Fizik metotlarını tercih edin.
colorsnumber[]zorunlu
Her diskin rengi, bir RGB tam sayısı olarak; -1 şeffaftır.

BallTouch

Adıyla dışa aktarılmaz; onu döndüren değerler üzerinden erişin.

interface BallTouch
slotnumberzorunlu
Dahili oyuncu yuvası, 0dan başlar. Bir oyuncu ID’si değildir.
team1 | 2zorunlu
Dokunan oyuncunun takımı: 1 kırmızı veya 2 mavi.

Diskler

DiscProperty

Adıyla dışa aktarılmaz; onu döndüren değerler üzerinden erişin.

type DiscProperty = 'x' | 'y' | 'xspeed' | 'yspeed' | 'xgravity' | 'ygravity' | 'radius' | 'bCoeff' | 'invMass' | 'damping' | 'color' | 'cMask' | 'cGroup'

Desteklenen genel disk özellikleri; iç çözücü ofsetleri veya doğrulama tabloları içermez.

Okuyabileceğiniz ve değiştirebileceğiniz disk özelliklerinin adları. Aralıkları için Fizik'e bakın.

DiscProperties

Adıyla dışa aktarılmaz; onu döndüren değerler üzerinden erişin.

type DiscProperties = Record<DiscProperty, number>
Fizik okumalarının döndürdüğü şekilde, disk özelliklerinin tam bir kümesi.

HostDiscProperties

İçe aktarmaball2dball2d/node

DiscProperties için dışa aktarılan ad.

DiscPropertyPatch

Adıyla dışa aktarılmaz; onu döndüren değerler üzerinden erişin.

type DiscPropertyPatch = Partial<Record<DiscProperty, number | null>>

Kısmi bir güncelleme. Atlanan ve null olan alanlar geçerli değerlerini korur.

Sohbet

AnnouncementStyle

Adıyla dışa aktarılmaz; onu döndüren değerler üzerinden erişin.

type AnnouncementStyle = 'normal' | 'bold' | 'italic' | 'small' | 'small-bold' | 'small-italic'
sendAnnouncement() için metin stilleri.

Takımlar

TeamColors

Adıyla dışa aktarılmaz; onu döndüren değerler üzerinden erişin.

interface TeamColors
anglenumberzorunlu
Derece cinsinden çizgi açısı.
textColornumberzorunlu
Oyuncu numaralarının rengi, bir RGB tam sayısı olarak.
colorsnumber[]zorunlu
Bir ile üç arası çizgi rengi, RGB tam sayıları olarak.

TeamStyles

Adıyla dışa aktarılmaz; onu döndüren değerler üzerinden erişin.

type TeamStyles = [TeamColors | null, TeamColors | null]
Bir kayıttaki kırmızı ve mavi formalar; varsayılan formayı kullanan bir takım için null.

Tekrarlar

Replay

İçe aktarmaball2dball2d/node

interface Replay
magic'B2DR'zorunlu
Her zaman B2DR.
version1zorunlu
Kayıt format sürümü.
enginestringzorunlu
Kaydı oluşturan motor derlemesi. Yalnızca aynı derleme onu okuyabilir.
stadiumstringzorunlu
Maçın oynandığı stadyumun kaynak metni.
initialMatchStatezorunlu
Kayıt başladığındaki maç durumu.
commandsReplayCommand[]zorunlu
Girdiler ve oda komutları, tick sırasına göre.
checkpointsCheckpoint[]zorunlu
Oynatmayı doğrulamak için kullanılan periyodik durum hash’leri.
roster{ tick: number; slot: number; name: string | null; avatar?: string | null; }[]zorunlu
Yuvalara giren ve çıkan oyuncular, adları ve avatarlarıyla.
styles{ tick: number; teams: TeamStyles; }[]
Takım forması değişiklikleri.
orders{ tick: number; slots: number[]; }[]
Kadro sırası değişiklikleri.
endnumberzorunlu
Kaydın sona erdiği tick.
finalHashstringzorunlu
Doğrulama için nihai durumun hash’i.

ReplayCommand

Adıyla dışa aktarılmaz; onu döndüren değerler üzerinden erişin.

type ReplayCommand = { tick: number; kind: 'input' | 'team' | 'start' | 'stop' | 'pause' | 'scoreLimit' | 'timeLimit' | 'kickRate' | 'join' | 'disc'; properties?: DiscPropertyPatch; slot: number; value: number; }
ticknumberzorunlu
Komutun uygulandığı tick.
kind'input' | 'team' | 'start' | 'stop' | 'pause' | 'scoreLimit' | 'timeLimit' | 'kickRate' | 'join' | 'disc'zorunlu
Ne olduğu: bir girdi, bir takım değişikliği, bir maç kontrolü, bir sınır değişikliği, bir katılım veya bir disk değişikliği.
disc komutları için, değişen özellikler.
slotnumberzorunlu
Komutun etkilediği dahili oyuncu yuvası.
valuenumberzorunlu
Komutun değeri, örneğin bir girdi bit maskesi veya bir takım numarası.

Checkpoint

Adıyla dışa aktarılmaz; onu döndüren değerler üzerinden erişin.

interface Checkpoint
ticknumberzorunlu
Kontrol noktasının alındığı tick.
stateMatchStatezorunlu
O tick’teki maç durumu.
hashstringzorunlu
Tam simülasyon durumunun hash’i.