The 2048cc game

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

The 2048cc game

Δημοσίευσηαπό migf1 » 12 Ιούλ 2014, 01:36

Οι περισσότεροι ίσως γνωρίζετε ήδη την αναπάντεχη... καταιγίδα δημοφιλίας που έχει προκαλέσει το 2048 σε Internet και σε smart-phones. Χώρια ότι έχουν βγει ήδη δεκάδες παραλλαγές και κλώνοι του.

Ένας τέτοιος κλώνος είναι και το 2048cc, που έφτιαξα σε C99. Το cc σημαίνει Console Clone (τουλάχιστον προς το παρόν), αλλά ως σύντμηση παραπέμπει στο ότι είναι γραμμένο με C (το αυθεντικό game είναι γραμμένο σε Javascript).

Ξεκίνησε από μια απλή απάντηση σε ένα νήμα του insomnia (εκεί πρωτο-άκουσα για το game) πριν από περίπου 1 μήνα. Εδώ και λίγες ημέρες το έχουμε ανεβάσει στο github με τον geomagas, και σήμερα έκανα pull την έκδοση 0.3a3 που, αν και είναι alpha-version (δηλαδή χωρίς εξαντλητικό testing), την θεωρώ αρκετά αξιοπρεπή ώστε να την ανακοινώσω και πάρα-εξω απο το insomnia.

Το παιχνίδι περιλαμβάνει ένα primitive text-user-interface, το οποίο όμως είναι skinnable και το βασικότερο όλων, είναι cross-platform. Τρέχει σε Windows, Linux, Unix και MacOSX. Αυτό όμως που κατά τη γνώμη το κάνει να ξεχωρίζει από όλους τους υπόλοιπους κλώνους, είναι πως υποστηρίζει αποθήκευση, φόρτωμα και αναπαραγωγή αρχείων replay, τα οποία είναι επίσης cross-platform. Τα αρχεία replay μπορούν να χρησιμοποιηθούν και για να αποθηκευτεί ένα μισοτελειωμένο παιχνίδι, ώστε να φορτωθεί για συνέχιση κάποια μεταγενέστερη στιγμή.

Στον φάκελο ss/ στο github μπορείτε να δείτε screen-shots από την τρέχουσα έκδοση (v0.3a3) και από την προηγούμενη (v0.3a2).

Υποστηρίζει επίσης Undo/Redo (με ποινή ότι σταματάει να κρατάει best-score), και ενσωματώνει 4 παραλλαγές του παιχνιδιού, μαζί με την αυθεντική (μπορείτε να παίξετε σε ταμπλό 4x4, 5x5, 6x6 και 8x8).

Το ανεβάσαμε στο github με το σκεπτικό να προσελκύσει κι άλλους developers, μιας και υπάρχουν αρκετές ακόμα ιδέες προς υλοποίηση.

Στις βασικές προτεραιότητες (όσο μπορούμε να τις χαρακτηρίσουμε ως τέτοιες, μιας και ο χρόνος μας αυτόν τον καιρό είναι πολύ περιορισμένος, άρα προχωράμε με αργούς ρυθμούς) είναι η προσθήκη ΑΙ (Τεχνητή Νοημοσύνη) όχι τόσο για να παίζει μόνη της όσο για να δίνει Hint στον παίκτη αν της ζητηθεί, κατά προτίμηση με 2-3 επίπεδα "αυθεντίας" (αξιοπιστίας δηλαδή των συμβουλών της). Να σημειωθεί πως υπάρχουν ήδη έτοιμες τέτοιες υλοποιήσεις σε Javascript, άρα στη χειρότερη αρκεί απλώς να μεταφραστούν σε C και να ενσωματωθούν στον κώδικα του παιχνιδιού.

Επίσης βασική προτεραιότητα είναι και η ανάπτυξη ενός ή περισσότερων GUI, x-platform ή μη. Έχει ξεκινήσει ήδη σχετική συζήτηση στο νήμα του insomnia, από αυτό εδώ το ποστ και κάτω.

Άλλες ιδέες περιλαμβάνουν την ενσωμάτωση κι άλλων παραλλαγών του game, αποθήκευση των best-score ανά παραλλαγή (ενδεχομένως και online), χρήση αρχείων settings, κλπ, κλπ.

Το πακέτο στο github περιλαμβάνει εκτελέσιμο για Windows, αλλά είναι πανεύκολο να κάνετε compile τον κώδικα με gcc (δεν υπάρχει καν Makefile, απλώς κάνετε copy & paste την γραμμή εντολών που υποδεικνύει το Readme.md αρχείο στο github). Απλώς βεβαιωθείτε πως το εκτελέσιμο αρχείο που θα παράξει ο compiler θα το βάλετε στην ίδια διαδρομή με τον φάκελο "replays/" (αλλιώς δεν θα μπορείτε να σώζετε/φορτώνετε αρχεία replays).

