Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modernization/Porting tracking issue #58

Open
54 of 65 tasks
IonAgorria opened this issue Jun 16, 2021 · 0 comments
Open
54 of 65 tasks

Modernization/Porting tracking issue #58

IonAgorria opened this issue Jun 16, 2021 · 0 comments
Labels

Comments

@IonAgorria
Copy link
Collaborator

IonAgorria commented Jun 16, 2021

I open this meta-issue to keep track of all issues identified that are required to solve so the game can be ported to modern 64bits Windows and non-Windows OSes.

Removing incompatible dependencies:

Code/Building:

  • 64 bits support fix x86_64 build #26
    • Main menu
    • Map loading
    • CI builds
    • Game saving, needs to be fixed on 32bits first (probably we will be storing size_t or pointers which should be handled)
  • Modern compilers support
  • CMake support Перевести проект на систему сборки cmake #13
  • Fix Undefined Behavior in code, game relies on some MSVC 2005 UB derived behavior that is not compatible with current compilers generated code
  • Replace asm and __asm code with C/C++ equivalent
    • Compare results between asm and current C implementation, untested currently
  • Replace Win32 threads and CriticalSection stuff with SDL
  • Replace Win32 CreateEvent stuff
    • Workaround: pevents for API wrapper

Windowing/Input:

  • Replace Win32 Window with SDL2 window
  • Replace input handling with SDL2 input events
  • Load game cursors using SDL2
  • Use SDL2 window/events in windows builds

Graphics/Renderer:

  • AVI animated texture loading, it uses windows codecs which is unavailable in other platforms
    • Workaround: Use another library like ffmpeg for decoding AVIs
  • Modern/portable API using renderer Add OpenGL or Vulkan renderer #14
    • Workaround: reusing existing DirectX renderer with DX9 wrapper like DXVK
    • Removed CMatrix and D3DX9 math in favor of xmath
    • Sokol GFX and D3D separation by creating separate backend classes
    • Sokol backend feature parity with D3D:
      • 2D rendering
      • Basic meshes
      • Terrain mesh
      • Bump mapping
      • Shadows
  • Deprecated dependency on DirectX extensions (d3dx9)
    • Workaround: implement using methods manually in Exodus module

Music/Sound issues:

  • PlayOgg module depends on Windows API sound ogg audio playback #50
    • Make PlayOgg optional
    • Make Windows API code dependency optional
    • Evaluate SDL2/SDL2-mixer as potential replacement (for playing decoded ogg samples)
    • Remove Windows API dependency
  • Sound module depends on DirectX's DirectSound API which is Windows only
    • Make Sound optional
    • Make DirectSound code dependency optional
    • Evaluate SDL2/SDL2-mixer as potential replacement, we may need to handle several audios playing simultaneously + music + voice in background
    • Remove DirectSound dependency

Network:

  • Fix network host starting, right now crashes even with DP8
  • Game module depends on DirectX's DirectPlay 8 which is deprecated and removed on modern DirectX SDK's, should be replaced with cross-platform compatible lib
    • Make DirectPlay code dependency optional
    • Evaluate SDL2-net as potential replacement
    • Remove DirectPlay dependency
  • Gamespy should be removed Вырезать Gamespy полностью #49
  • Servers list and NAT workaround Create game list server #89

Other issues:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant