Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Δεν ξέρω πόσοι Έλληνες και Κύπριοι γνωρίζουν ή και δουλεύουν με Haxe. Δεν έχω γνωρίσει ακόμα κανέναν. Αποφάσισα λοιπόν να γράψω ένα εισαγωγικό tutorial για την Haxe να την γνωρίζουν περισσότεροι Έλληνες και Κύπριοι που ασχολούνται με προγραμματισμό. Αν ξέρετε ή δουλεύετε με Haxe, απαντήστε παρακάτω. Θα χαρώ πολύ να σας γνωρίσω έστω και από εδώ!

Τι είναι η Haxe;

Η Haxe αποτελείται από μια υψηλού επιπέδου και ανοιχτού κώδικα γλώσσα προγραμματισμού και τον compiler. Είναι πλήρως συμμορφωμένη με το ECMAScript και είναι εύκολη στην εκμάθηση, ειδικά αν υπάρχει οικειότητα με γλώσσες όπως η C++, PHP, JAVA, AS3 και άλλες OOP γλώσσες.

 

Τι κάνει την Haxe να ξεχωρίζει;

Αυτό που κάνει την Haxe να ξεχωρίζει είναι ο compiler, ο οποίος  μπορεί να κάνει τον κώδικα που είναι γραμμένος σε Haxe, transpiled σε άλλες γλώσσες. Ενδεικτικά θα αναφέρω μερικές: python, lua, C++, C#, JAVA, PHP, JavaScript. Διαβάστε σχετικά περισσότερα εδώ.

 

Κάποιες από τις περιπτώσεις χρήσεων

Παιχνίδια

Η Haxe μπορεί να χρησιμοποιηθεί σε δημιουργία παιχνιδιών. Το transpiling επιτρέπει το compilation σε άλλες πλατφόρμες με native κώδικα. Γράφουμε τον κώδικα μια φορά σε Haxe και μπορούμε να εκδώσουμε το παιχνίδι σε πολλές πλατφόρμες με λίγες αλλαγές, έχοντας και το πλεονέκτημα της ταχύτητας του native code. Ενδεικτικά κάποιες πλατφόρμες: Windows, Mac, Linux, Mobile, HTML5, κονσόλες όπως το Playstation  

 

Web

Χρησιμοποιώντας μόνο μία γλώσσα, την Haxe, μπορούμε να γράψουμε το client side (πχ transpiling σε JS) και το server side (πχ transpiling σε PHP). Σε κάθε περίπτωση μπορούν συνδυαστικά να χρησιμοποιηθούν υπαρκτές βιβλιοθήκες JS, python, Java κλπ κατάλληλες στο σενάριο χρήσης.

 

Εφαρμογές

Όπως και στα παιχνίδια τα ίδια ισχύουν πάνω-κάτω και εδώ. Υπάρχουν βιβλιοθήκες που δίνουν native look στις εφαρμογές.

Περισσότερες περιπτώσεις χρήσεως εδώ

 

Ένα μίνι εισαγωγικό tutorial

Τα προτεινόμενα IDEs είναι τo Visual Studio code και το Haxedevelop (ή ακόμα και το Flashdevelop). Η προσωπική μου προτίμηση είναι το VS code. Για αυτό το mini tutorial μπορείτε να χρησιμοποιήσετε ακόμα και κάτι πιο γενικής χρήσης όπως το notepad++. Στο παρόν tutorial θα κάνω τις απαραίτητες ενέργειες στην γραμμή εντολών, ώστε να μπορεί να το παρακολουθήσει ο κάθε ένας χωρίς να τον περιορίζει η επιλογή του IDE. Επιπρόσθετα αν δω ότι υπάρχει ενδιαφέρον, μελλοντικά θα επεκταθώ περισσότερο στα IDEs και στο «σετάρισμά» τους.

