Ralyoo dokumentasi developerSDK 1.1.0ralyoo.com

Controller

Game tidak mengirim kode ke HP. Game mengirim layout: daftar widget bawaan yang dirender controller Ralyoo. HP tidak pernah mengunduh kode game.

ctx.setController('all', {
  layout: 'pad',
  orientation: 'landscape',
  widgets: [
    { type: 'text', id: 'pesan', value: 'Dorong lawanmu!' },
    { type: 'joystick', id: 'stick' },
    { type: 'button', id: 'A', label: 'Dorong' },
  ],
});
  • ctx.setController('all', layout) mengganti layout semua HP.
  • ctx.setController(2, layout) hanya HP pemain slot 2. Layout per pemain bertahan sampai 'all' berikutnya.
  • Boleh dipanggil kapan saja dan sesering perlu. HP yang tersambung ulang menerima layout terakhirnya.
  • Layout yang tidak valid melempar error di game dan tidak dikirim.

Layout

layout Susunan
pad Seperti gamepad. D-pad atau joystick di jempol kiri, tombol di jempol kanan, teks/kartu/voting di atas (tegak) atau di tengah (miring)
stack Satu kolom di tengah. Tombol besar berdampingan saat HP miring. Cocok untuk kuis dan satu tombol besar

Widget

Widget Bentuk Yang diterima game
Teks { type: 'text', value, id?, size?: 'm' | 'l' } –
Tombol { type: 'button', id, label?, tone? } press dan release
D-pad { type: 'dpad' } press/release untuk up, down, left, right
Joystick { type: 'joystick', id: 'stick' | 'stick2' } Dibaca lewat ctx.input()
Kartu { type: 'cards', id, pages: [{ title?, body }] } page dengan nomor halaman
Voting { type: 'vote', id, question?, options: [{ id, label }] } vote dengan id pilihan

tone tombol: pearl, led, plasma, ultraviolet, aurora, champagne, arcade.

Batas:

Hal Batas
Widget per layout 12
Teks (text.value, vote.question) 280 karakter
Label tombol 24 karakter
Halaman kartu 20
Isi satu halaman kartu 600 karakter
Pilihan voting 8
id widget 32 karakter, huruf/angka/._-

Layout yang melewati batas ditolak seluruhnya.

Dua jalur input

Jalur cepat: tombol ber-id A, B, X, Y, d-pad, dan joystick. Keadaannya dikirim sebagai satu paket kecil, paling sering 30 kali per detik.

// Kejadian: tiap tekan dan lepas.
onInput(ctx, player, input) {
  if (input.widget === 'A' && input.type === 'press') lompat(player);
}

// Keadaan: baca kapan saja, biasanya di onTick.
import { isDown } from '@ralyoo/sdk';
const pad = ctx.input(player);
if (isDown(pad, 'A')) gas(player);
gerak(player, pad.lx, pad.ly); // −1..1; ly positif = bawah

stick mengisi lx/ly, stick2 mengisi rx/ry. Joystick hanya lewat ctx.input().

Jalur andal: tombol ber-id lain, kartu, dan voting. Tiap kejadian dijamin sampai dan berurutan.

onInput(ctx, player, input) {
  if (input.widget === 'potong' && input.type === 'press') potongKabel(player);
  if (input.widget === 'tersangka' && input.type === 'vote') pilih(player, input.value);
  if (input.widget === 'manual' && input.type === 'page') halaman(player, input.value);
}

Pakai jalur cepat untuk aksi yang butuh respons (gerak, lompat, tembak) dan jalur andal untuk pilihan yang tidak boleh hilang.

Selama menu host terbuka, input tidak sampai ke game dan semua tombol dianggap dilepas.

Orientasi

orientation Di HP
any (bawaan) Ikut cara HP dipegang
landscape HP yang dipegang tegak diajak memutar. Android Chrome mengunci layar miring setelah sentuhan pertama
portrait Kebalikannya
  • Input tetap jalan selama ajakan memutar tampil.
  • Kunci layar hanya upaya terbaik: iPhone Safari tidak punya API-nya, jadi hanya ajakan.
  • Berlaku per layout. Kirim layout lain dengan nilai berbeda kapan saja.

Di Ralystudioo, pilihan Phones memutar HP virtual untuk mencoba keduanya.

Informasi rahasia

Karena layar host dilihat semua orang, rahasia dikirim ke HP pemainnya saja:

for (const p of ctx.players) {
  ctx.setController(p.id, {
    layout: 'stack',
    widgets: [{ type: 'text', value: p.id === mataMata ? 'Kamu mata-mata.' : `Katanya: ${kata}` }],
  });
}

Teks di layout bukan tempat menyimpan data besar: batasnya ada di tabel di atas.

Yang selalu ada di HP

Controller selalu menampilkan slot dan nama pemain, tombol layar penuh, dan ☰ untuk membuka menu host. Bagian itu milik platform dan tidak bisa diubah game.

Halaman ini sebagai Markdown: controller.md · semua halaman: llms.txt