This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Στον πυρήνα του σχεδιασμού του Defold υπάρχουν μερικές έννοιες με τις οποίες ίσως χρειαστείτε λίγο χρόνο για να εξοικειωθείτε. Αυτό το εγχειρίδιο εξηγεί τα βασικά δομικά στοιχεία του Defold. Αφού το διαβάσετε, συνεχίστε με το εγχειρίδιο διευθυνσιοδότησης και το εγχειρίδιο ανταλλαγής μηνυμάτων. Υπάρχει επίσης ένα σύνολο οδηγών εκμάθησης, διαθέσιμο μέσα από τον επεξεργαστή, για να ξεκινήσετε γρήγορα.

Υπάρχουν τρεις βασικοί τύποι δομικών στοιχείων που χρησιμοποιείτε για να δημιουργήσετε ένα παιχνίδι Defold:
Οι συλλογές είναι δενδροειδείς δομές που περιέχουν αντικείμενα παιχνιδιού και άλλες συλλογές. Μια συλλογή αποθηκεύεται πάντα σε αρχείο.
Όταν ξεκινά η μηχανή Defold, φορτώνει μία συλλογή εκκίνησης (bootstrap collection), όπως καθορίζεται στο αρχείο ρυθμίσεων game.project. Η συλλογή εκκίνησης ονομάζεται συχνά main.collection, αλλά μπορείτε να χρησιμοποιήσετε οποιοδήποτε όνομα θέλετε.
Μια συλλογή μπορεί να περιέχει αντικείμενα παιχνιδιού και άλλες συλλογές, μέσω αναφοράς στο αρχείο της υποσυλλογής, σε οποιοδήποτε βάθος ένθεσης. Ακολουθεί ένα παράδειγμα αρχείου με όνομα main.collection. Περιέχει ένα αντικείμενο παιχνιδιού με αναγνωριστικό can και μία υποσυλλογή με αναγνωριστικό bean. Η υποσυλλογή περιέχει με τη σειρά της δύο αντικείμενα παιχνιδιού: bean και shield.

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

