Skip to content

[RFC / Core] Choosing the Python framework and setting up the engine architecture #1

Description

@Mark-bitde

Goal

We are starting an ambitious open-source project to port the famous Psych Engine (FNF) from Haxe/HaxeFlixel entirely to Python. To make development efficient and scalable, we need to choose our core 2D graphics framework and establish the initial repository structure.

We welcome all Python developers, game devs, and FNF fans to join the discussion and help build the foundation of this engine!


Tech Stack Discussion

We need a powerful 2D library that will serve as our analogue to HaxeFlixel. The main candidates are:

  1. Pygame / Pygame-CE — The classic choice. It has a massive community and excellent documentation, though it might require optimization for high resolutions and complex shader effects.
  2. Arcade — A modern Python 2D gaming library built on top of OpenGL. It offers hardware acceleration out of the box and handles large amounts of sprites efficiently.
  3. Pyglet — A pure Python multimedia library using OpenGL. Great for custom rendering loops and window management.

Please share your thoughts, benchmarks, or suggestions in the comments below!


Roadmap to First MVP (Contribution Checklist)

Once the framework is chosen, we will begin accepting Pull Requests for the following core modules:

  • Architecture: Project initialization, virtual environment setup, and a basic main.py with a consistent Game Loop.
  • Parsing: A module using the standard json library to read and convert official Psych Engine song charts and weekly data into Python dictionaries.
  • Rendering: Basic HUD setup and rendering of static note receptors (Strums) on the screen.
  • Audio & Sync: Implementation of the audio playback system synced with the song's BPM to calculate precise arrow spawn timings.

How to Contribute

If you want to claim a specific task:

  1. Comment down below expressing which part you want to work on (e.g., "I can handle the JSON chart parser").
  2. Fork this repository, write your code, and submit a Pull Request.

Let's build the ultimate Python-based FNF engine together! 🚀

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions