Support for older systems (Win XP/98/95/3.11/DOS)
Consider adding support for systems such as Win3.11/9x/DOS, by creating a "NukemNet Legacy" program.
- Minimalistic rewrite of NukemNet's basic features with C++ for maximum compatibility.
- Has to be compatible with mainline NukemNet ElectronJS app.
- Start by including support only for Rancid Meat based source ports (only for win9x+), and DOS Duke (might want to use https://github.com/fragglet/vanilla-utilities IPX2UDP solution, for compatibility with NukemNet's DOSBox users)
- Do not add support for any sort of emulator such as DOSBox. For that, people should just use the mainline NukemNet ElectronJS app. This issue is only about games running natively.
- This utility is not supposed to replace NukemNet, or support all games, just those which can run natively on old systems, and worth supporting original hardware (duke and other build games, doom, etc...)
- Only use small libraries that won't bloat the executable size and memory, avoid big frameworks as much as possible.
Two ways to go about it:
wxWidgets way
One way would be to use a GUI library like wxWidgets (2.8.x can be compiled back to win3.11, 3.0.x can be used back to win95).
Possibly DOS too (https://wiki.wxwidgets.org/Building_wxMGL_Port) but that's untested.
Another GUI library option would be https://github.com/Immediate-Mode-UI/Nuklear though unclear if it has proper support for win95/3.11/DOS.
wxWidgets has a socket library which is also compatible with win3.11
Alternative with DOS support
Instead of a GUI app, another option would be a console app, possibly using "HX DOS Extender" which may allow executing 32 bit console apps, even those compiled for windows, might be able to use "TurboVision" (https://github.com/magiblot/tvision) lib for the visual part, if it's compatible (verify compatibility with Win XP), or another GUI lib called OpenZinc (http://openzinc.com/Screenshots.html).
Another one is PDCurses (https://github.com/wmcbrine/PDCurses).
To make the "DOS experience" seamless to the user, prepare a nukemnet_dos.exe executable that first execute hx-dos.exe, and then the launcher itself, such that the user won't have to manually execute hx-dos.exe prior.
https://www.youtube.com/watch?v=gYgHX4C1Nuw
Choose a portable SOCKETS lib, maybe boost
, something that maximizes backwards compatibility, and can be compiled with DJGPP for DOS. if no such library exists, wrap with #IFDEF macros to cover compatibility with both Win/DOS cases.