When running my Pygame 3d maze, I encountered a new error when loading it up.
Here is my error:
Environment updated. Reloading shell...
pygame 2.6.1 (SDL 2.28.4, Python 3.11.10)
Hello from the pygame community. https://www.pygame.org/contribute.html
libEGL warning: DRI3: Screen seems not DRI3 capable
libEGL warning: DRI3: Screen seems not DRI3 capable
MESA: error: ZINK: vkCreateInstance failed (VK_ERROR_INCOMPATIBLE_DRIVER)
libEGL warning: egl: failed to create dri2 screen
Here are all of my dependencies that are in my code:
requires-python = ">=3.11"
dependencies = [
"panda3d>=1.10.15",
"pygame>=2.6.1",
]
I have spent time researching what this means, but it only comes up as a Windows failure, and my PC is fine. These are related to my graphics card and my PC's bandwidth. I have run this on every computer I have used without problem.
I am using Python on replit. So this shouldn't even be pulling this error from what I know
Can anyone please tell me what this means?
Here is my main.py:
import pygame
import math
from maze import Maze
# Constants
SCREEN_WIDTH, SCREEN_HEIGHT = 800, 600
MAZE_WIDTH, MAZE_HEIGHT = 41, 41
BLOCK_SIZE = 40
SPEED = 0.1
FOV = math.pi / 3 # Field of view
RAY_COUNT = 500 # Number of rays to cast for rendering
MAX_DEPTH = 20 # Rendering distance
MOUSE_SENSITIVITY = 0.0002 # Reduced sensitivity
class Game:
def __init__(self):
pygame.init()
self.screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("3D Maze Game")
self.clock = pygame.time.Clock()
self.maze = Maze(MAZE_WIDTH, MAZE_HEIGHT).generate()
self.player_x, self.player_y = 1.5, 1.5
self.angle = math.pi / 4 # Player facing direction
# # Load wall texture
# self.wall_texture = pygame.image.load("wall.png")
# #self.wall_texture = pygame.transform.scale(self.wall_texture, (100, 100))
# Mouse control settings
pygame.mouse.set_visible(False)
pygame.event.set_grab(True)
def cast_rays(self):
""" Raycasting with proper fade-to-black shading and textures """
for ray in range(RAY_COUNT):
ray_angle = self.angle - (FOV / 2) + (FOV * ray / RAY_COUNT)
depth = 0
while depth < MAX_DEPTH:
test_x = int(self.player_x + math.cos(ray_angle) * depth)
test_y = int(self.player_y + math.sin(ray_angle) * depth)
if self.maze[test_y][test_x] == 1:
break # Stop at walls
depth += 0.05
# Fade into black instead of gray
line_height = min(SCREEN_HEIGHT, int(SCREEN_HEIGHT / (depth)))
shade = max(0, 255 - min(255, depth * 20)) # DARKER FADE
pygame.draw.rect(
self.screen, (shade, shade, shade),
(ray * (SCREEN_WIDTH // RAY_COUNT), SCREEN_HEIGHT // 2 -
line_height // 2, SCREEN_WIDTH // RAY_COUNT, line_height))
# self.screen.blit(
# pygame.transform.scale(
# self.wall_texture,
# (SCREEN_WIDTH // RAY_COUNT, line_height)),
# (ray * (SCREEN_WIDTH // RAY_COUNT),
# SCREEN_HEIGHT // 2 - line_height // 2))
def handle_input(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_w]: # Move forward
new_x = self.player_x + math.cos(self.angle) * SPEED
new_y = self.player_y + math.sin(self.angle) * SPEED
if self.maze[int(new_y)][int(new_x)] == 0:
self.player_x, self.player_y = new_x, new_y
if keys[pygame.K_s]: # Move backward
new_x = self.player_x - math.cos(self.angle) * SPEED
new_y = self.player_y - math.sin(self.angle) * SPEED
if self.maze[int(new_y)][int(new_x)] == 0:
self.player_x, self.player_y = new_x, new_y
if keys[pygame.K_a]: # Strafe left
new_x = self.player_x - math.sin(self.angle) * SPEED
new_y = self.player_y + math.cos(self.angle) * SPEED
if self.maze[int(new_y)][int(new_x)] == 0:
self.player_x, self.player_y = new_x, new_y
if keys[pygame.K_d]: # Strafe right
new_x = self.player_x + math.sin(self.angle) * SPEED
new_y = self.player_y - math.cos(self.angle) * SPEED
if self.maze[int(new_y)][int(new_x)] == 0:
self.player_x, self.player_y = new_x, new_y
def handle_events(self):
lookleft = False
lookright = False
for event in pygame.event.get():
if event.type == pygame.QUIT:
return False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_e:
lookleft = True
elif event.key == pygame.K_q:
lookright = True
elif event.type == pygame.KEYUP:
if event.key == pygame.K_e:
lookleft = False
elif event.key == pygame.K_q:
lookright = False
if lookleft:
self.angle -= 0.1
if lookright:
self.angle += 0.1
return True
def run(self):
while self.handle_events():
self.clock.tick(60)
self.handle_input()
self.screen.fill((0, 0, 0))
self.cast_rays()
pygame.display.flip()
pygame.quit()
if __name__ == "__main__":
Game().run()
Here is my maze.py:
import random
class Maze:
def __init__(self, width, height):
self.width = width
self.height = height
self.grid = [[1] * width for _ in range(height)] # Walls everywhere initially
def generate(self):
def carve_maze(x, y):
""" Recursive maze generation with branching paths """
directions = [(0,1), (1,0), (0,-1), (-1,0)]
random.shuffle(directions)
for dx, dy in directions:
nx, ny = x + dx * 2, y + dy * 2
if 1 <= nx < self.width - 1 and 1 <= ny < self.height - 1 and self.grid[ny][nx] == 1:
self.grid[y + dy][x + dx] = 0
self.grid[ny][nx] = 0
carve_maze(nx, ny)
# Ensure proper maze size for complexity
self.grid[10][10] = 0
carve_maze(1, 1)
return self.grid
if __name__ == "__main__":
maze = Maze(41, 41) # Larger maze size for a full experience
maze_map = maze.generate()
for row in maze_map:
print("".join(['#' if cell else ' ' for cell in row]))
lang-py
.replit
andpyproject.toml
files.