A neat little thing... with nightly updates
Project description
Miniform
What?
miniform is a game development framework designed to help developers create more with less hassle. It provides a structured foundation for handling Worlds, objects, UI, input, and rendering, so you can focus on making games instead of reinventing the wheel.
Why?
- Save Time – No need to build a game structure from scratch.
- Better Organization – Worlds, assets, and objects are neatly managed.
- Pygame, but Better – All the flexibility of Pygame, with added convenience.
Content?
- Modularity – Manage your game with a clean and modular API.
- World & Object Management – Easily define and swap worlds.
- Custom UI System – Interface-scripting made simple.
- Asset Loading – Load sprites and animations efficiently.
- Input Handling – Keyboard and mouse events with built-in support.
- Partitioning Systems – Efficient object management for game worlds of any size.
Download?
Install miniform via pip:
pip install miniform
Getting Started?
After youv'e installed miniform go ahead and create a script named main.py somwhere and paste in the following code:
import miniform
class MyWorld(miniform.resource.world.MiniWorld):
def __init__(self, app):
super().__init__(
app,
miniform.resource.world.MiniTilemap(self, [32, 32]),
miniform.resource.world.MiniGridPartition(app, self, [32, 32])
)
def init(self) -> None:
self.player = self.load_object("player-1", size=[16, 16], pos=[100, 100], mass=800, static=0)
def update_hook(self, dt: float) -> None:
if self.app.events.mouse_wheel_up:
self.app.camera_proc.zoom(-2.5)
elif self.app.events.mouse_wheel_down:
self.app.camera_proc.zoom(2.5)
speed = 200.0
if self.app.events.key_held(self.app.keyboard.W): self.player.set_velocity(vy=-speed)
if self.app.events.key_held(self.app.keyboard.A): self.player.set_velocity(vx=-speed)
if self.app.events.key_held(self.app.keyboard.S): self.player.set_velocity(vy=speed)
if self.app.events.key_held(self.app.keyboard.D): self.player.set_velocity(vx=speed)
self.app.camera_proc.move_to(self.player.pos)
def render_hook(self) -> None:
if self.app.events.mouse_held(self.app.mouse.LeftClick):
self.app.render_proc.draw_line(self.player.center, self.app.mouse.pos.world, [0, 0, 255])
self.app.render_proc.draw_circle(self.player.center, 4, [0, 0, 255])
self.tile_map.set_tile(self.app.mouse.pos.world, 1)
elif self.app.events.mouse_held(self.app.mouse.RightClick):
self.app.render_proc.draw_line(self.player.center, self.app.mouse.pos.world, [255, 0, 0])
self.app.render_proc.draw_circle(self.player.center, 4, [255, 0, 0])
self.tile_map.rem_tile(self.app.mouse.pos.world)
class MyApp(miniform.app.MiniApp):
def __init__(self) -> None:
super().__init__("PlayGround")
def init(self) -> None:
self.set_world(MyWorld)
def exit(self) -> None: pass
def update_hook(self, dt: float) -> None: pass
def render_hook(self) -> None: pass
MyApp().run()
| NOTE: The methods init(), exit() must be defined for any instance of MiniApp; a NotImplementedError is raised otherwise.
Above is a simple MiniApp + MiniWorld set up for topdown movement/runtime tilemap edits. From here you can explore the MiniStaticObject, MiniDynamicObject and the other classes provided in miniform.core.resource and miniform.core.resource.interface.
Contributions?
Want to help improve miniform? Feel free to contribute by submitting issues, suggesting features, or making pull requests!
License
miniform is open-source under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file miniform-0.1.2.post2.tar.gz.
File metadata
- Download URL: miniform-0.1.2.post2.tar.gz
- Upload date:
- Size: 44.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19c18ab2e80bca43ac81720bd275a167e78669e54118b119a349fd98156066a5
|
|
| MD5 |
a80f766fc24ce46322617a752c51816a
|
|
| BLAKE2b-256 |
1aa9adcad11dd4303a08ca129776654bff76ac0246f765d8c22a57dbeaccf764
|
File details
Details for the file miniform-0.1.2.post2-py3-none-any.whl.
File metadata
- Download URL: miniform-0.1.2.post2-py3-none-any.whl
- Upload date:
- Size: 54.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e8326570067707b1abf346efbaa2a12bc1d10227edfa7ec91e2d0c8ffc7c034
|
|
| MD5 |
01f22695e36abd3bbb5ca091849e090c
|
|
| BLAKE2b-256 |
a14c37f843efd0e30d00cd83caae202221c43547d44278dd4d0a0d5800f3daae
|