vpant / thesis-p11pant-twittercityminecraftmod

Minecraft Forge Mod and Twitter Data Mining software
https://twittercity.vasilispantelis.tech
0 stars 0 forks source link

Πτυχιακή Εργασία

Όνομα Φοιτητή: Βασίλειος Παντελής

Α.Μ.: Π2011003

Θέμα πτυχιακής: Οπτικοποίηση Δεδομένων στο βιντεοπαιχνίδι Minecraft

Domain: twittercity.org

Περιεχόμενα

Παραδοτέο 1

Παραδοτέο 2

Παραδοτέο 3

Παραδοτέο 4

Παραδοτέο 5

Παραδοτέο 6

Παραδοτέο 7

Παραδοτέο 8

Τελικό παραδοτέο

Χρονοδιάγραμμα

Παραδοτέο 1

Τίτλος & περιγραφή πτυχιακής

Συλλογή και αποθήκευση δεδομένων από το κοινωνικό δίκτυο Twitter και οπτικοποίηση στον εικονικό κόσμο του βιντεοπαιχνιδιού Minecraft

Η παρούσα πτυχιακή εργασία θα ασχοληθεί με την εξόρυξη δεδομένων από το κοινωνικό δίκτυο Twitter, με την σωστή διαχείριση αυτών (φιλτράρισμα, δόμηση και αποθήκευση) και την δημιουργία Minecraft mod (συγγραφή κώδικα που θα τροποποιεί, θα προσθέτει ή/και θα αφαιρεί λειτουργίες του παιχνιδιού). Το όνομα του minecraft mod θα είναι Twitter City και το logo στην ιστοσελίδα της πτυχιακής θα έχει σχέση με αυτήν την ονομασία.

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

Το πρόγραμμα για την εξόρυξη των δεδομένων από το Twitter θα χρησιμοποιεί το Search API αναζητώντας tweets με βάση κάποια keywords όπως «χτίζω σπίτι, πόλη κ.α.» (τα παραδείγματα είναι ενδεικτικά και σίγουρα θα τροποποιηθούν κατά την διάρκεια της βελτιστοποίησης ποιότητας και σαφήνειας τον εξορυγμένων tweets). Τα tweets θα αποθηκεύονται σε βάση δεδομένων που θα είναι προσβάσιμη (πιθανόν μέσω ενός Rest API που θα υλοποιηθεί) για να την διαχειριστούν και τα υπόλοιπα κομμάτια της εργασίας.

Συνεχίζοντας, το mod που θα δημιουργηθεί θα έχει σαν κύρια ευθύνη την δημιουργία της πόλης στον κόσμο του Minecraft. Δηλαδή, για κάθε tweet που έχει αποθηκεύσει το πρόγραμμα εξόρυξης δεδομένων από το Twitter ένα block θα χτίζετε στον κόσμο του Minecraft, το οποίο θα "κρατάει" και τις πληροφορίες του Tweet (κείμενο, συγγραφέας, ημερομηνία). Συνδυάζοντας τα blocks θα χτίζονται κατασκευές που θα δημιουργούν μια πόλη. Το mod θα σχεδιαστεί έτσι ώστε να δουλεύει ανεξάρτητα εάν είναι εγκατεστημένο σε Minecraft Server ή Client. Αυτό σημαίνει ότι θα εξαρτάται μόνο από την βάση δεδομένων που θα είναι αποθηκευμένες όλες οι απαραίτητες πληροφορίες για την σωστή λειτουργία του προγράμματος. Στόχος είναι η πόλη να γίνει μέρος του παιχνιδιού και να μην γίνει μεγάλη αλλαγή στην λογική του.

Η ιστοσελίδα της πτυχιακής θα αντιπροσωπεύει την παρουσίαση του mod και των λειτουργιών του και θα απαρτίζεται από χρήσιμο περιεχόμενο όπως είναι documentation, πληροφορίες για το Rest API και σύνδεσμο στο αποθετήριο στο github που θα περιέχει τον κώδικα της πτυχιακής.

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

Παραδοτέο 2

Εύρεση αναγκαίων εργαλείων, εφαρμογή τους και μία αρχική χρήση. Δημιουργίας λίστας από τις λειτουργίες που θα ήταν επιθυμητό να απαρτίζεται το πρόγραμμα.

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

Εργαλεία

Προδιαγραφές

Χαρακτηριστικά εργασίας

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

Εμφάνιση και δόμηση (υλικό για τα σπίτια κ.α.) της πόλης

