Hobby Basic, ένας μικρός διερμηνευτής για την κονσόλα των Windows

Καλησπέρα σε όλοι την ρετρό παρέα.. Έχω να μπω πάρα πολύ καιρό, βασικά χρόνια.. Και νιώθω σαν να μην πέρασε μια μέρα.. Κάθε μέρα μέσα κάποτε άπειρο χαβαλές και νοσταλγία.. Τέλος πάντων σταματαω για να μην γίνω Μάρθα βούρτση ..
Ήθελα να πω κάτι σύντομου για τον blue max παιδικο μου φίλο Νίκο.. Πόσο μπροστά ήταν από εκείνα τα χρόνια.. Σε μια γειτονιά μου ειμασταν όλοι μέρα σε μια αλάνα, είχαμε δεκάδες μάλιστα στην περιοχή μας προάστιο του Πειραιά .. Ο Νίκος όταν είχε υπολογιστή εμείς παίζαμε ακόμα με τις λάσπες.. Όταν ιδικά είχε την μαγική AMIGA 500 εμείς αντε να είχαμε κανένα φορητό από το παζάρι .. Όταν με φώναζε σπίτι του να δω κανένα παιχνίδι στη amiga ήταν σαν να ταξίδευα στο μέλλον.. Θα πω εδώ και κάτι,ο Νίκος ήταν μάστερ κσι δεν όλα τα αθλήματα.. Μπάσκετ (είχες κάι δελτίο :-) ) ποδόσφαιρο κλπ κλπ.. Είδαμε επίσης για πρώτη φορά nike jordan από κοντά στα τέλη τις δεκαετίας του 80.. τέλος πάντων μην κουράζω ήταν ο άνθρωπος που με κόλλησε το μικρόβιο και έτσι το μακρινο 1987 αγόρασα από έναν άλλο φίλο μας τον Μανώλη έναν Commodore 64 γιατί ο Μανώλης ήθελε να τα λεφτά να πάρει ποδήλατο .. 15.000 δρχ.. Δεν ήταν λίγα τότε.. Πως κατάφερα τους γονείς ένας θεός ξέρει και όχι τόσο για τα χρήματα αλλά για τον φόβο.. Μην κολλήσω μέσα στο σπίτι μέχρι μην χαλασει η τηλεόραση.. Με τον αδερφό blue max ζήσαμε απίστευτα παιδιά χρόνια.. Εγώ συνέχισα πέρασαν από τα χέρια μου τα πάντα σχεδόν από υπολογιστές και κονσόλες.. Και μετά σαν συλλέκτης πριν ακόμα γίνει μόδα και οι τιμές φτάσουν εδώ που έχουν φτάσει γιατί κάποιοι το κάνουν και εμπόριο τέλος πάντων άλλη ιστορία αυτή.. Νίκο δεν σταμάτησες ποτέ αυτό που αγαπάς, να προγραμματίζεις και σε θαυμάζω για αυτό γιατί εγώ σε αυτό το κομμάτι δεν είχα την υπομονή φυσικά και τη γνώση της δική σου.. Συγνώμη παιδιά αν είναι άσχετο με το θέμα αλλά θέλω την κατανόηση σας, είναι πολλά τα χρόνια που είμαι απών από το αγαπημένο μου φόρουμ και ήθελα έτσι να πω δυο λόγια για το αδελφό Νίκο, τον άνθρωπος που μας μύησε εμένα και πολλά παιδιά από την παρέα στον κόσμο των υπολογιστών...
Γιάννη φίλε, αδελφέ, σε ευχαριστώ για τα λόγια σου.

Με συγκίνησαν πραγματικά. Θα προσπαθήσω να απαντήσω, αν και η αλήθεια είναι πως έχω χάσει λίγο τα λόγια μου. Δυσκολεύομαι να βάλω σε σειρά κάποιες σκέψεις, αλλά θα προσπαθήσω.

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

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

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

Είμαστε ακόμα έτοιμοι να λιώσουμε στο Bubble, να μιλάμε με τις ώρες για τον Commodore 64 και την Amiga, όπως κάναμε πριν από 10, 20 ή 30 χρόνια. Και ίσως αυτό να είναι το πιο όμορφο, ο χρόνος πέρασε, αλλά κάποια πράγματα έμειναν ακριβώς ίδια.

Αυτό το κοινό σημείο επαφής αποδείχθηκε τελικά πολύ πιο δυνατό απ’ όσο θα μπορούσαμε να φανταστούμε.

Χαίρομαι που μετά από τόσα χρόνια είμαστε ακόμα εδώ.

1782262831269.png
 
