Γεια σου,
χρησιμοποίησα τα τελευταία μου credits στο Claude για να φτιάξω μια έκδοση του Galaga για το CPC, και το δουλεύω ώστε να γίνει κάτι που να παίζεται.
Όπως συνήθως με όλα τα projects μου στο Claude, θέλω να είναι ένα πλήρες και λειτουργικό cpcteleraNext project, ώστε να μπορώ να το καταλάβω και, κυρίως, να κάνω τροποποιήσεις.
Καλή διασκέδαση, το Galaga είναι πραγματικά πολύ καλό παιχνίδι.
Το παιχνίδι λειτουργεί με 64KB σε κλασικό CPC και δεν χρειάζεται φόρτωση στη συνέχεια.
Σχεδόν όλος ο κώδικας είναι σε C και χρησιμοποιεί τη βιβλιοθήκη cpcteleraNext, αλλά για λόγους ταχύτητας και μέγεθους μνήμης, ορισμένες συγκεκριμένες συναρτήσεις γράφτηκαν σε assembler.
Λοιπόν, είναι μια πολύ καλή επίδειξη του τι μπορεί να γίνει με το cpcteleraNext (και το Claude.IA)
Το παιχνίδι είναι ελαφρώς απλοποιημένο, αλλά τα περισσότερα χαρακτηριστικά του αρχικού παιχνιδιού είναι παρόντα.
Ο κύριος στόχος μου ήταν να είναι εύχρηστο και διασκεδαστικό στο παιχνίδι.
Τότε ίσως αυτό ήταν που μυρίστηκα στην ανάρτησή σου; Αυτό και η δομή (ενότητες markdown) την έκαναν απλά να μοιάζει με αντιγραμμένη απάντηση από AI. Και για να είμαι εντελώς ειλικρινής, αφού έριξα μια ματιά στην ανάρτηση και ένιωσα αυτό το AI vibe, δεν τη διάβασα πραγματικά και πλήρως, οπότε παρέβλεψα το … I asked Claude to … Δικό μου το λάθος.
Μην με παρεξηγείς, όμως. Δεν είμαι κατά της χρήσης AI για έρευνα (το κάνω κι εγώ πολύ), αλλά κατά τη γνώμη μου θα έπρεπε να επισημαίνεται σαφώς ως τέτοια (και όχι να είναι κρυμμένη κάπου στη μέση μιας ανάρτησης) όταν μοιράζεσαι τα αποτελέσματα στο διαδίκτυο.
Ουάου - φαίνεται εκπληκτικό και το εκτιμώ ιδιαίτερα - αλλά είναι προφανώς αρκετά αργό. Αν μπορούσε να βελτιωθεί η ταχύτητα - θα ήταν καταπληκτικό!
Μόλις το φόρτωσα σε πραγματικό υλικό (hardware) - ένα άλλο πρόβλημα που είχα ήταν ότι δεν υπήρχε ακτίνα από τα αρχηγικά Galaga (boss Galagas) στις Πίστες 1 και 2. Τα αφήνω επίτηδες για να διπλασιαστώ για την Πίστα Πρόκλησης (Challenging Stage) - αλλά δεν υπήρχε ακτίνα - αν έχουν απομείνει عدة αρχηγικά Galaga, τουλάχιστον ένα από αυτά θα έχει ακτίνα. Αυτό είναι πολύ σημαντικό μέρος του παιχνιδιού.
Σίγουρα μπορεί να γίνει πιο γρήγορο - οι σχηματισμοί και η πίστα πρόκλησης - για την ακρίβεια, μόλις απομείνουν μόνο λίγοι χαρακτήρες στην οθόνη, μετά πάει πολύ γρήγορα.
Oπότε αυτό το παιχνίδι είναι πολύ εντυπωσιακό για έκδοση δημιουργημένη από AI - είναι λίγο αργό αλλά παίζεται και φαίνεται ωραίο.
Ωστόσο, μου επιτρέπεται να είμαι λίγο αρνητικός εδώ και να πω ότι κάτι τέτοιο μπορεί να αποθαρρύνει τους ανθρώπους προγραμματιστές από το να φτιάξουν μια έκδοση που τρέχει καλύτερα; Όπως ακριβώς οι μεταφράσεις ρετρό παιχνιδιών από AI (οι οποίες λειτουργούν, αλλά χάνουν το πνεύμα του πρωτότυπου κειμένου) έχουν κατηγορηθεί ότι αποτρέπουν τις σωστές ανθρώπινες μεταφράσεις, καθώς ορισμένοι θεωρούν ότι δεν υπάρχει λόγος, εφόσον υπάρχει μια μετάφραση που είναι ακριβής, ακόμα κι αν δεν είναι σπουδαία.
Aυτή η νέα έκδοση έχει πράγματι κάποια σημεία που χρειάζονται διόρθωση (μακάρι να μην έπαιζε τη μουσική έναρξης στην αρχή κάθε πίστας), αλλά πέτυχε πολλά πράγματα. Είναι πολύ αργή φυσικά, αλλά δείχνει πραγματικά πολύ ωραία. Ο απλός διαχωρισμός χρωμάτων από κίτρινο σε λευκό λειτουργεί εξαιρετικά. Είναι ένα καλό proof of concept. Αναρωτιέμαι πόσο πιο γρήγορα θα μπορούσε να τρέξει.
Είναι τα sprites προ-εκτοπισμένα (pre-shifted) και είναι μεταγλωττισμένα (compiled); Αν η οθόνη ήταν 32x32, οι ρουτίνες των sprites θα μπορούσαν να επιταχυνθούν λίγο. Θα υπήρχαν το πολύ περίπου 40 sprites στην οθόνη, αλλά πιο συχνά γύρω στα 20. Θα μπορούσαν να σχεδιάζονται όλα χωρίς μάσκα (unmasked) και να σβήνουν τα ίδια τα ίχνη τους, αντί να καθαρίζονται εντελώς σε κάθε καρέ.
Άλλο ένα πρόβλημα… Το Galaga έχει στην πραγματικότητα έναν τεράστιο αριθμό από sprites. Γύρω στα 80 από όσο φαίνεται. Αλλά αν υπολογίσεις και τις αλλαγές παλέτας (palette swaps), φτάνουν σχεδόν τα 150. Επίσης πρέπει να καθρεφτίζονται οριζόντια, κατακόρυφα και στα δύο, οπότε 600. Φαίνεται πως κάθε σκάφος στο παιχνίδι έχει 32 καρέ περιστροφής. Κι αν τα μετατοπίσεις εκ των προτέρων (pre-shift) για τον CPC, αυτό σημαίνει 2400 sprites. Άουτς.
Βέβαια δεν χρησιμοποιούνται όλα ταυτόχρονα. Κάποια δεν τα έχω δει ποτέ, οπότε δεν είμαι σίγουρος αν βρίσκονται στο παιχνίδι ή απλά στο sprite sheet. Ίσως θα μπορούσες να κάνεις κάτι έξυπνο με αυτοτροποποιούμενο κώδικα (self-modifying code) για να φτιάξεις sprite stamps.
Νομίζω ότι θα μπορούσες να το περιορίσεις σε 12 σκάφη x 32 περιστροφές, και να ξεχάσεις τις περισσότερες αλλαγές παλέτας, οπότε «μόνο» 384. Αν εγκαταλείψεις τα compiled sprites, μπορείς να τα αναποδογυρίσεις κατακόρυφα αρκετά εύκολα, οπότε τα μισά από αυτά. Κάνε τα να κινούνται οριζόντια μόνο ανά βήματα των 2 pixel, οπότε μειώνεις στο μισό τον αριθμό των pre-shifts… πίσω στα 384. Είναι όλα 16x16, άρα 16x4 bytes = 64 bytes το καθένα. Οπότε εντάξει, 24k δεδομένων sprite για τα σκάφη…;
Ίσως θα μπορούσες να μειώσεις και τον αριθμό των περιστροφών σε 16.
Ορίστε ένα προσχέδιο (work in progress) του GalagaPlus για CPC+ 128k (μια έκδοση για 64k βρίσκεται επίσης υπό ανάπτυξη).
Υπάρχουν ορισμένα bugs, αλλά φαίνεται πραγματικά πολύ ωραίο. Η επόμενη έκδοση θα είναι έτοιμη την επόμενη εβδομάδα, μόλις ανανεωθεί το υπόλοιπο (credit) μου στο Claude.AI.
Ήμασταν στη μέση μιας συζήτησης σχετικά με το πώς να βελτιστοποιήσουμε τη χρήση των hardware sprites και τα raster tricks.
Οπτικά φαίνεται πολύ ωραίο, αλλά οι εχθροί φαίνεται να εγκλωβίζουν το σκάφος σου υπερβολικά επιθετικά - ο μόνος τρόπος επίθεσής τους είναι «στόχευσε το σκάφος του παίκτη», κάτι που μειώνει πολύ την παιξιμότητα.
Και ενώ υπάρχει επιβράδυνση όταν οι εξωγήινοι εμφανίζονται αρχικά στην οθόνη, γίνονται απίστευτα γρήγοροι μόλις αρχίσουν να ορμούν προς τα κάτω!