Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clarify the purpose of the Plugin directory, and tidy its contents #2637

Open
ivan-mogilko opened this issue Dec 27, 2024 · 0 comments
Open
Labels
context: project related to the project and its organization type: question open discussion what: engine plugin

Comments

@ivan-mogilko
Copy link
Contributor

ivan-mogilko commented Dec 27, 2024

Frankly speaking, the Plugin dir is a mess, and it's been like that for a while.
Some plugins there have MSVC project and/or makefiles, some don't. In some cases the MSVC project or makefile is outdated.

The problem is that the purpose of the directory is not well defined. Originally these plugins were written by JJS in sake of non-Windows ports. Apparently some platforms, such as PSP (now discontinued), was meant to have them as separate dlls, at least in the first iteration; that's why there are makefiles and some extra psp files in them
Today they are mostly used as built-in with the engine in case particular build flag is set.

On another hand, there are situations when I had to build these plugins as standalone dlls:

  1. Testing purposes, when plugin can be built in multiple variants (AGSSpriteFont).
  2. Testing an older game on Windows, but having to compare original old plugin dll and our code.
  3. Sending compatible version of plugin to someone else (mostly AGSSpriteFont again).

When on Windows, it's easier to build selected plugin standalone, because windows engine does not have them built-in by default, and then it's just easier to try different plugin variants by switching them without rebuilding whole engine, for instance.
Not having an organized structure or up-to-date msvc solution complicates things in these circumstances.

I think it should be clearly defined, are these plugin files only for embedding in the engine, or also to build standalone plugins.
If they are strictly for embedding, then there should not be any msvc projects or makefiles for building them alone; have strictly files that contain plugin functions.
If they are for both purposes, then there should be an up-to-date msvc and makefile to let them be built standalone.
If, for instance, it seems convenient to only have embedded plugins in the "ags" repo, but still there's a reason to have some or all of them for standalone building, then we might have a separate repository for these.


Additionally, since these built-in plugins are meant primarily for running older games, then is it okay to remove them completely in ags4 branch?

@ivan-mogilko ivan-mogilko added what: engine plugin context: project related to the project and its organization labels Dec 27, 2024
@ivan-mogilko ivan-mogilko added the type: question open discussion label Dec 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
context: project related to the project and its organization type: question open discussion what: engine plugin
Projects
None yet
Development

No branches or pull requests

1 participant