Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Bibliothèque] PyEngine

Créez votre jeu en 2D facilement

    1 juin 2019 à 13:04:51

    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.

    • Partager sur Facebook
    • Partager sur Twitter
    Développeur intermédiaire Python et Web. Développeur débutant Java
      3 juin 2019 à 23:01:36

      Sympa comme projet !

      Tu as des exemples de jeux réalisés avec ton moteur ? :)

      • Partager sur Facebook
      • Partager sur Twitter
        4 juin 2019 à 21:45:06

        Merci beaucoup :)

        Des exemples sont dispos sur ce github : https://github.com/pyengine-2d/PyEngine-Examples

        Sinon, voici le screen d'un jeu produit avec PyEngine : 

        • Partager sur Facebook
        • Partager sur Twitter
        Développeur intermédiaire Python et Web. Développeur débutant Java
          9 juin 2019 à 11:35:58

          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/

          -
          Edité par LavaPower 9 juin 2019 à 15:11:36

          • Partager sur Facebook
          • Partager sur Twitter
          Développeur intermédiaire Python et Web. Développeur débutant Java
            7 juillet 2019 à 22:13:38

            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/

            -
            Edité par LavaPower 7 juillet 2019 à 22:14:55

            • Partager sur Facebook
            • Partager sur Twitter
            Développeur intermédiaire Python et Web. Développeur débutant Java
              13 juillet 2019 à 15:51:19

              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 : https://pyengine-doc.readthedocs.io/fr/latest/

              -
              Edité par LavaPower 13 juillet 2019 à 15:51:51

              • Partager sur Facebook
              • Partager sur Twitter
              Développeur intermédiaire Python et Web. Développeur débutant Java

              [Bibliothèque] PyEngine

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              • Editeur
              • Markdown