Αρχείο για την κατηγορία ‘XNA Game Studio’
Δημοσιεύθηκε από Κώστας Αναγνώστου στο Δεκεμβρίου 7, 2009
Κοιτάζοντας το πότε ανέβασα το τελευταίο άρθρο στο blog διαπιστώνω ότι έχει περάσει πάνω από ένας μήνας! Ακόμα περισσότερο έχουμε να ασχοληθούμε με το Arkanoid. Ήταν δύσκολες οι προηγούμενες εβδομάδες στο Πανεπιστήμιο με τις προθεσμίες για προτάσεις χρηματοδότησης και άρθρα σε περιοδικά να διαδέχονται η μία την άλλη. Και ενώ είχα γράψει το κώδικα για το σχεδιασμό πίστας στο Arkanoid δεν έβρισκα το χρόνο να γράψω το κείμενο. Τώρα όμως χαλάρωσαν λίγο τα πράγματα και επανερχόμαστε στην ενεργό δράση!
Είχαμε αφήσει το Arkanoid σε μια σχετικά πλήρη μορφή με ανίχνευση συγκρούσεων, κίνηση μπάλας και ρακέτας, καταγραφή σκορ και απώλειας ζωής του παίκτη. Επιπλέον είχαμε υλοποιήσει game state management με τις διάφορες οθόνες και καταστάσεις του παιχνιδιού (εισαγωγή, παιχνίδι, παύση, νίκη και αποτυχία παίκτη). Αυτό που λείπει είναι η δυνατότητα να σχεδιάζουμε τη πίστα του παιχνιδιού με περισσότερο φιλικό και εύχρηστο τρόπο, καθώς και η προσθήκη πολλών επιπέδων στο παιχνίδι.
Διαβάστε την συνέχεια του άρθρου »
Δημοσιεύθηκε στο Arkanoid, C#, XNA Game Studio, Ανάπτυξη βιντεοπαιχνιδιών, Προγραμματισμός | 2 σχόλια »
Δημοσιεύθηκε από Κώστας Αναγνώστου στο Νοεμβρίου 5, 2009
Ο αναγνώστης του Videogames Laboratory konsnos έγραψε ένα πολύ καλό και πολύ επεξηγηματικό άρθρο στο PC WORLD σχετικά με την ανάπτυξη του Pong, βασισμένος στο κώδικα του παιχνιδιού που αναπτύξαμε στη πρώτη σειρά tutorial. Αν για κάποιο λόγο σας φάνηκαν τα tutorial εκείνα δύσκολα ή δυσνόητα αξίζει να ρίξετε μια ματιά στο άρθρο αυτό καθώς ο συγγραφέας παρουσιάζει το θέμα ακόμα πιο απλά και κατανοητά.
Μπορείτε να βρείτε το σχετικό άρθρο εδώ.
ΥΓ: Υπάρχουν άλλες προτάσεις για το Videogames Laboratory Challenge #2;
Δημοσιεύθηκε στο C#, XNA Game Studio, Ανάπτυξη βιντεοπαιχνιδιών, Προγραμματισμός, Στο Τύπο | 1 σχόλιο »
Δημοσιεύθηκε από Κώστας Αναγνώστου στο Οκτωβρίου 29, 2009
Η περίοδος αυτή αποδεικνύεται η πιο πολυάσχολη του χρόνου με τις προθεσμίες αιτήσεων για χρηματοδότηση έρευνας στο Πανεπιστήμιο να πλησιάζουν ταχύτατα. Αυτό έχει αντίκτυπο και στο blog μιας ο διαθέσιμος ελεύθερος χρόνος μου έχει συρρικνωθεί. Μέχρι να βρω λοιπόν το χρόνο να ολοκληρώσω τη σειρά tutorial για το Arkanoid, σκέφτηκα να εμπλέξω τους αναγνώστες του blog με ένα Videogames Laboratory Challenge. Στην ουσία είναι το δεύτερο challenge μιας και το πρώτο αφορούσε την εκσφαλμάτωση ενός παιχνιδιού (και για το οποίο έλαβα ελάχιστες απαντήσεις δυστυχώς).
Μέχρι στιγμής στο Arkanoid χρησιμοποιούμε το παρακάτω κώδικα για να σχεδιάσουμε τη πίστα και να τοποθετήσουμε τα τουβλάκια στην οθόνη:
for (int j = 0; j < numOfRows; j++)
{
for (int i = 0; i < bricksPerRow; i++)
{
Rectangle rect = new Rectangle(i * (brickWidth + brickSpacing),
rowStart + j * (brickHeight + brickSpacing),
brickWidth, brickHeight);
bricks[j * bricksPerRow + i] = new Brick(rect, Color.Red, whiteTile);
numOfVisibleBricks++;
}
}
Σε ένα for-loop δηλαδή τοποθετούμε τα τουβλάκια, ανά τακτά διαστήματα, σε γραμμές και στήλες. Αυτός το τρόπος σχεδιασμού πίστας (level design) είναι πολύ δύσχρηστος και επιβάλλει στο σχεδιαστή της πίστας να συνεργάζεται άμεσα με το προγραμματιστή έτσι ώστε να του υποδεικνύει τι αλλαγές πρέπει να γίνουν στο σχέδιο της πίστας και πού (και να γίνεται πάλι compile ο κώδικας με κάθε αλλαγή). Επιπλέον είναι αρκετά δύσκολο να αλλάξεις το σχέδιο της πίστας σε κάτι άλλο από γραμμές με τουβλάκια. Από την άλλη είναι επιθυμητό ο σχεδιαστής να μην ασχολείται καθόλου με το κώδικα του παιχνιδιού, να σχεδιάζει με κάποιο τρόπο τη πίστα και να μεταφέρει το αποτέλεσμα στο προγραμματιστή για απεικόνιση (data-driven development), όπως γίνεται άλλωστε και στη βιομηχανία ανάπτυξης βιντεοπαιχνιδιών.
Η πρόκληση λοιπόν αφορά το εξής:
Προτείνετε τρόπους με τους οποίους μπορεί να γίνει ο σχεδιασμός της πίστας πιο εύκολος και ευέλικτος. Προσοχή, με τον όρο σχεδιασμό αναφέρομαι στο καθορισμό της τοποθεσίας που θα καταλήξει το κάθε τουβλάκι. Η τοποθέτηση και απεικόνιση καθαυτή θα γίνει με κώδικα αναγκαστικά.
Αν ο τρόπος που προτείνετε είναι «καλύτερος» από αυτόν που έχω εγώ υπόψη (και σε λογικό επίπεδο δυσκολίας για ένα εισαγωγικό tutorial), θα γίνει υλοποίηση αυτού στο επόμενο tutorial (με τιμές και δάφνες στο άτομο που το πρότεινε). Σε κάθε περίπτωση μπορείτε και κάνετε την υλοποίηση οι ίδιοι και να ανεβάσετε το κώδικα στο Code Repository. Απορίες και διευκρινίσεις στα σχόλια του post.
Περιμένουμε τις συμμετοχές σας!
Δημοσιεύθηκε στο .NET, Arkanoid, C#, Challenge, XNA Game Studio, Ανάπτυξη βιντεοπαιχνιδιών, Προγραμματισμός | 9 σχόλια »
Δημοσιεύθηκε από Κώστας Αναγνώστου στο Οκτωβρίου 20, 2009
Ξεκίνησε και φέτος ο διεθνής διαγωνισμός της Microsoft Imagine Cup ο οποίος έχει 4 κατηγορίες: Ανάπτυξη Λογισμικού, Προγραμματισμό Βιντεοπαιχνιδιών, Διαχείριση Συστημάτων και Δικτύων και Δημιουργία Ψηφιακού Βίντεο. Σύμφωνα με τη Microsoft, σκοπός του διαγωνισμού είναι να βοηθήσει τους φοιτητές να βελτιώσουν τον κόσμο μέσω τεχνολογικών λύσεων. Φέτος είναι η έβδομη χρονιά του διαγωνισμού.
Κάθε χρονιά ο διαγωνισμός έχει διαφορετικό θέμα, φέτος είναι: «Φανταστείτε έναν κόσμο όπου η τεχνολογία μας βοηθάει να λύσουμε τα μεγαλύτερα προβλήματα που αντιμετωπίζει ο κόσμος μας σήμερα». Τα Ηνωμένα Έθνη έχουν προσδιορίσει τα προβλήματα αυτά σαν τους «Στόχους της Χιλιετίας». Περισσότερες πληροφορίες σχετικά με τους στόχους της χιλιετίας, μπορείτε να βρείτε εδώ.
Η χώρα μας έχει πετύχει στο παρελθόν σημαντικές διακρίσεις στο διαγωνισμό, με ομάδες να κατακτούν ακόμα και τη δεύτερη θέση στους παγκόσμιους τελικούς, οι οποίοι φέτος θα διεξαχθούν στην Πολωνία.
Οι κατηγορίες του διαγωνισμού είναι 4:
Ειδικότερα, στόχος της κατηγορίας Game Design είναι η ανάπτυξη ενός παιχνιδιού χρησιμοποιώντας τόσο το XNA Game Studio όσο και το Visual Studio. Είναι μια ευκαιρία για τους συμμετέχοντες που ασχολούνται με game development να κατασκευάσουν ένα παιχνίδι το οποίο συμβάλλει στην ενημέρωση του πληθυσμού για τα προβλήματα του πλανήτη. Μπορείτε να δείτε παραδείγματα τέτοιων παιχνιδιών, τα επονομαζόμενα serious games εδώ.
Δικαίωμα συμμετοχής έχουν ομάδες από 1 μέχρι 4 άτομα και έναν υπεύθυνο καθηγητή. Περισσότερες πληροφορίες για το διαγωνισμό μπορείτε να δείτε εδώ.
Αν έχετε κάποια ιδέα για παιχνίδι σχετικό με το θέμα του διαγωνισμού αλλά δεν είστε μέλος ομάδας ανάπτυξης μπορείτε να επικοινωνήσετε μαζί μου. Επιπλέον αν θέλετε να συμμετάσχετε στην ανάπτυξη ενός τέτοιου παιχνιδιού ακόμα και αν δεν έχετε κάποια συγκεκριμένη ιδέα, μπορείτε και πάλι να επικοινωνήσετε μαζί μου. Ίσως μπορέσουμε να συγκεντρώσουμε ικανό αριθμό ατόμων για να φτιάξουμε μια ομάδα ανάπτυξης βιντεοπαιχνιδιού για το διαγωνισμό αυτό.
Δημοσιεύθηκε στο XNA Game Studio, Ανάπτυξη βιντεοπαιχνιδιών, Νέα | Leave a Comment »
Δημοσιεύθηκε από Κώστας Αναγνώστου στο Οκτωβρίου 6, 2009
Στο προηγούμενο tutorial σχεδιάσαμε το game state management του Arkanoid και το υλοποιήσαμε για την διαδικασία Update του παιχνιδιού. Σήμερα θα το υλοποιήσουμε και για την διαδικασία Draw, συμπληρώνοντας παράλληλα το παιχνίδι με Εισαγωγική οθόνη, λειτουργία Pause και οθόνη επιτυχίας ή αποτυχίας του παίκτη.
Διαβάστε την συνέχεια του άρθρου »
Δημοσιεύθηκε στο .NET, Arkanoid, C#, XNA Game Studio, Ανάπτυξη βιντεοπαιχνιδιών, Προγραμματισμός | 8 σχόλια »
Δημοσιεύθηκε από Κώστας Αναγνώστου στο Οκτωβρίου 2, 2009
Μέχρι στιγμής στο παιχνίδι Arkanoid (μέρος 1, μέρος 2) έχουμε υλοποιήσει την κλάση που εκπροσωπεί τα τουβλάκια (Brick) έχουμε τοποθετήσει τα τουβλάκια στην σωστή θέση, έχουμε υλοποιήσει κίνηση της μπάλας και της ρακέτας, συγκρούσεις μεταξύ των αντικειμένων του παιχνιδιού και αυξάνουμε και το σκορ του παίκτη. Το παιχνίδι είναι λειτουργικό, μπορεί να ελέγξει ο παίκτης τη μπάλα και να καταστρέψει τα τουβλάκια, αλλά δεν έχουμε ορίσει το πότε νικά και πότε χάνει ο παίκτης έτσι ώστε να σταματάμε το παιχνίδι και να του εμφανίζουμε το ανάλογο μήνυμα. Για να το κάνουμε λίγο πιο εύκολο και κομψό αυτό, θα κάνουμε ένα βήμα πίσω και θα υλοποιήσουμε στο παιχνίδι κάτι που ονομάζεται game state management (διαχείριση καταστάσεων παιχνιδιού;).
Διαβάστε την συνέχεια του άρθρου »
Δημοσιεύθηκε στο .NET, Arkanoid, C#, XNA Game Studio, Ανάπτυξη βιντεοπαιχνιδιών, Προγραμματισμός | 2 σχόλια »
Δημοσιεύθηκε από Κώστας Αναγνώστου στο Σεπτεμβρίου 24, 2009
Ξεκινήσαμε με το προηγούμενο άρθρο τη δεύτερη σειρά tutorial πάνω στην ανάπτυξη βιντεοπαιχνιδιών, εστιάζοντας στο παιχνίδι Arkanoid αυτή τη φορά. Το άρθρο βγήκε αναγκαστικά μεγάλο διότι έπρεπε να ορίσουμε ένα νέο αντικείμενο το οποίο θα αναπαριστά το τουβλάκι στο παιχνίδι, καθώς και την συμπεριφορά του (απεικόνιση και έλεγχος συγκρούσεων). Με βάση τη κλάση αυτή δημιουργήσαμε και απεικονίσαμε τις σειρές με τα τουβλάκια στην οθόνη. Επιπλέον ορίσαμε και απεικονίσαμε τη ρακέτα και την μπάλα.
Στο σημερινό άρθρο, για να το κρατήσουμε σε λογικό μέγεθος, θα προσθέσουμε στο παιχνίδι μόνο κίνηση της μπάλας και της ρακέτας, ανίχνευση συγκρούσεων (collision detection) και σκορ παίκτη.
Διαβάστε την συνέχεια του άρθρου »
Δημοσιεύθηκε στο .NET, Arkanoid, XNA Game Studio, Ανάπτυξη βιντεοπαιχνιδιών, Προγραμματισμός | 4 σχόλια »
Δημοσιεύθηκε από Κώστας Αναγνώστου στο Σεπτεμβρίου 14, 2009
Ήρθε η ώρα να ξεσκονίσουμε τα πληκτρολόγια μας και να αρχίσουμε τη δεύτερη σειρά tutorial ανάπτυξης βιντεοπαιχνιδιού. Αυτή τη φορά θα ασχοληθούμε με το πολύ γνωστό Arkanoid (Taito, 1986). Στο παιχνίδι αυτό ο παίκτης χειρίζεται μια ρακέτα και προσπαθεί να οδηγήσει μια μπάλα έτσι ώστε να καταστρέψει σειρές από «τουβλάκια» στο πάνω μέρος της οθόνης.

Διαβάστε την συνέχεια του άρθρου »
Δημοσιεύθηκε στο .NET, Arkanoid, C#, XNA Game Studio, Ανάπτυξη βιντεοπαιχνιδιών, Προγραμματισμός | 3 σχόλια »
Δημοσιεύθηκε από Κώστας Αναγνώστου στο Αυγούστου 17, 2009
Σε σχετικά forum, επικές είναι οι μάχες που διεξάγονται με αφορμή το ποια γλώσσα είναι η καλύτερη για την ανάπτυξη βιντεοπαιχνιδιών. Τελευταία, με την αυξανόμενη δημοτικότητα του XNA Game Studio, επίθεση δέχεται η C#/.NET, ως μια αργή γλώσσα που δεν μπορεί να υποστηρίξει «σοβαρά» παιχνίδια.
Η διαμάχη αυτή δεν είναι καινούργια. Προς υπενθύμιση των παλιότερων και ενημέρωση των νεώτερων (όπως έλεγαν οι παππούδες μας), θα σας πω μια σύντομη ιστορία.
Διαβάστε την συνέχεια του άρθρου »
Δημοσιεύθηκε στο .NET, C#, XNA Game Studio, Ανάπτυξη βιντεοπαιχνιδιών, Προγραμματισμός | 4 σχόλια »
Δημοσιεύθηκε από Κώστας Αναγνώστου στο Αυγούστου 13, 2009
Η καρδιά του Αυγούστου, με το περισσότερο κόσμο στις παραλίες και το μυαλό όλων στις διακοπές, δεν είναι η κατάλληλη εποχή για θεωρίες και μεγάλα κείμενα. Γι αυτό σκέφτηκα να φτιάξω ένα απλό παιχνιδάκι, απλά για διασκέδαση. Βασιζόμενος στο Pong που αναπτύξαμε σε προηγούμενα tutorial ξεκίνησα να φτιάχνω το Squash. Για όσους δεν το ξέρουν, το Squash είναι ένα παιχνίδι με ρακέτες, σε ένα κλειστό δωμάτιο, στο οποίο και οι δύο παίκτες βρίσκονται στην ίδια πλευρά του γηπέδου.
Ήταν εύκολη η μετατροπή του Pong σε Squash, απλά μετέφερα τη ρακέτα του υπολογιστή στα αριστερά, έδωσα στις ρακέτες διαφορετικό χρώμα ώστε να ξεχωρίζουν και άλλαξα λίγο το τεστ σύγκρουσης της μπάλας με τη ρακέτα του υπολογιστή. Επιπλέον άλλαξα και τη λογική υπολογισμού σκορ.
Κάτι πρέπει να πήγε στραβά όμως κατά τη διαδικασία μετατροπής, γιατί όταν έτρεξα το παιχνίδι είδα αυτό:

Με τις γνώσεις που αποκτήσαμε στα προηγούμενα tutorial πάνω στο debugging, μήπως θα μπορούσατε να βρείτε τι πήγε στραβά; Αναζητάμε λάθη προγραμματιστικά και όχι σχεδιασμού. Το παιχνίδι βασίζεται στο Pong και έχει τις σχεδιαστικές ατέλειες του, δεν είναι όμως αυτό το πρόβλημα. Ο κώδικας του παιχνιδιού είναι διαθέσιμος στο Code Repository, σε zip μορφή προς το παρόν.
Όποιος εντοπίσει τα λάθη και διορθώσει το παιχνίδι, ας επικοινωνήσει μαζί μου μέσω της φόρμας επικοινωνίας. Σε μερικές εβδομάδες θα κάνω μια αναφορά στα άτομα που κατάφεραν να βρουν τα σφάλματα του παιχνιδιού.
Καλό debugging!
Δημοσιεύθηκε στο C#, XNA Game Studio, Ανάπτυξη βιντεοπαιχνιδιών, Προγραμματισμός | 2 σχόλια »