Γιάννη φίλε, αδελφέ, σε ευχαριστώ για τα λόγια σου.

Με συγκίνησαν πραγματικά. Θα προσπαθήσω να απαντήσω, αν και η αλήθεια είναι πως έχω χάσει λίγο τα λόγια μου. Δυσκολεύομαι να βάλω σε σειρά κάποιες σκέψεις, αλλά θα προσπαθήσω.

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

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

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

Είμαστε ακόμα έτοιμοι να λιώσουμε στο Bubble, να μιλάμε με τις ώρες για τον Commodore 64 και την Amiga, όπως κάναμε πριν από 10, 20 ή 30 χρόνια. Και ίσως αυτό να είναι το πιο όμορφο, ο χρόνος πέρασε, αλλά κάποια πράγματα έμειναν ακριβώς ίδια.

Αυτό το κοινό σημείο επαφής αποδείχθηκε τελικά πολύ πιο δυνατό απ’ όσο θα μπορούσαμε να φανταστούμε.

Χαίρομαι που μετά από τόσα χρόνια είμαστε ακόμα εδώ.

Προβολή συνημμένου 307606
Τα είπες ολα... Και η φώτο αυτή μνημειώδης

Retromaniax.gr άλλος ένας μεγάλος λόγος που θα είναι για πάντα το μοναδικό αγαπημένο μου φόρουμ..
 

Γιατί έγραψα τη Hobby BASIC σε Assembly

Η ιστορία πίσω από μια προσωπική επιλογή που κράτησε μια δεκαετία

Ο αρχικός στόχος της Hobby BASIC​

Όταν ξεκίνησα να γράφω τη Hobby BASIC, το πρώτο ερώτημα που έθεσα ήταν ποιος θα ήταν ο πραγματικός σκοπός της. Στο διαδίκτυο υπάρχουν αμέτρητοι μικροί BASIC διερμηνευτές, οι περισσότεροι από τους οποίους δημιουργήθηκαν κυρίως ως προσωπικά ή εκπαιδευτικά project. Αυτό είναι απολύτως θεμιτό, όμως ο δικός μου στόχος ήταν διαφορετικός: ήθελα η Hobby BASIC να μπορεί να χρησιμοποιηθεί για τη δημιουργία πραγματικών εφαρμογών και κυρίως παιχνιδιών.

Γιατί επέλεξα την Assembly​

Η επιλογή της x86 Assembly ως γλώσσας υλοποίησης καθόρισε σε μεγάλο βαθμό τις δυνατότητες αλλά και τα όρια του εγχειρήματος. Η ανάπτυξη ενός μεγάλου project σε Assembly απαιτεί σημαντικό χρόνο και αυξημένη πολυπλοκότητα. Από την αρχή ήταν σαφές ότι δεν επιδίωκα να δημιουργήσω μια BASIC γενικής χρήσης, με παραθυρικό περιβάλλον, εκτεταμένη υποστήριξη βιβλιοθηκών και όλα τα χαρακτηριστικά μιας σύγχρονης γλώσσας προγραμματισμού. Αυτό θα απαιτούσε διαφορετικές σχεδιαστικές επιλογές και πολύ μεγαλύτερο εύρος ανάπτυξης. Επέλεξα, συνειδητά, να παραμείνω στην Assembly και να σχεδιάσω τη γλώσσα γύρω από έναν πιο εξειδικευμένο στόχο.

Η αφορμή: PuzzleScript​

Πριν από αρκετά χρόνια ανακάλυψα τυχαία την PuzzleScript. Πρόκειται για μια δωρεάν, ανοικτού κώδικα μηχανή δημιουργίας παιχνιδιών που εκτελείται εξ ολοκλήρου στον browser και εστιάζει στην ανάπτυξη δισδιάστατων παιχνιδιών γρίφων. Αντί να βασίζεται στον κλασικό προστακτικό προγραμματισμό, χρησιμοποιεί ένα δηλωτικό σύστημα κανόνων (rule-based programming), επιτρέποντας στον δημιουργό να επικεντρώνεται περισσότερο στη συμπεριφορά και στη λογική του παιχνιδιού παρά στην υλοποίηση χαμηλού επιπέδου.

Παίζοντας αρκετούς από τους τίτλους που έχουν δημιουργηθεί με την PuzzleScript, διαπίστωσα ότι θεωρητικά η πλειονότητά τους θα μπορούσε να αποδοθεί και σε έναν BASIC διερμηνευτή που εκτελείται στην κονσόλα των Windows, αξιοποιώντας ANSI γραφικά. Η δυνατότητα παραμετροποίησης της 16χρωμης RGB παλέτας της κονσόλας επέτρεπε την προσέγγιση της χαρακτηριστικής λιτής αισθητικής που έχει καθιερώσει η PuzzleScript.

