FW Client Source Research

Page 2 of 2 FirstFirst 12
Results 16 to 22 of 22
  1. #16
    Valued Member Mistigri is offline
    MemberRank
    Oct 2020 Join Date
    HanseiLocation
    126Posts

    Re: FW Client Source Research

    I'm sharing the result of my progress related to client source upgrade.
    (Special thanks to @
    waxyyfe123 for his help and
    @Fyyre for the shared Angelica Stuff )

    *We will be using Angelica Stuff(Fyyre's Release):

    https://drive.google.com/drive/folde...voTNp4zEMdjHn9

    *Here are some examples of Custom Build Events for Angelica2 engine:

    1)acsdk=AngelicaCommon SDK:
    Code:
    echo copy libary into sdk folder
    copy "$(TargetPath)" ..\Output\acsdk\lib\"$(TargetName)".lib
    echo copy headers into sdk folder
    xcopy .\header\*.h ..\Output\acsdk\include\*.h /R /Y /Q
    2)afsdk=AngelicaFile SDK:
    Code:
    echo copy libary into sdk folder
    copy "$(TargetPath)" ..\Output\afsdk\lib\"$(TargetName)".lib
    echo copy headers into sdk folder
    xcopy .\header\*.h ..\Output\afsdk\include\*.h /R /Y /Q
    3)amsdk=AngelicaMedia SDK:
    Code:
    echo copy libary into sdk folder
    copy "$(TargetPath)" ..\Output\amsdk\lib\"$(TargetName)".lib
    echo copy headers into sdk folder
    xcopy .\header\*.h ..\Output\amsdk\include\*.h /R /Y /Q
    4)a3dsdk=Angelica3d SDK:
    Code:
    echo copy libary into sdk folder
    copy"$(TargetPath)" ..\Output\a3dsdk\lib\"$(TargetName)".lib
    echo copy headers into sdk folder
    xcopy .\header\*.h ..\Output\a3dsdk\include\*.h /R /Y /Q
    Angelica_Project\header are copied to ..\Output\Project_sdk\Include
    Angelica_Project\lib are copied to ..\Output\Project_sdk\Lib

    *General Method to compile Angelica Engine:
    Code:
    1)Compile 3rd party SDK projects(Output has to be used as a visual studio directory for include and libs )
    2)Compile AngelicaCommon
    3)Compile AngelicaFile
    4)Compile AngelicaMedia
    5)Compile Angelica3D
    *These are the required Libraries to compile SMElementClient:
    Code:
    AUIInterface
    GfxCommon
    LuaWrapper
    SMCHBasedCD
    SMSteam
    SvrCD
    jpeg-6b
    AutoMove
    FTDriver
    STLPort
    FW client source get a network error if something is wrong with STLPort.

    *These are 3rd party SDK required for Angelica2 engine:
    Code:
    lua5.1.mt.lib
    Mpg123Lib (Open-source AudioPlayer by mpg123.org)
    DShow_BaseClasses
    DShow_Async
    ImmWrapper
    SpeedTreeRT
    ZLibLib
    vorbis_static
    vorbisfile_static
    ogg_static
    It's a good thing to have full control of the libraries used to build our client executable and game engine. It's better to get these projects and upgrade them along with our Client executable.

    I have noticed that eliminating warnings does reduce size of Compiled projects.

    As you upgrade further there are more and more depreciated functions.At a point, they may get completely removed by visual studio which breaks your source code.

    Angelica 2.1 & Angelica 2.2 seems to be using Directx9.Hence,they can be used as a reference for upgrading to Directx9 in Angelica2.

    Last edited by Mistigri; 12-07-22 at 01:20 PM.

  2. #17
    Valued Member Mistigri is offline
    MemberRank
    Oct 2020 Join Date
    HanseiLocation
    126Posts

    Re: FW Client Source Research

    *How to fix v253 Client Source?
    I discovered how to fix Dysil Client source as I was helping someone.
    Actually Dysil wasn't really broken it just had a code that prevented it from opening in standard English clients that are set in America Country Zone.
    The following lines of code have to be commented in SMElementClient/elementclient.cpp
    Code:
    /*    if (g_GameCfgs.GetServerZone()==COUNTRY_ZONE_AMERICA && !l_CmdParams.bArcUser && !l_CmdParams.bSteamUser)
        {
            TCHAR tArcExe[BUFSIZ];
            ::GetCurrentDirectory(BUFSIZ, tArcExe);
            _tcscat(tArcExe, _T("\\update\\ShareTool\\LaunchArc.exe"));
            
            STARTUPINFO si;
            memset(&si, NULL, sizeof(STARTUPINFO));
            si.cb = sizeof(STARTUPINFO);
            
            PROCESS_INFORMATION pi;
            memset(&pi, NULL, sizeof(PROCESS_INFORMATION));
            
            ::CreateProcess(
                tArcExe, 
                _T(" arc:1"), 
                NULL, 
                NULL, 
                FALSE, 
                NULL, 
                NULL, 
                NULL, 
                &si, 
                &pi);
    
            l_bEnableExitCheck = false;
            return false;
        }*/


    *How to disable sbr files when building client source?
    Project Settings -> C++ ->Category=Listing Files
    you can disable the option to generate browser files
    This is the reason why dysil creates too many files.


    *Synchronize SMElementSkill with skills source from server side:
    1)You can delete the skills_XXX.h &StubsXXX.cpp in SMElement/SMElementSkill directory.
    2)You can copy files from wskill/skills
    3)Go to FileView and adjust the source files ->stubsXXX.cpp to be the same number as stubs from skills source.

    Last edited by Mistigri; 28-06-22 at 09:35 PM.

  3. #18
    Valued Member Mistigri is offline
    MemberRank
    Oct 2020 Join Date
    HanseiLocation
    126Posts
    Special thanks to many friends who helped me with my research!
    ->So Shenmo Wanmei uses 2 different system for source control:
    1)VSS ->Visual SourceSafe
    2)SVN (Apache Subversion)


    ->Tools aren't locked by game but depend mainly on Angelica Engine and structures in GfxCommon,Common,ElementClient and so on.
    It's why some tools for Wulin for Example :QAttackEditor ,QECModelBrushEditor could be used on Forsaken World as an example.


    ->Here are some of my findings about client structures in FW:
    Code:
    .Ecm (ElementClientModel) -> EC_Model.cpp
    .att(Attack)-> A3DSkillGfxComposer.cpp 
    .tmpl(template) -> BaseDataTemplate.cpp
    .org(Original)-> BaseDataOrg.cpp
    .tkt (TaskTemplate)-> TaskTempl.cpp
    .Ext(Extension or Expansion)-> BaseDataExp.cpp (This is used for Equipment Addons)

    ->These following 3rd party SDKs have been found in DirectX 8.1 SDKs (DXSDK\samples\Multimedia\DirectShow)
    You can found these projects and may upgrade them as needed along with the Angelica2 engine.
    Code:
    DShow_Async ->DXSDK\samples\Multimedia\DirectShow\Filters\Async
    DShow_BaseClasses ->DXSDK\samples\Multimedia\DirectShow\BaseClasses

    ->Here are some of my findings about CHBasedCD that is used for ElementClient based on the comments in the project.
    Code:
    // CH is the abbreviation of "Convex Hull"
    // CD is the abbreviation of "Collision Detection"
    It is used for Collision Detection and Path finding.
    It is not convex when it describes the Terrain obstruct or water area!


    @Fyyre has gathered all main dependencies and made sure they were in SMElement
    Some stuff were ignored but mainly because of their narrow use.
    Code:
    -Gfxcommon(Graphical Effects)
    -AUInterfaces(User Interfaces)
    -SMCHBasedCD(Collision Detection and Path Finding)
    -LuaWrapper(Lua)
    -SMSteam(At a point client was linked to Steam)
    -SvrCD(Server Collision Detection)
    Please feel free to correct me if you notice a mistake!
    I'm grateful for the people who have supported me in my FW work.
    Last edited by Mistigri; 22-09-22 at 06:13 PM.

  4. #19
    Valued Member Mistigri is offline
    MemberRank
    Oct 2020 Join Date
    HanseiLocation
    126Posts
    SMTaskTemplBatchEditor project has opent a new door to me.It's not entirely working since what's there is outdated from like 2012.
    Basicaly Shenmo Wanmei is using a Macro-Enabled workbook to import and export TaskTemplate through the use of VBA Scripts.

    Through DLLs and VBA Scripts,I can eventually make my own BASEDATA that gets used by SMElementData to make the different binaries such as: gshop,elements,aipolicy and tasks.
    I like the idea of creating My OWN BASEDATA From excel sheets!

  5. #20
    Valued Member Mistigri is offline
    MemberRank
    Oct 2020 Join Date
    HanseiLocation
    126Posts
    *westNMD is put at the level of FW-Client like SMElementLocalize and it's supposed to create elements.nmd
    It requires the following stuff:
    Code:
    resources//models.pck
    data//elements.data
    data//path.data
    data//dynamicobjects.data
    It has to go along with a specific version as it's using SMCommon/elementdataman.cpp.It's also using SMCommon/pathdataman.cpp but Path.data structure doesn't change.
    Unfortunately,it's currently broken!



    *That's how different builds are used according to the guesses of @Psytrac and me :
    Code:
    1)Alpha  (Debug Build):
    It's used by Shenmo Devs for testing and it relies on debug console.
    Issues and bugs can be identified before releasing it to the public.
    
    2)Beta   (DbgRelease Build):
    Software is made available to a limited number of external users.
    User feedback is used to improve the quality of the software.
    
    3)Release(Release Build):
    It's ready to be used for the general public and players may use it.
    Most often is more complete in optimizations.

    *It is the AutoMove library that auto-routes player properly.
    That library is more important than we think and it should have been added along with client source. It looks like a minor library but it is so important in the game.It is one of the best supportive features that helps players with the game that has high impact on players' experiences especially newbies.

    Please feel free to correct me if you notice a mistake!
    I'm grateful for the people who have supported me in my FW work.
    Last edited by Mistigri; 22-11-22 at 08:39 PM.

  6. #21
    Valued Member Mistigri is offline
    MemberRank
    Oct 2020 Join Date
    HanseiLocation
    126Posts
    *Visual studio 2015 iso for community edition official link from microsoft:
    https://download.microsoft.com/downl....3.com_enu.iso

    *DShow_BaseClasses for Directx8 & DShow_Async for Directx8 have unusual builds that shenmo created somehow and I have yet to crack how they created these builds.

    *It was discovered that AngelicaMedia for Angelica2 is using projects from these:
    https://ftp.osuosl.org/pub/xiph/releases/ogg/
    https://ftp.osuosl.org/pub/xiph/releases/vorbis/
    libvorbis-1.2.0 & libogg-1.1.1

    *lua-5.1 is used for Angelica 2 && lua-5.1.4 is used for Angelica 2.2
    https://www.lua.org/versions.html

    *AngelicaFile is also using ZLibLib as a 3rd party SDK:
    https://zlib.net/fossils/

    I'm grateful for the people who have supported me in my FW work.
    FW may be a dead game but I will not give up on it and I will keep researching and trying to figure out things.
    Last edited by Mistigri; 30-11-22 at 05:25 PM.

  7. #22
    Valued Member Mistigri is offline
    MemberRank
    Oct 2020 Join Date
    HanseiLocation
    126Posts
    *The original extension(.org) determines the number of items in a structure and new template files have more parameters added.
    Older template have some missing parameters. It's like the variable is uninitialised and they get default values depending on the type that does nothing.In this way we adjust added template files along with time and upgrade existing structures.
    It is the Wanmei way of doing things "Never delete just keep adding shit".
    This is even worse overtime with tasks .Lots of old tasks stay there unless they consciously tried to remove or adjust them.

    I am just sharing my insights, there may be some errors.
    Last edited by Mistigri; 09-12-22 at 03:39 PM.



Page 2 of 2 FirstFirst 12

Advertisement