AdamsLair / duality

a 2D Game Development Framework
https://adamslair.github.io/duality
MIT License
1.41k stars 287 forks source link

Extract a Portable Editor Base Library for Platform Independent Custom Tooling Support #540

Open ChristianGreiner opened 7 years ago

ChristianGreiner commented 7 years ago

At the moment importing and exporting assets is hardly integrated in the duality editor. On Linux and Mac you can't use the editor, because of WinForms-dependencies.

It's possible to develop games without the editor, but the asset management is kindly hard without it.

So my suggestion is to extract all asset management stuff to an console tool with nice command line commands.

Later on a UI could be written for Linux and Mac which would just call some those command line commands. (e.g. http://www.mono-project.com/docs/gui/gtksharp/)

ilexp commented 7 years ago

Thanks for creating the issue on that 👍

A good way to go about this would likely involve a bigger editor restructuring to sort out all the dependencies and strictly separate a platform independent editor base library and the currently platform dependent editor UI. Once split, any custom tool or library or game could make use of this editor base library and all of its platform-independent functionality - including, but not limited to Asset Management.

(I'll rename the issue to reflect this.)

As a bonus, having a portable editor base library around would allow to gradually port the editor (to being platform independent) simply by reducing the requirement footprint of individual features and moving them over to the portable base lib when that becomes viable - class by class. It would also be a solid base for any additional tooling people might want to do.

Besides that, it promotes an overall separation between UI and functionality, simply because we do not currently have a portable UI, but portable functionality - and when we do have portable UI at some point in the future, that separation work will already have paid off while still being a valuable asset.