Αυτά λοιπόν για αρχή, καλή διασκέδαση :)
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: The 2048cc game

Δημοσίευσηαπό migf1 » 21 Ιούλ 2014, 20:09

Σε περίπτωση που θελήσει κανείς να φτιάξει αυτόνομο replay-viewer για τα replay-files του παιχνιδιού, σε οποιαδήποτε γλώσσα, με οποιοδήποτε GUI, χωρίς να χρειάζεται καν να κοιτάξει τον C κώδικα του παιχνιδιού, έκανα σήμερα το μεσημέρι ένα σχετικό ποστ στο insomnia, εξηγώντας τα περιεχόμενα των replay-files.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: The 2048cc game

Δημοσίευσηαπό Ilias95 » 21 Ιούλ 2014, 20:26

migf1 έγραψε:Σε περίπτωση που θελήσει κανείς να φτιάξει αυτόνομο replay-viewer για τα replay-files του παιχνιδιού, σε οποιαδήποτε γλώσσα, με οποιοδήποτε GUI, χωρίς να χρειάζεται καν να κοιτάξει τον C κώδικα του παιχνιδιού, έκανα σήμερα το μεσημέρι ένα σχετικό ποστ στο insomnia, εξηγώντας τα περιεχόμενα των replay-files.

Δεν είπε ότι θα το αναλάβει ο geomagas ή κατάλαβα λάθος;

Αν όχι και αν δεν έχει προχωρήσει μέχρι τότε, ίσως με ενδιέφερε να ασχοληθώ μετά την εξεταστική του Σεπτέμβρη.
Την υλοποίηση θα την έκανα σε python3 και pyqt4 (που είναι cross-platform).
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: The 2048cc game

Δημοσίευσηαπό migf1 » 21 Ιούλ 2014, 20:55

Ναι θα φτιάξει είπε ο geomagas (ξεκίνησε ήδη έναν πρόχειρο σε php/js), αλλά δεν σημαίνει ότι εμποδίζει αυτό να φτιαχτούν κι άλλοι viewers. Όσο περισσότεροι τόσο καλύτερα :)
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: The 2048cc game

Δημοσίευσηαπό migf1 » 04 Αύγ 2014, 00:38

Ανέβασα έναν GTK2 replayer για το game (zip, ~400Kb) , στον οποίον δουλεύουν τα πάντα εκτός από την αλλαγή γλώσσας (είναι το επόμενο που θα φτιάξω, πριν ανεβάσω τον replayer και στο Github).

Το zip περιέχει κώδικα (σε πολύ πρώιμη μορφή, 1st-draft) + sample replay files (μπορείτε να σώσετε και δικά σας από το κανονικό game, στο τερματικό) + 32μπιτο Windows εκτελέσιμο (θέλει 2.24.10 runtime για να τρέξει).

Με την προϋπόθεση πως έχετε ήδη GTK+2.24.10 (μπορεί να δουλεύει και με 2.24.8) sudo apt-get install libgtk2.0-dev μπορείτε να κάνετε compile τα sources:
Κώδικας: Επιλογή όλων

cd src
gcc -std=c99 -O3 *.c `pkg-config --cflags --libs gtk+-2.0`


Τον φάκελο gui/ τον έχω βάλει και μέσα στον src/ για να σας διευκολύνω, γιατί τον χρειάζεται για να κάνει compile (αλλά και για να τρέξει μετά το εκτελέσιμο).

Αν ασχοληθείτε με τον κώδικα, παρόλο που είναι 1st-draft, σημειώστε πως η ιδέα είναι ότι μόνο το gui.c καλεί public ρουτίνες από τα υπόλοιπα gui_xxx.c source modules (τα οποία με τη σειρά τους, καλούν μονάχα ρουτίνες που ορίζονται μέσα τους + public ρουτίνες του gui.c). Επίσης, πρέπει να αλλαχτεί και το auto-play από loop με g_usleep() που είναι τώρα, σε χρήση timer.

Αν έχετε χρόνο & διάθεση, κατεβάστε το και δώστε μου λίγο feedback σχετικά με προβλήματα, αβλεψίες, προτάσεις για βελτιώσεις, κλπ, πριν το βγάλω στον αέρα του Github. Thanks!

Επισυνάπτω κι ένα screen-shot (από Windows XP):
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: The 2048cc game

Δημοσίευσηαπό migf1 » 04 Αύγ 2014, 09:15

Είχε πρόβλημα o replayer! Αν τον είχατε κατεβάσει, ξανακατεβάστε τον (έβαλα ενημερωμένη έκδοση στο ίδιο link... ελπίζω να δουλεύει οκ τώρα).
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση


Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι