{"id":13935839,"url":"https://github.com/pokepetter/ursina","last_synced_at":"2025-05-12T15:28:32.555Z","repository":{"id":37981960,"uuid":"97768581","full_name":"pokepetter/ursina","owner":"pokepetter","description":"A game engine powered by python and panda3d.","archived":false,"fork":false,"pushed_at":"2025-05-11T18:42:26.000Z","size":30913,"stargazers_count":2372,"open_issues_count":52,"forks_count":333,"subscribers_count":45,"default_branch":"master","last_synced_at":"2025-05-11T19:35:32.703Z","etag":null,"topics":["3d-game-engine","game-development","game-engine","python"],"latest_commit_sha":null,"homepage":"https://pokepetter.github.io/ursina/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pokepetter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":"FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"pokepetter","patreon":"ursinaengine"}},"created_at":"2017-07-19T23:04:19.000Z","updated_at":"2025-05-11T18:42:30.000Z","dependencies_parsed_at":"2023-12-08T17:24:21.110Z","dependency_job_id":"0a9f6096-6401-4226-8b85-49a0136c260d","html_url":"https://github.com/pokepetter/ursina","commit_stats":{"total_commits":1730,"total_committers":36,"mean_commits":48.05555555555556,"dds":"0.22080924855491324","last_synced_commit":"9bb6fbff6d53f479469157e2c38e5f885f2e6b7b"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pokepetter%2Fursina","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pokepetter%2Fursina/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pokepetter%2Fursina/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pokepetter%2Fursina/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pokepetter","download_url":"https://codeload.github.com/pokepetter/ursina/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253765285,"owners_count":21960702,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d-game-engine","game-development","game-engine","python"],"created_at":"2024-08-07T23:02:08.130Z","updated_at":"2025-05-12T15:28:32.533Z","avatar_url":"https://github.com/pokepetter.png","language":"Python","funding_links":["https://github.com/sponsors/pokepetter","https://patreon.com/ursinaengine","https://www.patreon.com/ursinaengine"],"categories":["Python","📚 فهرست"],"sub_categories":["بازیسازی"],"readme":"# ursina    ʕ •ᴥ•ʔゝ□\r\n\r\n[Website](https://pokepetter.github.io/ursina/index.html) | [Discord](https://discord.gg/ydXfhyb) | [Twitter](https://twitter.com/ursinaengine) | [Patreon](https://www.patreon.com/ursinaengine) | [Sponsor](https://github.com/sponsors/pokepetter)\r\n\r\nAn easy to use game engine/framework for python.\r\n\r\n![Banner](/docs/made_with_ursina.jpg)\r\n\r\n[![Trailer](/docs/ursina_trailer_preview.webp)](https://youtu.be/j71j88oCTNo)\r\n\r\n## Getting Started\r\n1) Install [Python 3.10 or newer.](https://www.python.org/downloads/release/python-3100)\r\n\r\n2) Open cmd/terminal and type:\r\n\r\n```\r\npip install ursina\r\n```\r\n\r\n\r\nTo get the newest, in development version from GitHub, install it like this:\r\n\r\n```\r\npip install git+https://github.com/pokepetter/ursina.git\r\n```\r\n\r\n\r\nIf you want to easily edit the source, it's recommended to clone the git\r\nrepo and pip install with --editable flag like this. Make sure you have [git](https://git-scm.com) installed.\r\n\r\n```\r\ngit clone https://github.com/pokepetter/ursina.git\r\ncd ursina\r\npip install --editable .\r\n```\r\n\r\n\r\nAlso install any of the optional dependencies you want from the list below,\r\nor install them all with:\r\n\r\n```\r\npip install ursina[extras]\r\n```\r\n\r\n\r\nOn some systems you might have to use pip3 instead of pip in order to use Python 3 and not the old Python 2.\r\nTo use a specific Python version, use:\r\n```\r\npython3.xx -m pip install ursina\r\n```\r\nWhere 3.xx is the version you want to target.\r\n\r\n\r\n## Dependencies\r\n  * python 3.10+\r\n  * panda3d\r\n  * pillow, for texture manipulation\r\n  * psd-tools, for converting .psd files\r\n  * blender, for converting .blend files\r\n  * pyperclip, for copy/pasting\r\n\r\n\r\n## Examples\r\n``` python\r\nfrom ursina import *            # this will import everything we need from ursina with just one line.\r\n\r\napp = Ursina()\r\nground = Entity(\r\n    model = 'cube',\r\n    color = color.magenta,\r\n    z = -.1,\r\n    y = -3,\r\n    origin = (0, .5),\r\n    scale = (50, 1, 10),\r\n    collider = 'box',\r\n    )\r\n\r\napp.run()                       # opens a window and starts the game.\r\n```\r\n\r\n\r\n* [Minecraft Clone](https://pokepetter.github.io/ursina/minecraft_clone.html)\r\n\r\n* [Platformer Game](https://pokepetter.github.io/ursina/platformer.html)\r\n\r\nThere are other examples in [the samples folder](https://github.com/pokepetter/ursina/tree/master/samples), or in [samples website](https://pokepetter.github.io/ursina/samples.html)\r\n\r\n## How do I make a game?\r\nUrsina games are made by writing Python code. You can use any text editor you want, but personally I like to use Atom.\r\n1) Create an empty .py file called `ursina_game.py`\r\n2) Copy this text into your new file:\r\n``` python\r\nfrom ursina import *           # this will import everything we need from ursina with just one line.\r\n\r\napp = Ursina()\r\n\r\nplayer = Entity(\r\n    model = 'cube' ,           # finds a 3d model by name\r\n    color = color.orange,\r\n    scale_y = 2\r\n    )\r\n\r\ndef update():                  # update gets automatically called by the engine.\r\n    player.x += held_keys['d'] * .1\r\n    player.x -= held_keys['a'] * .1\r\n\r\n\r\napp.run()                     # opens a window and starts the game.\r\n```\r\n\r\n3) Run this in the terminal start the game:\r\n\r\n       python ursina_game.py\r\n   \r\n   ... or run it with your editor/IDE of choice.\r\n\r\n4) You can now move the orange box around with 'a' and 'd'!\r\n\r\n   To close the window, you can by default, press control+shift+alt+q or press the red x.\r\n\r\n## Documentation\r\n   * [Ursina Documentation](https://pokepetter.github.io/ursina/documentation.html)\r\n      - Written explanations of core concepts and how Ursina works.\r\n   * [Ursina API Reference](https://pokepetter.github.io/ursina/api_reference.html)\r\n      - List of Ursina's functions, classes and assets.\r\n   * [Samples](https://pokepetter.github.io/ursina/samples.html)\r\n      - Small example games.\r\n\r\nFound a bug? Posting it in [Issues](https://github.com/pokepetter/ursina/issues).\r\nFixed a bug? Make a [pull request](https://github.com/pokepetter/ursina/pulls).\r\n\r\n\r\n## Project Structure\r\n```\r\n## Project Structure\r\n\r\n📁docs\r\n    📃index.txt\r\n    📃documentation.txt\r\n    📃inventory_tutorial.txt\r\n    ...\r\n        # text files for the website. gets turned into .html files with sswg.\r\n\r\n    📃cheat_sheet.html\r\n        # auto generated documentation made with documentation_generator.py.\r\n\r\n    📃tutorial_generator.py\r\n        # turns specific .py files into .txt files, which can then be turned into .html by sswg.\r\n        # this extracts the comments from the source files into description for that step and the code after into code blocks.\r\n        # see platformer_tutorial.py for an example.\r\n\r\n📁samples               # small example games.\r\n\r\n📁ursina                # the actual ursina module.\r\n    📁audio                 # built-in audio clips.\r\n    📁editor                # the 3d level editor for ursina.\r\n    📁fonts                 # built-in fonts.\r\n    📁models                # .blend files, source files, for built-in 3d models.\r\n        📁procedural            # classes for generating 3d models, like Cylinder, Quad and Terrain.\r\n    📁models_compressed     # .blend files converted to .ursinamesh.\r\n    📁prefabs               # higher level classes like Draggable, Slider, Sprite, etc.\r\n\r\n    📃__init__.py\r\n    📃application.py\r\n    📃audio.py\r\n    ...\r\n        # ursina base modules, like code for Entity, input_handler, Text, window and so on.\r\n\r\n```\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpokepetter%2Fursina","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpokepetter%2Fursina","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpokepetter%2Fursina/lists"}