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
Metadata
Release files for ReForge 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| reforge-0.1.1.tar.gz | 16.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| reforge-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 46.0 kB
Release files / reforge-0.1.1.tar.gz
| Download URL | reforge-0.1.1.tar.gz |
|---|---|
| Size | 16.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8a8cb15d8df33e82612598783e0600b50bf10877605a6b077f31199124a76e41
|
|
BLAKE2b-256 checksum How to use checksums |
c6df22692782e70da73cf405e6b6b62fd54c5707ed990148be88eb9533e581fa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.21
|
Release files / reforge-0.1.1-py3-none-any.whl
| Download URL | reforge-0.1.1-py3-none-any.whl |
|---|---|
| Size | 29.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
571fc6a399e377d87a6184a6fe51adfbc3a92e8c5408b423ce063eb9e3dea39c
|
|
BLAKE2b-256 checksum How to use checksums |
fb39ef4342bc24aabc7c1d02d7cddfd4ae6f11054013225219fb174539c6ceb0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.21
|