Skip to main content

pygame-topdownengine

License: MIT PyPI Version Python Versions Types: Typed

pygame-topdownengine is a 2.5D engine for top-down games, built on top of pygame-ce. It is designed to be highly modular, with most core systems being located in the monolithic GameObject class. The engine utilizes an OOP architecture for rapid prototyping and development.

Features

  • Monolithic GameObject class that contains all of the core systems.
  • MobileObject class that allows for modular movement behavior.
  • EnvObject class for environmental decorations or objects.
  • VisualUtils class that allows for the easy manipulation of Surfaces.
  • Option to use either pixel-perfect or subpixel rendering.
  • Robust 3D collision detection.
  • Debug mode to render colliders during development.
  • Basic lighting system.
  • Customizable camera system.
  • Integrated bare-bones UI system.

Quickstart

Finished Program
The player (a MobileObject) jumping onto a collidable object (an EnvObject) while being chased by the enemy (another MobileObject).

This code makes a Player character, a secondary character that will attempt to follow the Player character, and a solid object the Player can collide with and jump over.

import topdownengine as tde
from topdownengine.mobile_object.controller import KeyboardInputController, MovementAIController
import pygame as pg
from topdownengine.ui import Button, UIContainer, Text

# Define an instance of the Game class
game = tde.Game(
    screen_width=900, 
    screen_height=650, 
    window_title="pygame-topdownengine Basic Usage Example",
    target_scale=3 # Add scale of three to make it more visible
)
game.bg_color = (40, 229, 30)

# Define main menu using a BaseScene instance + set the active scene to the main menu
game.scenes["menu"] = tde.BaseScene(game)
game.active_scene_key = "menu"

# Create the play button + header
font = tde.Font("Arial")
header = Text((450, 200), font, 50, "pygame-topdownengine", (255, 255, 255))

play_btn = Button((450, 350), on_click=lambda: setattr(game, "active_scene_key", "gameplay"))
play_btn.image = pg.Surface((150, 50))
play_btn.image.fill((50, 100, 100))
font.draw_text("PLAY", 75, 25, 40, play_btn.image, (255, 255, 255))

# Add the header + play button to the main menu
container = UIContainer()
container.add_ui_element(header)
container.add_ui_element(play_btn)
game.scenes["menu"].ui_containers.append(container)

# Define a MobileObject to be the Player + Enable Camera Tracking
player = tde.MobileObject(
    controller=KeyboardInputController(), 
    animation_paths={
        "idle": tde.ASSETS_DIR / "example-player" / "idle.png",
        "walk": tde.ASSETS_DIR / "example-player" / "walk.png"
    }, frame_size=(16, 16), directional_anims=True
)
# game.camera = tde.SmoothTrackerCamera() # Uncomment to enable Smooth Tracking
game.camera.focus_game_object = player

# Define a MobileObject to follow the Player
enemy = tde.MobileObject(
    controller=MovementAIController(target_mobile_object=player), 
    animation_paths=player.animation_paths, # Use same animations as the Player
    frame_size=(16, 16), directional_anims=True
)

# Define an EnvObject
env_object = tde.EnvObject(
    animation_paths={
        "idle": tde.ASSETS_DIR / "example-cliff.png"
    },
    frame_size=(32, 32), colliders=[pg.Rect(0, 0, 32, 32)]
)
env_object.position = pg.Vector2(100, 100)
env_object.obj_shadow = "32x16"

# Add them to the game object group
game.game_object_group.add(player, env_object, enemy)

# You can add subpixel rendering by uncommenting the below line of code.
# tde.GameObject.SUBPIXEL = True

# Run the game
game.run()

Installation

In order to install pygame-topdownengine, make sure Python and pip are both installed and in PATH. Then, run this command into your terminal:

pip install pygame-topdownengine

If you would like to view the documentation page on installation, which also has information about dependencies and virtual environments, click here.

License

This library is distributed under the MIT license, which can be found in the root of this repository under the LICENSE file.

The source files located in the examples subfolder are licensed under the Creative Commons Zero 1.0 Universal license, which can be found inside of examples/LICENSE.

The documentation (found in the docs subfolder) is also licensed under the Creative Commons Zero 1.0 Universal license, which can be found inside of docs/LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pygame_topdownengine-0.5.1.tar.gz (125.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pygame_topdownengine-0.5.1-py3-none-any.whl (30.4 kB view details)

Uploaded Python 3

File details

Details for the file pygame_topdownengine-0.5.1.tar.gz.

File metadata

  • Download URL: pygame_topdownengine-0.5.1.tar.gz
  • Upload date:
  • Size: 125.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for pygame_topdownengine-0.5.1.tar.gz
Algorithm Hash digest
SHA256 90753f161dba494a5e7465190a8bb91ef3d857b4df52cd4313f81c9818043ba1
MD5 baf75acfdfe77671210c4bde7ae0e592
BLAKE2b-256 a34b863c4e5b4622e56889a4f3e3f5bfe4d0ab3889e78182ed7d056610e9ca96

See more details on using hashes here.

Provenance

The following attestation bundles were made for pygame_topdownengine-0.5.1.tar.gz:

Publisher: release.yml on shaurya-sharma-dev/pygame-topdownengine

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pygame_topdownengine-0.5.1-py3-none-any.whl.

File metadata

File hashes

Hashes for pygame_topdownengine-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 af16a897592cf4ac22b4ceedfff30639d73bdb44b6e9ecf441055feceb6a2d76
MD5 50b0adf2f9bcee3f7744a6f7daad72d9
BLAKE2b-256 93962978e4276930f2a5226d3d2733ec871d29137a9a9fb2aecbacf741028450

See more details on using hashes here.

Provenance

The following attestation bundles were made for pygame_topdownengine-0.5.1-py3-none-any.whl:

Publisher: release.yml on shaurya-sharma-dev/pygame-topdownengine

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page