ソースを参照

greek manuals (#107)

Elpidoforos Gkikas 5 年 前
コミット
a7cf7f97ee

+ 3 - 1
docs/gr/manuals/2dgraphics.md

@@ -5,4 +5,6 @@ brief: Αυτό το εγχειρίδιο είναι ξεπερασμένο
 
 # 2D Γραφικά
 
-This manual has been replaced by the [Εγχειρίδιο επισκόπησης γραφικών](/εγχειρίδια/γραφικά).
+
+Αυτό το εγχειρίδιο έχει αντικατασταθεί από το [Graphics overview manual](/manuals/graphics).
+

+ 3 - 1
docs/gr/manuals/3dgraphics.md

@@ -5,4 +5,6 @@ brief: Αυτό το εγχειρίδιο είναι ξεπερασμένο
 
 # 3D Γραφικά
 
-This manual has been replaced by the [Εγχειρίδιο επισκόπησης γραφικών]
+
+Αυτό το εγχειρίδιο έχει αντικατασταθεί από το [Graphics overview manual](/manuals/graphics).
+

+ 484 - 0
docs/gr/manuals/animation.md

@@ -0,0 +1,484 @@
+---
+title: Εγχειρίδιο Animation στη Defold
+brief: Αυτό το εγχειρίδιο περιγράφει την υποστήριξη animation του Defold.
+---
+
+# Κινούμενων γραφικών
+
+Το Defold διαθέτει ενσωματωμένη υποστήριξη για πολλούς τύπους κινούμενων γραφικών που μπορείτε να χρησιμοποιήσετε ως πηγή γραφικών για στοιχεία:
+
+* Flip-book animation
+* Κινούμενη εικόνα της σπονδυλικής στήλης
+* 3D κινούμενα σχέδια
+* Κινούμενα σχέδια ιδιοκτησίας
+
+## Κινούμενη εικόνα flip-book
+
+Ένα animation flipbook αποτελείται από μια σειρά ακίνητων εικόνων που εμφανίζονται διαδοχικά. Η τεχνική είναι πολύ παρόμοια με την παραδοσιακή κινούμενη εικόνα των κυττάρων (βλ. Http://en.wikipedia.org/wiki/Traditional_animation). Η τεχνική προσφέρει απεριόριστες ευκαιρίες δεδομένου ότι κάθε πλαίσιο μπορεί να χειριστεί μεμονωμένα. Ωστόσο, δεδομένου ότι κάθε πλαίσιο αποθηκεύεται σε μια μοναδική εικόνα, το αποτύπωμα μνήμης μπορεί να είναι υψηλό. Η ομαλότητα της κινούμενης εικόνας εξαρτάται επίσης από τον αριθμό των εικόνων που εμφανίζονται κάθε δευτερόλεπτο, αλλά η αύξηση του αριθμού των εικόνων συνήθως αυξάνει επίσης την ποσότητα εργασίας. Τα κινούμενα σχέδια του Defold flipbook αποθηκεύονται είτε ως μεμονωμένες εικόνες που προστίθενται σε [Atlas](/manuals/atlas), είτε ως [Tile Source](/manuals/tilesource) με όλα τα καρέ να είναι οριζόντια.
+
+  ![Animation sheet](images/animation/animsheet.png){.inline}
+  ![Run loop](images/animation/runloop.gif){.inline}
+
+## Κινούμενη εικόνα της σπονδυλικής στήλης Spine
+
+Το Spine animation παρέχει υποστήριξη 2D _skeletal animation_ (βλ. Http://en.wikipedia.org/wiki/Skeletal_animation). Αυτή είναι μια θεμελιωδώς διαφορετική τεχνική που είναι πιο κοντά στο κινούμενο σχέδιο. Στην κινούμενη κίνηση, ξεχωριστά κομμάτια του κινούμενου αντικειμένου (π.χ. μέρη σώματος, μάτια, στόμα κ.λπ.) μετακινούνται ξεχωριστά μεταξύ κάθε καρέ. Το Spine animation σάς επιτρέπει να δημιουργήσετε έναν αόρατο, εικονικό σκελετό που αποτελείται από μια ιεραρχία διασυνδεδεμένων _bones_. Αυτός ο σκελετός, ή _rig_, στη συνέχεια κινείται και μεμονωμένες εικόνες προσαρτώνται στα οστά. Το Defold υποστηρίζει κινούμενα σχέδια που δημιουργούνται ή εξάγονται στη μορφή [Spine JSON format](http://esotericsoftware.com/spine-json-format). Το σκελετικό κινούμενο σχέδιο είναι πολύ ομαλό καθώς η μηχανή μπορεί να παρεμβάλει τη θέση κάθε οστού για κάθε πλαίσιο.
+
+  Για λεπτομέρειες σχετικά με τον τρόπο εισαγωγής δεδομένων Spine σε μοντέλο Spine για κινούμενα σχέδια, ανατρέξτε στην [Spine documentation](/manuals/spine).
+
+
+  ![Spine animation](images/animation/spine_animation.png){.inline}
+  ![Run loop](images/animation/frog_runloop.gif){.inline}
+
+## 3D κινούμενα γραφικά
+
+Το σκελετικό animation των τρισδιάστατων μοντέλων είναι παρόμοιο με το Spine animation, αλλά λειτουργεί σε 3D σε αντίθεση με το 2D. Το τρισδιάστατο μοντέλο δεν είναι κομμένο σε ξεχωριστά μέρη και δεμένο σε κόκαλο, όπως σε κινούμενα σχέδια. Αντ 'αυτού, τα οστά εφαρμόζουν παραμόρφωση στις κορυφές του μοντέλου και έχετε μεγάλο έλεγχο του πόσο ένα οστό πρέπει να επηρεάζει τις κορυφές.
+
+  Για λεπτομέρειες σχετικά με τον τρόπο εισαγωγής δεδομένων 3D σε ένα μοντέλο για κινούμενα σχέδια, ανατρέξτε στο [Model documentation](/manuals/model).
+
+  ![Blender animation](images/animation/blender_animation.png){.inline srcset="images/animation/[email protected] 2x"}
+  ![Wiggle loop](images/animation/suzanne.gif){.inline}
+
+
+## Ιδιότητα Κινούμενων γραφικών 
+
+Όλες οι αριθμητικές ιδιότητες (numbers, vector3, vector4 and quaterions) και οι σταθερές shader μπορούν να κινούνται με το ενσωματωμένο σύστημα κινούμενης εικόνας, χρησιμοποιώντας τη συνάρτηση  `go.animate()`. η μηχανή θα "tween" ιδιότητες αυτόματα για εσάς σύμφωνα με δεδομένες λειτουργίες αναπαραγωγής και λειτουργίες χαλάρωσης. Μπορείτε επίσης να καθορίσετε προσαρμοσμένες λειτουργίες χαλάρωσης.
+
+  ![Property animation](images/animation/property_animation.png){.inline srcset="images/animation/[email protected] 2x"}
+  ![Bounce loop](images/animation/bounce.gif){.inline}
+
+## Αναπαραγωγή κινούμενων εικόνων
+
+Οι κόμβοι Sprites και GUI μπορούν να αναπαράγουν κινούμενες εικόνες με flip-book και έχετε μεγάλο έλεγχο σε αυτά κατά την εκτέλεση.
+
+Σπρέι
+: Για να εκτελέσετε μια κινούμενη εικόνα κατά τη διάρκεια του χρόνου εκτέλεσης, χρησιμοποιείτε τη λειτουργία [`sprite.play_flipbook()`](/ref/sprite/?q=play_flipbook#sprite.play_flipbook:url-id-[complete_function]-[play_properties]) function. Δείτε παρακάτω για ένα παράδειγμα.
+
+Κόμβοι πλαισίου GUI
+: Για να εκτελέσετε μια κινούμενη εικόνα κατά τη διάρκεια του χρόνου εκτέλεσης, χρησιμοποιείτε τη λειτουργία [`gui.play_flipbook()`](/ref/gui/?q=play_flipbook#gui.play_flipbook:node-animation-[complete_function]-[play_properties]) function. Δείτε παρακάτω για ένα παράδειγμα.
+
+::: υποσημείωση
+Η λειτουργία αναπαραγωγής μόλις το πινγκ πονγκ θα αναπαράγει το κινούμενο σχέδιο μέχρι το τελευταίο καρέ και στη συνέχεια θα αντιστρέψει τη σειρά και θα αναπαράγει μέχρι το ** δεύτερο ** καρέ της κινούμενης εικόνας, όχι πίσω στο πρώτο καρέ. Αυτό γίνεται έτσι ώστε η αλυσίδα των κινούμενων σχεδίων να γίνεται ευκολότερη.
+:::
+
+### Παράδειγμα Sprite
+
+Ας υποθέσουμε ότι το παιχνίδι σας διαθέτει δυνατότητα "αποφυγής" που επιτρέπει στον παίκτη να πατήσει ένα συγκεκριμένο κουμπί για να αποφύγει. Έχετε δημιουργήσει τέσσερα κινούμενα σχέδια για να υποστηρίξετε τη λειτουργία με οπτικά σχόλια:
+
+"idle"(αδρανής)
+: Ένα κινούμενο σχέδιο βρόχου του ρελαντί χαρακτήρα του παίκτη.
+
+"dodge_idle"
+: Ένα κινούμενο σχέδιο βρόχου του χαρακτήρα του παίκτη στο ρελαντί ενώ βρίσκεται στη στάση αποφυγής.
+
+"start_dodge"
+: Ένα κινούμενο σχέδιο μετάβασης μιας φοράς που παίρνει τον χαρακτήρα του παίκτη από τη στάση έως την αποφυγή.
+
+"stop_dodge"
+: Ένα κινούμενο σχέδιο μετάβασης με μία φορά που μεταφέρει τον χαρακτήρα του παίκτη από την αποφυγή της στάσης.
+
+Το ακόλουθο script παρέχει τη λογική:
+
+```lua
+
+local function play_idle_animation(self)
+    if self.dodge then
+        sprite.play_flipbook("#sprite", hash("dodge_idle"))
+    else
+        sprite.play_flipbook("#sprite", hash("idle"))
+    end
+end
+
+function on_input(self, action_id, action)
+    -- "dodge" is our input action
+    if action_id == hash("dodge") then
+        if action.pressed then
+            sprite.play_flipbook("#sprite", hash("start_dodge"), play_idle_animation)
+            -- remember that we are dodging
+            self.dodge = true
+        elseif action.released then
+            sprite.play_flipbook("#sprite", hash("stop_dodge"), play_idle_animation)
+            -- we are not dodging anymore
+            self.dodge = false
+        end
+    end
+end
+```
+
+### Παράδειγμα κόμβου GUI
+
+Όταν επιλέγετε μια κινούμενη εικόνα ή μια εικόνα για έναν κόμβο, στην πραγματικότητα εκχωρείτε την πηγή εικόνας (πηγή άτλαντα ή πλακίδια) και την προεπιλεγμένη κινούμενη εικόνα με μία κίνηση. Η πηγή εικόνας ορίζεται στατικά στον κόμβο, αλλά η τρέχουσα κινούμενη εικόνα για αναπαραγωγή μπορεί να αλλάξει κατά το χρόνο εκτέλεσης. Οι ακίνητες εικόνες αντιμετωπίζονται ως κινούμενες εικόνες ενός καρέ, οπότε η αλλαγή μιας εικόνας σημαίνει ότι ο χρόνος εκτέλεσης ισοδυναμεί με την αναπαραγωγή ενός διαφορετικού κινούμενου βιβλίου flipbook για τον κόμβο:
+
+```lua
+local function flipbook_done(self)
+    msg.post("#", "jump_completed")
+end
+
+function init(self)
+    local character_node = gui.get_node("character")
+    -- This requires that the node has a default animation in the same atlas or tile source as
+    -- the new animation/image we're playing.
+    gui.play_flipbook(character_node, "jump_left", flipbook_done)
+end
+```
+
+Μπορεί να παρέχεται μια προαιρετική συνάρτηση που καλείται μετά την ολοκλήρωση. Θα κληθεί σε κινούμενα σχέδια που αναπαράγονται σε οποιαδήποτε από τις λειτουργίες `ONCE_*`.
+
+## Spine model animation
+
+Για να εκτελέσετε κινούμενες εικόνες στο μοντέλο σας, απλώς καλέστε το [`spine.play_anim()`](/ref/spine#spine.play_anim) function:
+
+```lua
+local function anim_done(self)
+    -- the animation is done, do something useful...
+end
+
+function init(self)
+    -- Play the "walk" animation on component "spinemodel" and blend against previous
+    -- animation for the first 0.1 seconds, then call callback.
+    local anim_props = { blend_duration = 0.1 }
+    spine.play_anim("#spinemodel", "run", go.PLAYBACK_LOOP_FORWARD, anim_props, anim_done)
+end
+```
+
+![Spine model in game](images/animation/spine_ingame.png){srcset="images/animation/[email protected] 2x"}
+
+Εάν ένα κινούμενο σχέδιο αναπαράγεται με οποιαδήποτε από τις λειτουργίες `go.PLAYBACK_ONCE_*` και έχετε δώσει μια λειτουργία επανάκλησης στο `spine.play_anim()` η επιστροφή κλήσης εκτελείται σε κινούμενη εικόνα ολοκληρωμένη. Δείτε παρακάτω για πληροφορίες σχετικά με τις επιστροφές κλήσεων.
+
+### Μοντέλο σπονδυλικής στήλης - Κινούμενα σχέδια δρομέα - Spine model - Cursor animation
+
+Εκτός από τη χρήση του `spine.play_anim()` για να προωθήσετε μια κινούμενη εικόνα της σπονδυλικής στήλης, τα στοιχεία, *Spine Model* εκθέτουν μια ιδιότητα "δρομέα" που μπορεί να χειριστεί με το `go.animate()`:
+
+```lua
+-- Set the animation on the spine model but don't run it.
+spine.play_anim("#spinemodel", "run_right", go.PLAYBACK_NONE)
+
+-- Set the cursor to position 0
+go.set("#spinemodel", "cursor", 0)
+
+-- Tween the cursor slowly between 0 and 1 pingpong with in-out quad easing.
+go.animate("#spinemodel", "cursor", go.PLAYBACK_LOOP_PINGPONG, 1, go.EASING_INOUTQUAD, 6)
+```
+
+::: σημαντικό
+Όταν κάνετε tweening ή ρυθμίζετε τον κέρσορα, τα συμβάντα timeline ενδέχεται να μην ενεργοποιούνται όπως αναμένεται.
+:::
+
+### Μοντέλο σπονδυλικής στήλης - Η ιεραρχία των οστών - Spine model - The bone hierarchy
+
+Τα μεμονωμένα οστά στο σκελετό της Σπονδυλικής στήλης παρουσιάζονται εσωτερικά ως αντικείμενα παιχνιδιού. Στην προβολή *Outline* του συστατικού μοντέλου Spine, είναι ορατή η πλήρης ιεραρχία. Μπορείτε να δείτε το όνομα κάθε οστού και τη θέση του στην ιεραρχία του σκελετού.
+
+![Spine model hierarchy](images/animation/spine_bones.png){srcset="images/animation/[email protected] 2x"}
+
+Με το όνομα των οστών στο χέρι, μπορείτε να ανακτήσετε το αναγνωριστικό εμφάνισης του οστού στο χρόνο εκτέλεσης. Η λειτουργία [`spine.get_go()`](/ref/spine#spine.get_go) επιστρέφει το αναγνωριστικό του καθορισμένου οστού και μπορείτε, για παράδειγμα, να θυμάστε άλλα αντικείμενα παιχνιδιού κάτω από το κινούμενο αντικείμενο παιχνιδιού:
+
+```lua
+-- Attach pistol game object to the hand of the heroine
+local hand = spine.get_go("heroine#spinemodel", "front_hand")
+msg.post("pistol", "set_parent", { parent_id = hand })
+```
+
+### Μοντέλο σπονδυλικής στήλης - Συμβάντα Χρονοδιαγράμματος Spine model - Timeline events
+
+Τα κινούμενα σχέδια της σπονδυλικής στήλης μπορούν να πυροδοτήσουν χρονικά συμβάντα στέλνοντας μηνύματα σε συγκεκριμένες στιγμές. Είναι πολύ χρήσιμα για εκδηλώσεις που θα πρέπει να πραγματοποιούνται σε συγχρονισμό με την κινούμενη εικόνα σας, όπως αναπαραγωγή ήχων βήματος, αναπαραγωγή εφέ σωματιδίων, σύνδεση ή απόσπαση αντικειμένων στην ιεραρχία των οστών ή οτιδήποτε άλλο θέλετε να συμβεί.
+
+Τα συμβάντα προστίθενται στο λογισμικό Spine και απεικονίζονται στο playback timeline:
+
+![Spine events](images/animation/spine_events.png)
+
+Κάθε συμβάν αναφέρεται με ένα αναγνωριστικό ονόματος ("bump" στο παραπάνω παράδειγμα) και κάθε παρουσία συμβάντος στο χρονοδιάγραμμα μπορεί να περιέχει πρόσθετες πληροφορίες:
+
+Integer
+: Μια αριθμητική τιμή που εκφράζεται ως ακέραιος.
+
+Float
+: Μια αριθμητική τιμή κινητής υποδιαστολής.
+
+String
+: Μια τιμή συμβολοσειράς.
+
+Όταν συναντώνται τα κινούμενα σχέδια και τα συμβάντα, τα μηνύματα `spine_event` αποστέλλονται πίσω στο στοιχείο δέσμης ενεργειών που ονομάζεται` spine.play () ". Τα δεδομένα μηνυμάτων περιέχουν τους προσαρμοσμένους αριθμούς και συμβολοσειρές που είναι ενσωματωμένες στο συμβάν, καθώς και μερικά επιπλέον πεδία που μερικές φορές είναι χρήσιμα:
+
+`t`
+: Ο αριθμός των δευτερολέπτων που πέρασαν από το πρώτο καρέ της κινούμενης εικόνας.
+
+`animation_id`
+: Το όνομα κινούμενης εικόνας, κατακερματισμένο.
+
+`string`
+: Η παρεχόμενη τιμή συμβολοσειράς, κατακερματισμένη.
+
+`float`
+: Η παρεχόμενη αριθμητική τιμή κυμαινόμενου σημείου.
+
+`integer`
+: Η παρεχόμενη ακέραια αριθμητική τιμή.
+
+`event_id`
+: Το αναγνωριστικό συμβάντος, κατακερματισμένο.
+
+`blend_weight`
+: Πόσο από τα κινούμενα σχέδια αναμιγνύεται σε αυτό το σημείο. 0 σημαίνει ότι τίποτα από το τρέχον κινούμενο σχέδιο δεν είναι ακόμη μέρος του μίγματος, 1 σημαίνει ότι το μείγμα αποτελείται από την τρέχουσα κινούμενη εικόνα έως 100%.
+
+```lua
+-- Spine animation contains events that are used to play sounds in sync with the animation.
+-- These arrive here as messages.
+function on_message(self, message_id, message, sender)
+  if message_id == hash("spine_event") and message.event_id == hash("play_sound") then
+    -- Play animation sound. The custom event data contains the sound component and the gain.
+    local url = msg.url("sounds")
+    url.fragment = message.string
+    sound.play(url, { gain = message.float })
+  end
+end
+```
+
+## 3D μοντέλο κινουμένων σχεδίων
+
+Τα μοντέλα είναι κινούμενα με το [`model.play_anim()`](/ref/model#model.play_anim) function:
+
+```lua
+function init(self)
+    -- Start the "wiggle" animation back and forth on #model
+    model.play_anim("#model", "wiggle", go.PLAYBACK_LOOP_PINGPONG)
+end
+```
+
+::: σημαντικό
+Το Defold υποστηρίζει προς το παρόν μόνο κινούμενες εικόνες. Τα κινούμενα σχέδια πρέπει να έχουν πίνακες για κάθε κινούμενο οστό κάθε βασικό καρέ και όχι θέση, περιστροφή και κλίμακα ως ξεχωριστά πλήκτρα.
+
+Τα κινούμενα σχέδια παρεμβάλλονται επίσης γραμμικά. Εάν κάνετε πιο προηγμένη παρεμβολή καμπύλης, τα κινούμενα σχέδια πρέπει να προκαταβληθούν από τον εξαγωγέα.
+
+Δεν υποστηρίζονται κλιπ κινουμένων σχεδίων στο Collada. Για να χρησιμοποιήσετε πολλά κινούμενα σχέδια ανά μοντέλο, εξαγάγετε τα σε ξεχωριστά αρχεία *.dae* και συγκεντρώστε τα αρχεία σε ένα αρχείο *.animationset* στο Defold.
+:::
+
+### 3D Μοντέλο - Η ιεραρχία των οστών
+
+Τα οστά στο σκελετό του Μοντέλου παρουσιάζονται εσωτερικά ως αντικείμενα παιχνιδιού.
+
+Μπορείτε να ανακτήσετε το αναγνωριστικό παρουσίας του αντικειμένου παιχνιδιού οστών στο χρόνο εκτέλεσης. Η λειτουργία [`model.get_go()`](/ref/model#model.get_go) επιστρέφει το αναγνωριστικό του αντικειμένου παιχνιδιού για το καθορισμένο κόκκαλο.
+
+```lua
+-- Get the middle bone go of our wiggler model
+local bone_go = model.get_go("#wiggler", "Bone_002")
+
+-- Now do something useful with the game object...
+```
+
+### 3D Μοντέλο - Κινούμενα σχέδια δρομέα
+
+Ακριβώς όπως τα μοντέλα Spine, τα 3D μοντέλα μπορούν να κινούνται με χειρισμό της ιδιότητας `cursor`:
+
+```lua
+-- Set the animation on #model but don't start it
+model.play_anim("#model", "wiggle", go.PLAYBACK_NONE)
+-- Set the cursor to the beginning of the animation
+go.set("#model", "cursor", 0)
+-- Tween the cursor between 0 and 1 pingpong with in-out quad easing.
+go.animate("#model", "cursor", go.PLAYBACK_LOOP_PINGPONG, 1, go.EASING_INOUTQUAD, 3)
+```
+
+## Property animation
+
+## Κίνηση ιδιοκτησίας
+
+Για να κινήσετε ένα αντικείμενο παιχνιδιού ή μια ιδιότητα στοιχείου, χρησιμοποιήστε τη συνάρτηση `go.animate()`. Για ιδιότητες κόμβου GUI, η αντίστοιχη συνάρτηση είναι `gui.animate()`.
+
+```lua
+-- Set the position property y component to 200
+go.set(".", "position.y", 200)
+-- Then animate it
+go.animate(".", "position.y", go.PLAYBACK_LOOP_PINGPONG, 100, go.EASING_OUTBOUNCE, 2)
+```
+
+Για να σταματήσετε όλες τις κινούμενες εικόνες μιας συγκεκριμένης ιδιότητας, καλέστε `go.cancel_animations()`, ή για κόμβους GUI, `gui.cancel_animation()`:
+
+```lua
+-- Stop euler z rotation animation on the current game object
+go.cancel_animation(".", "euler.z")
+```
+
+Εάν ακυρώσετε την κινούμενη εικόνα μιας σύνθετης ιδιότητας, όπως `position`, θα ακυρωθούν επίσης κινούμενες εικόνες των υπο-στοιχείων (`position.x`, `position.y` και `position.z`).
+
+Το [Properties Manual](/manuals/properties) περιέχει όλες τις διαθέσιμες ιδιότητες σε αντικείμενα παιχνιδιών, στοιχεία και κόμβους GUI.
+
+## Κίνηση ιδιοτήτων κόμβου GUI
+
+Σχεδόν όλες οι ιδιότητες κόμβου GUI είναι δυνατές για κινούμενη εικόνα. Μπορείτε, για παράδειγμα, να κάνετε έναν κόμβο αόρατο ορίζοντας την ιδιότητα `color` σε πλήρη διαφάνεια και, στη συνέχεια, να τον εξασθενίσετε, κινούμενος το χρώμα σε λευκό (δηλ. Χωρίς χρώμα απόχρωσης).
+
+```lua
+local node = gui.get_node("button")
+local color = gui.get_color(node)
+-- Animate the color to white
+gui.animate(node, gui.PROP_COLOR, vmath.vector4(1, 1, 1, 1), gui.EASING_INOUTQUAD, 0.5)
+-- Animate the outline red color component
+gui.animate(node, "outline.x", 1, gui.EASING_INOUTQUAD, 0.5)
+-- And move to x position 100
+gui.animate(node, hash("position.x"), 100, gui.EASING_INOUTQUAD, 0.5)
+```
+
+## Λειτουργίες αναπαραγωγής
+
+Τα κινούμενα σχέδια μπορούν να παιχτούν είτε μία φορά είτε σε ένα βρόχο. Πώς καθορίζεται η αναπαραγωγή της κινούμενης εικόνας από τη λειτουργία αναπαραγωγής:
+
+* go.PLAYBACK_NONE
+* go.PLAYBACK_ONCE_FORWARD
+* go.PLAYBACK_ONCE_BACKWARD
+* go.PLAYBACK_ONCE_PINGPONG
+* go.PLAYBACK_LOOP_FORWARD
+* go.PLAYBACK_LOOP_BACKWARD
+* go.PLAYBACK_LOOP_PINGPONG
+
+Οι λειτουργίες pingpong εκτελούν το animation πρώτα προς τα εμπρός και μετά προς τα πίσω. Υπάρχει ένα σύνολο αντίστοιχων λειτουργιών για κινούμενα σχέδια ιδιοτήτων GUI:
+
+* gui.PLAYBACK_NONE
+* gui.PLAYBACK_ONCE_FORWARD
+* gui.PLAYBACK_ONCE_BACKWARD
+* gui.PLAYBACK_ONCE_PINGPONG
+* gui.PLAYBACK_LOOP_FORWARD
+* gui.PLAYBACK_LOOP_BACKWARD
+* gui.PLAYBACK_LOOP_PINGPONG
+
+## Easing
+
+Το Easing καθορίζει πώς αλλάζει η κινούμενη τιμή με την πάροδο του χρόνου. Οι παρακάτω εικόνες περιγράφουν τις λειτουργίες που εφαρμόζονται με την πάροδο του χρόνου για τη δημιουργία της easing.
+
+Τα παρακάτω είναι έγκυρες τιμές easing για `go.animate()`:
+
+|---|---|
+| go.EASING_LINEAR | |
+| go.EASING_INBACK | go.EASING_OUTBACK |
+| go.EASING_INOUTBACK | go.EASING_OUTINBACK |
+| go.EASING_INBOUNCE | go.EASING_OUTBOUNCE |
+| go.EASING_INOUTBOUNCE | go.EASING_OUTINBOUNCE |
+| go.EASING_INELASTIC | go.EASING_OUTELASTIC |
+| go.EASING_INOUTELASTIC | go.EASING_OUTINELASTIC |
+| go.EASING_INSINE | go.EASING_OUTSINE |
+| go.EASING_INOUTSINE | go.EASING_OUTINSINE |
+| go.EASING_INEXPO | go.EASING_OUTEXPO |
+| go.EASING_INOUTEXPO | go.EASING_OUTINEXPO |
+| go.EASING_INCIRC | go.EASING_OUTCIRC |
+| go.EASING_INOUTCIRC | go.EASING_OUTINCIRC |
+| go.EASING_INQUAD | go.EASING_OUTQUAD |
+| go.EASING_INOUTQUAD | go.EASING_OUTINQUAD |
+| go.EASING_INCUBIC | go.EASING_OUTCUBIC |
+| go.EASING_INOUTCUBIC | go.EASING_OUTINCUBIC |
+| go.EASING_INQUART | go.EASING_OUTQUART |
+| go.EASING_INOUTQUART | go.EASING_OUTINQUART |
+| go.EASING_INQUINT | go.EASING_OUTQUINT |
+| go.EASING_INOUTQUINT | go.EASING_OUTINQUINT |
+
+Τα παρακάτω είναι έγκυρες τιμές χαλάρωσης για `gui.animate()`:
+
+|---|---|
+| gui.EASING_LINEAR | |
+| gui.EASING_INBACK | gui.EASING_OUTBACK |
+| gui.EASING_INOUTBACK | gui.EASING_OUTINBACK |
+| gui.EASING_INBOUNCE | gui.EASING_OUTBOUNCE |
+| gui.EASING_INOUTBOUNCE | gui.EASING_OUTINBOUNCE |
+| gui.EASING_INELASTIC | gui.EASING_OUTELASTIC |
+| gui.EASING_INOUTELASTIC | gui.EASING_OUTINELASTIC |
+| gui.EASING_INSINE | gui.EASING_OUTSINE |
+| gui.EASING_INOUTSINE | gui.EASING_OUTINSINE |
+| gui.EASING_INEXPO | gui.EASING_OUTEXPO |
+| gui.EASING_INOUTEXPO | gui.EASING_OUTINEXPO |
+| gui.EASING_INCIRC | gui.EASING_OUTCIRC |
+| gui.EASING_INOUTCIRC | gui.EASING_OUTINCIRC |
+| gui.EASING_INQUAD | gui.EASING_OUTQUAD |
+| gui.EASING_INOUTQUAD | gui.EASING_OUTINQUAD |
+| gui.EASING_INCUBIC | gui.EASING_OUTCUBIC |
+| gui.EASING_INOUTCUBIC | gui.EASING_OUTINCUBIC |
+| gui.EASING_INQUART | gui.EASING_OUTQUART |
+| gui.EASING_INOUTQUART | gui.EASING_OUTINQUART |
+| gui.EASING_INQUINT | gui.EASING_OUTQUINT |
+| gui.EASING_INOUTQUINT | gui.EASING_OUTINQUINT |
+
+![Linear interpolation](images/properties/easing_linear.png){.inline}
+![In back](images/properties/easing_inback.png){.inline}
+![Out back](images/properties/easing_outback.png){.inline}
+![In-out back](images/properties/easing_inoutback.png){.inline}
+![Out-in back](images/properties/easing_outinback.png){.inline}
+![In bounce](images/properties/easing_inbounce.png){.inline}
+![Out bounce](images/properties/easing_outbounce.png){.inline}
+![In-out bounce](images/properties/easing_inoutbounce.png){.inline}
+![Out-in bounce](images/properties/easing_outinbounce.png){.inline}
+![In elastic](images/properties/easing_inelastic.png){.inline}
+![Out elastic](images/properties/easing_outelastic.png){.inline}
+![In-out elastic](images/properties/easing_inoutelastic.png){.inline}
+![Out-in elastic](images/properties/easing_outinelastic.png){.inline}
+![In sine](images/properties/easing_insine.png){.inline}
+![Out sine](images/properties/easing_outsine.png){.inline}
+![In-out sine](images/properties/easing_inoutsine.png){.inline}
+![Out-in sine](images/properties/easing_outinsine.png){.inline}
+![In exponential](images/properties/easing_inexpo.png){.inline}
+![Out exponential](images/properties/easing_outexpo.png){.inline}
+![In-out exponential](images/properties/easing_inoutexpo.png){.inline}
+![Out-in exponential](images/properties/easing_outinexpo.png){.inline}
+![In circlic](images/properties/easing_incirc.png){.inline}
+![Out circlic](images/properties/easing_outcirc.png){.inline}
+![In-out circlic](images/properties/easing_inoutcirc.png){.inline}
+![Out-in circlic](images/properties/easing_outincirc.png){.inline}
+![In quadratic](images/properties/easing_inquad.png){.inline}
+![Out quadratic](images/properties/easing_outquad.png){.inline}
+![In-out quadratic](images/properties/easing_inoutquad.png){.inline}
+![Out-in quadratic](images/properties/easing_outinquad.png){.inline}
+![In cubic](images/properties/easing_incubic.png){.inline}
+![Out cubic](images/properties/easing_outcubic.png){.inline}
+![In-out cubic](images/properties/easing_inoutcubic.png){.inline}
+![Out-in cubic](images/properties/easing_outincubic.png){.inline}
+![In quartic](images/properties/easing_inquart.png){.inline}
+![Out quartic](images/properties/easing_outquart.png){.inline}
+![In-out quartic](images/properties/easing_inoutquart.png){.inline}
+![Out-in quartic](images/properties/easing_outinquart.png){.inline}
+![In quintic](images/properties/easing_inquint.png){.inline}
+![Out quintic](images/properties/easing_outquint.png){.inline}
+![In-out quintic](images/properties/easing_inoutquint.png){.inline}
+![Out-in quintic](images/properties/easing_outinquint.png){.inline}
+
+## Custom easing
+
+Μπορείτε να δημιουργήσετε προσαρμοσμένες καμπύλες χαλάρωσης καθορίζοντας ένα `vector` με ένα σύνολο τιμών και, στη συνέχεια, παρέχετε το διάνυσμα αντί για μία από τις προκαθορισμένες σταθερές χαλάρωσης παραπάνω. Οι διανυσματικές τιμές εκφράζουν μια καμπύλη από την τιμή έναρξης (`0`) έως την τιμή-στόχο (`1`). Ο χρόνος εκτέλεσης δειγμάτων από το διάνυσμα και παρεμβάλλεται γραμμικά κατά τον υπολογισμό τιμών μεταξύ των σημείων που εκφράζονται στο διάνυσμα.
+
+Για παράδειγμα, το διάνυσμα:
+
+```lua
+local values = { 0, 0.4, 0.2, 0.2, 0.5. 1 }
+local my_easing = vmath.vector(values)
+```
+
+αποδίδει την ακόλουθη καμπύλη:
+
+![Custom curve](images/animation/custom_curve.png)
+
+Το ακόλουθο παράδειγμα αναγκάζει τη θέση y ενός αντικειμένου παιχνιδιού να μεταπηδήσει μεταξύ της τρέχουσας θέσης και 200 ​​σύμφωνα με μια τετραγωνική καμπύλη:
+
+```lua
+local values = { 0, 0, 0, 0, 0, 0, 0, 0,
+                 1, 1, 1, 1, 1, 1, 1, 1,
+                 0, 0, 0, 0, 0, 0, 0, 0,
+                 1, 1, 1, 1, 1, 1, 1, 1,
+                 0, 0, 0, 0, 0, 0, 0, 0,
+                 1, 1, 1, 1, 1, 1, 1, 1,
+                 0, 0, 0, 0, 0, 0, 0, 0,
+                 1, 1, 1, 1, 1, 1, 1, 1 }
+local square_easing = vmath.vector(values)
+go.animate("go", "position.y", go.PLAYBACK_LOOP_PINGPONG, 200, square_easing, 2.0)
+```
+
+![Square curve](images/animation/square_curve.png)
+
+## Επιστροφές κλήσεων ολοκλήρωσης - Completion callbacks
+
+Όλες οι συναρτήσεις κινούμενης εικόνας (`go.animate()`, `gui.animate()`, `gui.play_flipbook()`, `gui.play_spine_anim()`, `sprite.play_flipbook()`, `spine.play_anim()` και `model.play_anim()`)  υποστηρίζουν μια προαιρετική λειτουργία επανάκλησης Lua ως το τελευταίο όρισμα. Αυτή η λειτουργία θα κληθεί όταν το κινούμενο σχέδιο έχει παιχτεί μέχρι το τέλος. Η λειτουργία δεν απαιτείται ποτέ για βρόχους κινούμενων εικόνων, ούτε όταν μια κινούμενη εικόνα ακυρώνεται χειροκίνητα μέσω του `go.cancel_animations()`. Η επιστροφή κλήσης μπορεί να χρησιμοποιηθεί για την ενεργοποίηση συμβάντων κατά την ολοκλήρωση των κινούμενων σχεδίων ή για την αλυσίδα πολλαπλών κινούμενων σχεδίων μαζί.
+
+
+Η ακριβής υπογραφή λειτουργίας της επιστροφής κλήσης διαφέρει ελαφρώς μεταξύ των λειτουργιών κινούμενης εικόνας. Δείτε την τεκμηρίωση API για τη λειτουργία που χρησιμοποιείτε.
+
+```lua
+local function done_bouncing(self, url, property)
+    -- We're done animating. Do something...
+end
+
+function init(self)
+    go.animate(".", "position.y", go.PLAYBACK_ONCE_FORWARD, 100, go.EASING_OUTBOUNCE, 2, 0, done_bouncing)
+end
+```

+ 119 - 0
docs/gr/manuals/application-lifecycle.md

@@ -0,0 +1,119 @@
+---
+title: Εγχειρίδιο κύκλου ζωής εφαρμογής Defold
+brief: Αυτό το εγχειρίδιο περιγράφει τον κύκλο ζωής των παιχνιδιών και εφαρμογών Defold.
+---
+
+# Κύκλος ζωής εφαρμογής
+
+Ο κύκλος ζωής μιας εφαρμογής ή παιχνιδιού Defold είναι μεγάλης κλίμακας απλός. η μηχανή κινείται σε τρία στάδια εκτέλεσης: αρχικοποίηση, βρόχος ενημέρωσης (όπου οι εφαρμογές και τα παιχνίδια περνούν το μεγαλύτερο μέρος του χρόνου τους) και οριστικοποίηση.
+
+![Lifecycle overview](images/application_lifecycle/application_lifecycle_overview.png)
+
+Σε πολλές περιπτώσεις απαιτείται μόνο μια στοιχειώδης κατανόηση των εσωτερικών λειτουργιών του Defold. Ωστόσο, μπορεί να αντιμετωπίσετε περιπτώσεις όπου η ακριβής σειρά Defold εκτελεί τις εργασίες της καθίσταται ζωτικής σημασίας. Αυτό το έγγραφο περιγράφει πώς η μηχανή εκτελεί μια εφαρμογή από την αρχή έως το τέλος.
+
+Η εφαρμογή ξεκινά αρχικοποιώντας ό, τι χρειάζεται για τη λειτουργία του κινητήρα. Φορτώνει την κύρια συλλογή και καλεί [`init()`](/ref/go#init) σε όλα τα φορτωμένα στοιχεία που έχουν συνάρτηση `init()` Lua (στοιχεία σεναρίου και στοιχεία GUI με σενάρια GUI). Αυτό σας επιτρέπει να κάνετε προσαρμοσμένη αρχικοποίηση.
+
+Στη συνέχεια, η εφαρμογή μπαίνει στο βρόχο ενημέρωσης όπου η εφαρμογή θα περάσει το μεγαλύτερο μέρος της διάρκειας ζωής της. Κάθε πλαίσιο, αντικείμενα παιχνιδιού και τα στοιχεία που περιέχουν ενημερώνονται. Κλήση οποιασδήποτε δέσμης ενεργειών και σεναρίου GUI [`update()`](/ref/go#update). Κατά τη διάρκεια του βρόχου ενημέρωσης αποστέλλονται μηνύματα στους παραλήπτες τους, αναπαράγονται ήχοι και αποδίδονται όλα τα γραφικά.
+
+Σε κάποιο σημείο ο κύκλος ζωής της εφαρμογής θα τελειώσει. Πριν από την εφαρμογή τερματίσει τον κινητήρα βγαίνει από το βρόχο ενημέρωσης και εισέρχεται στο στάδιο οριστικοποίησης. Προετοιμάζει όλα τα φορτωμένα αντικείμενα παιχνιδιού για διαγραφή. Όλες οι συνιστώσες αντικειμένων [`final()`](/ref/go#final) καλούνται, γεγονός που επιτρέπει προσαρμοσμένη εκκαθάριση. Στη συνέχεια, τα αντικείμενα διαγράφονται και η κύρια συλλογή εκφορτώνεται.
+
+## Αρχικοποίηση
+
+Αυτό το διάγραμμα περιέχει μια πιο λεπτομερή ανάλυση των βημάτων προετοιμασίας. Τα βήματα που περιλαμβάνονται στο πέρασμα "μηνύματα αποστολής" (ακριβώς πριν από "δυναμικά αντικείμενα αναπαραγωγής") έχουν τεθεί σε ξεχωριστό μπλοκ προς τα δεξιά για σαφήνεια.
+
+![Lifecycle overview](images/application_lifecycle/application_lifecycle_init.png)
+
+Η μηχανή παίρνει πραγματικά πολύ περισσότερα βήματα κατά την αρχικοποίηση, προτού φορτωθεί η κύρια συλλογή. Ο προγραμματιστής μνήμης, οι υποδοχές, τα γραφικά, το HID (συσκευές εισόδου), ο ήχος, η φυσική και πολλά άλλα έχουν ρυθμιστεί. Η διαμόρφωση της εφαρμογής (`game.project`) φορτώνεται και ρυθμίζεται επίσης.
+
+Το πρώτο σημείο εισαγωγής που ελέγχεται από το χρήστη, στο τέλος της αρχικοποίησης του κινητήρα, είναι η κλήση στη συνάρτηση `init()` του τρέχοντος σεναρίου απόδοσης.
+
+Στη συνέχεια φορτώνεται και αρχικοποιείται η κύρια συλλογή. Όλα τα αντικείμενα του παιχνιδιού στη συλλογή εφαρμόζουν τις μεταμορφώσεις τους (μετάφραση (αλλαγή θέσης), περιστροφή και κλιμάκωση) στα παιδιά τους. Στη συνέχεια καλούνται όλες οι συνιστώσες `init()`.
+
+::: υποσημείωση
+Η σειρά με την οποία καλούνται οι συνιστώσες αντικειμένου παιχνιδιού `init()` δεν έχει καθοριστεί. Δεν πρέπει να υποθέσετε ότι η μηχανή αρχικοποιεί αντικείμενα που ανήκουν στην ίδια συλλογή με συγκεκριμένη σειρά.
+:::
+
+Δεδομένου ότι ο κώδικας `init()` μπορεί να δημοσιεύσει νέα μηνύματα, να πει στα εργοστάσια να γεννήσουν νέα αντικείμενα, να επισημάνουν αντικείμενα για διαγραφή και να κάνουν κάθε είδους πράγματα, η μηχανή εκτελεί ένα πλήρες πέρασμα "μετά την ενημέρωση". Αυτό το πάσο πραγματοποιεί την παράδοση μηνυμάτων, την πραγματική εργοστασιακή αναπαραγωγή αντικειμένων παιχνιδιών και τη διαγραφή αντικειμένων. Σημειώστε ότι το πέρασμα μετά την ενημέρωση περιλαμβάνει μια ακολουθία "αποστολών μηνυμάτων" που όχι μόνο στέλνει μηνύματα σε ουρά αλλά και χειρίζεται μηνύματα που αποστέλλονται σε διακομιστές μεσολάβησης συλλογής. Τυχόν επόμενες ενημερώσεις στους διακομιστές μεσολάβησης (ενεργοποίηση και απενεργοποίηση, φόρτωση και σήμανση για εκφόρτωση) πραγματοποιούνται κατά τη διάρκεια αυτών των βημάτων.
+
+Μελετώντας το παραπάνω διάγραμμα αποκαλύπτεται ότι είναι πλήρως δυνατή η φόρτωση ενός [collection proxy](/manuals/collection-proxy) κατά τη διάρκεια του `init()`, βεβαιωθείτε ότι όλα τα περιεχόμενα αντικείμενα έχουν αρχικοποιηθεί και, στη συνέχεια, ξεφορτώστε τη συλλογή μέσω του διακομιστή μεσολάβησης---όλα αυτά πριν από την κλήση του πρώτου στοιχείου `update()`, δηλαδή πριν η μηχανή αποχωρήσει από το στάδιο προετοιμασίας και εισέλθει στο βρόχο ενημέρωσης:
+
+```lua
+function init(self)
+    print("init()")
+    msg.post("#collectionproxy", "load")
+end
+
+function update(self, dt)
+    -- The proxy collection is unloaded before this code is reached.
+    print("update()")
+end
+
+function on_message(self, message_id, message, sender)
+    if message_id == hash("proxy_loaded") then
+        print("proxy_loaded. Init, enable and then unload.")
+        msg.post("#collectionproxy", "init")
+        msg.post("#collectionproxy", "enable")
+        msg.post("#collectionproxy", "unload")
+        -- The proxy collection objects’ init() and final() functions
+        -- are called before we reach this object’s update()
+    end
+end
+```
+
+## Ο βρόχος ενημέρωσης
+
+Ο βρόχος ενημέρωσης διατρέχει μια μεγάλη ακολουθία μία φορά κάθε καρέ. Η ακολουθία ενημέρωσης στο παρακάτω διάγραμμα χωρίζεται σε λογικά μπλοκ ακολουθίας για σαφήνεια. Το "Αποστολή μηνυμάτων" διαχωρίζεται επίσης ξεχωριστά για τον ίδιο λόγο:
+
+![Update loop](images/application_lifecycle/application_lifecycle_update.png)
+
+## Είσοδος
+
+Η είσοδος διαβάζεται από τις διαθέσιμες συσκευές, αντιστοιχίζεται με [input bindings](/manuals/input) και στη συνέχεια αποστέλλεται. Κάθε αντικείμενο παιχνιδιού που έχει αποκτήσει εστίαση εισόδου αποστέλλεται είσοδος σε όλες τις συναρτήσεις του `on_input()`. Ένα αντικείμενο παιχνιδιού με ένα στοιχείο δέσμης ενεργειών και ένα στοιχείο GUI με ένα script GUI θα λάβει είσοδο στις συναρτήσεις `on_input()` και των δύο στοιχείων---δεδομένου ότι έχουν οριστεί και ότι έχουν αποκτήσει input focus.
+
+Κάθε αντικείμενο παιχνιδιού που έχει αποκτήσει εστίαση εισόδου και περιέχει στοιχεία διακομιστή μεσολάβησης αποστολής εισόδου σε στοιχεία εντός της συλλογής διακομιστή μεσολάβησης. Αυτή η διαδικασία συνεχίζεται αναδρομικά κάτω με ενεργοποιημένους διακομιστές μεσολάβησης εντός ενεργοποιημένων διακομιστών μεσολάβησης.
+
+## Ενημέρωση - Update
+
+Κάθε στοιχείο αντικειμένου παιχνιδιού στην κύρια συλλογή διασχίζεται. Εάν οποιοδήποτε από αυτά τα στοιχεία έχει μια συνάρτηση `update()`, τότε θα καλείται. Εάν το στοιχείο είναι διακομιστής μεσολάβησης, κάθε στοιχείο στη συλλογή μεσολάβησης ενημερώνεται αναδρομικά με όλα τα βήματα στην ακολουθία "ενημέρωση" στο παραπάνω διάγραμμα.
+
+::: υποσημείωση
+Η σειρά με την οποία καλούνται οι λειτουργίες του στοιχείου παιχνιδιού `update()` δεν έχει καθοριστεί. Δεν πρέπει να υποθέσετε ότι η μηχανή ενημερώνει αντικείμενα που ανήκουν στην ίδια συλλογή με συγκεκριμένη σειρά.
+:::
+
+Στο επόμενο βήμα αποστέλλονται όλα τα αναρτημένα μηνύματα. Δεδομένου ότι οποιοσδήποτε κωδικός "on_message ()" του παραλήπτη μπορεί να δημοσιεύσει επιπλέον μηνύματα, ο αποστολέας μηνυμάτων θα συνεχίσει να αποστέλλει αναρτημένα μηνύματα έως ότου η ουρά μηνυμάτων είναι κενή. Υπάρχει, ωστόσο, ένα όριο στον αριθμό των εκτελέσεων στην ουρά μηνυμάτων που εκτελεί ο αποστολέας μηνυμάτων. Ανατρέξτε στην ενότητα [Message passing](/manuals/message-passing) και στην ενότητα "Advanced topics - Προχωρημένα θέματα" για λεπτομέρειες.
+
+Για στοιχεία αντικειμένου collision, αποστέλλονται μηνύματα φυσικής (collisions, triggers, ray_cast responses etc) σε όλο το αντικείμενο παιχνιδιού και σε όλα τα στοιχεία που περιέχει ένα script με συνάρτηση `on_message()`.
+
+Έπειτα, οι μετασχηματισμοί πραγματοποιούνται, εφαρμόζοντας οποιαδήποτε κίνηση αντικειμένου παιχνιδιού, περιστροφή και κλιμάκωση σε κάθε στοιχείο αντικειμένου παιχνιδιού και σε οποιοδήποτε στοιχείο αντικειμένου παιδικού παιχνιδιού.
+
+## Ενημέρωση απόδοσης - Render update
+
+Το μπλοκ ενημέρωσης απόδοσης αποστέλλει μηνύματα στην υποδοχή `@render` socket (camera component `set_view_projection` messages, `set_clear_color` messages etc). Στη συνέχεια καλείται το script απόδοσης `update()`.
+
+## Δημοσίευση ενημέρωσης - Post update
+
+Μετά τις ενημερώσεις, εκτελείται μια ακολουθία ενημέρωσης μετά. Εκφορτώνει από διακομιστές μεσολάβησης συλλογής μνήμης που επισημαίνονται για εκφόρτωση (αυτό συμβαίνει κατά τη σειρά "αποστολή μηνυμάτων"). Κάθε αντικείμενο παιχνιδιού που έχει επισημανθεί για διαγραφή θα καλέσει όλες τις λειτουργίες του `final()` όλων των στοιχείων του, εάν υπάρχουν. Ο κώδικας στις συναρτήσεις `final()` δημοσιεύει συχνά νέα μηνύματα στην ουρά, οπότε εκτελείται ένα πέρασμα «μηνυμάτων αποστολής».
+
+Κάθε εργοστασιακό στοιχείο που έχει πει να δημιουργήσει ένα αντικείμενο παιχνιδιού θα το κάνει στη συνέχεια. Τέλος, τα αντικείμενα παιχνιδιού που έχουν επισημανθεί για διαγραφή στην πραγματικότητα διαγράφονται.
+
+Το τελευταίο βήμα στον βρόχο ενημέρωσης περιλαμβάνει την αποστολή μηνυμάτων `@system` messages (`exit`, `reboot` messages, toggling the profiler, starting and stopping video capture etc). Στη συνέχεια αποδίδονται γραφικά. Κατά τη διάρκεια της απόδοσης γραφικών, γίνεται λήψη βίντεο, όπως και κάθε απόδοση του οπτικού προφίλ (δείτε την [Debugging documentation](/manuals/debugging).)
+
+## Βήμα ρυθμού καρέ και χρόνου συλλογής
+
+Ο αριθμός των ενημερώσεων καρέ ανά δευτερόλεπτο (που ισούται με τον αριθμό των βρόχων ενημέρωσης ανά δευτερόλεπτο) μπορεί να οριστεί στις ρυθμίσεις του έργου ή μέσω προγραμματισμού στέλνοντας ένα μήνυμα`set_update_frequency` στην υποδοχή `@system`. Επιπλέον, είναι δυνατό να ορίσετε το _time step_ για τους διακομιστές μεσολάβησης ξεχωριστά στέλνοντας ένα μήνυμα `set_time_step` στον διακομιστή μεσολάβησης. Η αλλαγή του χρονικού βήματος μιας συλλογής δεν επηρεάζει το ρυθμό καρέ. Επηρεάζει το βήμα χρόνου ενημέρωσης φυσικής καθώς και τη μεταβλητή `dt` που μεταβιβάστηκε στην `update()`. Επίσης, σημειώστε ότι η αλλαγή του βήματος χρόνου δεν αλλάζει τον αριθμό των φορών που η `update()` θα καλείται σε κάθε πλαίσιο---είναι πάντα ακριβώς μια φορά.
+
+(See the [Collection proxy manual](/manuals/collection-proxy) and [`set_time_step`](/ref/collectionproxy#set-time-step) for details)
+
+## Οριστικοποίηση - Finalization 
+
+Όταν τερματιστεί η εφαρμογή, πρώτα ολοκληρώσει την τελευταία ακολουθία βρόχου ενημέρωσης, η οποία θα ξεφορτώσει τυχόν διακομιστές μεσολάβησης: οριστικοποίηση και διαγραφή όλων των αντικειμένων παιχνιδιών σε κάθε συλλογή μεσολάβησης.
+
+Όταν γίνει αυτό, η μηχανή εισάγει μια ακολουθία οριστικοποίησης που χειρίζεται την κύρια συλλογή και τα αντικείμενά της:
+
+![Finalization](images/application_lifecycle/application_lifecycle_final.png)
+
+Οι συναρτήσεις `final()` ονομάζονται πρώτα. Ακολουθεί μια επόμενη αποστολή μηνυμάτων. Τέλος, όλα τα αντικείμενα του παιχνιδιού διαγράφονται και η κύρια συλλογή εκφορτώνεται.
+
+η μηχανή παρακολουθεί πίσω από τα παρασκήνια το κλείσιμο των υποσυστημάτων: η διαμόρφωση του έργου διαγράφεται, το πρόγραμμα προβολής μνήμης είναι κλειστό και ούτω καθεξής.
+
+Η εφαρμογή τερματίστηκε εντελώς.

+ 10 - 0
docs/gr/manuals/install.md

@@ -0,0 +1,10 @@
+---
+title: Εγκατάσταση Defold
+brief: Αυτό το εγχειρίδιο εξηγεί τον τρόπο λήψης και εγκατάστασης του προγράμματος επεξεργασίας Defold για το λειτουργικό σας σύστημα.
+---
+
+# Εγκατάσταση Defold
+
+Η εγκατάσταση του προγράμματος επεξεργασίας Defold είναι αρκετά απλή. Κατεβάστε την έκδοση που έχει δημιουργηθεί για το λειτουργικό σας σύστημα, εξαγάγετε την και αντιγράψτε το λογισμικό σε κατάλληλη τοποθεσία.
+
+:[install](../shared/install.md)

+ 5 - 6
docs/gr/manuals/introduction.md

@@ -5,16 +5,15 @@ brief: Μια σύντομη εισαγωγή στο Defold.
 
 # Καλώς ήλθατε στο Defold
 
-Το Defold έχει σχεδιαστεί για να είναι μια επαγγελματική πλατφόρμα παραγωγής παιχνιδιών για να βοηθήσει τις ομάδες που δημιουργούν παιχνίδια να σχεδιάσουν, να χτίσουν και _ship_ παιχνίδια. Δεν είναι μια ολοκληρωμένη λύση για τα πάντα. Δεν υπάρχουν διαθέσιμα έτοιμα σύνθετα εξαρτήματα. Αντ 'αυτού, πιστεύουμε ότι η δουλειά του Defold είναι να ενδυναμώσει τις ομάδες παιχνιδιών με απλά, ισχυρά εργαλεία συνεργασίας. Αυτό σημαίνει ότι συχνά πρέπει να κάνετε περισσότερη δουλειά μόνοι σας, αλλά επίσης σημαίνει ότι η πορεία προς τον στόχο σας είναι πιο ξεκάθαρη.
-
-Εάν είστε αρχάριος ή έμπειρος προγραμματιστής, μερικές από τις ιδέες μας μπορεί να χρειαστούν λίγη ώρα για να κατανοήσουν πλήρως. Σας ενθαρρύνουμε να πειραματιστείτε, να ακολουθήσετε σεμινάρια, να διαβάσετε τα εγχειρίδια και την τεκμηρίωση API και να είστε ενεργοί στο φόρουμ για να μάθετε από άλλους χρήστες και να παρακολουθήσετε την ανάπτυξη του Defold.
+Το Defold έχει σχεδιαστεί για να είναι μια επαγγελματική πλατφόρμα παραγωγής παιχνιδιών για να βοηθήσει τις ομάδες που δημιουργούν παιχνίδια να σχεδιάσουν, να χτίσουν και να _ship_ παιχνίδια. Δεν είναι μια ολοκληρωμένη λύση για τα πάντα. Δεν υπάρχουν διαθέσιμα έτοιμα σύνθετα εξαρτήματα. Αντ 'αυτού, πιστεύουμε ότι η δουλειά του Defold είναι να ενδυναμώσει τις ομάδες παιχνιδιών με απλά, ισχυρά εργαλεία συνεργασίας. Αυτό σημαίνει ότι συχνά πρέπει να κάνετε περισσότερη δουλειά μόνοι σας, αλλά επίσης σημαίνει ότι η πορεία προς τον στόχο σας είναι πιο ξεκάθαρη.
+Εάν είστε αρχάριος ή έμπειρος προγραμματιστής, μερικές από τις ιδέες μας μπορεί να χρειαστούν λίγη ώρα για τις κατανοήσετε πλήρως. Σας ενθαρρύνουμε να πειραματιστείτε, να ακολουθήσετε σεμινάρια, να διαβάσετε τα εγχειρίδια και την τεκμηρίωση API και να είστε ενεργοί στο φόρουμ για να μάθετε από άλλους χρήστες και να παρακολουθήσετε την ανάπτυξη του Defold.
 
 ## Από πού να αρχίσω?
 
-Υπάρχει αρκετή τεκμηρίωση διαθέσιμη, με τη μορφή εγχειριδίων, τεκμηρίωσης αναφοράς API, παραδειγμάτων και οδηγών. Εάν δεν ξέρετε από πού να ξεκινήσετε, ακολουθούν ορισμένοι δείκτες:
+Υπάρχει αρκετή τεκμηρίωση διαθέσιμη, με τη μορφή εγχειριδίων, τεκμηρίωσης αναφοράς API, παραδειγμάτων και οδηγών. Εάν δεν ξέρετε από πού να ξεκινήσετε, ακολουθούν ορισμένοι δείκτες:<<<<<<< master
 
-#### Ο  συντάκτης Editor
-![Editor overview](images/introduction/editor.png){.left} [The editor overview](/manuals/editor/) είναι μια καλή εισαγωγή στον συντάκτη και θα σας βοηθήσει να μετακινηθείτε, να χρησιμοποιήσετε τα οπτικά εργαλεία και να γράψετε κώδικα. Εάν είστε εξοικειωμένοι με τα προγράμματα μοντελοποίησης 3D και τα IDE προγραμματισμού, θα πρέπει να υπάρχουν μερικές εκπλήξεις, αλλά υπάρχουν πάντα πράγματα που θα διαφέρουν από το αγαπημένο σας λογισμικό.
+#### Ο  κειμενογράφος - Editor
+![Editor overview](images/introduction/editor.png){.left} [The editor overview](/manuals/editor/) είναι μια καλή εισαγωγή στον κειμενογράφο και θα σας βοηθήσει να μετακινηθείτε, να χρησιμοποιήσετε τα οπτικά εργαλεία και να γράψετε κώδικα. Εάν είστε εξοικειωμένοι με τα προγράμματα μοντελοποίησης 3D και τα IDE προγραμματισμού, θα πρέπει να υπάρχουν μερικές εκπλήξεις, αλλά υπάρχουν πάντα πράγματα που θα διαφέρουν από το αγαπημένο σας λογισμικό.
 
 #### Απλά παραδείγματα
 ![Examples](images/introduction/examples.jpg){.left} [Our collection of simple examples](/examples/) είναι μια καλή εισαγωγή στο πώς να συνδυάσετε κομμάτια σε κάτι που λειτουργεί. Θα βρείτε ελάχιστα παραδείγματα για το πώς θα κάνετε μια μεγάλη ποικιλία από κοινά πράγματα στο Defold.