- Joined
- Aug 3, 2004
- Messages
- 710
Background
Some of you might have heard about Reinventing the Craft. It's an old project I initially started in 2007 and worked extensively on for several years along with SFilip. Reinventing the Craft changed goals several times, but in the end, the idea was that we wanted to provide a stable API for extending Warcraft III with new natives and features. Sadly, due to limited coding experience and time, the project ended up collecting dust.
Since we stopped working on it, I've been contacted several times by people asking for the source, but I was reluctant to release because of the mess it was and all the experimental features it had. On top of that, it was nearly impossible to maintain if an update were released.
This got me to slowly work on a replacement. The new goal for the replacement was that it should be easier to use and it should prioritize maintainability in favor of features, and above all, it should be open source. Over the past few years I've worked on and off on project SharpCraft.
SharpCraft is written from scratch in C# and using EasyHook to inject into Warcraft III, I'm able to do what Reinventing the Craft did. Likewise as Reinventing the Craft only worked with Windows, so does SharpCraft. If enough interest is shown in the future, I might be able to look into how to make a version for Mac. For the time being, the whole project relies heavily on Windows APIs though.
I've finally reached a point where I feel confident in calling it usable and as such, I wanted to announce it.
Credits
Changelog
Tutorials
The tutorials assume a basic understanding of programming.
SharpCraft Development Environment (basic), shows how to setup Visual Studio and use SharpCraft.
SharpCraft Native Tutorial, shows how to add custom natives using the JassAPI plugin. This assumes you've followed the tutorial above.
SharpCraft binaries and source can be found on GitHub.
Some of you might have heard about Reinventing the Craft. It's an old project I initially started in 2007 and worked extensively on for several years along with SFilip. Reinventing the Craft changed goals several times, but in the end, the idea was that we wanted to provide a stable API for extending Warcraft III with new natives and features. Sadly, due to limited coding experience and time, the project ended up collecting dust.
Since we stopped working on it, I've been contacted several times by people asking for the source, but I was reluctant to release because of the mess it was and all the experimental features it had. On top of that, it was nearly impossible to maintain if an update were released.
This got me to slowly work on a replacement. The new goal for the replacement was that it should be easier to use and it should prioritize maintainability in favor of features, and above all, it should be open source. Over the past few years I've worked on and off on project SharpCraft.
SharpCraft is written from scratch in C# and using EasyHook to inject into Warcraft III, I'm able to do what Reinventing the Craft did. Likewise as Reinventing the Craft only worked with Windows, so does SharpCraft. If enough interest is shown in the future, I might be able to look into how to make a version for Mac. For the time being, the whole project relies heavily on Windows APIs though.
I've finally reached a point where I feel confident in calling it usable and as such, I wanted to announce it.
Credits
- MindWorX - for all initial development of SharpCraft
- SFilip - for coding and research for our old project Reinventing the Craft.
- PipeDream - for making Grimoire which have been used as reference and help on multiple occasions
- xttocs - for making jAPI without which this probably wouldn't be possible
Changelog
Code:
v4.0.0.179
* Fixes error with -loadfile paths.
v4.0.0.160
* Fixed error with passing zero arguments to the launcher.
* Added some path based error checking.
* Improved error handling when loading plugins.
* More stuff, check the commit log.
v4.0.0.152
* Made it possible to enable/disable auto-scroll in the DebuggerWindow.
* Made the DebuggerWindow more efficient with large amounts of text.
* Minor aesthetic changes to the DebuggerWindow.
* Removed faulty Mono.CSharp reference.
v4.0.0.145
* Updated EasyHook.
* Fixed bugs related to the EasyHook update.
v4.0.0.137
* Updated for 1.27a.
v4.0.0.136
* Added support for placing SharpCraft in a Warcraft III folder. It'll search the parent folder for war3.exe and use that if possible.
* Changed the plugin system a bit again. Sorry. <3
v3.0.1.135b
* Fixed .zip reading error.
v3.0.0.133
Everything is back to basics. SharpCraft now only has the core plugin functionality. All the advanced features will come as separate plugins.
v2.2.5.124b
* Expanded the managed JASS type wrappers.
* Implemented script-side events (issue #4)
* Implemented new method for calling natives with strings, resulting in more speed, since we're avoiding conversion.
* Implemented a better method for adding trigger actions.
* Implemented a few more Jass types.
* Minor improvement for the InternalNatives.JassStringHandleToString if check.
* Added missing DelegateAction type.
* Included commit number in the version number.
* Fixed a bug with returned JassStrings when calling natives directly.
v2.2.4
* Giant refactor. Too many changes to list them all.
* Added three new base classes for scripting.
* * FullPluginBase; // This class is for plugins that need full access, which means file writing and more.
* * SafePluginBase; // This class is for plugins that only need safe access.
* * MapScriptBase; // This class is for internal war3map.cs scripts. It is similar to SafePluginBase.
* The sandbox milestone reached 100%, meaning more safety.
* Interplugin usage it possible through simple dependency.
v1.2.4a
* Fixed type return bug in CDestructable, CItem and CUnit.
v1.2.4
* Fixed a directory launcher issue.
* Fixed version reporting.
* Added several unmanaged classes to tinker with at your own risk.
* Improved launcher error reporting.
v1.2.3
* Refactored the API. It will be backwards compatible until v2.
* Added Input API for detecting keyboard and mouse input.
* Added Interface API for detecting FPS and writing messages.
* Added events for initializing systems that needs the JASS virtual machine ready.
* Improved on various Jass types.
* Improved on core functionality.
v1.1.3
* Improved the missing assembly loader.
* Added casting from Int32 to JassUnitId.
* Fixed WarcraftIII.IsMouseOverUI inverted return values.
v1.1.2
* Fixed issue with inferring return types of natives.
v1.1.1
* Fixed an issue with multiple plugins.
* Fixed an issue with loading Lidgren.Network.
v1.1.0
* Added Lidgren networking support.
v1.0.0
* First stable release
v0.1pre
* Initial prerelease
Tutorials
The tutorials assume a basic understanding of programming.
SharpCraft Development Environment (basic), shows how to setup Visual Studio and use SharpCraft.
SharpCraft Native Tutorial, shows how to add custom natives using the JassAPI plugin. This assumes you've followed the tutorial above.
SharpCraft binaries and source can be found on GitHub.
Attachments
Last edited: