İçeriğe atla

Oda barındırma

Stadyumlar

Paket içindeki bir stadyumu seçin, kendi stadyumunuzu yükleyin ve stadyum dosyalarını kullanmadan önce kontrol edin.

Paket içindeki stadyumlar

Paket on dört stadyum içerir: Classic, Easy, Small, Big, Rounded, Big Easy, Big Rounded, Huge, Asphalt, Asphalt Arena, Courtyard, Meadow, Street Five ve Training Green. Maçlar arasında birini adıyla yükleyin:

JavaScript
await room.setDefaultStadium('Street Five');

Yeni bir oda varsayılan bir arenada başlar. İlk stadyumunuzu seçmek için createRoom()'dan sonra setDefaultStadium() çağırın.

Kendi stadyumlarınız

Stadyumlar; sahayı, kaleleri, duvarları, diskleri ve fizik özelliklerini tanımlayan .ball2dstadium veya JSON metin dosyalarıdır. Birini setCustomStadium() ile yükleyin veya odayı onunla başlatmak için metnini stadium ayarı olarak verin:

JavaScript
import { readFile } from 'node:fs/promises';

const futsal = await readFile(
  'stadiums/futsal.ball2dstadium',
  'utf8',
);
const room = await createRoom({
  apiKey,
  roomName: 'Futsal',
  stadium: futsal,
});

stadium ayarı bir isim değil, kaynak metin alır. Paket içindeki stadyumlar için setDefaultStadium() kullanın.

Önce doğrulayın

validateStadium(), bir stadyumu tam olarak bir odanın yapacağı şekilde ayrıştırır, ama oda açmaz. Dosyaları kabul ettiğiniz anda doğrulayın; örneğin bir yükleme işleyicisinde veya bir derleme adımında, böylece bozuk bir dosya canlı bir odaya asla ulaşmaz:

JavaScript
import { validateStadium } from 'ball2d/node';

try {
  const { name, warnings } = validateStadium(source);
  if (warnings.length)
    console.warn(`${name}:`, warnings.join('\n'));
} catch (error) {
  throw new Error(`Rejected stadium: ${error.message}`);
}

Stadyumlar en fazla 256 KB büyüklüğünde olabilir ve 63 disk, 1,024 köşe noktası, 64 düzlem, 16 kale ve 128 eklem içerebilir. Ball2D'nin kullanmadığı alanlar hata olarak değil, uyarı olarak bildirilir.

Stadyum değiştirme

Stadyum değişiklikleri yalnızca maçlar arasında uygulanır. Bir stadyum yüklemek odayı lobiye döndürür ve skoru sıfırlar. Skor, süre ve şut hızı ayarları korunur; devam eden bir kayıt önce sonlandırılır.

Stadyumları döndürün

JavaScript
const rotation = ['Classic', 'Big', 'Street Five', 'Rounded'];
let next = 0;
room.onGameStop = async () => {
  next = (next + 1) % rotation.length;
  await room.setDefaultStadium(rotation[next]);
};