Δεν μπορείτε να απευθυνθείτε στις ίδιες τις συλλογές, καθώς κατά τον χρόνο εκτέλεσης δεν υπάρχουν αντικείμενα που να αντιστοιχούν στις συλλογές main και bean. Ωστόσο, μερικές φορές πρέπει να χρησιμοποιήσετε το αναγνωριστικό μιας συλλογής ως μέρος της διαδρομής προς ένα αντικείμενο παιχνιδιού. Για λεπτομέρειες, ανατρέξτε στο εγχειρίδιο διευθυνσιοδότησης:
-- file: can.script
-- get position of the "bean" game object in the "bean" collection
local pos = go.get_position("bean/bean")
Μια συλλογή προστίθεται πάντα σε μια άλλη συλλογή ως αναφορά σε αρχείο συλλογής:
Κάντε δεξί κλικ στη συλλογή στην προβολή Outline και επιλέξτε Add Collection File.
Τα αντικείμενα παιχνιδιού είναι απλά αντικείμενα, καθένα από τα οποία έχει ξεχωριστή διάρκεια ζωής κατά την εκτέλεση του παιχνιδιού. Κάθε αντικείμενο παιχνιδιού έχει θέση, περιστροφή και κλίμακα, τις οποίες μπορείτε να μεταβάλετε και να κινήσετε κατά τον χρόνο εκτέλεσης.
-- animate X position of "can" game object
go.animate("can", "position.x", go.PLAYBACK_LOOP_PINGPONG, 100, go.EASING_LINEAR, 1.0)
Τα αντικείμενα παιχνιδιού μπορούν να χρησιμοποιηθούν κενά, για παράδειγμα ως δείκτες θέσης, αλλά συνήθως περιέχουν διάφορα στοιχεία, όπως sprite, ήχους, script, μοντέλα, factory και άλλα. Τα αντικείμενα παιχνιδιού μπορούν να δημιουργηθούν στον επεξεργαστή και να τοποθετηθούν σε αρχεία συλλογής ή να δημιουργηθούν δυναμικά κατά τον χρόνο εκτέλεσης μέσω στοιχείων factory.
Τα αντικείμενα παιχνιδιού είτε προστίθενται επιτόπου σε μια συλλογή είτε προστίθενται σε αυτή ως αναφορά σε αρχείο αντικειμένου παιχνιδιού:
Κάντε δεξί κλικ στη συλλογή στην προβολή Outline και επιλέξτε Add Game Object για προσθήκη επιτόπου ή Add Game Object File για προσθήκη ως αναφορά σε αρχείο.
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:

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:
Ανατρέξτε στην επισκόπηση στοιχείων για μια λίστα των διαθέσιμων τύπων στοιχείων.
Όταν δημιουργείτε ένα αρχείο συλλογής, αντικειμένου παιχνιδιού ή στοιχείου, δημιουργείτε αυτό που στο Defold ονομάζεται πρωτότυπο (prototype· σε άλλες μηχανές είναι γνωστό και ως prefab ή blueprint). Με αυτόν τον τρόπο προστίθεται μόνο ένα αρχείο στη δομή του έργου και όχι κάτι στο παιχνίδι που εκτελείται. Για να χρησιμοποιήσετε μια συλλογή, ένα αντικείμενο παιχνιδιού ή ένα στοιχείο που βασίζεται σε τέτοιο αρχείο, προσθέτετε ένα στιγμιότυπό του σε ένα από τα αρχεία συλλογής σας.
Μπορείτε να δείτε σε ποιο αρχείο βασίζεται ένα στιγμιότυπο αντικειμένου στην προβολή Outline. Το αρχείο main.collection περιέχει τρία στιγμιότυπα που βασίζονται σε αρχεία:
bean.bean στο αντικείμενο παιχνιδιού bean της υποσυλλογής bean.can στο αντικείμενο παιχνιδιού can.
Το όφελος από τη δημιουργία αρχείων πρωτοτύπων γίνεται εμφανές όταν έχετε πολλά στιγμιότυπα ενός αντικειμένου παιχνιδιού ή μιας συλλογής και θέλετε να τα αλλάξετε όλα:

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

Εδώ αλλάζει η εικόνα sprite του αρχείου πρωτοτύπου και ενημερώνονται αμέσως όλα τα στιγμιότυπα που χρησιμοποιούν το αρχείο:

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

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

Αντίθετα, οι μετατοπίσεις ενός παιδιού γίνονται στον τοπικό χώρο του γονέα. Στον επεξεργαστή μπορείτε να επιλέξετε αν θα επεξεργαστείτε ένα παιδικό αντικείμενο παιχνιδιού στον παγκόσμιο ή στον τοπικό χώρο, επιλέγοντας Edit ▸ World Space (προεπιλογή) ή Edit ▸ Local Space.
Μπορείτε επίσης να αλλάξετε τον γονέα ενός αντικειμένου κατά τον χρόνο εκτέλεσης, στέλνοντάς του το μήνυμα set_parent.
local parent = go.get_id("bean")
msg.post("child_bean", "set_parent", { parent_id = parent })
Μια συνηθισμένη παρανόηση είναι ότι η θέση ενός αντικειμένου παιχνιδιού στην ιεραρχία συλλογής αλλάζει όταν το αντικείμενο γίνεται μέρος μιας ιεραρχίας γονέα-παιδιού. Πρόκειται όμως για δύο πολύ διαφορετικά πράγματα. Οι ιεραρχίες γονέα-παιδιού αλλάζουν δυναμικά τον γράφο σκηνής, επιτρέποντας στα αντικείμενα να συνδέονται οπτικά μεταξύ τους. Η διεύθυνση ενός αντικειμένου παιχνιδιού καθορίζεται αποκλειστικά από τη θέση του στην ιεραρχία συλλογής και παραμένει στατική σε όλη τη διάρκεια ζωής του αντικειμένου.