Read this manual in English

Δομικά στοιχεία

Στον πυρήνα του σχεδιασμού του Defold υπάρχουν μερικές έννοιες που μπορεί να χρειαστούν λίγη ώρα για να αποκτήσετε εμπειρία μαζί τουε. Αυτό το εγχειρίδιο εξηγεί ποια είναι τα δομικά στοιχεία του Defold. Αφού διαβάσετε αυτό το εγχειρίδιο, προχωρήστε στο εγχειρίδιο διευθύνσεων και το εγχειρίδιο διαβίβασης μηνυμάτων. Υπάρχει επίσης ένα σετ tutorials διαθέσιμα μέσα από το κειμενογράφο για να ξεκινήσετε γρήγορα.

Building blocks

There are three basic types of building blocks that you use to construct a Defold game:

Συλλογή
Μια συλλογή είναι ένα αρχείο που χρησιμοποιείται για τη δομή του παιχνιδιού σας. Στις συλλογές δημιουργείτε ιεραρχίες αντικειμένων παιχνιδού και άλλων συλλογών. Συνήθως χρησιμοποιούνται για τη δομή επιπέδων παιχνιδιών, ομάδων εχθρών ή χαρακτήρων που έχουν δημιουργηθεί από διάφορα αντικείμενα παιχνιδιού.
Αντικείμενο παιχνιδιού
Ένα αντικείμενο παιχνιδιού είναι ένα κοντέινερ με αναγνωριστικό, θέση, περιστροφή και κλίμακα. Χρησιμοποιείται για να περιέχει συστατικά. Συνήθως χρησιμοποιούνται για τη δημιουργία χαρακτήρων παίκτη, κουκκίδων, του συστήματος κανόνων του παιχνιδιού ή ενός επιπέδου φόρτωσης / εκφόρτωσης.
Συστατικό
Τα στοιχεία είναι οντότητες που τοποθετούνται σε αντικείμενο παιχνιδιού για να τους δώσουν οπτική, ακουστική και / ή λογική αναπαράσταση στο παιχνίδι. Συνήθως χρησιμοποιούνται για τη δημιουργία χαρακτήρων sprites, αρχείων script, για την προσθήκη ηχητικών εφέ ή για την προσθήκη εφέ σωματιδίων.

Collections Συλλογές

Οι συλλογές είναι δομές δέντρων που περιέχουν αντικείμενα παιχνιδιών και άλλες συλλογές. Μια συλλογή αποθηκεύεται πάντα στο αρχείο.

Όταν ξεκινά η μηχανή Defold, φορτώνει ένα μόνο bootstrap collection όπως καθορίζεται στο αρχείο ρυθμίσεων game.project. Η συλλογή bootstrap ονομάζεται συχνά “main.collection” αλλά μπορείτε να χρησιμοποιήσετε οποιοδήποτε όνομα θέλετε.

Μια συλλογή μπορεί να περιέχει αντικείμενα παιχνιδιού και άλλες συλλογές (με αναφορά στο αρχείο της υπο-συλλογής), ένθετα και αυθαίρετα βαθιά. Εδώ είναι ένα παράδειγμα αρχείου που ονομάζεται “main.collection”. Περιέχει ένα αντικείμενο παιχνιδιού (με το αναγνωριστικό “can”) και μία υπο-συλλογή (με το id “bean”). Η υπο-συλλογή, με τη σειρά της, περιέχει δύο αντικείμενα παιχνιδιού: “bean” και “shield”.

Collection

Σημειώστε ότι η υπο-συλλογή με id “bean” αποθηκεύεται στο δικό της αρχείο, που ονομάζεται “/main/bean.collection” και αναφέρεται μόνο στο “main.collection”:

Bean collection

Δεν μπορείτε να διευθύνετε τις συλλογές οι ίδιοι, καθώς δεν υπάρχουν αντικείμενα κατά την ώρα του χρόνου εκτέλεσης που να αντιστοιχούν στις συλλογές “main” και “bean”. Ωστόσο, μερικές φορές πρέπει να χρησιμοποιήσετε την ταυτότητα μιας συλλογής ως μέρος του path σε ένα αντικείμενο παιχνιδιού(See the addressing manual for details):

-- file: can.script
-- get position of the "bean" game object in the "bean" collection
local pos = go.get_position("bean/bean")

Μια συλλογή προστίθεται πάντα σε μια άλλη συλλογή ως αναφορά σε ένα αρχείο συλλογής:

Right-click the collection in the Outline view and select Add Collection File.

Game objects Αντικείμενα Παιχνιδιού

Τα αντικείμενα του παιχνιδιού είναι απλά αντικείμενα που το καθένα έχει ξεχωριστή διάρκεια ζωής κατά την εκτέλεση του παιχνιδιού σας. Τα αντικείμενα του παιχνιδιού έχουν μια θέση, περιστροφή και κλίμακα που κάθε ένα από αυτά μπορεί να χειραγωγηθεί και να εμψυχωθεί κατά το χρόνο εκτέλεσης.

-- animate X position of "can" game object
go.animate("can", "position.x", go.PLAYBACK_LOOP_PINGPONG, 100, go.EASING_LINEAR, 1.0)

Τα αντικείμενα του παιχνιδιού μπορούν να χρησιμοποιηθούν κενά (για παράδειγμα, ως δείκτες θέσης), αλλά συνήθως χρησιμοποιούνται εξοπλισμένα με διάφορα στοιχεία, όπως sprites, ήχους, scripts, μοντέλα, factories και άλλα. Τα αντικείμενα του παιχνιδιού είτε δημιουργούνται στο πρόγραμμα επεξεργασίας, τοποθετούνται σε αρχεία συλλογής ή δημιουργούνται δυναμικά κατά το χρόνο εκτέλεσης μέσω των στοιχείων factory.

