Silnik gier: prefaby — jeden wróg, sto instancji
Silnik gier 2D Moonlight Studio dostał brakujący element działającej gry: prefaby. Zaprojektuj wroga, pocisk albo monetę raz — jako osobną pod-scenę — i powielaj w grze, ile potrzeba.
Jeden szablon, wiele kopii
mp.instantiate('pocisk') buduje nową kopię pod-sceny i oddaje uchwyt do niej:
local pocisk = mp.instantiate('pocisk')
mp.set_position(pocisk, {gracz_x, gracz_y})
Uchwyt reprezentuje całą instancję: ustawienie jego pozycji przesuwa cały pocisk, a mp.free(uchwyt) usuwa go w całości. Każda instancja jest w pełni niezależna — dostaje własne skrypty (ich _ready odpala się osobno) i własną tablicę stanu, więc dwa pociski nigdy nie dzielą życia ani liczników.
Także w grafie zdarzeń
Kto woli budować logikę wizualnie zamiast skryptem, ma węzeł „instantiate" z parametrem sceny i opcjonalnym rodzicem — zapisuje uchwyt do zmiennej dokładnie tak samo, jak robi to skrypt.
Bezpieczne z natury
Prośba o nieistniejącą pod-scenę zwraca pusty uchwyt zamiast wywracać grę. Scena, która przez pomyłkę tworzy samą siebie w _ready, jest ucinana na bezpiecznej głębokości — zamiast przepełnić stos. A ponieważ instancja pojawia się natychmiast, można ją pozycjonować i podpinać w tej samej klatce, w której powstała.
Co dalej
Nadchodzą: podmiana wybranych właściwości przy tworzeniu instancji (ten sam pocisk, inny kolor), pamięć podręczna wczytanej pod-sceny dla setek instancji naraz oraz edytor prefabów w edytorze projektów gry.