Η βιβλιοθήκη Arcade της Python προσφέρει έναν απλό και αποτελεσματικό τρόπο για την εφαρμογή επιπέδων παιχνιδιών στα έργα σας.

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

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

Δημιουργήστε ένα απλό παιχνίδι

Πριν ξεκινήσετε, βεβαιωθείτε ότι έχετε pip εγκατεστημένο στη συσκευή σας. Χρησιμοποιήστε αυτήν την εντολή για να εγκαταστήσετε το στοά βιβλιοθήκη:

pip εγκατάσταση arcade

Δημιουργήστε ένα βασικό παιχνίδι όπου ο παίκτης μπορεί να κινηθεί αριστερά και δεξιά.

Ο κώδικας που χρησιμοποιείται σε αυτό το άρθρο είναι διαθέσιμος σε αυτό Αποθετήριο GitHub και είναι δωρεάν για χρήση βάσει της άδειας MIT.

instagram viewer

Χρησιμοποιήστε τις δυνατότητες της βιβλιοθήκης Arcade για να χειριστείτε τα δεδομένα χρήστη και να ενημερώσετε την κατάσταση του παιχνιδιού ανάλογα. Δημιουργήστε ένα νέο αρχείο με όνομα simple-game.py και προσθέστε τον παρακάτω κώδικα:

εισαγωγή στοά

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

τάξηMyGame(στοά. Παράθυρο):
def__μέσα σε αυτό__(εαυτός):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Το παιχνίδι μου")
arcade.set_background_color (arcade.color. ΑΣΠΡΟ)
self.player_x = SCREEN_WIDTH // 2

defon_draw(εαυτός):
arcade.start_render()
arcade.draw_rectangle_filled (self.player_x, 50, 50, 50, arcade.color. ΜΠΛΕ)

defon_key_press(αυτο, κλειδί, τροποποιητές):
αν κλειδί == arcade.key. ΑΡΙΣΤΕΡΑ:
self.player_x -= 10
ελιφ κλειδί == arcade.key. ΣΩΣΤΑ:
self.player_x += 10

defon_key_release(αυτο, κλειδί, τροποποιητές):
αν κλειδί == arcade.key. ΑΡΙΣΤΕΡΑ ή κλειδί == arcade.key. ΣΩΣΤΑ:
πέρασμα

defκύριος():
παιχνίδι = MyGame()
arcade.run()

αν __όνομα__ == "__κύριος__":
κύριος()

Παρακάτω είναι η έξοδος:

Δημιουργία πολλαπλών επιπέδων

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

τάξηΕπίπεδο ένα:
def__μέσα σε αυτό__(εαυτός):
self.player_x = SCREEN_WIDTH // 2

defεκσυγχρονίζω(εαυτός):
πέρασμα

defσχεδιάζω(εαυτός):
arcade.draw_rectangle_filled (self.player_x, 50, 50, 50, arcade.color. ΜΠΛΕ)

τάξηΕπίπεδο Δεύτερο:
def__μέσα σε αυτό__(εαυτός):
self.player_x = SCREEN_WIDTH // 2

defεκσυγχρονίζω(εαυτός):
πέρασμα

defσχεδιάζω(εαυτός):
arcade.draw_rectangle_filled (self.player_x, 50, 50, 50, arcade.color. ΤΟ ΚΟΚΚΙΝΟ)

τάξηMyGame(στοά. Παράθυρο):
def__μέσα σε αυτό__(εαυτός):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Το παιχνίδι μου")
arcade.set_background_color (arcade.color. ΑΣΠΡΟ)
self.levels = [LevelOne(), LevelTwo()]
self.current_level = 0

defon_draw(εαυτός):
arcade.start_render()
self.levels[self.current_level].draw()

defon_key_press(αυτο, κλειδί, τροποποιητές):
αν κλειδί == arcade.key. ΑΡΙΣΤΕΡΑ:
self.levels[self.current_level].player_x -= 10
ελιφ κλειδί == arcade.key. ΣΩΣΤΑ:
self.levels[self.current_level].player_x += 10

defon_key_release(αυτο, κλειδί, τροποποιητές):
αν κλειδί == arcade.key. ΑΡΙΣΤΕΡΑ ή κλειδί == arcade.key. ΣΩΣΤΑ:
πέρασμα

defεκσυγχρονίζω(self, delta_time):
self.levels[self.current_level].update()

defκύριος():
παιχνίδι = MyGame()
arcade.run()

αν __όνομα__ == "__κύριος__":
κύριος()

Μετάβαση μεταξύ επιπέδων

Για να δημιουργήσετε μια ομαλή μετάβαση μεταξύ των επιπέδων, εντοπίστε πότε ο παίκτης περνά ένα συγκεκριμένο όριο. Μπορείς παρακολουθήστε την κίνηση του παίκτη, και μόλις ο παίκτης περάσει το όριο, μπορείτε να μεταβείτε στο επόμενο επίπεδο. Δημιουργήστε ένα νέο αρχείο με όνομα transition-between-levels.py και προσθέστε τον κωδικό με τις παρακάτω ενημερώσεις:

τάξηMyGame(στοά. Παράθυρο):
# ...

defεκσυγχρονίζω(self, delta_time):
self.levels[self.current_level].update()

# Ελέγξτε αν ο παίκτης πέρασε τα όρια
αν self.levels[self.current_level].player_x < 0:
self.current_level += 1
self.current_level %= len (self.levels)
self.levels[self.current_level].player_x = SCREEN_WIDTH
ελιφ self.levels[self.current_level].player_x > SCREEN_WIDTH:
self.current_level += 1
self.current_level %= len (self.levels)
self.levels[self.current_level].player_x = 0

# ...

Παρακάτω είναι η έξοδος:

Συμπεριλαμβανομένων πρόσθετων χαρακτηριστικών

Για να κάνετε τα επίπεδα του παιχνιδιού σας πιο ελκυστικά, μπορείτε να ενσωματώσετε πρόσθετες λειτουργίες, όπως power-ups και στόχους.

Στόχοι

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

τάξηΣκοπός:
def__μέσα σε αυτό__(εαυτός, x, y):
αυτο.χ = χ
αυτο.υ = υ
αυτος.ακτίνα = 20

defσχεδιάζω(εαυτός):
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. ΠΡΑΣΙΝΟΣ)

τάξηΕπίπεδο ένα:
def__μέσα σε αυτό__(εαυτός):
self.objective = Objective(600, 400)
# ...

defεκσυγχρονίζω(εαυτός):
# Ελέγξτε εάν ο παίκτης επιτυγχάνει τον στόχο
αν arcade.check_for_collision (self.player, self.objective):
self.complete_objective()

defσχεδιάζω(εαυτός):
self.objective.draw()
# ...

defπλήρης_στόχος(εαυτός):
# Κώδικας για τη διαχείριση της αντικειμενικής ολοκλήρωσης
πέρασμα

Συλλεκτικά

Τα συλλεκτικά είναι αντικείμενα ή μπόνους που μπορεί να συγκεντρώσει ο παίκτης σε όλα τα επίπεδα. Ακολουθεί ένα παράδειγμα εφαρμογής μιας συλλεκτικής δυνατότητας:

τάξηΣυλλεκτικό:
def__μέσα σε αυτό__(εαυτός, x, y):
αυτο.χ = χ
αυτο.υ = υ
αυτος.ακτίνα = 10
αυτο.είναι_συλλέγεται = Ψευδής

defσχεδιάζω(εαυτός):
ανδεν self.is_collected:
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. ΠΟΡΤΟΚΑΛΙ)

defσυλλέγω(εαυτός):
αυτο.είναι_συλλέγεται = Αληθής
# Κωδικός για να χειριστείτε την επίδραση του συλλεκτικού υλικού στον παίκτη

τάξηΕπίπεδο ένα:
def__μέσα σε αυτό__(εαυτός):
self.collectible = Συλλεκτικό(300, 300)
# ...

defεκσυγχρονίζω(εαυτός):
# Ελέγξτε αν ο παίκτης συλλέγει το αντικείμενο
αν arcade.check_for_collision (self.player, self.collectible):
self.collectible.collect()

defσχεδιάζω(εαυτός):
self.collectible.draw()
# ...

Εμπόδια

Τα εμπόδια μπορεί να είναι στατικά αντικείμενα ή κινούμενες οντότητες που εμποδίζουν τη διαδρομή του παίκτη. Απαιτούν από τον παίκτη να σχεδιάσει στρατηγική και να βρει τρόπους να τα ξεπεράσει. Ακολουθεί ένα παράδειγμα εφαρμογής της δυνατότητας εμποδίων:

τάξηΕμπόδιο:
def__μέσα σε αυτό__(εαυτός, x, y, πλάτος, ύψος):
αυτο.χ = χ
αυτο.υ = υ
αυτο.πλάτος = πλάτος
αυτο.ύψος = ύψος

defσχεδιάζω(εαυτός):
arcade.draw_rectangle_filled (self.x, self.y, self.width, self.height, arcade.color. ΓΚΡΙ)

τάξηΕπίπεδο ένα:
def__μέσα σε αυτό__(εαυτός):
self.obstacles = [Εμπόδιο(400, 200, 100, 50), εμπόδιο (600, 500, 80, 120)]
# ...

Power-Ups

Τα power-ups μπορούν να βελτιώσουν τις ικανότητες του παίκτη ή να παρέχουν προσωρινά πλεονεκτήματα. Ακολουθεί ένα παράδειγμα εφαρμογής μιας δυνατότητας ενεργοποίησης:

τάξηPowerUp:
def__μέσα σε αυτό__(εαυτός, x, y):
αυτο.χ = χ
αυτο.υ = υ
αυτος.ακτίνα = 10
αυτο.είναι_ενεργός = Αληθής

defσχεδιάζω(εαυτός):
αν self.is_active:
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. ΚΙΤΡΙΝΟΣ)

defactivate_power_up(εαυτός):
αυτο.είναι_ενεργός = Αληθής

defdeactivate_power_up(εαυτός):
αυτο.είναι_ενεργός = Ψευδής

τάξηΕπίπεδο ένα:
def__μέσα σε αυτό__(εαυτός):
self.power_up = PowerUp(200, 200)
# ...

defεκσυγχρονίζω(εαυτός):
# Ελέγξτε εάν η συσκευή αναπαραγωγής συγκρούεται με το power-up
αν arcade.check_for_collision (self.player, self.power_up):
self.player.activate_power_up()
self.power_up.deactivate_power_up()

defσχεδιάζω(εαυτός):
self.power_up.draw()
# ...

Βέλτιστες πρακτικές για σχεδιασμό επιπέδου

Η σχεδίαση επιπέδου παίζει καθοριστικό ρόλο στη δημιουργία συναρπαστικών και απολαυστικών εμπειριών παιχνιδιού. Ακολουθούν ορισμένες βέλτιστες πρακτικές που πρέπει να λάβετε υπόψη όταν σχεδιάζετε επίπεδα για το παιχνίδι σας:

Καθαροί στόχοι

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

Καμπύλη σταδιακής δυσκολίας

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

Οπτική διαύγεια

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

Δοκιμή αναπαραγωγής και επανάληψη

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

Ισορροπία Ανταμοιβή και Πρόκληση

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

Κάντε τα παιχνίδια πιο ελκυστικά με τα επίπεδα

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