Skip to content

vpant/thesis-p11pant-twittercityminecraftmod

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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

Α.Μ.: Π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) και την ροή - λογική της.

Εργαλεία

  • Java JDK: γλώσσα προγραμματισμού.
  • Eclipse IDE: πρόγραμμα ανάπτυξης κώδικα (κυρίως Java).
  • Minecraft Forge API: βασική βιβλιοθήκη γραμμένη σε java που επιτρέπει την δημιουργία modifications στο minecraft.
  • Mapcrafter: πρόγραμμα που οπτικοποιεί ένα αρχείο κόσμου του minecraft σε χάρτη προσβάσιμο από browser.
  • Git: version control στο κώδικα της πτυχιακής και εύκολος συγχρονισμός του στο Github.
  • Wordpress: CMS για δημιουργία ιστοσελίδων.
  • VPS από Okeanos: φιλοξενία της ιστοσελίδας της πτυχιακής και του Minecraft server.

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

  • Minecraft Mod:
    • Χτίσιμο της πόλης ανάλογα με το πλήθος των tweets.
    • Πρόσβαση, μέσω κάποιου UI, στα tweets που έχτισαν την πόλη.
  • Πρόγραμμα εξόρυξης δεδομένων που φιλτράρει και αποθηκεύει τα δεδομένα (tweets).
  • Rest API που θα παρέχει εύκολη πρόσβαση από οποιονδήποτε (μπορεί και εγγραφή αν στο μέλλον είναι απαραίτητο από την εφαρμογή)
  • Ιστοσελίδα πτυχιακής που θα αποτελείται:
    • Rendered του map που θα χρησιμοποιεί ο Minecraft Server της πτυχιακής.
    • Documentation του Rest API.
    • Documentation κώδικα.
    • Πληροφορίες για το 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 και ο σκοπός της λειτουργίας, περιεκτικά, είναι:

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

Το πρόγραμμα έχει χωριστεί σε διάφορα κομμάτια το οποίο το καθένα έχει την δική του λειτουργία. Τα σημαντικότερα πακέτα που στα οποία έχουν υλοποιηθεί οι κύριες λειτουργίες είναι τα 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
  • Οι παράμετροι αναζήτησης να γίνονται αποθήκευση σε εξωτερικό μέσο αποθήκευσης (βάση δεδομένων, αρχείο) για δυνατότητα τροποποίησης από διαφορετική εφαρμογή ή διεπαφή.
  • Συλλογή και αποθήκευση περισσότερων πληροφοριών όπως π.χ geolocation.
  • Πειραματισμός με τα φίλτρα μέχρι να έχουμε ικανοποιητικές απαντήσεις από το Twitter.
Προτάσεις για βελτίωση (πιθανόν δεν θα υλοποιηθούν)
  • Δημιουργία admin console για ευκολότερη διαχείριση της εφαρμογής (twitter credentials, keywords που θα χρησιμοποιηθούν κ.α.)

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

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

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

  • Δήλωση θέματος και αρχικό πλάνο, εώς 15 Νοεμβρίου.
  • Εύρεση αναγκαίων εργαλείων, εφαρμογή τους και μία αρχική χρήση. Δημιουργίας λίστας από τις λειτουργίες που θα ήταν επιθυμητό να απαρτίζεται το πρόγραμμα. (15 Δεκεμβρίου)
  • Σχεδιασμός και υλοποίηση του script που θα κάνει data mining. Στόχοι: σωστοί δόμηση βάσης δεδομένων και εύκολη παραμετροποίηση των search queries. (15 Ιανουαρίου)
  • Υλοποίηση Rest API σε περίπτωση που αποφασιστεί ότι θα ωφελήσει την εφαρμογή. Σχεδιασμός δόμησης για το Minecraft Mod. Υλοποίηση του mod.(15 Φεβρουαρίου)
  • Συνέχεια υλοποίησης (πιθανόν το mod να έχει αρκετές λειτουργίες επομένως απαιτεί χρόνο). Αποφασίζουμε τι ακριβώς extra θα υλοποιηθεί (π.χ έναν search function για την πλοήγηση στην πόλη ανάλογα με τον tweets θα πρόσφερε αρκετά στο user experience) και αν θα μας φτάσει ο χρόνος. Στη διάρκεια αυτού του μήνα απαιτείται και βελτιστοποίηση των δεδομένων που γίνονται mine. (15 Μαρτίου)
  • Ολοκλήρωση κώδικα και δοκιμές τους και ξεκινάμε να χτίζουμε το dataset μας που θα απαρτίζεται στην τελική μας παρουσίαση. (15 Απριλίου)
  • Συγγραφή του γραπτού μέρους της πτυχιακής εργασίας. (15 Απριλίου)
  • Τελικό προσχέδιο αναφοράς και παρουσίασης για σχολιασμό (20%) - έως 15 Μαΐου.
  • Τελική αναφορά και παρουσίαση (30%) - 1η Ιουνίου.

About

Minecraft Forge Mod and Twitter Data Mining software

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages