کتابخانه Python Arcade یک راه ساده و موثر برای پیاده سازی سطوح بازی در پروژه های شما ارائه می دهد.
توسعه بازی یک فرآیند هیجان انگیز و خلاقانه است که به شما امکان می دهد ایده های تخیلی خود را زنده کنید. هنگام طراحی یک بازی، یکی از عناصر کلیدی که می تواند تجربه بازیکن را تا حد زیادی افزایش دهد، اجرای سطوح بازی است.
سطوح ساختار، پیشرفت و چالشها را ارائه میکنند و به بازیکنان حس موفقیت و مشارکت را در مراحل مختلف بازی میدهند.
یک بازی ساده بسازید
قبل از شروع، مطمئن شوید که پیپ را روی دستگاه خود نصب کرده اید. برای نصب کتابخانه آرکید از این دستور استفاده کنید:
pip install arcade
یک بازی اساسی ایجاد کنید که بازیکن بتواند به چپ و راست حرکت کند.
کد استفاده شده در این مقاله در این مخزن GitHub موجود است و برای استفاده شما تحت مجوز MIT رایگان است.
از قابلیت های کتابخانه Arcade برای مدیریت ورودی کاربر و به روز رسانی وضعیت بازی بر این اساس استفاده کنید. یک فایل جدید با نام simple-game.py ایجاد کنید و کد زیر را اضافه کنید:
import arcade
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
class MyGame(arcade.Window):
def __init__(self):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "My Game")
arcade.set_background_color(arcade.color.WHITE)
self.player_x = SCREEN_WIDTH // 2
def on_draw(self):
arcade.start_render()
arcade.draw_rectangle_filled(self.player_x, 50, 50, 50, arcade.color.BLUE)
def on_key_press(self, key, modifiers):
if key == arcade.key.LEFT:
self.player_x -= 10
elif key == arcade.key.RIGHT:
self.player_x += 10
def on_key_release(self, key, modifiers):
if key == arcade.key.LEFT or key == arcade.key.RIGHT:
pass
def main():
game = MyGame()
arcade.run()
if __name__ == "__main__":
main()
در زیر خروجی است:
ایجاد سطوح چندگانه
اکنون با افزودن سطوح مختلف، بازی را گسترش دهید. هر سطح ویژگی های منحصر به فرد خود را دارد که چالش های مختلفی را برای بازیکن فراهم می کند. شما می توانید کد قبلی را تغییر دهید تا سطوح اضافی را شامل شود. در اینجا یک مثال است:
class LevelOne:
def __init__(self):
self.player_x = SCREEN_WIDTH // 2
def update(self):
pass
def draw(self):
arcade.draw_rectangle_filled(self.player_x, 50, 50, 50, arcade.color.BLUE)
class LevelTwo:
def __init__(self):
self.player_x = SCREEN_WIDTH // 2
def update(self):
pass
def draw(self):
arcade.draw_rectangle_filled(self.player_x, 50, 50, 50, arcade.color.RED)
class MyGame(arcade.Window):
def __init__(self):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "My Game")
arcade.set_background_color(arcade.color.WHITE)
self.levels = [LevelOne(), LevelTwo()]
self.current_level = 0
def on_draw(self):
arcade.start_render()
self.levels[self.current_level].draw()
def on_key_press(self, key, modifiers):
if key == arcade.key.LEFT:
self.levels[self.current_level].player_x -= 10
elif key == arcade.key.RIGHT:
self.levels[self.current_level].player_x += 10
def on_key_release(self, key, modifiers):
if key == arcade.key.LEFT or key == arcade.key.RIGHT:
pass
def update(self, delta_time):
self.levels[self.current_level].update()
def main():
game = MyGame()
arcade.run()
if __name__ == "__main__":
main()
انتقال بین سطوح
برای ایجاد یک انتقال صاف بین سطوح، تشخیص دهید که بازیکن چه زمانی از یک مرز خاص عبور می کند. شما می توانید حرکت بازیکن را ردیابی کنید، و هنگامی که بازیکن از مرز عبور کرد، می توانید به سطح بعدی بروید. یک فایل جدید با نام transition-between-levels.py ایجاد کنید و کد را با به روز رسانی های زیر اضافه کنید:
class MyGame(arcade.Window):
# ...
def update(self, delta_time):
self.levels[self.current_level].update()
# Check if the player crossed the boundary
if 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
elif 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
# ...
در زیر خروجی است:
از جمله ویژگی های اضافی
برای جذابتر کردن سطح بازیتان، میتوانید ویژگیهای اضافی مانند افزایش قدرت و اهداف را در آن قرار دهید.
اهداف
اهداف اهداف یا اهداف خاصی را برای بازیکن فراهم می کند تا در یک سطح به آن دست یابد. آنها حس هدف و پیشرفت را اضافه می کنند. در اینجا مثالی از اجرای یک ویژگی هدف آورده شده است:
class Objective:
def __init__(self, x, y):
self.x = x
self.y = y
self.radius = 20
def draw(self):
arcade.draw_circle_filled(self.x, self.y, self.radius, arcade.color.GREEN)
class LevelOne:
def __init__(self):
self.objective = Objective(600, 400)
# ...
def update(self):
# Check if the player reaches the objective
if arcade.check_for_collision(self.player, self.objective):
self.complete_objective()
def draw(self):
self.objective.draw()
# ...
def complete_objective(self):
# Code to handle objective completion
pass
کلکسیونی ها
کلکسیون ها آیتم ها یا پاداش هایی هستند که بازیکن می تواند در تمام سطوح جمع آوری کند. در اینجا نمونه ای از پیاده سازی یک ویژگی کلکسیونی آورده شده است:
class Collectible:
def __init__(self, x, y):
self.x = x
self.y = y
self.radius = 10
self.is_collected = False
def draw(self):
if not self.is_collected:
arcade.draw_circle_filled(self.x, self.y, self.radius, arcade.color.ORANGE)
def collect(self):
self.is_collected = True
# Code to handle the collectible's effect on the player
class LevelOne:
def __init__(self):
self.collectible = Collectible(300, 300)
# ...
def update(self):
# Check if the player collects the item
if arcade.check_for_collision(self.player, self.collectible):
self.collectible.collect()
def draw(self):
self.collectible.draw()
# ...
موانع
موانع می توانند اشیاء ثابت یا موجودات متحرکی باشند که مسیر بازیکن را مسدود می کنند. آنها از بازیکن می خواهند که استراتژی داشته باشد و راه هایی برای غلبه بر آنها بیابد. در اینجا مثالی از اجرای ویژگی موانع آورده شده است:
class Obstacle:
def __init__(self, x, y, width, height):
self.x = x
self.y = y
self.width = width
self.height = height
def draw(self):
arcade.draw_rectangle_filled(self.x, self.y, self.width, self.height, arcade.color.GRAY)
class LevelOne:
def __init__(self):
self.obstacles = [Obstacle(400, 200, 100, 50), Obstacle(600, 500, 80, 120)]
# ...
پاور آپ ها
قدرتآپها میتوانند تواناییهای بازیکن را افزایش دهند یا مزایای موقتی ایجاد کنند. در اینجا مثالی از اجرای یک ویژگی power-up آورده شده است:
class PowerUp:
def __init__(self, x, y):
self.x = x
self.y = y
self.radius = 10
self.is_active = True
def draw(self):
if self.is_active:
arcade.draw_circle_filled(self.x, self.y, self.radius, arcade.color.YELLOW)
def activate_power_up(self):
self.is_active = True
def deactivate_power_up(self):
self.is_active = False
class LevelOne:
def __init__(self):
self.power_up = PowerUp(200, 200)
# ...
def update(self):
# Check if the player collides with the power-up
if arcade.check_for_collision(self.player, self.power_up):
self.player.activate_power_up()
self.power_up.deactivate_power_up()
def draw(self):
self.power_up.draw()
# ...
بهترین روش ها برای طراحی سطح
طراحی سطح نقش مهمی در ایجاد تجربه های جذاب و لذت بخش از گیم پلی بازی می کند. در اینجا برخی از بهترین روشها وجود دارد که باید هنگام طراحی سطوح برای بازی خود در نظر بگیرید:
اهداف روشن
هر سطح باید یک هدف یا هدف مشخص برای دستیابی بازیکن داشته باشد. چه رسیدن به یک مکان خاص، چه شکست دادن دشمنان یا حل پازل، هدف باید به خوبی تعریف شده و به بازیکن اطلاع داده شود.
منحنی دشواری تدریجی
سطوح را با افزایش تدریجی دشواری طراحی کنید تا یک منحنی یادگیری صاف برای بازیکنان فراهم کنید. با چالش های ساده تر شروع کنید و به تدریج مکانیک ها یا موانع جدید را با پیشرفت بازیکن معرفی کنید. افزایش ناگهانی سختی می تواند بازیکنان را ناامید کند، بنابراین حفظ یک پیشرفت متعادل مهم است.
وضوح بصری
اطمینان حاصل کنید که طراحی سطح و عناصر بصری به وضوح اطلاعات مهم را به بازیکن منتقل می کند. ترکیب موسیقی و جلوه های صوتی نیز می تواند سرنخ های مهمی را منتقل کند و اطلاعات ضروری را به پخش کننده ارائه دهد.
تست بازی و تکرار
تست بازی منظم برای اصلاح و بهبود طراحی سطح ضروری است. بازخورد بازیکنان را جمع آوری کنید و تجربیات آنها را مشاهده کنید تا مناطقی را که ممکن است نیاز به تنظیمات داشته باشند شناسایی کنید. طراحی سطح خود را بر اساس این بازخورد تکرار کنید تا گیم پلی لذت بخش تر و متعادل تری ایجاد کنید.
تعادل پاداش و چالش
به بازیکنان برای غلبه بر چالش ها در سطوح خود پاداش دهید. این را می توان از طریق قدرت، کلکسیون، باز کردن قفل مناطق جدید، یا پیشرفت روایت به دست آورد. متعادل کردن سختی چالش ها با پاداش های معنادار به انگیزه بازیکنان کمک می کند و حس موفقیت را ایجاد می کند.
بازی ها را با سطوح جذاب تر کنید
با پیاده سازی سطوح بازی، می توانید تجربه کلی بازیکن را بهبود ببخشید و یک محیط گیم پلی جذاب تری ایجاد کنید. سطوح پیشرفت، چالش و تنوع را فراهم می کند و بازیکنان را سرمایه گذاری و با انگیزه نگه می دارد. آنها به شما اجازه می دهند مکانیک ها، موانع، دشمنان و پاداش های جدید را معرفی کنید و اطمینان حاصل کنید که هر سطح متمایز و هیجان انگیز است.