Metadata-Version: 2.4
Name: Vertex2D
Version: 1.3.50
Summary: Simple and fast 2D game engine based on pygame-ce and SDL2.
Author-email: Teme20xx <jgh71346@gmail.com>
Project-URL: Homepage, https://t.me/Teme20xx
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: pygame-ce>=2.3.0
Requires-Dist: numpy
Requires-Dist: opensimplex
Requires-Dist: sounddevice
Requires-Dist: soundfile


# Vertex2D

## EN

Vertex2D is a 2D game engine built on pygame-ce and SDL2. It provides a simple and clean API for creating games — scenes, sprites, camera, input, text and UI elements out of the box. The engine handles all the boilerplate: window creation, rendering, input processing and scene management. Designed to be lightweight and easy to pick up, so a project can go from zero to a running game in minutes.

**Install:** `pip install vertex2d`

**Requires:** Python >= 3.10, pygame-ce >= 2.3.0, numpy, opensimplex, sounddevice, soundfile.
On Linux, audio needs PortAudio: `sudo apt install libportaudio2` (bundled on Windows and macOS).

**Quick Start:**

```python
from Vertex import Build

vertex = Build("My Game", screen_size=(700, 700), size_window_standart=(700, 700),
    resize=True, ot_pos=False, SafeMode=True, logs=False, DeveLoperMode=False, vsync=True)

class MyGame:
    def __init__(self):
        self.api = vertex.GetFell()
        self.api.SetFPSValue(60)
        self.player = self.api.Square("Player", (255, 0, 0), 350, 350, 150, 150, 0, static=False, center=True)

    def render(self):
        self.api.NewCanvas((75, 75, 75, 255))
        self.api.AllDraw()
        self.api.ClockUse(stabilize_fps=True)
        self.api.Draw()

    def update(self):
        dt = self.api.Get_DeltaTime()
        self.api.Event( { "quit": self.api.End } )
        self.api.UpdateButtonPressedHow()

        self.player.MoveMent("w.a.s.d", 500 * dt)
        """ or:
        if self.api.ButtonPressed("left"): self.player.MoveX(-300 * dt)
        if self.api.ButtonPressed("right"): self.player.MoveX(300 * dt)
        if self.api.ButtonPressed("up"): self.player.MoveY(-300 * dt)
        if self.api.ButtonPressed("down"): self.player.MoveY(300 * dt)
        """

        self.api.AllUpdate(dt)

    def run(self):
        self.update()
        self.render()

vertex.NewScene("MyGame", MyGame)
vertex.SetScene("MyGame")
vertex.run()
vertex.Destroy()
```

**Several scenes:** the first scene is selected automatically. For every next scene call `set_data_create` before `NewScene`, otherwise its objects are registered in the first scene.

```python
vertex.NewScene("Menu", Menu)
vertex.set_data_create("Game")
vertex.NewScene("Game", Game)
vertex.SetScene("Menu")
```

Note: one `Build` per Python process.

Telegram: @Teme20xx

## RU

Vertex2D — это 2D игровой движок на базе pygame-ce и SDL2. Предоставляет простое и понятное API для создания игр — сцены, спрайты, камера, ввод, текст и UI элементы из коробки. Движок берёт на себя всю рутину: создание окна, рендеринг, обработку ввода и управление сценами. Создан лёгким и простым в освоении — от нуля до работающего проекта за считанные минуты.

**Установка:** `pip install vertex2d`

**Требования:** Python >= 3.10, pygame-ce >= 2.3.0, numpy, opensimplex, sounddevice, soundfile.
На Linux для звука нужен PortAudio: `sudo apt install libportaudio2` (на Windows и macOS встроен).

**Быстрый старт:**

```python
from Vertex import Build

vertex = Build("My Game", screen_size=(700, 700), size_window_standart=(700, 700),
    resize=True, ot_pos=False, SafeMode=True, logs=False, DeveLoperMode=False, vsync=True)

class MyGame:
    def __init__(self):
        self.api = vertex.GetFell()
        self.api.SetFPSValue(60)
        self.player = self.api.Square("Player", (255, 0, 0), 350, 350, 150, 150, 0, static=False, center=True)

    def render(self):
        self.api.NewCanvas((75, 75, 75, 255))
        self.api.AllDraw()
        self.api.ClockUse(stabilize_fps=True)
        self.api.Draw()

    def update(self):
        dt = self.api.Get_DeltaTime()
        self.api.Event( { "quit": self.api.End } )
        self.api.UpdateButtonPressedHow()

        self.player.MoveMent("w.a.s.d", 500 * dt)
        """ или:
        if self.api.ButtonPressed("left"): self.player.MoveX(-300 * dt)
        if self.api.ButtonPressed("right"): self.player.MoveX(300 * dt)
        if self.api.ButtonPressed("up"): self.player.MoveY(-300 * dt)
        if self.api.ButtonPressed("down"): self.player.MoveY(300 * dt)
        """

        self.api.AllUpdate(dt)

    def run(self):
        self.update()
        self.render()

vertex.NewScene("MyGame", MyGame)
vertex.SetScene("MyGame")
vertex.run()
vertex.Destroy()
```

**Несколько сцен:** первая сцена выбирается автоматически. Для каждой следующей сцены вызывай `set_data_create` перед `NewScene`, иначе её объекты попадут в первую сцену.

```python
vertex.NewScene("Menu", Menu)
vertex.set_data_create("Game")
vertex.NewScene("Game", Game)
vertex.SetScene("Menu")
```

Примечание: один `Build` на один процесс Python.

Telegram: @Teme20xx
