AdamsLair / duality

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

Make Duality a Portable Class Library #185

Closed AdamsLair closed 9 years ago

AdamsLair commented 9 years ago

In preparation for later cross-platform ports, Duality might need to lose some dependencies:

As an alternative, Duality could use the Bait-And-Switch method to provide a pseudo PCL layer and provide different core binaries for different platforms. If achievable, however, it would be preferable if the Duality core was an actual PCL and all platform-specifics could be moved to a plugin.

AdamsLair commented 9 years ago

In theory, everything except plugin loading could be moved into a platform plugin. Maybe loading an Assembly from file could be done using a delegate, which the launcher provides. Since the launcher needs to be platform-specific anyway, that could be a good place for this.

On second thought, the platform backend stuff could also be provided by the launcher itself - as an alternative to providing it via plugin. Maybe not a great idea, tying those two.

AdamsLair commented 9 years ago

Progress:

Immediate ToDo:

AdamsLair commented 9 years ago

Progress:

Immediate ToDo:

To verify each step and ToDo, check the .Net Portability analyzer VS extension for reference. (Edit: Maybe just create a second .csproj with the portable config until it compiles?)

AdamsLair commented 9 years ago

Getting rid of System.Drawing has one problem: Former Pixmap.Layer / PixelData uses Bitmap internally for compressing image data using PNG. This needs to be replaced by something else.

SirePi commented 9 years ago

Maybe DevIL might help? http://openil.sourceforge.net/

AdamsLair commented 9 years ago

Maybe DevIL might help? http://openil.sourceforge.net/

Unfortunately, since the overarching goal of this is portability, I can only use .Net libraries that are portable as well - written in 100% managed code and without native DllImport. DevIL would require a native library in the backend, which is not an option in this case. :(

By now, I have also asked on StackOverflow on this particular matter and it looks like that PngCs library might actually be an option.

SirePi commented 9 years ago

Ah, missed that part.. my bad

AdamsLair commented 9 years ago

Progress:

AdamsLair commented 9 years ago

Progress:

Immediate ToDo:

AdamsLair commented 9 years ago

Progress:

Immediate ToDo:

AdamsLair commented 9 years ago

Progress:

Immediate ToDo:

AdamsLair commented 9 years ago

Progress:

Immediate ToDo:

AdamsLair commented 9 years ago

Progress:

Immediate ToDo:

AdamsLair commented 9 years ago

Progress:

Immediate ToDo:

AdamsLair commented 9 years ago

Progress:

Immediate ToDo:

AdamsLair commented 9 years ago

Progress:

Immediate ToDo:

AdamsLair commented 9 years ago

Progress:

Immediate ToDo:

AdamsLair commented 9 years ago

Progress:

Immediate ToDo:

AdamsLair commented 9 years ago

Progress:

Immediate ToDo:

AdamsLair commented 9 years ago

Progress:

Immediate ToDo:

AdamsLair commented 9 years ago

Progress:

Immediate ToDo:

AdamsLair commented 9 years ago

Progress:

Immediate ToDo:

AdamsLair commented 9 years ago

Progress:

Immediate ToDo:

AdamsLair commented 9 years ago

Progress:

Immediate ToDo:

AdamsLair commented 9 years ago

Progress:

Immediate ToDo:

AdamsLair commented 9 years ago

Progress:

Immediate ToDo:

AdamsLair commented 9 years ago

Progress:

Immediate ToDo:

AdamsLair commented 9 years ago

Progress:

Closing this.