...και για να δούμε τι μπορούμε να κάνουμε στον τομέα αυτό, θα πρέπει να μελετήσουμε παραδείγματα από χώρες που έχουν μια πολύ καλά θεμελιωμένη βιομηχανία και ποια ήταν η συνταγή της επιτυχίας. Στην Ελλάδα έχουμε μια πολύ μικρή μυρωδιά από οργανωμένη προσπάθεια από εταιρίες όπως τις track7games ( official site ) , Anima PPD Interactive , Atropos Studios , Total Eclipse , Code Dark . Έμπνευση για τα παρακάτω αποτελούν δύο άρθρα που διάβασα, ένα για την πολιτεία της Georgia και ένα για την πόλη της Νέας Υόρκης,
Διαβάστε περισσότερα »
Πραγματικά δεν ξέρω γιατί η Hewlett Packard και η Microsoft δεν μπορούν να συνεργαστούν σωστά και να βγάλουν σωστούς drivers. Μέχρι πριν μερικές εβδομάδες, μόλις άλλαζα χρώματα στα cells σε ένα φύλλο Excel κράσαρε το Excel....κάθησα έφαγα άπειρες ώρες και τελικά βγάζοντας τον εκτυπωτή μου από προεπιλογή, όλα διορθώθηκαν. Πρόσφατα, αγόρασα έναν άλλον εκτυπωτή, πάλι HP, καινούριος driver και κάθε .doc που άνοιγα κράσαρε το word (όταν έκλεινα το word - run time error). Μία ώρα τώρα ψαχνόμουν σήμερα για να ανακλύψω
Διαβάστε περισσότερα »
Έστω ότι έχουμε έναν αισθητήρα, το οποίον αποκαλούμε sensor node. Αυτός ο αισθητήρας είναι μέρος, ενός ευρύτερου δικτύου αισθητήρων. Έστω τώρα ότι θέλουμε να ανακτήσουμε τα δεδομένα αυτού του αισθητήρα. Έχουν αναπτυχθεί συστήματα τα οποία "βλέπουν" κάθε sensor node σαν μια μικρή πηγή δεδομένων, και το προαναφερόμενο δίκτυο, σαν μια μεγάλη κατανεμημένη βάση δεδομένων. Όταν έχουμε όμως μια κατανεμημένη βάση δεδομένων, μας νοιάζει τι υπάρχει από κάτω; Όχι...κάνουμε SQL queries και απλά ανακτούμε τα αποτελέσματα
Διαβάστε περισσότερα »
Έστω ότι έχουμε έναν αισθητήρα, το οποίον αποκαλούμε sensor node. Αυτός ο αισθητήρας είναι μέρος, ενός ευρύτερου δικτύου αισθητήρων. Έστω τώρα ότι θέλουμε να ανακτήσουμε τα δεδομένα αυτού του αισθητήρα. Έχουν αναπτυχθεί συστήματα τα οποία "βλέπουν" κάθε sensor node σαν μια μικρή πηγή δεδομένων, και το προαναφερόμενο δίκτυο, σαν μια μεγάλη κατανεμημένη βάση δεδομένων. Όταν έχουμε όμως μια κατανεμημένη βάση δεδομένων, μας νοιάζει τι υπάρχει από κάτω; Όχι...κάνουμε SQL queries και απλά ανακτούμε τα αποτελέσματα
Διαβάστε περισσότερα »
Έστω ότι έχουμε έναν αισθητήρα, το οποίον αποκαλούμε sensor node. Αυτός ο αισθητήρας είναι μέρος, ενός ευρύτερου δικτύου αισθητήρων. Έστω τώρα ότι θέλουμε να ανακτήσουμε τα δεδομένα αυτού του αισθητήρα. Έχουν αναπτυχθεί συστήματα τα οποία "βλέπουν" κάθε sensor node σαν μια μικρή πηγή δεδομένων, και το προαναφερόμενο δίκτυο, σαν μια μεγάλη κατανεμημένη βάση δεδομένων. Όταν έχουμε όμως μια κατανεμημένη βάση δεδομένων, μας νοιάζει τι υπάρχει από κάτω; Όχι...κάνουμε SQL queries και απλά ανακτούμε τα αποτελέσματα χωρίς ιδιαίτερη αγωνία για το τι υπάρχει από κάτω. Κάπως έτσι γίνεται και με ένα δίκτυο αισθητήρων.
Ας εξηγήσω πως δουλεύει αυτός ο μηχανισμός. Έστω ότι έχω έναν υπολογιστή και ένα δίκτυο αισθητήρων και θέλω να κάνω ένα query, πώς γίνεται η επικοινωνία με τους αισθητήρες; Ανάμεσα στο δίκτυο και στον υπολογιστή, υπάρχει ένα ειδικός κόμβος-gateway που λειτουργεί ως μεσάζοντας σε αυτήν την επικοινωνία. Στέλνω εγώ μια αίτηση και εκείνος είναι υπεύθυνος να την δρομολογήσει hop-by-hop στο δίκτυο αισθητήρων. Αυτή είναι η φάση της ανάλυσης επερώτησης. Στην συνέχεια έχουμε την ανάκτηση αποτελέσματος η οποία είναι παρόμοια με την πρώτη διαδικασία αλλά σε αντίστροφη πορεία. Τόσο απλό!!!! (εχμ μάλλον δεν είναι τόσο απλό, γιατί κάπου εδώ μπαίνει η επιστήμη. Αυτή η διαδικασία πρέπει να μελετηθεί με μαθηματική ακρίβεια διότι πρέπει να πετύχουμε τη μικρότερη δυνατή κατανάλωση ενέργειας, αλλά λεπτομερής ανάλυση δεν είναι ο σκοπός μου).
Πάμε να πούμε μερικά παραδείγματα επερωτήσεων τώρα. Σε αυτούς λοιπόν τους αισθητήρες, θέλω να κάνω δύο τύπους επερωτήσεων. Κάποιες επερωτήσεις τις κάνω μια φορά (on demand) και κάποιες θέλω να τις κάνω ανα τακτα χρονικά διαστήματα. Η πρώτη κατηγορία είναι απλή και μπορούμε να σκεφτούμε πολλά παραδείγματα. Στην δεύτερη κατηγορία, για παράδειγμα, εμπίπτουν περιβαλλοντολογικές εφαρμογές. Θα θεωρήσουμε ότι έχουμε αισθητήρες θερμοκρασίας, οι οποίοι είναι τοποθετημένοι σε μια δασική έκταση. Για να ελέγχω εγώ αν υπάρχει ένδειξη αύξησης θερμοκρασίας (φωτιά), πρέπει να ελέγχω συνεχώς για μετρήσεις. Πχ σε SQL - like γλώσσα θα είχα κάτι τέτοιο
SELECT sensorId, temperature FROM sensors EVERY 30 sec
Βέβαια από εκεί και πέρα μπορούμε να παίζουμε με τα queries ώστε να παίρνουμε είτε raw data είτε αποτελέσματα με τις MIN, MAX, SUM, COUNT και AVG. Επίσης μπορούμε να παίξουμε με τα events. Αν ανιχνεύαμε φωτιά και θέλαμε να επεξεργαστούμε τα δεδομένα περαιτέρω μπορούσαμε πχ να τρέξουμε κάτι τέτοιο:
ON EVENT ret.temperature > 60 SELECT nodeId, nodeLocation, temperature FROM sensors
Έστω λοιπόν ότι γράψαμε το query μας. Ανάλογα με το τι περιγράφει η επερώτησή μας η προαναφερόμενη gateway αναλαμβάνει να το μεταδώσει καταλλήλως. Αν για παράδειγμα είχαμε και ένα WHERE στο query μας τότε αυτό θα δρομολογηθεί στον συγκεκριμένο κόμβο αντί να είχαμε broadcast (Εδω παίζουν αλγόριθμοι αναζήτησης σε γράφους που είμαι σίγουρος ότι μάθατε σε κάποιο μάθημα πολυπλοκότητας και θεωρούσατε ότι "τι μας τα λένε αυτά τώρα, αφού δεν πρόκειτε να τα χρειαστούμε...".... σιγά σιγά με έκπληξη θα καταλάβετε ότι όλα χρειάζονται :))
Τι γίνεται όμως όταν έχουμε έναν aggregation operator οπως τον SUM...Τότε τα πράγματα δυσκολεύουν. Και αν θέλαμε μέση τιμή από κάποια περιοχή; Τότε τα πράγματα δυσκολεύουν ακόμα πιο πολύ. Οι κόμβοι μεταξύ τους έχουν πληροφορίες για το ποιος είναι ο πατέρας κόμβος, ποια είναι τα παιδιά, ποια είναι τα αδέρφια κτλ. Η πληροφορία πρέπει να ταξιδέψει ανάμεσα από αυτούς τους κόμβους με τα μικρότερα μονοπάτια ανάμεσα στις παραπάνω σχέσεις. Για παράδειγμα. Στην περίπτωση του SUM δείτε το παρακάτω σχηματάκι
A B C
D E F
G H I
Έστω ότι θέλω το άθροισμα των τιμών των A,B,C αισθητήρων και η gateway είναι το G. Δείτε το λίγο.
Αν η αθροιστική πληροφορία πάει από C στο B, μετά C+B στο B και μετά A+B+C στο A και από εκεί στο D και μετά στο G έχουμε μία καλή λύση. Δεν είναι λίγοτερα μηνύματα από το να μεταφέρονταν παράλληλα οι μετρήσεις C->I, B->H , A->G και να άθροιζαν στο επίπεδο G, H, I??
Κάπως έτσι γίνεται η επερώτηση σε ένα δίκτυο αισθητήρων. Βέβαια αν πάω τώρα και πάρω ένα βιβλίο για WSN's (Wireless Sensor Networks) είμαι σίγουρος ότι έκανα την γενίκευση της τάξης των 1500 σελίδων ++... :D Αλλά γενικά, η βασική ιδέα αυτή είναι.
Τώρα για τον προγραμματιστή πραγματική σημασία έχει μόνο το πρώτο στάδιο. Αυτό που κάνει απλές επερωτήσεις στην γλώσσα του δικτύου (για απλά δίκτυα η SQL είναι η πιο κοινά χρησιμοποιούμενη γλώσσα). Οπότε αν έχετε μια εφαρμογή και θέλετε να δοκιμάσετε κάποια δεδομένα από αισθητήρες, πείτε το super duper "Έστω οτι..." και θεωρήστε ότι έχετε μια βάση με πραγματικά δεδομένα.
Enjoy science!
Διαβάζοντας το Learning from Data Streams: Processing Techniques in Sensor Networks (* springerlink), είδα κατενθουσιασμένος πως στο τελευταίο κεφάλαιο είχε αναφορά στο NXT robot της Lego (Το γνωστό ρομποτάκι που χειριζόμασταν με ενα χειριστήριο XBOX στην dte 2007, στο περίπτερο του stugu). Ο γνωστός τρόπος χειρισμού είναι μέσω του Microsoft Robotics Studio. Από ότι είδα όμως, από την παραπάνω συλλογή από papers, το να ασχολείται κάποιος με τέτοια robotakia είναι η καλύτερη εισαγωγή στο κόσμο των Wireless Sensor Networks.
Στο κεφάλαιο αυτό, λοιπόν, είχε μια περιγραφή στο robot, στον μικροελεγκτή που χρησιμοποιεί, στους διάφορους αισθητήρες που μπορούν να εφαρμοστούν πάνω του και πολλά άλλα. Το Tiny OS που αναφέρει όμως τι είναι; To tinyOS είναι αυτό που μου προκάλεσε το κύριο ενδιαφέρον , καθώς είναι κάτι που το έχω ακούσει μόνο σε περιβάλλοντα κανονικών ασύρματων δικτύων με αισθητήρες και είναι ένα ενσωματωμένο λειτουργικό σύστημα γραμμένο στην nesC. Το tinyOS είναι ανοικτού κώδικα και έτσι σκέφτηκαν ότι, τι καλύτερο να το ενσωματώσουν και σε NXT για εκπαιδευτικούς σκοπούς!!! Έτσι από αυτό το πάντρεμα, της τεχνολογίας του NXT με το TinyOS βγήκε το ΝΧΤΜΟΤΕ.
Και φυσικά το θέμα είναι εντελώς software, το τι θα κάνετε με όλες τις μετρήσεις που θα πέρνεται,αλλά αυτό είναι άλλο κεφάλαιο.
Enjoy Science 
* Τα παραπάνω links, που δείχνουν στην Springerlink είναι προσβάσιμες μόνο μέσω του δικτύου Healink (συνδρομή που έχουν σχεδόν όλα τα Ελληνικά Πανεπιστήμια. Δεν μπορώ να δώσω τα κείμενα αυτά καθεαυτά για λόγους δικαιωμάτων).
Διαβάζοντας το Learning from Data Streams: Processing Techniques in Sensor Networks (* springerlink), είδα κατενθουσιασμένος πως στο τελευταίο κεφάλαιο είχε αναφορά στο NXT robot της Lego ( Το γνωστό ρομποτάκι που χειριζόμασταν με ενα χειριστήριο XBOX στην dte 2007 , στο περίπτερο του stugu). Ο γνωστός τρόπος χειρισμού είναι μέσω του Microsoft Robotics Studio . Από ότι είδα όμως, από την παραπάνω συλλογή από papers, το να ασχολείται κάποιος με τέτοια robotakia είναι η καλύτερη εισαγωγή στο κόσμο των Wireless
Διαβάστε περισσότερα »
Διαβάζοντας το Learning from Data Streams: Processing Techniques in Sensor Networks (* springerlink), είδα κατενθουσιασμένος πως στο τελευταίο κεφάλαιο είχε αναφορά στο NXT robot της Lego ( Το γνωστό ρομποτάκι που χειριζόμασταν με ενα χειριστήριο XBOX στην dte 2007 , στο περίπτερο του stugu). Ο γνωστός τρόπος χειρισμού είναι μέσω του Microsoft Robotics Studio . Από ότι είδα όμως, από την παραπάνω συλλογή από papers, το να ασχολείται κάποιος με τέτοια robotakia είναι η καλύτερη εισαγωγή στο κόσμο των Wireless
Διαβάστε περισσότερα »
Αν και νομίζω ότι καιρό τώρα θα έπρεπε να λέμε ότι η Microsoft κάνει βήματα προς την σύναψη ειρήνης μεταξύ των δύο πλευρών (MS vs
Διαβάστε περισσότερα »
Εμπνευσμένος και επηρρεασμένος από την χθεσινή καταπληκτική παρουσίαση του Νίκου Παλλαδινού στα πλαίσια του 12ου dotNETZone.gr Community Event , κάθισα να βρω κάποιες πληροφορίες για την συγκεκριμένη θεωρία. Ξεκίνησα πρώτα από τον οδηγό σπουδών του τμήματός μου. Σε συννενόηση λοιπόν με τον καθηγητή μου Πάνο Ροντογιάννη (καθηγητή των μαθημάτων: Αρχές Γλωσσών Προγραμματισμού, Θεωρία Υπολογισμού, Σημασιολογία Γλωσσών), προτρέπω για όποιον ενδιαφέρεται, να δει για θεωρία των γλωσσών προγραμματισμού, τις διαφάνειες
Διαβάστε περισσότερα »
Εμπνευσμένος και επηρεασμένος από την χθεσινή καταπληκτική παρουσίαση του Νίκου Παλλαδινού στα πλαίσια του 12ου dotNETZone.gr Community Event , κάθισα να βρω κάποιες πληροφορίες για την συγκεκριμένη θεωρία. Ξεκίνησα πρώτα από τον οδηγό σπουδών του τμήματός μου. Σε συννενόηση λοιπόν με τον καθηγητή μου Πάνο Ροντογιάννη (καθηγητή των μαθημάτων: Αρχές Γλωσσών Προγραμματισμού, Θεωρία Υπολογισμού, Σημασιολογία Γλωσσών), προτρέπω για όποιον ενδιαφέρεται, να δει για θεωρία των γλωσσών προγραμματισμού, τις διαφάνειες
Διαβάστε περισσότερα »
Εμπνευσμένος και επηρεασμένος από την χθεσινή καταπληκτική παρουσίαση του Νίκου Παλλαδινού στα πλαίσια του 12ου dotNETZone.gr Community Event, κάθισα να βρω κάποιες πληροφορίες για την συγκεκριμένη θεωρία. Ξεκίνησα πρώτα από τον οδηγό σπουδών του τμήματός μου. Σε συννενόηση λοιπόν με τον καθηγητή μου Πάνο Ροντογιάννη (καθηγητή των μαθημάτων: Αρχές Γλωσσών Προγραμματισμού, Θεωρία Υπολογισμού, Σημασιολογία Γλωσσών), προτρέπω για όποιον ενδιαφέρεται, να δει για θεωρία των γλωσσών προγραμματισμού, τις διαφάνειες του αντίστοιχου μαθήματος (as is από τον κύριο Ροντογιάννη, τον οποίο ευχαριστώ πολύ για την παραχώρηση).
Θεωρώ ότι τα παραπάνω αποτελούν το ground zero για να ξεκινήσει κάποιος. Απλές και κατανοητές διαφάνειες που σε βάζουν στο νόημα αμέσως.
Συνεχίζοντας λοιπόν αυτή τη μικρή αναζήτηση γύρω από τα Design Patterns, σήμερα θα μιλήσουμε για το Factory. Πριν αναφέρω τα χαρακτηριστικά του pattern, ακολουθώντας τον τρόπο που ξεκίνησα το προηγούμενο post μου, θα ήθελα να πω τα εξής: Έρχεται μια άλλη φάση στην ζωή του προγραμματιστή :P , που έχοντας αποφασίσει ότι θα κάνει το βήμα να μάθει να σχεδιάζει σωστά τον κώδικά του, ψάχνει να βρει πηγές που θα του δώσουν αυτό που θέλει να μάθει με τον καλύτερο και πιο κατανοητό τρόπο. Έτσι λοιπόν έκανα και εγώ...
Διαβάστε περισσότερα »
Σκέψη και γλώσσα. Σκέφτομαι, άρα υπάρχω. Τι σκέφτομαι όμως αν δεν έχω μία λέξη να το περιγράψω; Άρα δεν μπορώ ακόμα να
Διαβάστε περισσότερα »
Σήμερα ξεκίνησα ένα δεύτερο blog για XNA Game Programming, όπου θα κοιτάζουμε διάφορα θέματα γύρω από την πλατφόρμα της microsoft για προγραμματισμό παιχνιδιών. Μπορείτε να το καλωσορίσετε εδώ Ελπίζω να περάσουμε όμορφα προγραμματίζοντας, γιατί όπως λέει ένας φίλος μου.... ο προγραμματισμός είναι τέχνη και συνεχίζοντας θα συμπληρώσω εγώ...και το game programming ή ισχυρότερη έκφανσή του. Cheers, Άγγελος Μοιραστείτε τη δημοσίευση: email-it! | Share on Facebook | ForaCamp.gr! | DigMe! | BobIt! | Buzz! | CheckIt!
Διαβάστε περισσότερα »
Γνωρίσαμε το παιχνίδι Theseis της track7games στο προηγούμενο post.
Ο Κώστας Μιχαλόπουλος, γνωστός και ως Bad Sector στην σκηνή των Ελλήνων προγραμματιστών, είναι μέλος της ομάδας ανάπτυξης του παιχνιδιού και μας μιλάει για τον ίδιο, την πορεία του στον χώρο του game development, για το παιχνίδι Theseis και όχι μόνο...
[SG] Πες μας λίγα πράγματα για σένα. Πώς και σε ποια ηλικία αναμίχθηκες με το προγραμματισμό παιχνιδιών; Σου αρέσει μόνο αυτό το είδος προγραμματισμού ή ασχολείσαι και με άλλα; Λίγα λόγια για σένα από την DemoScene Era, μέχρι σήμερα.
[Κώστας] Με προγραμματισμό ασχολούμαι απο περίπου 7 ετών, όταν πρωτοεμφανίστηκε υπολογιστής στο σπίτι και στην αρχή κάπως κρυφά απο τους γονείς μου. Απο την αρχή προσπάθησα να φτιάξω παιχνίδια σε GWBasic και Turbo Pascal σε έναν PC/XT με μια ATI κάρτα που υποστήριζε CGA και Hercules (αλλάζοντας έναν διακόπτη στο πίσω μέρος). Τα παιχνίδια αυτά, φυσικά, ήταν πολύ απλοϊκά, όπως για παράδειγμα το "Spider" όπου είχες έναν ASCII χαρακτήρα που κατά την τότε φαντασία μου θύμιζε αράχνη και τον μετακινούσες με τα βελάκια στην οθόνη αποφεύγοντας άλλους χαρακτήρες.
Γενικότερα μου αρέσει πολύ το game development σαν είδος προγραμματισμού και αυτό είναι που με ενδιαφέρει περισσότερο απο κάθε άλλο είδος, αφού περιλαμβάνει ένα μεγάλο εύρος πεδίων στον τομέα. Ένας game developer μπορεί να ασχοληθεί με πολλά διαφορετικά θέματα, όπως γραφικά, ήχος, ανάπτυξη συστημάτων, scripting, βάσεις δεδομένων (κυρίως σε ΜΜΟ, αλλά και σε πιο κλασσικά παιχνίδια), networking, και φυσικά γενικό optimization (σε μεγαλύτερες ομάδες προγραμματιστών συχνά ένας προγραμματιστής αναλαμβάνει το optimization κώδικα που έχουν γράψει άλλοι).
Την demoscene πρωτογνώρισα το 1999 περίπου και το 2001 πήγα στο πρώτο μου demoparty, το Digital Nexus 2001 σαν μέλος των "Nasty Bugs", το demogroup που ιδρύσαμε μαζί με ένα άλλο παιδί, τον Μιχάλη "Optimus" Κάργα. Εκεί λάβαμε μέρος στον διαγωνισμό demo (όπου πρωτοείδαμε πόσο καλοί είναι οι ASD - κάτι που το γνώρισε πρόσφατα και ο υπόλοιπος demoκόσμος με την σειρά βραβείων που έχουν κερδίσει σε παγκόσμια demoparties και οργανώσεις της σκηνής) με το demo Atsou, το οποίο ήταν βασικά εφφέ που είχε γράψει ο Optimus σε μια μικρή VGA βιβλιοθήκη που είχα γράψει και του είχα στείλει λίγο παλιότερα, τα οποία μετά ένωσα σε ένα "demo" και χρησιμοποίησα μια εικόνα που είχα φτιάξει για ένα ελληνικό diskmag που σκόπευα να φτιάξω (μέχρι τότε ο Optimus χρησιμοποιούσε την γνωστή εικόνα απο τον τίτλο του Doom 1).
Σήμερα δεν είμαι ιδιαίτερα active αφού τόσο εγώ, όσο και τα υπόλοιπα μέλη του group, αλλά συχνά παρακολουθώ τις εξελίξεις, ιδιαίτερα στα μεγάλα events.
[SG] Στο Theseis θεωρείς τον εαυτό σου game engine developer ή game developer;
[Κώστας] Κατ'εμέ game developers είναι όλοι όσοι ασχολούνται για την ανάπτυξη ενός παιχνιδιού, είτε είναι προγραμματιστές, είτε καλλιτέχνες, είτε μουσικοί. Αν έχεις συνεισφέρει στην γενικότερη εμπειρία του παιχνιδιού, είσαι game developer. Προσωπικά, λοιπόν, θεωρώ τον εαυτό μου game developer :-)
[SG] Με τι εργαλεία δουλέψατε για τον σχεδιασμό των οπτικών στοιχείων ώστε να παράγετε το φοβερό αποτέλεσμα πιστής αντιγραφής αληθινών περιοχών (όπως αυτές που βλέπουμε στα screenshots στο Μοναστηράκι);
[Κώστας] Τα εργαλεία είναι διάφορα και τις λεπτομέρειες τις γνωρίζουν οι καλλιτέχνες της εταιρίας, αλλά γενικότερα χρησιμοποιούμε τα "standard" εργαλεία που χρησιμοποιούν οι εταιρίες του χώρου, όπως το 3D Studio και το Photoshop.
[SG] Χρησιμοποιείτε κάποια 3rd party engine ή έχετε σχεδιάσει εκ του μηδενός δική σας; Πώς γινόταν η κατανομή εργασιών ανάμεσα στα μέλη της ομάδας για τον σχεδιασμό της;
[Κώστας] Η μηχανή είναι εκ του μηδενός δική μας. Οι εργασίες κατανέμονται με έναν πολύ απλό τρόπο: έχουμε μια λίστα με τις εργασίες που πρέπει να γίνουν και όταν κάποιος τελειώσει σε ότι δουλεύει, επιλέγει την επόμενη. Έτσι ο καθένας δουλεύει σε αυτό που τον βολεύει περισσότερο. Φυσικά γίνεται κάθε φορά μια μικρή συννενόηση σχετικά με το τι περίπου θα ασχοληθεί ο καθένας.
Αυτά είναι εύκολα ζητήματα όταν οι προγραμματιστές είναι μόνο τρεις :-).
[SG] Ποιές τεχνολογίες έχετε κάνει integrate και πώς την έχετε προδιαγράψει για platform independence. Ποιες σχεδιαστικές επιλογές κάνατε για να το πετύχετε(Για παράδειγμα, endianess ανάμεσα σε XBOX και PC);
[Κώστας] Σχεδόν τα πάντα, με εξαίρεση κάποιες βασικές βιβλιοθήκες για φόρτωμα εικόνων, είναι γραμμένα εκ νέου απο εμάς. Η ανάπτυξη έγινε κυρίως σε PC, αλλά κάποιοι απο εμάς είχαμε (και έχουμε) πρόσβαση σε big endian μηχανήματα (βασικά κάποια παλιά μηχανήματα της SGI) και φροντίσαμε τα διάφορα κομμάτια της μηχανής να δουλεύουν ανεξαρτήτως endianess δοκιμάζοντας τα εκεί.
[SG] Ποιες τεχνολογίες χρησιμοποιήσατε για την ανάπτυξη του παιχνιδιού στον τομέα των γραφικών; Με τι κριτήρια τις επιλέξατε;
[Κώστας] Τα περισσότερα απο τα κομμάτια της μηχανής είναι ανεξάρτητα απο συγκεκριμένες τεχνολογίες. Τώρα χρησιμοποιούμε Direct3D 9, αλλά εύκολα η μηχανή μετατρέπεται έτσι ώστε να δουλέυει με OpenGL (για την ακρίβεια ήδη υπάρχει ένα μεγάλο μέρος ενός OpenGL implementation του backend για το σύστημα γραφικών).
[SG] Υπήρξε σημείο που χρειάστηκε να κατατεθεί όλη η ενέργεια της ομάδας για την επίλυση κάποιου προγραμματιστικού προβλήματος; Αν ναι τι φύσης ήταν αυτό (Memory Management, Multithreading,…) και τι αποκόμισες από αυτήν την εμπειρία;
[Κώστας] Όσο είμαι στην εταιρία, δεν έχει χρειαστεί κάτι τέτοιο. Συνήθως όλοι δουλεύουν σε όλα, χωρίς ιδιαίτερα προβλήματα.
[SG] Πώς χειριστήκατε την τεχνητή νοημοσύνη στο παιχνίδι; Χρησιμοποιήσατε κάποια scripting language;
[Κώστας] Χρησιμοποιούμε την γλώσσα UndeadScript που ξεκίνησα να σχεδιάζω πριν 4 χρόνια για την δική μου μηχανή, Undead, αλλά εξελίχθηκε σε αυτόνομη μηχανή για scripting. Μια και εγώ προσωπικά είμαι υπεύθυνος για το όλο θέμα με το scripting, προτίμησα να χρησιμοποιήσω μια βιβλιοθήκη που μου είναι πολύ οικεία :-).
Για όσους ενδιαφέρονται, η σελίδα της UndeadScript είναι http://www.slashstone.com/more/uscript (σημειώστε πως η σελίδα για την ώρα δεν παίζει σε IE6)
[SG] Έχεις μπροστά σου έναν νέο game developer. Τι θα τον συμβούλευες; Υπάρχει η τέλεια συνταγή σε αυτά που πρέπει να μάθει σχετικά με game development; Κοινώς, να μάθει γραφικά πρώτα και μετά να προχωρήσει στο game development ή θα μάθει γραφικά στην πορεία του game development;
[Κώστας] Τέλεια συνταγή δεν υπάρχει για τίποτα. Κάθε προγραμματιστής οφείλει να γνωρίζει οτι για κάθε πρόβλημα υπάρχουν πολλές λύσεις. Σίγουρα κάποιες είναι καλύτερες απο άλλες, αλλά το σημαντικότερο είναι πρωτίστως να λυθεί το πρόβλημα και μετά αν χρειάζεται να αναζητάται μια καλύτερη λύση. Αυτό ισχύει για σχεδόν οτιδήποτε στον προγραμματισμό :-).
Υπάρχει μια γενική παρεξήγηση στο game development όμως. Ένα παιχνίδι δεν αρχίζει και τελειώνει στα γραφικά, αλλά έχει πολύ περισσότερα πράγματα πίσω. Προσωπικά θα πρότεινα να ασχοληθεί κάποιος με την ανάπτυξη ενός απλού παιχνιδιού, όπως το pong, ώστε να κατανοήσει την ροή ενός παιχνιδιού.
Τα γραφικά, αν και είναι ένα απο τα σημαντικότερα κομμάτια του παιχνιδιού (ένα άλλο είναι το interaction -events, handlers, scripting, κλπ- που χωρίς αυτό έχεις απλά έναν renderer και τίποτα περισσότερο), αλλά είναι επίσης κι ένα κομμάτι που αλλάζει πολύ γρήγορα. Το 1996 με πάνω κάτω ίδιο τρόπο έφτιαχναν το interaction με σήμερα, αλλά το 90% των μεθόδων γραφικών έχει αλλάξει, με τα απολύτως βασικά να μένουν τα ίδια (και κανείς δεν εγγυάται πως ούτε αυτά δεν θα αλλάξουν στο μέλλον).
Αν κάποιος μόλις ξεκινάει να μαθαίνει game development, του προτείνω να μάθει τα απολύτως απαραίτητα όσο αφορά τα γραφικά, γιατί στην αρχή θα τον απασχολούν άλλα θέματα (υπάρχει κόσμος για παράδειγμα, που δυσκολεύεται στο timing). Στην αρχή θα πρέπει να ασχοληθεί με την ανάπτυξη απλών παιχνιδιών που θα τον απασχολήσουν το πολύ έναν μήνα, με τα πρώτα να μην τον απασχολήσουν πάνω απο μια εβδομάδα.
Όταν νιώθει έτοιμος για να προχωρήσει παραπέρα, τότε πιστεύω πως πρέπει να αρχίσει να μπαίνει βαθύτερα στο θέμα των γραφικών.
[SG] Τo XNA το έχεις χρησιμοποιήσει; Πώς σου έχει φανεί; Σε κάποιο μελλοντικό σας project, θα εξετάζατε την επιλογή της πλατφόρμας XNA, για την υλοποίησή του;
[Κώστας] Έχω δοκιμάσει την πρώτη έκδοση πριν λίγους μήνες, ανεξάρτητα απο την Track7 Games. Μου φάνηκε αρκετά ενδιαφέρον για σχετικά νέους στον χώρο, αλλά προσωπικά δεν θα το χρησιμοποιούσα αφού έχω αναπτύξει πολύ κώδικα σε άλλες γλώσσες για τον ίδιο σκοπό. Το μοναδικό δέλεαρ είναι το XBLA, το οποίο όμως δέχεται και σε πιο συμβατικές γλώσσες (C++). Για ένα "fun project", αν είχα XBox360 και αν δεν χρειαζόταν ετήσια συνδρομή, ίσως το χρησιμοποιούσα.
Όσο αφορά την Track7 Games, για την ώρα το Theseis είναι το σημαντικότερο project.
[SG] Μία ερώτηση φιλοσοφικού περιεχομένου τώρα: Είναι ο προγραμματισμός τέχνη;
Φυσικά! :-)
[Κώστας] Γνωρίζεις οτι οι ζωγράφοι της Ιταλικής Αναγέννησης χρησιμοποιούσαν μαθηματικά γραμμών για να αποδώσουν την προοπτική. Ο Leon Battista Alberti, ένας διάσημος καλλιτέχνης της εποχής, πρωτοχρησιμοποίησε την θεωρία του Ευκλείδη για τα παρόμοια τρίγωνα ώστε να αποδώσει μέσω μαθηματικών την προοπτική, την ίδια τεχνική που χρησιμοποιείται σήμερα για απόδοση τρισδιάστατων γραφικών στους υπολογιστές.
[SG] Γνωρίζουμε ότι είστε ένα βήμα πριν από την έκδοση του τίτλου που περιμένει ολόκληρη η Ελληνική κοινότητα των gamers (και όχι μόνο), με αγωνία. Ευχαριστούμε, για τον χρόνο σου και τώρα μία τελευταία ερώτηση…. Πότε θα δούμε το Theseis στα ράφια :);
[Κώστας] ASAP! ;-)
Ευχαριστώ θερμά τον Κώστα για την συνέντευξη που μας παραχώρησε. Πραγματικά είναι πολύ ωραίο να γνωρίζουμε εκφραστές που λαμβάνουν μέρος, στις διεθνείς εξελίξεις, του game programming. Ενός κλάδου τόοοσο κοντά στην νεανική (και μη) τρέλλα και τόσο μακριά από την χώρα μας. Ευχόμαστε τα καλύτερα στην δουλειά των παιδιών της track7games και το έργο τους να γνωρίσει διεθνή επιτυχία.

2008.... Η χρονιά που όλοι (προσ)ευχόμαστε να μπει η Ελλάδα δυναμικά στον χώρο του game development. Μέσα σε έναν χώρο που παλεύουν μεγαθήρια, διεθνώς. Το κοινό, ο πήχης που έχει ανέβει και τα χρηματικά ποσά που εμπλέκονται στον κόσμο του προγραμματισμού παιχνιδιών δεν αφήνουν πολλά περιθώρια σε ανεξάρτητες κινήσεις να δουν το φως... από κάποιο...ράφι. Μέσα σε αυτό λοιπόν τον κόσμο, έχουμε μια ελληνική εταιρεία που τολμά να αναλάβει δράση με μια πρωτοβουλία με πολλές αξιώσεις και πολλά υποσχόμενη. Αναφέρομαι
Διαβάστε περισσότερα »
Μιας και σήμερα πέρασα την τελευταία ώρα κοιτάζοντας το keynote της Microsoft στην CES θεώρησα μια καλή κίνηση να σας κάνω μια μικρή
Διαβάστε περισσότερα »
Πρόσφατα άρχισα να ψάχνω συσκευές για gps . Βρήκα προϊόντα από μια αρκετά εκτενή γκάμα τιμών που κυμαίνεται μεταξύ των 100 και 2000 ευρώ ( ). Τα 100 ήταν εξευτελιστικά useless και τα ακριβά.... απαγορευτικά ακριβά τελος πάντων . Μετά σκέφτηκα ότι αντί να δώσω τόσα χρήματα, γιατί να μην χρησιμοποιήσω το laptop μου και να το κάνω gps? Βέβαια δεν θα μπορώ να το βλέπω συνέχεια από το ταμπλώ του αυτοκινήτου, αλλά από την άλλη ούτε και τον χάρτη τον βλέπεις συνεχώς. Η εφαρμογή Η αλήθεια είναι ότι εφαρμογές δεν υπάρχουν
Διαβάστε περισσότερα »
Έρχεται μία φάση στην ζωή του προγραμματιστή που καταλαβαίνει πως κάτι του λείπει, πως ο κώδικας που γράφει είναι λίγο ελλειπής, ή ότι πρέπει να κάνει κάτι αλλά δεν είναι σίγουρος πως να το κάνει κομψά. Σχεδιάζοντας αντικειμενοστραφή προγράμματα είναι κάτι δύσκολο, σχεδιάζοντας κώδικα που θα επαναχρησιμοποιηθεί ακόμα δυσκολότερο. Εδώ έρχεται μία έννοια που έρχεται να συμπληρώσει κάθε προγραμματιστή, να βελτιώσει την τεχνική του, να μειώσει τον χρόνο και τον κόπο που καταβάλει για τον σχεδιασμό. DESIGN PATTERNS
Διαβάστε περισσότερα »
Κύρια χαρακτηριστικά στο XGS 2.0 Networking Support για Xbox 360 Windows LIVE. http://blogs.msdn.com/xna/archive/2007/11/16/xna-framework-networking-and-live-requirements.aspx Μπορει να εγκατασταθεί και σε Visual Studio Professional http://blogs.msdn.com/xna/archive/2007/12/03/xna-game-studio-and-the-fall-dashboard-update.aspx
Διαβάστε περισσότερα »
Just came back from Barcelona. I can say for sure, that TechEd is the ultimate experience for every developer and if anyone has the opportunity to be there, he should go no matter what. In this second part there are a couple of sessions that I would really...( read more )
Διαβάστε περισσότερα »
Wednesday is over too... I have decided not to write daily about the sessions I have attended, but to split my writings at two parts. One now and the other on Friday. I have attended events on all available time slots and I would really like to point...( read more )
Διαβάστε περισσότερα »
Καλησπέρα παίδες. Τετάρτη βράδυ και ο χρόνος που απομένει, έχει ήδη αρχίσει να συρρικνώνεται. Εδώ θα βρείτε φωτογραφίες από το event και σχόλια μου σχετικά με την οργάνωση και τα sessions. Enjoy!!!! Μοιραστείτε τη δημοσίευση: email-it! | bookmark to del.icio.us! | digg-it! | redd-it! | kick-it! | bookmark to technorati! | bookmark to live!
Διαβάστε περισσότερα »
Hello all, 2nd day here in Barcelona and I haven't fount some time to wander around the city. There are so many things to do here, that I spend almost all my time from session to session and from event to event. I am going to share some pictures with...( read more )
Διαβάστε περισσότερα »