MSVC development

I am working on a language integration & was somewhat unsatisfied with development under MSVC. So I decided to take the SCons build system out and made a "true" MSVC Godot project.
took me some effort to make a "MSVC-solution" using static libraries for all the subcategories.
finally got it working & compiled a "debug_Tools_enabled" configuratioin ( Win32 ).
Next steps are to add more config's - since I compiled to static libraries much smaller exes should be possible for runtimes.
For me it seems to compile much faster without the SCons & some MSVC features works better.
I am willing to share the MSVC files - it's just a 7z file with all msvc files in ( < 1MB )
please email me if you are interested
Frank

Tagged:

Tags :

Comments

  • KioriKiori Posts: 246Member

    Move this to General Chat, Forum chat is solely for forum specific stuff.

    This is fairly interesting, I'd recommend you publish a build so ppl could see/test it. And maybe share more details somewhere.(like in a blog post, or here if you want)
    Also, if you want ppl to send you emails, you have to edit your profile and check the option to let other see your email. Or you could publish it on your post.

    Nice work, I think down the road a lot of people might be looking into that.

  • vnenvnen Posts: 31Admin Godot Developer

    Hey, can you publish this somewhere (like in GitHub)? I would like to see how much faster it is.

    I noticed that calling SCons inside VS is slower than calling from a command prompt. There are also some tweaks possible in the SCons files to make the build faster.

  • frank-lesserfrank-lesser Posts: 8Member

    I will do it soon as possible - in the moment I am fighting adding more configurations ( e.g release_Tools_enabled ), debug build of Godot-Engine goes fast m release build was slow since I made the mistake to switch whole program opt. on.
    hope to have a version for publishing on RitHub on monday.

  • frank-lesserfrank-lesser Posts: 8Member

    here is msvc2015.7z
    make a backup of your master folder - can be that it does not go well. I haven't tested it from he 7z file yet.
    unpack it in the Godot-master folder.
    then open the .sln file with MSVC 2015.
    there is a Docs subfolder which you can delete from the project-map.
    the exe which is build is the godottalk-project ( you can rename it back it to godot .
    it is just the name for my Smalltalk language integration .

    The module which I added is Module_voxel ( the voxel addition to Godot from GitHub )
    I have not added the gles3 branch yet.
    I have taken care not to modify any files in the branch itself - but I remember to have renamed nrex.inc to nrex.hpp
    files ( the extension to be found by the matching mechanics of MSVC's IDE ).

    in the IDE it maybe when you build the whole map ( it consists of 72 projects ) that the IDE hangs after a while during the initial build.
    don't worry kill the process & open & build it again - it continues where it stopped.
    seems to me that MS starts to much processes in parallel ( I am on Win10-64).
    there are some complains during the build - I didn't add the DEPRECIATED PP Option but at least a few bugs should be removed:

    c:\dev\godot-master\thirdparty\openssl\crypto\dsa\dsagen.c(95): warning C4716:
    c:\dev\godot-master\scene\2d\canvas_item.cpp(377): warning C4715:
    c:\dev\godot-master\core\io\stream_peer.cpp(495): warning C4715:
    c:\dev\godot-master\tools\editor\plugins\editor_preview_plugins.cpp(757): warning C4723:

    then choose either release_Tools_enabled or debug_Tools_enabled configuration and build it.
    Once the exe is build - rebuild after change goes within seconds on my laptop.
    I will add configurations & improve it as soon as possible - next steps are to allow for smaller executables ( e.g. a GUI only version only for the "ProjectManager engine" ) & to add our MSVC Unix cross compilation tools.

    please give me feedback
    Frank

    P.S if it is working maybe someone can add it to GitHub & if it isn't working just complain & I shall install it on a clean machine next week.

  • frank-lesserfrank-lesser Posts: 8Member
    edited November 2016

    hmm I run into a problem-
    next step - after having fast builds of release_Tools_enabled & debug_Tools_enabled builds
    was trying to build a GodotTalk-Gui build a Godot-Engine which only contains the GUI - nothing else.
    it should be small ( maybe exe will be 1 MB ) and as a POC the ProjectManager could be build with it.
    this would me save a lot of time making what I want - a new language integration.
    and if this generaly works it should solve the problem of huge exe's.

    So I added a few PP defs ( I don't want to make too much of changes in the Godot source - ideally no changes at all ) but I have to change it.

    VISUALSERVER_ENABLED;AUDIOSERVER_ENABLED;PHYSICSSERVER_ENABLED;PHYSICS_2D_SERVER_ENABLED;
    SPATIALSOUNDSERVER_ENABLED;SPATIALSOUND_2D_SERVER_ENABLED;CONVEX_DECOMP_DRIVER_ENABLED;
    NREX_DRIVER_ENABLED;SCENE2D_ENABLED;

    just to describe what I did to take the PHYSICSSERVER out I have changed the code in os_windows.cpp to use the PP Def

    #ifdef PHYSICSSERVER_ENABLED
        physics_server = memnew( PhysicsServerSW );
        physics_server->init();
    #endif
    

    but that is a bad idea - since I have to add a new configuration which has PHYSICSSERVER_ENABLED enabled for the platform or not.
    So source must be changed.
    I would suggest to have a global - which tells us which configurations are used and use that instead of hard code calls.

    Frank.
    PS to the admin(s) - maybe it should posted somewhere else forgive me and move it, thx

  • KioriKiori Posts: 246Member
    edited November 2016

    @frank-lesser
    It's your post, and I did mention you could use it to explore your original statement and tell us about how/where, everything.
    Fell free to dabble, this is general chat anyways and this subject isn't even off-topic, since this is very on-topic as it pertains to Godot builds.

    So, don't sweat it, have fun and let us know how it all goes.
    Also, if at any moment you wanna start a new thread, you can. I don't see the need, but you're free to. ;)
    You can also decide to change the title at some point, it's your post.
    And if you require any assistance with anything, let me know.

  • frank-lesserfrank-lesser Posts: 8Member

    Hi,
    first of all a happy new year & happy Godotting.
    I have spend some time to repeat my MSVC work which I did at end of 2016 for GD2 for the latest GD3 Beta2 ( up to date with latest commit ) now with MSVC 2017 community edition.
    Due the great work I have not had to change much things in source code- so I got an MSVC 2017 project with drivers, modules, scene, editor etc organized as sub-projects & compiled to static libs.
    Editing, Compiling & Debugging is much fatsre & better in a pure MSVC solution.

    The resulting Godot3.exe is 75mb ( including the editor ) - it has still optimizations switched off - I tested an optimized build ( is about 45mb feels much faster ).

    To split Godot exe in DLLs some more work is required:
    I introduced defines like GDCoreAPI ( which are evaluating to dllexport & dllimport decl specs ).
    Also template class instantiation is needed since the DLLs will export Godot classes.
    Currently I have only projects for x64 debug & release & plan to have Godot splitted in DLLs in next 2 weeks.
    I expect an exe which is much smaller.

    I am working also on a new language integration - a dialect of Smalltalk ( LSWVST ) - It seems to be a lot easier than with GD2 a year ago.

    It would be nice if my work finds the way into GitHub - I can send the current source ( MSVC solution & source up to date until 11.1.2018 ) as a 7z file ( 16mb ) .

    Frank [LSW]

  • frank-lesserfrank-lesser Posts: 8Member

    Hi,

    this is just an update.
    I have build a GD3-rc3 with MSVC 2017 ( no SCons ) ( commit from 25-1-2018 ).

    The GitHub-repository is https://github.com/frank-lesser/Godot3-Win64-LSW-Build.

    The Windows GD3-RC3 64-bit exe ( Still monolythic without Dlls)
    can be downloaded from there: Godot3-RC3-LSW.7z ~ 12 MB.

    Currently I am busy to split the GD3 in several Exe's & DLL's.

    For every module & driver & for all scene types exists a separate DLL.

    For instance the GD3 core-dll has just 4.7 MB in size. The Module_openssl.dll has 1.5 MB.

    I plan to load the DLL's on demand so no recompilation of Godot is needed.

    The editor & the runtime will be both small exe's referencing the core.dll.

    This is not a trivial task - I try to keep source change as minimal as possible.

    I have not uploaded my changed sources yet because all is WIP.

    Happy Godotting

    Frank

  • peterodepeterode Posts: 1Member

    Hi, I'm doing some work with Adobe Animate and have used Smalltalk since the 90's. I'm keen to learn more about your Godot / Smalltalk integration. Great Godotting,
    Peter

Sign In or Register to comment.