Skip to main content

A 2D game engine written in Python using both PyGame, PySDL2 and PySDL3.

Project description

ReForge [Forge IV]

A 2D game engine written in Python using PySDL2, PySDL3 and PyGame.

Getting Started

How to install.

pip install ReForge

Examples

Creating a window.

import os

os.environ["REFORGE_API"] = "sdl3"

import reforge, ctypes

def reforgeEntry(argc: int, argv: list[str]) -> int:
    context = reforge.Context()
    context.makeContextCurrent()
    window = reforge.Window(title = "ReForge", width = 1200, height = 600)
    context.registerWindow(window)
    renderer = reforge.Renderer(window)
    scene = reforge.Scene()

    while not context.isTerminated():
        context.pollEvents()
        renderer.clear(reforge.Vector4(0.0, 0.0, 0.0, 255.0))
        renderer.renderScene(scene)
        renderer.present()

    context.terminate()
    return reforge.exitSuccess

Rendering a rect.

import os

os.environ["REFORGE_API"] = "sdl3"

import reforge, ctypes

def reforgeEntry(argc: int, argv: list[str]) -> int:
    context = reforge.Context()
    context.makeContextCurrent()
    window = reforge.Window(title = "ReForge", width = 1200, height = 600)
    context.registerWindow(window)
    renderer = reforge.Renderer(window)
    scene = reforge.Scene()

    entity = scene.createEntity()
    entity.addComponent(reforge.RectComponent(fill = False, color = reforge.Vector4(0.0, 128.0, 128.0, 255.0)))
    entity.getComponent(reforge.TransformComponent).scale = reforge.Vector2(200.0, 200.0)
    entity.getComponent(reforge.TransformComponent).position = \
        window.size / 2.0 - entity.getComponent(reforge.TransformComponent).scale / 2.0

    while not context.isTerminated():
        context.pollEvents()
        renderer.clear(reforge.Vector4(0.0, 0.0, 0.0, 255.0))
        renderer.renderScene(scene)
        renderer.present()

    renderer.terminate()
    context.terminate()
    return reforge.exitSuccess

Using the low-level API.

import os

os.environ["REFORGE_API"] = "sdl3"

import reforge, ctypes

def reforgeEntry(argc: int, argv: list[str]) -> int:
    context = reforge.api.Context()
    window = reforge.api.Window(title = "ReForge", width = 1200, height = 600)
    renderer = reforge.api.Renderer(window)
    inputHandler = reforge.api.Input(window)
    eventHandler = reforge.api.EventHandler()
    event = reforge.api.Event()
    running = True

    while running:
        while eventHandler.pollEvents(event):
            if event.type == reforge.api.EventType.WindowClosed:
                running = False

            inputHandler.eventHandler(event)

        if inputHandler.keyboard.keys[reforge.api.Key.Escape]:
            running = False

        renderer.clear(reforge.Vector4(0.0, 0.0, 0.0, 255.0))
        renderer.present()

    eventHandler.terminate()
    inputHandler.terminate()
    renderer.terminate()
    window.terminate()
    context.terminate()
    return reforge.exitSuccess

Project details


Download files

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

Source Distribution

reforge-0.1.1.tar.gz (16.5 kB view details)

Uploaded Source

Built Distribution

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

reforge-0.1.1-py3-none-any.whl (29.5 kB view details)

Uploaded Python 3

File details

Details for the file reforge-0.1.1.tar.gz.

File metadata

  • Download URL: reforge-0.1.1.tar.gz
  • Upload date:
  • Size: 16.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for reforge-0.1.1.tar.gz
Algorithm Hash digest
SHA256 8a8cb15d8df33e82612598783e0600b50bf10877605a6b077f31199124a76e41
MD5 1a19709b1388f6f8eb2f2bbb3962db38
BLAKE2b-256 c6df22692782e70da73cf405e6b6b62fd54c5707ed990148be88eb9533e581fa

See more details on using hashes here.

File details

Details for the file reforge-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: reforge-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 29.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for reforge-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 571fc6a399e377d87a6184a6fe51adfbc3a92e8c5408b423ce063eb9e3dea39c
MD5 a7558c5271abba1bb5c1976ad2d7c6e8
BLAKE2b-256 fb39ef4342bc24aabc7c1d02d7cddfd4ae6f11054013225219fb174539c6ceb0

See more details on using hashes here.

Supported by

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