Thanks to visit codestin.com
Credit goes to github.com

Skip to content

jkbhagatio/rpg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RPG

RPG is a 2d role-playing game. Currently in development. Core developer goals for this project are to:

  1. Explore game dev in Python (e.g. using Pyglet and PyGame)
  2. Explore UI (e.g. using PyQt5) and low-level graphics (e.g. using OpenGL, PyOpenGL) libraries
  3. Integrate python with low-level compiled code (e.g. C)
  4. Use best practices in Python packaging (e.g. adhering to PyPA, using setuptools)
  5. Use best development practices in CI/CD solutions and documentation (e.g. Flake8, PyTest, Tox, Travis CI, Github Actions, ReadTheDocs)
  6. Use best practices in OOP Design Patterns.

Resources

  1. Python Game Dev

  2. UI & Graphics

  3. Python Bindings

  4. Python Packaging

  5. CI/CD and Documentation

  6. OOP

    • GoF's Design Patterns

    • Design Patterns:

      • (Creational) Abstract Factory*; Factory Method*; Prototype
      • (Structural) Composite*; Decorator*; Facade; Flyweight
      • (Behavioral) State*; Chain of Responsibility; Command; Observer; Visitor; Mediator; Visitor; Strategy; Interpreter
    • Classes:

      • Class constructor methods & dependency injection
      • Designing subclass constructors from superclass constructors
      • Composition (interface) inheritance vs. implementation inheritance
      • Multiple inheritance & mix-ins
      • Enumeration classes
      • Importing classes
      • Class destructor methods
      • Types:
        • Abstract
        • AllowedSubclasses
        • ConstructOnLoad
        • Inferior classes (for overloaded graphics functions)
        • Sealed
    • Fields:

      • Constant properties
      • Dynamic (Instance) Properties
      • Static Data
      • Property get/set methods
      • Property events/listeners ('event.proplistener')
      • Types:
        • AbortSet
        • Abstract
        • Access
        • GetAccess
        • SetAccess
        • Constant
        • Dependent
        • GetObservable
        • SetObservable
        • Hidden
        • NonCopyable
        • Transient
    • Events (& Listeners):

      • Trigger events for listeners both tied and untethered to event source ('notify')
      • Determine if any listeners currently exist for event ('event.haslistener')
      • Deactivate and reactivate listeners
      • Pass extra event data to a listener callback ('notify(obj, 'evt', evtdata)) by subclassing 'event.EventData' and adding a new property to that subclass
      • Execute listeners in a specific order
      • Have a listener recursively trigger the same event (via the 'Recursive' property of a listener object) - (but make sure the listener callback changes the object data in some way such that infinite recursion does not occur)
      • Save and restore a listener
      • Types:
        • Hidden
        • ListenAccess
        • NotifyAccess
    • Extras:

      • Save and load process for objects
      • Property initialization order dependency
      • Class introspection and metadata
      • Class arrays and class hierarchical heterogeneous arrays

Contents

  • docs\: documentation and examples and development guidelines
  • rpg\: game source code
  • tests\: unit and integration tests
  • changelog.md: an up-to-date changelog describing latest features and their commits
  • env.yml: dependencies file for conda
  • pyproject.toml: specifies build tools
  • requirements.txt: dependencies file for pip and setuptools
  • setup.py: configures and packages the source code
  • tox.ini: tox file for running tests on package installs across environments

Notes for Developers

  • Clone this repo and install package in editable mode:
  • Using semantic versioning
  • Contributing:
    • see project organization and style guidelines
    • All work should be done on feature branches. All work should be flaked and include tests. PRs from feature branches should be sent to dev. On a new release, dev is merged into main. CI runs on dev and main.
    • On any merges into dev, the following should be updated (as necessary):
      1. readme.md
      2. docs\
      3. root directory config files
      4. changelog.md
    • Github Issues and Projects should be used to track and organize development.

Misc

About

2d role-playing game following dev best practices

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages