Registry / web-framework / ursina

ursina

JSON →
library8.3.0pypypi✓ verified 86d ago

Ursina is an easy-to-use game engine/framework for Python, built on top of Panda3D. It simplifies 3D game development with a focus on rapid prototyping and beginner-friendliness, offering abstractions for entities, input, UI, and more. It is currently at version 8.3.0 and maintains a relatively active release cadence, often with minor updates and bug fixes between major feature releases.

pip install ursina
INSTALL
IMPORT
SIG · URSINA
U
ursina
web-frameworkpythonv8.3.0
Install
5.0s avg
Import
1396ms
Disk
217MB
Pass rate
5/ 10
Env Coverage5 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v7.0.0 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.910 runs
build_error
glibc
py 3.103.910 runs
installs and imports cleanly · install 5.0s · import 1.117s · 217MB
217MB installed
● package 217MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

Ursina
from ursina import Ursina
Entity
from ursina import Entity
color
from ursina import color
from ursina import *
While 'from ursina import *' is common, explicit imports avoid namespace pollution and improve code clarity.
EditorCamera
from ursina.prefabs.editor_camera import EditorCamera

This quickstart initializes the Ursina engine, creates a basic orange cube, sets up an editor camera for navigation, and starts the game loop.

from ursina import * app = Ursina() # Initialize the engine # Create a simple cube entity cube = Entity(model='cube', color=color.orange, scale=2, position=(0,0,0)) # Add camera controls EditorCamera() # Or use FirstPersonController() # Run the application app.run()
Debug
Known issues
gotchaThe common practice of using 'from ursina import *' can lead to namespace pollution, where many global variables and functions are brought into your script, potentially clashing with your own names or making it harder to track where symbols originate. This is especially true in larger projects.
fix
Prefer explicit imports (e.g., `from ursina import Ursina, Entity, color`) for better code clarity and maintainability, especially in production or larger codebases.
affects: All versions
gotchaUrsina is a graphical application built on Panda3D. Running it in environments without a display server (e.g., SSH without X forwarding, Docker without GUI support, some WSL2 setups) will typically result in errors or immediate crashes as it cannot initialize a window.
fix
Ensure you are running Ursina in a graphical environment with a functional display server. For WSL2, ensure WSLg is enabled or an X server is properly configured. For server environments, consider using a virtual framebuffer (like Xvfb) if specific rendering operations are needed, though full interactive Ursina use generally requires a visible display.
affects: All versions
breakingAs of Ursina version 8.0.0, Python 3.12 or newer is explicitly required. Older Python versions (e.g., 3.8-3.11) are no longer officially supported and may lead to installation failures or runtime issues.
fix
Upgrade your Python installation to version 3.12 or later. If you need to use an older Python version, you must use an older Ursina release (e.g., Ursina 7.x.x).
affects: 8.0.0+
gotchaWhile powerful, Ursina can experience performance degradation with a very large number of unoptimized entities (e.g., thousands of complex models) or intricate shaders, similar to other game engines. Default settings prioritize ease of use over extreme optimization.
fix
For complex scenes, consider optimizing 3D models (reduce poly count), using instancing for identical objects, implementing culling techniques, and simplifying materials/shaders. Profile your application to identify bottlenecks.
affects: All versions
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'Panda3D'
Panda3D, a core dependency of Ursina, failed to install correctly or is not found in the current Python environment.
fix
Ensure your environment meets Panda3D's system requirements (e.g., necessary C++ runtime libraries). Try re-running `pip install ursina`. If issues persist, try `pip install Panda3D` separately to see more specific error messages, then troubleshoot system-level dependencies for Panda3D.
NameError: name 'Entity' is not defined
You attempted to use a core Ursina class or object like `Entity` without properly importing it into your script's scope.
fix
Add `from ursina import Entity` to your imports. If you prefer the common Ursina style, ensure `from ursina import *` is at the top of your script.
The Ursina window is not appearing or crashes immediately upon launch.
This issue is often related to not calling `app.run()`, or underlying GPU drivers, display server configuration (especially on Linux/WSL), or other environment-specific graphical issues preventing Panda3D from initializing the window.
fix
Ensure `app.run()` is the very last line of your script to start the game loop. Update your graphics drivers. On Linux or WSL, verify your X server (or WSLg) is correctly installed and configured. Test with a minimal Ursina script to isolate the issue.
Upgrade
Version history
8.3.0latest on PyPI · released Dec 6, 2025
Audit
Dependencies

No dependency data recorded yet.

Agent activity
36 hits · last 30 days
node
36
Resources
ursina — pip install ursina · libregistry