[Bibliothèque] PyEngine

Créez votre jeu en 2D facilement

a marqué ce sujet comme résolu.
Auteur du sujet

Salut à tous,

Je poste aujourd’hui ce message pour présenter mon projet : PyEngine. Mais avant cela, commençons par une petite présentation de moi-même : je suis LavaPower, développeur Python depuis bientôt 4 ans et ayant à mon actif de nombreux projet. Je bosse avec une équipe de 5 personnes (dont moi même) sur PyEngine (mais je suis un des seuls à être à fond dessus)

Revenons à PyEngine.

En savoir plus sur le projet

Genèse

J’étais en train de créer un jeu vidéo avec PyGame, le projet avancait bien mais je voulais le rendre maintenable et j’ai commencé à créer un système d’entité. Mais je me suis rendu compte que ce genre de système était utile dans presque tous les jeux et qu’il serait intéressant de le créer dans une bibliothèque python. C’est ainsi que commença la création de PyEngine

Généralités et avancement

Actuellement, PyEngine en est à la version 1.1.2. Il est assez proche du paterne "ECS" (Entity, Component, System) mais ne suit pas totalement ce dernier. C’est à dire que les entités et les composants suivent bien ce paterne mais les systèmes de PyEngine n’ont rien à voir. Ceux ci sont là pour gérer une partie du jeu. Exemple : L’EntitySystem gère toutes les entités tandis que l’UISystem gère tous les widgets.

PyEngine comporte déjà pas mal de composants et son système d’entités est assez avancé. Le système de Widgets est lui assez basique et ne comporte que 4 widgets : Label (pour écrire un texte), Image (pour afficher une image), Button (pour créer un bouton) et Entry (pour créer une entrée de texte). Ce dernier est particulièrement limité vu qu’il a du être codé à la main.

Je pourrais encore parler des heures sur PyEngine, notamment des GameStates ou des deux autres systèmes mais je vais plutôt vous laisser poser des questions auxquelles je me ferai une joie de répondre.

Objectifs

PyEngine est en constant amélioration. Mon but est de faire de lui une bibliothèque simple, stable et utile sans trop l’alourdir.

Des fonctionnalités sont prévues comme l’arrivé de nouveaux widgets et vous pouvez toujours faire des suggestions sur Github ou même discord :)

Le projet et son originalité

Il existe déjà des bibliothèques pour faire des jeux en Python. On peut citer PyGame qui est lui même utilisé par PyEngine. Cependant, il est simple à prendre en main quand on a compris son architecture et il facilite des mécanismes comme la gravité, les collisions ou même la création de widgets.

Cette présentation est à présent terminé. Vous pouvez retrouver PyEngine sur :

  • Github : ICI
  • Discord : ICI

Merci d’avoir lu jusqu’à la fin.

Développeur Python, Web et un peu Java

+1 -0
Auteur du sujet

Sortie de PyEngine 1.2.0.

Changelog :

  • All : Use property decorator
  • All : Add annotation on function will be used by users
  • Window : Modify management of Worlds
  • Window : Created in middle of the screen
  • Window : Can modify size
  • GameState : Rename to World
  • World : Remove has system function
  • Entity-Exception : Replace WrongObjectError to TypeError
  • Entity : Can remove component
  • CameraSystem : Create basic camera
  • MoveComponent : Remove speed
  • TextComponent : Add background color
  • TextComponent : Add scale
  • TextComponent : Add rendered_size
  • Label : Add background color
  • Button : Add white filter when it is hovered
  • Button : Can change image
  • Vec2 : Create vector 2
  • Color : Can be add, substact and compared
  • Font : Can be compared
  • Unit Tests : Create
  • Bug Fix : Entity Text is not updated
  • Bug Fix : Entity Text is not count in get_entity
  • Bug Fix : MusicSystem return wrong volume
  • Bug Fix : Window return wrong title
  • Crash Fix : Crash when use Entry
  • Crash Fix : Crash when use length setter of Vec2
  • Crash Fix : Crash when use TextComponent
  • Crash Fix : Crash when we use size of SpriteComponent
  • Crash Fix : Crash when we use LifeComponent

Vous pouvez installer la mise à jour depuis pip via 'pip install PyEngine-2D'

Documentation : https://pyengine-doc.readthedocs.io/fr/latest/

Édité par LavaPower

Développeur Python, Web et un peu Java

+0 -0
Auteur du sujet

Sortie de PyEngine 1.3.0.

