Jump to content

Denizeri24

Member
  • Posts

    188
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by Denizeri24

  1. 3 minutes ago, Intel said:

    It depends.

    If you link with -static (so every lib ""is put into the binary""), yes, otherwise you are gonna have to move the libs to the freebsd server you will be running the game on. To see the libs needed you can do:

    ldd game

    example:

    .png

     

    I would specify the libs you have as .a in the makefile (like I did for cryptopp, do it for the devil ones, libmysqlclient, openssl, libmd, libz etc basically all except the ones you compile for the game aka liblua, libgame, libsql, libpoly, libthecore, also remove hackshield, xtrap and gtest from the makefile and possibly the source code) so you would just then need to do this:

    fetch getlinkfromfreebsd.org: https://download.freebsd.org/ftp/releases/amd64/?C=N&O=D ex: https://download.freebsd.org/ftp/releases/amd64/14.0-RELEASE/lib32.txz
    tar -C / -xpf lib32.txz

    to install lib32 if not present

    and then:

    pkg install compat7x-amd64 compat8x-amd64 compat10x-amd64 compat11x-amd64 compat12x-amd64

    (probably on freebsd14 there's also compat13x-amd64, I don't know)

    okay, thanks for the info. anyway, i dont use cryptopp and devil anymore, also i using x64 server files 🤌

  2. 10 minutes ago, Intel said:

    No, it will give you undefined reference (unless you use clang+libc) and probably it won't be a version compatible for Metin2 (as I said, a version greater than 8.4.0 may not work)

    You can always do:

    git clone --branch CRYPTOPP_8_4_0 *****@*****.tld:weidai11/cryptopp.git
    • enter folder
    • edit GNUMakeFile (if you use gcc/g++)
    • compile
    • move the lib and header files in your extern folder or change the directories in your makefile for cryptopp

    obviously, you gonna have to do the same for the client

     

    hmm then it can be installed directly from the ports (usr/ports (whereis cryptopp))

  3. 55 minutes ago, TheEqualizer said:

    That is really good performance. What hardware did you use for your tests? Maybe you could share your scene? Are you sure that in your tests you didn't have other things active (like shadows)? 100fps is good performance, I don't think you need instancing, but implementing it is not a bad idea.

    I am not using instancing.

    Also multithreading the mesh deformer would require a lot of syncing, since a vertex buffer lock is performed before deforming (and D3D9 functions cannot/shouldn't be called from multiple threads, unless you create the device with D3DCREATE_MULTITHREADED flag, which causes the runtime to perform the syncing for you).

    The best way to render is to avoid frequent state changes and frequent locks. Shader Model 3.0 supports vertex texture fetch, and you can use it to prepare one big texture containing data for many meshes, to efficiently render them in batches.

    8700k w/ arc a770, full distance shadows + texts on

  4. according to my analysis, 2 things tanking fps;

    rendering meshs (DrawIndexedPrimitive from CGrannyModelInstance::RenderMeshNodeListWithOneTexture function)

    and

    granny mesh deforming function (GrannyDeformVertices from CGrannyMesh::DeformPNTVertices function)

     

    I did deforming function parallel so its fixed fps tanking but still mesh rendering tanking my client fps.. I get 100 fps with 180 player instances (thanks to sh*tty mesh rendering).

     

    I planning to upgrade mesh rendering with "Hardware Instancing" method, maybe this will fix fps tanking..

    • Good 1
  5. 31 minutes ago, Fenczu said:

    Char.cpp 

    #ifdef ENABLE_NEWSTUFF
    	if (!g_stProxyIP.empty())
    		p.lAddr = inet_addr("25.59.12.100");
    #endif

    Desc.cpp

    #ifdef ENABLE_NEWSTUFF
    		if (!g_stProxyIP.empty())
    			rTable.players[i].lAddr = inet_addr("25.59.12.100");
    #endif

    input_db

    #ifdef ENABLE_NEWSTUFF
    				if (!g_stProxyIP.empty())
    					rTab.players[i].lAddr = inet_addr("25.59.12.100");
    #endif

    I change to this and its same effect kick after select character

     

    delete if statement (      if (!g_stProxyIP.empty())   )

  6. 1 minute ago, Fenczu said:

    Char.cpp 

    #ifdef ENABLE_NEWSTUFF
    	if (!g_stProxyIP.empty())
    		p.lAddr = inet_addr(g_stProxyIP.c_str());
    #endif

    Desc.cpp

    #ifdef ENABLE_NEWSTUFF
    		if (!g_stProxyIP.empty())
    			rTable.players[i].lAddr=inet_addr(g_stProxyIP.c_str());
    #endif

    input_db

    #ifdef ENABLE_NEWSTUFF
    				if (!g_stProxyIP.empty())
    					rTab.players[i].lAddr=inet_addr(g_stProxyIP.c_str());
    #endif

     

    yes copy this lines and add your server source but change inet_add parts with this;

    lAddr = inet_addr("your_server_ip")

  7. check ENABLE_NEWSTUFF define from martysama server files (copy this lines;

        if (!g_stProxyIP.empty())
            p.lAddr = inet_addr(g_stProxyIP.c_str());

     

    )

    Just now, Denizeri24 said:

    check ENABLE_NEWSTUFF define from martysama server files (copy this lines;

        if (!g_stProxyIP.empty())
            p.lAddr = inet_addr(g_stProxyIP.c_str());

     

    )

     

  8. 50 minutes ago, TheEqualizer said:

    Then MSAA is not as heavy as you are suggesting. MSAA 8x is not needed, in most cases x4 should be enough. Even then, a drop from 240 to 200fps is far from being a big deal.

    not everyone has a good gpu, they playing on laptop with igpu. so, msaa expensive for my opinion..

  9. 4 hours ago, TheEqualizer said:

    What graphics card are you using? Which MSAA are you using (x2, x4, x8,...)? A reduction from 240fps to 200fps is not a problem. In this game, MSAA should be "free" pretty much.

    a770 w/ x8 msaa

  10. On 11/23/2023 at 4:40 PM, HFWhite said:

    I found an ANTIALIASING FIX for Directx9

     

    //Search for in EtherLib/GrpDevice.cpp:

    ms_dwD3DBehavior = pkD3DModeInfo->m_dwD3DBehavior;

    //and it is added immediately on top:

        for (uint8_t i = 0; i <= D3DMULTISAMPLE_8_SAMPLES; i++)
        {
            const auto multisamplelevel = static_cast<D3DMULTISAMPLE_TYPE>(i);
            const auto result = ms_lpd3d->CheckDeviceMultiSampleType(ms_iD3DAdapterInfo, D3DDEVTYPE_HAL, ms_d3dPresentParameter.BackBufferFormat, Windowed, multisamplelevel, nullptr); // !!! REMOVE nullptr FOR DX8 !!!
    
            if (SUCCEEDED(result))
            {
    #ifdef _DEBUG
                TraceError("multisamplelevel == %u", multisamplelevel);
    #endif
                ms_d3dPresentParameter.MultiSampleType = multisamplelevel;
            }
        }


    // Search for in EtherLib/GrpScreen.cpp:

    void CScreen::RenderBar3d(float sx, float sy, float sz, float ex, float ey, float ez)

    //and the function is completely replaced;

    void CScreen::RenderBar3d(float sx, float sy, float sz, float ex, float ey, float ez)
    {
        assert(ms_lpd3dDevice != NULL);
    
        SPDTVertexRaw vertices[4] =
        {
            // HARD FIX BEGIN
            { sx - 0.5f, sy - 0.5f, sz, ms_diffuseColor, 0.0f, 0.0f },
            { sx - 0.5f, ey - 0.5f, ez, ms_diffuseColor, 0.0f, 0.0f },
            { ex - 0.5f, sy - 0.5f, sz, ms_diffuseColor, 0.0f, 0.0f },
            { ex - 0.5f, ey - 0.5f, ez, ms_diffuseColor, 0.0f, 0.0f },
            // HARD FIX END
        };
    
        if (SetPDTStream(vertices, 4))
        {
            STATEMANAGER.SetTexture(0, NULL);
            STATEMANAGER.SetTexture(1, NULL);
            STATEMANAGER.SetVertexShader(D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1);
            STATEMANAGER.DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
        }
    }

     

    yes, i did this. but msaa really have performance impact. i get 200 fps if msaa on (normally i get 240 fps)

×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.