Further q2pro Build Simplification

My Quake 2 builds have been further simplified, all builds now contain anticheat-server support, but again, only the win32 client can load anticheat.dll, so it is the only build with anticheat-client support. And unfortunately, it’s unlikely my builds will ever pass anticheat validation on a server as I have no way of getting them verified. 🙁

Variable FPS support is in the vfps builds. I’m also including the few pcx files you need to actually start q2pro in the builds now, as well as adding my master server in the q2pro.menu file. Debugging symbols are also no longer stripped, to help with debugging mods if you should ever find yourself needing to do that.

Download

libEGL.dll and libGLESv2.dll available for download

EGL OpenGL API Logo

Vastly out of my skillset on this but, I’ve compiled libEGL.dll and libGLESv2.dll for use with the q2pro builds (and probably anything else on your windows system that might use EGL).

The download is available in https://quake2.itbacon.com/public/q2pro (q2pro-libEGL-libGLESv2-v2.1.28252.0-dlls.zip)

Version 2.1.28252.0 from git was used.

32-bit (x86) and 64-bit (x64) DLLs are included, but unlike OpenAL you’ll have to put them in C:\windows\system32 (64-bit) and C:\windows\SYSWOW64 (32-bit). The zip file is made so you can just extract to C:\ and they will go into the correct folders.

Welp… One more Q2Pro Update

I’m now completely compiling the windows build against updated external libraries, with no subproject dependencies other than khr-headers. The dependency versions will be listed in each ones included log files. Day wouldn’t be complete with one last update I guess! Updated builds available as always in https://quake2.itbacon.com/public/q2pro

Below is the log file for win64-vfps-ac:

*** LIBRARIES USED IN THIS BUILD:
libavcodec           63.3.100
libavformat          63.3.100
libavutil            61.2.100
libcurl              8.21.0-DEV
libjpeg              3.1.4.1
libpng               1.6.58
libpng16             1.6.58
libswresample        7.2.100
libswscale           10.2.100
libturbojpeg         3.1.4.1
openal               1.25.2
sdl2                 2.32.8
zlib                 1.3.1.zlib-ng

q2pro r3834~601a8df8

  Features
    anticheat-client     : NO  # YES on x86, but likely no way to ever get one of my exe's anticheat hash approved in 2026.
    anticheat-server     : YES
    auto-reply           : YES
    avcodec              : YES
    client-gtv           : NO
    client-ui            : YES
    debug                : NO
    game-abi-hack        : NO  # YES on x86/i386, for old mods.
    game-new-api         : YES
    icmp-errors          : YES
    libcurl              : YES
    libjpeg              : YES
    libpng               : YES
    md3                  : YES
    md5                  : YES
    mvd-client           : YES
    mvd-server           : YES
    openal               : YES
    packetdup-hack       : NO
    save-games           : YES
    sdl2                 : YES
    software-sound       : YES
    system-console       : YES
    tests                : NO
    tga                  : YES
    variable-fps         : YES  # NO on non-vfps builds
    wayland              : NO  # YES on Linux
    windows-crash-dumps  : YES
    windows-egl          : YES
    windows-service      : NO
    x11                  : NO  # YES on Linux
    zlib                 : YES

  Subprojects
    khr-headers          : YES

  User defined options
    Cross files          : /home/jordan/git/q2pro/.ci/x64-windows-gpt.txt
    anticheat-server     : true
    avcodec              : enabled
    buildtype            : release
    default_library      : static
    game-abi-hack        : disabled
    game-build-options   : optimization=s,b_lto=true
    game-new-api         : true
    libcurl              : enabled
    libjpeg              : enabled
    libpng               : enabled
    openal               : enabled
    sdl2                 : enabled
    system-wide          : false
    variable-fps         : true
    vid-geometry         : 1920x1080
    vid-modelist         : 320x240 640x480 800x600 1024x768 1280x720 1280x960 1366x768 1600x900 1920x1080 2560x1440 3440x1440 3840x2160 4096x2160
    wayland              : disabled
    werror               : true
    windows-egl          : true
    windows-service      : false
    wrap_mode            : nofallback
    zlib                 : enabled
    khr-headers:wrap_mode: forcefallback

Q2Pro – OpenAL figured out!

OpenAL Logo

Edit 3:37pm EDT: curl is enabled in ALL builds now (for http downloads), EGL enabled in windows, openal on 32bit linux. and game-new-api enabled in all builds. I think now it is the most complete builds!

I have figured out how to get OpenAL working on both x86 and x64 windows builds now! The DLL files will be included in their respective files. I have compiled the latest version of OpenAL (1.25.2) to include with the release.

Additionally, the DLLs are available for stand-alone download in https://quake2.itbacon.com/public/q2pro

I also realized as well today that no older x86/32bit mod is going to support vfps, so the x86/i386 vfps builds have been removed.

I am additionally also compiling non-vfps builds as well again.

Linux builds have been updated to support X11, too.

And software-sound has been enabled. I’ll try and add EGL support here in a while. EGL support has been added!

I’m not sure if there’s anything left to get into these builds at this point! I’ve been kind of obsessed with it the last week again, trying to get them as good as possible.

Q2Pro Builds Updated… Again!

I’ve updated the q2pro builds available on https://quake2.itbacon.com/public/q2pro, more so specifically the Windows builds to include libavcodec/ffmpeg support.

You’ll notice anticheat-client is off on the 64bit build, because there is no 64bit anticheat.dll that works. It’s just too old. It is enabled on the x86 build, and for me, the dll does load, in the console you’ll see Anticheat DLL initialized or whatever.

But when connecting to a server for some reason, it still says I’m not using it. For servers that are still requiring anticheat, for no reason because it’s 2026 and it wouldn’t stop anybody even mildly motivated, I don’t plan to work on figuring that out. I would suggest using the old r1ch build if you absolutely need anticheat for a particular server. My best guess is because I’m not using the r1gl renderer.

Edit/Update: It seems more likely that anticheat.dll, and/or the anticheat server that r1ch does still run, has a list of hashes for exe’s that would be approved. Since no exe I compile has any means of to be approved in 2026, anticheat will assumedly never work with any other build than e.g. q2pro-ac that r1ch released ages ago. I wish we could just get one last dll for 64-bit compiled from him, that’d be great. It would really help carry anticheat forward for a bit longer. Maybe I’m just overly nostalgic.

SDL2 is also now enabled (vid_driver sdl).

OpenAL also works good in this build, however, again, for x86 I am unable to find an openal32.dll that works, it just keeps saying “Requires at least OpenAL 1.1” when trying to set the sound to OpenAL in the x86 build. I’ve left it enabled in case anyone wants to try and find a working dll — and if you do! — please let me know.

Enable Administrative Shares (C$, etc)

  1. Locate and then click the following registry subkey: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
  2. On the Edit menu, point to New, and then click DWORD (32-bit) Value.
  3. Type LocalAccountTokenFilterPolicy to name the new entry, and then press Enter.
  4. Right-click LocalAccountTokenFilterPolicy, and then click Modify.
  5. In the Value data box, type 1, and then click OK.
  6. No reboot necessary.

From an administrative command prompt, you can simply run this instead:


reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1

Fixing Windows IPv6

Update 8-13-2023: You may or may not need some or all of these commands anymore.

Below is a set of commands you can try running to help resolve issues with multiple random temporary addresses, and seemingly all of IPv6 stops working randomly. I use DHCP6 on my home network and this has helped to resolve a lot of connectivity issues for me. I don’t seem to lose IPv6 connectivity anymore.

The interface does seem to still get more than one address, which is frustrating, but probably due to router advetisements on my firewall. It only seems to use the primary one it gets from DHCP however, which is good. I have tried doing netsh int ipv6 set interface “<interface>” routerdiscovery=disabled store=persistent but, it does not persist after a reboot, and netsh int ipv6 show interface “<interface>” shows that it is enabled again. I imagine there is some registry edit that can be done, or adding it to task scheduler but, until it becomes an issue I am find that the below works for me.

I don’t know why Microsoft has made this so hard. All of my Linux and FreeBSD machines can acquire and maintain an IPv6 address forever. A singular address.

You’ll need to run these in an Administrator command prompt. You can access that by right-clicking your Start button and choosing either Command Prompt (Admin) or Windows Powershell (Admin). If you only have Powershell, once it opens, type cmd and press enter to go into a command prompt shell. Alternatively, press your Windows key or click the start button, and type cmd and press CTRL-SHIFT-ENTER once you see Command Prompt in the list (you will only need to type cmd, the start menu will select Command Prompt after a moment in ‘Best Match‘ at the top of the search results.)

netsh int ipv6 set privacy state=disabled store=active
netsh int ipv6 set privacy state=disabled store=persistent
netsh int ipv6 set global randomizeidentifiers=disabled store=active
netsh int ipv6 set global randomizeidentifiers=disabled store=persistent

Afterwards, I find going into Control Panel, (small icons) Network and Sharing Center, Change Adapter Settings, and right-click on your interface and Disable it, then Enable it with another right-click. Or you can reboot.

Windows Server – Private Network Profile Fix

Sometimes, randomly, Windows Server will switch to a Private Network Profile after a reboot, or just sporadically. Usually restarting the NlaSvc service will resolve this, but I have found if it keeps happening on reboot, this will also help resolve this issue.

You can check this in a Powershell prompt by typing: Get-NetConnectionProfile

PowerShell> Get-NetConnectionProfile
[...]
NetworkCategory          : Private

In order to fix this, all I needed to change was the dependencies for NlaSvc (Network Location Awareness Service). From an Administrative command prompt I ran the following (NOTE: This is ONLY for servers that have the DNS role installed!):

sc config NlaSvc depend=NSI/RpcSs/TcpIp/Dhcp/EventLog/DNS

After rebooting, my profile finally showed as a Domain network instead of a Private Network.

If your server does NOT have the DNS role installed, then you can additionally run this command (I would also run this if your server has the DNS role and you’re still having problems):

reg add HKLM\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters /v AlwaysExpectDomainController /t REG_DWORD /d 1 /f

Windows Server 2025 is available as a free evaluation: https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2025

Here’s a simple Powershell snippet that will check for the DNS role and apply the fix/fixes:

if (Get-Service DNS -EA SilentlyContinue) {
  Write-Host "Updating NlaSvc dependencies to include DNS and adding registry entry."
  cmd /c sc config nlasvc depend= NSI/RpcSs/EventLog/Dhcp/TcpIp/DNS
  reg add HKLM\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters /v AlwaysExpectDomainController /t REG_DWORD /d 1 /f
} else {
  Write-Host "Adding registry entry to try and assist with Domain Network Profile."
  reg add HKLM\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters /v AlwaysExpectDomainController /t REG_DWORD /d 1 /f
}

PHP 7, MySQL 8 & WordPress on Windows IIS

Edit 6/26/2026: I will probably not update this unless I get very bored. It is much, much easier to setup WordPress on an Ubuntu server. It should still serve as a good starting point to get it running however.

This is a work in progress – pictures will be added, stories will be written, coffees will be spilled.

  • Use MySQL Workbench to create a user with a Standard Password, and create a Schema, then give your user permissions on the Schema.
  • Open PHP Manager in IIS Manager after installing so it can make some changes to php.ini..enable the extra modules in there as well.
  • You probably want to reboot after updating your PATHs and things just so IIS can find everything
  • I know this is vague…just trying to get it started.
    If this helps you in the mean time, great!
  • Dependencies for ImageMagick and other things…
  • IIS Installation
    • Control Panel – Programs & Features – Add/Remove Windows Components
      • [X] Internet Information Services
        • Web Management Tools -> [X] IIS Management Console
        • World Wide Web Services -> Application Development Features -> [X] CGI
        • Common HTTP Features
          • All except Directory Browsing (unless wanted), WebDAV Publishing
        • Health and Diagnostics
          • [X] HTTP Logging, Request Monitor
          • [X] Performance Features (both Dynamic + Static)
        • Security
          • [X] Basic, IP, Request Filtering, URL Authorization, (if needed) Windows Auth