Η πρόκληση της υλοποίησης​

Η υλοποίηση κάθε άλλο παρά απλή ήταν. Ο στόχος ήταν να δημιουργηθεί, εξ ολοκλήρου σε x86 Assembly, ένας BASIC διερμηνευτής για την κονσόλα των Windows, ικανός να υποστηρίξει με σχετική ευκολία την ανάπτυξη παιχνιδιών αντίστοιχης φιλοσοφίας με εκείνα της PuzzleScript, χωρίς όμως να αποτελεί αντιγραφή της.

PuzzleScript game faithfully recreated for the Windows Console using ANSI graphics and Hobby BASIC



Δέκα χρόνια μετά​

Δέκα χρόνια αργότερα, θεωρώ ότι αυτός ο αρχικός στόχος έχει επιτευχθεί σε μεγάλο βαθμό. Η Hobby BASIC δεν σχεδιάστηκε για να ανταγωνιστεί σύγχρονες γλώσσες προγραμματισμού ή game engines. Σχεδιάστηκε ως ένα εξειδικευμένο εργαλείο που αξιοποιεί τις δυνατότητες της κονσόλας των Windows και της Assembly, επιτρέποντας τη δημιουργία μικρών 2D παιχνιδιών με έμφαση στη λογική του gameplay και στη ρετρό αισθητική.

Οι επαναδημιουργίες παιχνιδιών της PuzzleScript δεν αποτελούν αυτοσκοπό. Λειτουργούν ως πρακτική επιβεβαίωση ότι η Hobby BASIC μπορεί να υποστηρίξει με επιτυχία το είδος παιχνιδιών για το οποίο σχεδιάστηκε εξαρχής.

2027 και μετά​

Ξεπερνώντας ορισμένες μικρές δυσκολίες που συχνά παρουσιάζονται κατά τη διάρκεια της εκτέλεσης στις νεότερες εκδόσεις των Windows (όπως false positives από antivirus ή ανάγκη αλλαγής της κονσόλας στον κλασικό Windows Console Host), ο χρήστης αποκτά άμεση πρόσβαση σε ένα συνοδευτικό πακέτο προγραμμάτων και παιχνιδιών, το οποίο περιλαμβάνει κυριολεκτικά χιλιάδες γραμμές κώδικα BASIC.

Μέσα στο 2027, η προσπάθειά μου θα επικεντρωθεί στη βελτιστοποίηση (optimization) του κώδικα, στη γενικότερη βελτίωση της γλώσσας και στη διόρθωση τυχόν σφαλμάτων (bugs). Κύριος στόχος είναι να επιτύχω μια συνολική βελτίωση της τάξης του 5% με 7% στην ταχύτητα του διερμηνευτή.

Στο μεταξύ, η ανάπτυξη παιχνιδιών συνεχίζεται...


Νέα παιχνίδια στην έκδοση 2.6.4


Το Connection είναι βασισμένο στο Let's All Hold Hands της tess (beekie), που δημιουργήθηκε αρχικά για το Confounding Calendar της PuzzleScript. Η παρούσα έκδοση γράφτηκε εξ ολοκλήρου από την αρχή στη Hobby BASIC (όπως άλλωστε όλα τα παιχνίδια) και επεκτάθηκε με 4 νέες πίστες, συν την πρωτότυπη. Σύντομα θα προστεθεί στα παραδείγματα της Hobby BASIC.

Χαρακτηριστικά:
• Tile-based ANSI graphics with custom color palette
• Sokoban-style movement with multi-box chain pushing
• Player body grows dynamically by absorbing adjacent boxes
• Entire player shape moves as one rigid body
• Connection flash: inner and outer links visualized on Ctrl press
• Level progress saved across 5 levels
• Undo system (key 4) with unlimited history
• Sound effects and victory sequence
• Window title shows current level and solved status
• Auto-resizing console based on map dimensions

Όλα αυτά τρέχουν απευθείας μέσα στην κονσόλα CMD.EXE των Windows 11.



Με αυτό κλείνω για το καλοκαίρι, θα λείψω από το φόρουμ τους επόμενους 1-2 μήνες.
Καλό καλοκαίρι σε όλους, τα ξαναλέμε τον Σεπτέμβρη!

Useful links:
Online Guide — learn Hobby BASIC the easy way
Full Feature Overview — all capabilities in one page
YouTube Video Tour — see it in action
Chrome blocking? — fix here
Download — the latest version
 
Τελευταία επεξεργασία:
Πίσω
Μπλουζα