Στόχος μου είναι το τελικό αποτέλεσμα να μοιάζει όσο πιο φυσικό γίνεται, όπως για παράδειγμα σε αυτή την φωτογραφία. 2017-12-11_19 02 28 Η αρχική μου σκέψη ήταν να δημιουργώ τα κτήρια προγραμματιστικά block ανά block, εάν και είναι ο τρόπος που διαχειρίζομαι τις κατασκευές στις προηγούμενες εργασίες μου τον θεώρησα λίγο μη επεκτάσιμο και δύσκολα διαχειρίσιμο. Για αυτό μετά από λίγη έρευνα βρήκα κάποια αρχεία με την ονομασία schematics τα οποία χρησιμοποιούνται από το community του minecraft που ασχολούνται με moding για την ανταλλαγή κτηρίων, σχεδίων ακόμα και ολόκληρους κόσμους. Οπότε σκέφτομαι να προγραμματίσω ένα reader για τέτοια αρχεία που θα περιέχουν κατασκευές όπως σπίτια και ύστερα θα τα χτίζω βάζοντας προγραμματιστικά στην σωστή θέση. Επιπλέον βρήκα αυτό το πρόγραμμα το οποίο μπορεί να μετατρέψει 3D μοντέλα σε "blueprints" για minecraft, όπως θα δείτε παρακάτω, και να τα κάνει export σε .schematic αρχεία.

bb_step1_model bb_step2_voxelized

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

Client-side συγχρονισμός: δυναμική πόλη (διαφορετική για κάθε client)

Για κάθε client, πιο συγκεκριμένα για κάθε world, θα δημιουργείται μια διαφορετική πόλη έτσι ώστε ο χρήστης να έχει την επιλογή να δει μια παραλλαγμένη διαμόρφωσή της ανά δημιουργημένο κόσμο.

Textures των blocks

Στις παλιότερες εργασίες μου χρησιμοποίησα ένα block που δημιούργησα ο ίδιος και σαν texture είχε μία από τις παρακάτω εικόνες (κάθε σπίτι είχε διαφορετικό χρώμα):

blue_twitter_block_side yellow_twitter_block_side green_twitter_block_side

Παρόλα αυτά τα textures δεν φαίνονται αρκετά ωραία όταν τα βλέπεις στο σύνολό τους σε ένα κτήριο και προκαλεί μία αίσθηση μονοτονίας. Στην παρούσα εργασία τα blocks των κτηρίων θα έχουν textures από τα ήδη υπάρχοντα blocks του minecraft όπως Stone, Wood κ.α. Παρακάτω μπορείτε να δείτε τα διαθέσιμα blocks στο Minecraft.

template1

Ιστοσελίδα πτυχιακής

Ως τώρα για την ιστοσελίδα της πτυχιακής έχω δημιουργήσει το logo που θα χρησιμοποιήσω. Πιο κάτω θα επισυνάψω μια φωτογραφία του αλλά με λίγα λόγια χρησιμοποίησα ένα περίγραμμα κτηρίων τα οποία μετά από επεξεργασία στο photoshop το περίγραμμα αποτελείται από pixels όπως και τα γραφικά του Minecraft. logo2

Παραδοτέο 3

Σχεδιασμός και υλοποίηση του script που θα κάνει data mining με δυνατότητα εύκολης παραμετροποίησης των search queries. Σχεδιασμός δόμησης για το Minecraft Mod. Υλοποίηση του mod.

Σε αυτή την αναφορά θα γίνει ανάλυση της δόμησης, των χαρακτηριστικών και της περιγραφής του προγράμματος που θα κάνει εξόρυξη δεδομένων από το Twitter. Επιπλέον, θα παρουσιαστεί ενός αρχικός σχεδιασμός του προγράμματος mod για το Minecraft.

TwitterDataMiner

Συνοπτική περιγραφή

Το πρόγραμμα για την εξόρυξη των δεδομένων ονομάζεται TwitterDataMiner και ο σκοπός της λειτουργίας, περιεκτικά, είναι:

Αναλυτική και τεχνική περιγραφή

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

Το πακέτο database, όπως προδίδει και η ονομασία του, είναι υπεύθυνο για την αποθήκευση των tweets χρησιμοποιώντας την Data access object design patern για να αποξενωθεί η λογική αποθήκευσης των δεδομένων από την υπόλοιπη εφαρμογή. Οι κύριες λειτουργίες γίνονται στην κλάση StatusDAO.java όπου σε συνεργασία με τις υπόλοιπες κλάσεις του πακέτου εδραιώνουν σύνδεση στην βάση δεδομένων και ύστερα εκτελούν ερωτήματα για την αποθήκευση και την ανάκτηση των δεδομένων από αυτήν.

Το πακέτο http είναι υπεύθυνο για το χτίσιμο του http request που θα στείλουμε στο Twitter όπως και για να λάβει την απάντηση και να κρίνει εάν είναι "καλή" ή όχι (NOT_FOUND, BAD_REQUEST κ.α. δείτε HttpResponseCode.java). Το http request που χρειαζόμαστε δημιουργείται και στέλνεται στην κλάση HttpRequest.java η οποία λαμβάνει την απάντηση και την αποθηκεύει σαν στιγμιότυπο της κλάσεις HttpResponse.java το οποίο αναθέτει σε τοπικές μεταβλητές τα απαραίτητα δεδομένα και προσφέρει και μια βοηθητική μέθοδο για την μετατροπή του HttpResponse σε JSONObject.

Τέλος το πακέτο searchtwitter περιέχει το αντικείμενο TwitterSearch.java στο οποίο ορίζονται όλες οι παράμετροι όπως τα keywords που θα γίνουν search, το URL του API κ.α. και αρχικοποιεί την διαδικασία σύνδεσης με το Search API. Αφού μας επιστρέψει μια έγκυρη απάντηση το Twitter την περνάμε στο αντικείμενο SearchResult το οποίο κάνει προσπέλαση τα αποτελέσματα τις απάντησης και αποθηκεύει σε μια λίστα από στιγμιότυπα του αντικειμένου Status.java το οποίο είναι μία κλάση δεδομένων που κάθε ένα στιγμιότυπο της αντιπροσωπεύει ένα Tweet.

Για καλύτερη πληροφόρηση για την διάρκεια ζωής της εφαρμογής γίνονται logging σημαντικές πληροφορίες, σφάλματα και διάφορα δεδομένα για πιο εύκολο Debuging. Επιπλέον έχει δημιουργηθεί το αντικείμενο TwitterException.java, το οποίο κληρονομεί το αντικείμενο Exception της Java, και είναι αρμόδιο για το exception handling που χρειάζεται η εφαρμογή μας. Παρακάτω παρατίθεται ένα διάγραμμα ροής του προγράμματος. data mining diagram

TO-DOs
Προτάσεις για βελτίωση (πιθανόν δεν θα υλοποιηθούν)

TwitterCityMod

Δόμηση Minecraft Mod

Το mod που θα γραφτεί για το minecraft θα έχει ως τελικό στόχο την δημιουργίας της πόλης. Παρακάτω δίνεται επιγραμματικά η δομή που θα έχει ο κώδικας για τις κύριες εργασίες που θα χρειάζεται να εκτελούνται:

  1. Πρόσβαση, διάβασμα και δυνατότητα επεξεργασίας της βάσης δεδομένων που έχουν αποθηκευτεί τα tweets.
  2. Αποθήκευση δεδομένων τοπικά για κάθε κόσμο και πρόσβαση σε αυτά.
  3. Σύνολο αντικειμένων που θα χτίζουν τα blocks στην σωστή τους ακολουθία αποθηκεύοντας τα απαραίτητα metadata (π.χ. Tweet ID που σχετίζεται το block)
  4. User Interface που θα ανοίγει στον χρήστη όταν κάνει δεξί κλικ σε ένα tweet block και θα εμφανίζει το κείμενο του tweet και άλλες λεπτομέρειες όπως όνομα του χρήστη που το έγραψε, πότε δημιουργήθηκε κ.α.

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

Κώδικας Minecraft Mod

Το αποθετήριο της εργασίας μου αποτελείτε από δύο κλαδιά (branches), το master και το development. Και τα δύο έχουν ίδια δομή και το master θα περιέχει κώδικα ο οποίος έχει υποβληθεί στα απαραίτητα tests και είναι σταθερός (stable), ενώ στο development κλαδί (branch) θα βρίσκεται ο κώδικας που αναπτύσσεται, κατά την διάρκεια της εργασίας.

Ο κώδικας για το minecraft mod βρίσκεται στον φάκελο TwitterCityMod όπου περιέχει δύο φακέλους, java/org/twittercity/twittercitymod και resources. Ο πρώτος περιέχει το κώδικα του mod ενώ ο δεύτερος όλα τα media που χρειάζεται το mod όπως textures, εικόνες κ.ο.κ.

Σε αυτή την χρονική στιγμή το master κλαδί (branch) περιέχει κώδικα για την εύκολη δημιουργία blocks και items.

Παραδοτέο 4

Παραδοτέο 5

Παραδοτέο 6

Παραδοτέο 7

Παραδοτέο 8

Τελικό παραδοτέο

Χρονοδιάγραμμα πτυχιακής εργασίας