Τα αντικείμενα του παιχνιδιού είτε προστίθενται επιτόπου σε μια συλλογή, είτε προστίθενται σε μια συλλογή ως αναφορά σε ένα αρχείο αντικειμένου παιχνιδιού:

Right-click the collection in the Outline view and select Add Game Object (add in-place) or Add Game Object File (add as file reference).

Components Συστατικό

Components are used to give specific expression and/or functionality to game objects. Components have to be contained inside game objects and are affected by the position, rotation and scale of the game object that contains the component:

Components

Many components have type specific properties that can be manipulated and there are component type specific functions available for interacting with them in runtime:

-- disable the can "body" sprite
msg.post("can#body", "disable")

-- play "hoohoo" sound on "bean" in 1 second
sound.play("bean#hoohoo", { delay = 1, gain = 0.5 } )

Components are either added in-place in a game object, or added to a game object as a reference to a component file:

Right-click the game object in the Outline view and select Add Component (add in-place) or Add Component File (add as file reference).

In most cases it makes most sense to create components in-place, but the following component types must be created in separate resource files before being added by reference to a game object:

  • Script
  • GUI
  • Particle FX
  • Tile Map

Ανατρέξτε στο component overview για μία λίστα των τύπων των συστατικών.

Αντικείμενα προστέθηκαν επιτόπου ή με αναφορά

Όταν δημιουργείτε μια συλλογή, αντικείμενο παιχνιδιού ή στοιχείο file, δημιουργείτε ένα σχεδιάγραμμα ή ένα πρωτότυπο. Αυτό προσθέτει μόνο ένα αρχείο στη δομή του αρχείου έργου, δεν προστίθεται τίποτα στο τρέχον παιχνίδι σας. Για να προσθέσετε μια παρουσία μιας συλλογής, ενός αντικειμένου παιχνιδιού ή ενός στοιχείου που βασίζεται σε ένα αρχείο σχεδιαγράμματος, προσθέτετε μια παρουσία του σε ένα από τα αρχεία συλλογής σας.

Μπορείτε να δείτε σε ποιο αρχείο βασίζεται μια παρουσία αντικειμένου στην προβολή διάρθρωσης. Το αρχείο “main.collection” περιέχει τρεις παρουσίες που βασίζονται σε αρχεία:

  1. Η υπο-συλλογή “φασόλι”.
  2. Το στοιχείο script “bean” στο αντικείμενο παιχνιδιού “bean” στην υπο-συλλογή “bean”.
  3. Το στοιχείο script “μπορεί” στο αντικείμενο παιχνιδιού “μπορεί”.

Instance

Το όφελος από τη δημιουργία αρχείων blueprint γίνεται εμφανές όταν έχετε πολλές παρουσίες ενός αντικειμένου παιχνιδιού ή μιας συλλογής και επιθυμείτε να τα αλλάξετε όλα:

GO instances

Αλλάζοντας το αρχείο blueprint, κάθε περίπτωση που χρησιμοποιεί αυτό το αρχείο θα ενημερωθεί αμέσως.

GO instances updated

Childing game objects

Σε ένα αρχείο συλλογής, μπορείτε να δημιουργήσετε ιεραρχίες αντικειμένων παιχνιδιού, έτσι ώστε ένα ή περισσότερα αντικείμενα παιχνιδιού να είναι παιδιά σε ένα αντικείμενο γονικού παιχνιδιού. Απλώς dropping πάνω σε ένα άλλο, το αντικείμενο παιχνιδιού που σύρεται είναι παιδικό κάτω από τον στόχο:

Childing game objects

Οι ιεραρχίες γονέα-παιδιού αντικειμένου είναι μια δυναμική σχέση που επηρεάζει τον τρόπο με τον οποίο τα αντικείμενα αντιδρούν σε μετασχηματισμούς. Οποιοσδήποτε μετασχηματισμός (κίνηση, περιστροφή ή κλιμάκωση) που εφαρμόζεται σε ένα αντικείμενο θα εφαρμοστεί με τη σειρά του στα παιδιά του αντικειμένου, τόσο στο πρόγραμμα επεξεργασίας όσο και στο χρόνο εκτέλεσης:

Child transform

Αντίθετα, οι μεταφράσεις ενός παιδιού γίνονται στον τοπικό χώρο του γονέα. Στο πρόγραμμα επεξεργασίας, μπορείτε να επιλέξετε να επεξεργαστείτε ένα αντικείμενο παιδικού παιχνιδιού στον τοπικό χώρο ή στον παγκόσμιο χώρο επιλέγοντας Edit ▸ World Space (the default) or Edit ▸ Local Space.

It is also possible to alter an object’s parent in run-time by sending a set_parent message to the object.

local parent = go.get_id("bean")
msg.post("child_bean", "set_parent", { parent_id = parent })

Μια κοινή παρανόηση είναι ότι η θέση ενός αντικειμένου παιχνιδιού στην ιεραρχία συλλογής αλλάζει όταν γίνεται μέρος μιας ιεραρχίας γονέα-παιδιού. Ωστόσο, αυτά είναι δύο πολύ διαφορετικά πράγματα. Οι ιεραρχίες γονέα-παιδιού αλλάζουν δυναμικά το γράφημα σκηνής που επιτρέπει στα αντικείμενα να συνδέονται οπτικά μεταξύ τους. Το μόνο πράγμα που υπαγορεύει τη διεύθυνση ενός αντικειμένου παιχνιδιού είναι η θέση του στην ιεραρχία συλλογής. Η διεύθυνση είναι στατική καθ ‘όλη τη διάρκεια ζωής του αντικειμένου.