Changelog :

  • Window : Add is_running and update_rate property
  • Window : In debug, show fps in console (must be around 60)
  • Window-World : Rename and move WorldCallbacks to WindowCallbacks
  • WindowCallbacks : Add CHANGEWORLD and STOPWINDOW
  • Entity : Can’t have the same type of component two times
  • EntitySystem-UISystem : Change debug color to blue for ui and red for entity
  • EntitySystem : Add get_all_entities function
  • PhysicsComponent : Create CollisionInfos
  • MoveComponent : Unlock diagonal movement
  • LifeComponent : Use clamp function to set life
  • AnimComponent : Create basic animator system
  • Entry : Add width and sprite property
  • Entry : Add color and front parameters
  • Entry : Define accepted letters
  • Network : Create basic network system
  • Vec2 : Add normalized function
  • Color : Add to_hex and from_hex function
  • Colors : Add new colors
  • loggers : Create logging System
  • Lang : Create translate system
  • Config : Create Config system
  • Maths : Create usefull functions (clamp)
  • Unit Tests : Add AnimComponent, loggers, config and lang tests
  • Unit Tests : Update Window, Color, Entry and World tests
  • Optimization and fix some little errors
  • Bug Fix : Entry is update without focus
  • Crash Fix : Crash when show id of Entity Texts
  • Crash Fix : Crash when use entity_follow of CameraSystem

Vous pouvez installer la mise à jour depuis pip via 'pip install PyEngine-2D'

Documentation : https://pyengine-doc.readthedocs.io/fr/latest/

Développeur Python, Web et un peu Java

+0 -0
Auteur du sujet

Sortie de PyEngine 1.4.0

Changelog :

  • AnimComponent : Add play attribute
  • AnimComponent : Use clamp function to set timer
  • PositionComponent : Offset is now a property
  • PositionComponent : position return the position without offset
  • SpriteComponent : Scale don’t modify width and height
  • LifeComponent : Add callback which is trigger when entity has 0 pv
  • Network : If packet have "TOALL" as type, author will recieve the packet
  • Tilemap : Create basic tilemap (using Tiled)
  • Button-Image : size is now a Vec2
  • Button : Only Left Button of Mouse trigger Button
  • Button : Remove btn argument on command of Button
  • Checkbox : Create checkbox widget
  • ProgressBar : Create progressbar widget
  • Entry : Add accents letters in accepted and remove some weird symbol
  • Color : Use clamp function
  • Maths : Clamp function can be use without max or/and min value
  • Font : Add rendered_size function
  • Vec2 : Add divide operator
  • Vec2 : Add iterator
  • Vec2 : Change representation in string to "Vec2(X, Y)"
  • Unit Tests : Add Tilemap, Prefabs and Network tests
  • Unit Tests : Update Components and Widgets tests
  • Setup : Add numpy as dependances
  • README : Add version of pygame
  • README : Remove useless section
  • Optimization
  • Bug Fix : Button must be focused to be hover
  • Bug Fix : Rescale SpriteComponent can make weird result
  • Bug Fix : Shift-capitals must be typed twice in Entry to be writed
  • Bug Fix : Text can be more longer than the Entry
  • Bug Fix : Press an other key than the actuel break the movement with ControlComponent
  • Crash Fix : Crash sometimes to create hover button with sprite
  • Crash Fix : Crash when import Vec2 at first

Vous pouvez installer la mise à jour depuis pip via 'pip install PyEngine-2D'

Documentation : ICI

Développeur Python, Web et un peu Java

+0 -0
Auteur du sujet

Sortie de PyEngine 1.5.0 :

  • Entity-Tilemap : Move to "Entities" folder
  • ControlComponent : Add MOUSEFOLLOW ControlType
  • PhysicsComponent : Add MOUSEFOLLOW and MOUSECLICK CollisionCauses
  • Client : Send type, author and message. Packet are used only in PyEngine
  • Button : Add enabled property
  • Entry : Add Ctrl-C and Ctrl-V
  • Entry : Remove limit of caracters
  • Entry : Repeats the characters if the key is kept pressed
  • Console : Create console widget
  • MultilineLabel : Create Label widget for multiline
  • Label : Replace \n to void. Label doesn’t support break lines
  • AnimatedImage : Create Image widget which support multiple images
  • Selector : Create selector widget
  • Others : Rename Maths to Others
  • Others : Add wrap_text and get_images_from_gif functions
  • Unit Tests : Fix Vec2 and Color tests
  • Unit Tests : Add Console and MultilineLabel tests
  • Optimization
  • Bug Fix : ControlComponent make weird movements with MOUSECLICK ControlType
  • Crash Fix : Crash when use show or hide
  • Crash Fix : Crash when Client doesn’t have callback
  • Crash Fix : Crash when UISystem must show widgets without image or rect

Sortie de PyEngine 1.5.1 :

  • Unlock FPS
  • Font : Rework on Font System
  • Optimization
  • Bug Fix : Has_component doesn’t work with custom component

Développeur Python, Web et un peu Java

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte