Skip to content

02 Archetype dan Entitas

Dalam bab ini, kita akan membahas konsep archetype dan entitas.

Archetype

Archetype adalah abstraksi entitas yang ditentukan oleh mesin.

Dalam panduan ini, mesin kami akan memiliki empat archetype: Initialization, Input Manager, Stage, dan Note. Archetype Initialization bertanggung jawab untuk menginisialisasi level; Input Manager bertanggung jawab untuk mengelola input pemain; Archetype Stage bertanggung jawab untuk mengelola interaksi dan rendering stage; terakhir, archetype Note bertanggung jawab untuk mengelola interaksi dan rendering note.

Perhatikan bahwa sebuah archetype mewakili abstraksi dari entitas tersebut. Misalnya, mungkin ada 100 note dalam satu level, dan note-note tersebut mungkin berbeda dalam hal kemunculan dan mengharuskan pemain untuk mengetuk pada waktu yang berbeda, namun semuanya merupakan contoh dari archetype Note yang sama.

Dalam pemrograman berorientasi objek, sebuah archetype akan menjadi sebuah class.

Dengan menggunakan Sonolus.js, suatu archetype direpresentasikan oleh class JS, misalnya class Stage yang disertakan dalam templat project:

TypeScript
export class Stage extends Archetype {
    spawnOrder() {
        return 1
    }

    shouldSpawn() {
        return entityInfos.get(0).state === EntityState.Despawned
    }

    updateParallel() {
        debug.log(time.now)
    }
}
JavaScript
export class Stage extends Archetype {
    spawnOrder() {
        return 1
    }

    shouldSpawn() {
        return entityInfos.get(0).state === EntityState.Despawned
    }

    updateParallel() {
        debug.log(time.now)
    }
}

Entitas

Entitas merupakan instance dari archetype yang ditentukan berdasarkan level.

Beberapa level dapat menggunakan mesin yang sama, dan gameplay yang berbeda dicapai dengan mendefinisikan entitas yang berbeda. Misalnya, satu level mungkin memiliki satu entitas archetype Initialization, satu entitas archetype Stage, 50 entitas archetype Note; level lain mungkin memiliki sebagian besar sama, kecuali 100 entitas archetype Note.

Dalam pemrograman berorientasi objek, suatu entitas akan menjadi instance suatu class.

Tujuan utama Sonolus.js adalah untuk skrip mesin, bukan untuk membuat level. Dalam panduan ini, kami akan menyiapkan level pengujian untuk menguji mesin, tetapi itu bukan fokus panduan.