Ξεκινάμε λοιπόν! Κατεβάστε την Haxe από εδώ. Την ώρα που γράφω το tutorial η τελευταία σταθερή έκδοση είναι η 4.2.4. Για να σιγουρευτείτε ότι όλα πήγαν καλά μετά την εγκατάσταση, γράψτε haxe σε μια γραμμή εντολών και θα δείτε ένα κατεβατό.

Δημιουργήστε κάπου στον σκληρό έναν φάκελο με το όνομα HelloHaxe (ή ότι άλλο θέλετε), μπείτε στον φάκελο και δημιουργήστε ένα αρχείο με το όνομα Main.hx

Asset-1.png

Ανοίξτε το Main.hx και γράψτε τις παρακάτω γραμμές κώδικα:
 

class Main
{
    static function main() {
        trace("Hello Haxe");
    }
}

 

Ουσιαστικά πρόκειται για ένα απλό “Hello World”

Μπείτε στο φάκελο που δημιουργήσατε το αρχείο μέσω powershell ή command prompt ή με terminal αν έχετε linux. Για λόγους απλότητας/συντομίας μπήκα με command prompt.

Asset-2.png

Ας κάνουμε transpiring σε python. Πάντα μέσα στον φάκελο HelloHaxe, γράψτε:

haxe -main Main --python Main.py

Asset-3.png

Έπειτα γράψτε dir ή το ανάλογο του λειτουργικού σας. Θα δείτε ότι έχει δημιουργηθεί το αρχείο Main.py

Asset-4.png

Αν έχετε εγκατεστημένη την python μπορείτε να το δοκιμάσετε:

Asset-5.png

Το να γράφουμε μακρινάρια τύπου «haxe –class-cath src -main Main --python Main.py» δεν βολεύει, γι’ αυτό ας αυτοματοποιήσουμε λίγο την διαδικασία και με την ευκαιρία ας σουλουπώσουμε λίγο το φάκελο του project.

Διαγράψτε το Main.py

Δημιουργήστε ένα αρχείο με όνομα build.hxml και γράψτε:
 

#Που βρίσκεται ο Haxe κώδικας που γράφουμε
--class-path src
#Ποιο είναι το Class που θα αρχίσει ο κώδικας να εκτελείται  
-main Main
#Σε τι γλώσσα να γίνει transpile και που να σωθεί
--python bin/python/Main.py

 

Όπως θα καταλάβατε όταν μία γραμμή ξεκινάει από #, θα αγνοηθεί από τον compiler

Δημιουργήστε έναν φάκελο με όνομα src και μεταφέρετε εκεί το Main.hx. Θα πρέπει να είναι κάπως έτσι:

Asset-6.png

 

Στην γραμμή εντολών μέσα στο φάκελο HelloHaxe γράψτε:

haxe build.hxml

Δημιουργήθηκε πάλι το Main.py, αλλά αυτή τη φορά στο φάκελο bin/python/ ωραία και τακτοποιημένα.

Με το build.hxml δεν χρειάζεται να γράφουμε ξανά και ξανά με το χέρι οδηγίες για τον compiler και αξίζει να αναφερθεί πως με ένα σεταρισμένο IDE δεν χρειάζεται να γράψουμε καθόλου στην γραμμή εντολών.

Ας κάνουμε transpiling και σε JavaScript. Στο build.xhml βάλτε # στο --python bin/python/Main.py και γράψτε από κάτω:

--js bin/js/Main.js

Ώστε να το build.hxml να είναι κάπως έτσι:
 

#Που βρίσκεται ο Haxe κώδικας που γράφουμε
--class-path src
#Ποιο είναι το Class που θα αρχίσει ο κώδικας να εκτελείται  
-main Main
#Σε τι γλώσσα να γίνει transpile και που να σωθεί
#--python bin/python/main.py
--js bin/js/Main.js

Έπειτα γράψτε στην γραμμή εντολών ξανά:

 haxe build.hxml

…και δείτε στο bin/js/ το αρχείο Main.js που δημιουργήθηκε.

 

Δοκιμάστε και σε lua:

#Που βρίσκεται ο Haxe κώδικας που γράφουμε
--class-path src
#Ποιο είναι το Class που θα αρχίσει ο κώδικας να εκτελείται  
-main Main
#Σε τι γλώσσα να γίνει transpile και που να σωθεί
#--python bin/python/main.py
#--js bin/js/Main.js
--lua bin/lua/Main.lua

Και σε C++:

#Που βρίσκεται ο Haxe κώδικας που γράφουμε
--class-path src
#Ποιο είναι το Class που θα αρχίσει ο κώδικας να εκτελείται  
-main Main
#Σε τι γλώσσα να γίνει transpile και που να σωθεί
#--python bin/python/main.py
#--js bin/js/Main.js
#--lua bin/lua/Main.lua
--cpp bin/cpp

Εδώ παρατηρούμε το εξής: Όταν το target θα παράγει περισσότερα από ένα αρχεία (περιπτώσεις C++, C#, JAVA μεταξύ άλλων), τότε γράφουμε μόνο το path.

Επιπρόσθετα όταν επιχειρήσουμε να κάνουμε το compile θα πάρουμε το εξής μήνυμα:

Asset-7.png

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

Για να μπορέσουμε να κάνουμε transpiling σε C++, πρέπει να κατεβάσουμε την βιβλιοθήκη hxcpp. Αυτό γίνεται εύκολα με το haxelib. Ένα εργαλείο φτιαγμένο για αυτή τη δουλειά. Επομένως γράψτε στην γραμμή εντολών:

haxelib install hxcpp

…και θα κατεβάσει την βιβλιοθήκη μαζί με τυχόν dependencies. Δοκιμάστε τώρα να κάνετε compile και θα γίνει, άλλα θα πάρει λίγη ώρα παραπάνω, τουλάχιστον το πρώτο build.

Κάπου εδώ τελειώνει το tutorial. Ελπίζω να σας φάνηκε χρήσιμο και σας ενθουσιάσει με την Haxe!

 

Haxe Frameworks και Engines

Πριν κλείσω το thread να αναφέρω ότι για χάριν απλότητας χρησιμοποιήσαμε τη Haxe σε αυτό το tutorial σκέτη, ξεροσφύρι, bareboned. Έχουν γραφτεί καταπληκτικά frameworks και engines σε Haxe που δίνουν λειτουργείες που επιταγχύνουν την παραγωγή και λύνουν τα χέρια. Θα αναφέρω εν συντομία μερικά:

OpenFl : Framework με παρόμοιο API με αυτό του flash. Οι flash veterans συνήθως αυτό επιλέγουν, για να μετατρέψουν τα παλιά τους flash projects άλλα και για τα νέα τους projects

HaxeFlixel: Κατά την γνώμη μου η καλύτερη game engine για να ασχοληθεί κάποιος που δεν έχει ξανά ασχοληθεί με την Haxe. Εύκολη στη χρήση και με το μεγαλύτερο community. Είναι η αγαπημένη μου παρεμπιπτόντως.

Heaps.io: Μία πανίσχυρη engine άλλα αρκετά bareboned. Κατάλληλη για πιο έμπειρους

Kha: Low level engine κατάλληλη για πιο έμπειρους

Armory3D: Ενσωματωμένη game engine στο blender με την Kha από κάτω

Starling: Haxe port της θρυλικής Starling

Δείτε περισσότερα frameworks/engines εδώ

...

Αν ψήνεστε για να δοκιμάσετε την Haxe, διαλέξτε κάποιο framework/engine και δοκιμάστε το. Επιπρόσθετα μπορείτε:

Κάπου εδώ τελειώνει και το thread. Αν έχετε απορίες θα προσπαθήσω όσο πιο καλά μπορώ να απαντήσω και αν δω ενδιαφέρον θα γράψω και άλλα tutorials σχετικά με την Haxe.

 

Επεξ/σία από harpwood
  • Like 6
  • Thanks 2

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...