Getting Friendly With AI (Part 2)

Intro

I’d talked to my cousin about AI and wanting to learn more about it. He had suggested I get AI to write my Freeze Tag mod I wrote for Quake many years ago. I thought it funny that I wrote that to learn C, and now I’ll do the same to learn AI? Why not.

First I had to install Quake 2 on my machine and get it running again. I spent a bit of time trying to get the older Quake 2 to run on my machine, using Yamagi Quake II. I dug up my old Quake 2 CD and copied over the pak0.pak file. Running the game though was difficult. There was no mouse look and no one could be seen on multiplayer. That’s when I found out they’d done a Quake 2 Remaster in 2023, so I decided to check that out. After a quick Steam download, I tried it out and it ran great. There were even people still playing online! (UPDATE: I’ve since learned the Remaster doesn’t have Dedicated servers, which is a really bad thing and so we won’t be working with it.)

But now I need to get my Freeze Tag mod working with this version. I found out they’d re-written the original mod source. According to the readme, this was to use a new API and networking code as well as add a thin “client game” module. They were inviting mod authors to re-write with the new source.

Asking About Diff

I quickly began formulating: we’re living in the magical world of AI, perhaps I could tell AI to analyze what I had changed in the original mod source to make Freeze Tag and then ask it to make those changes to this new codebase? I wasn’t sure how to do that so I started simply by uploading a Beyond Compare diff of the original source and my Freeze Tag code to ChatGPT:

"Summarize the key structural and functional differences in this Beyond Compare diff report" (Diff file attached)

It came back with lots of details as well as:

Overall Impact
Original Quake II: Deathmatch/CTF core mechanics with standard frag-based play.
Freeze Tag Mod:
	Players are frozen instead of dying outright.
	Victory is team-based (freezing all opponents).
	Strong focus on teamwork (thawing is as important as fragging).
	Adds custom HUD elements, sound effects, grappling hook, flashlight, and new scoring/win conditions.
In short: the freeze-tag codebase is a total conversion gameplay mode layered on top of Quake II, introducing new states (frozen/thawed), cooperative mechanics (rescuing teammates), new UI/menus, and extended team logic.

Looked good so far. Now I uploaded the diff between the original source and the new remaster source and asked ChatGPT about that. It said more details as well as:

Overall Functional Shift
The rerelease modularizes client vs. server/game logic.
Introduces modern C++ constructs (e.g., std::function, std::optional, std::array, constexpr).
Adds quality-of-life features for coop play, HUD flexibility, and player feedback (hit markers, respawn info).
Lays groundwork for cross-platform physics (PC vs. N64).

In short:
The rerelease restructures the Quake II game DLL into a more modular, modernized architecture. It introduces configurable physics, compressed stat systems for ammo/powerups, extended player/HUD tracking, and robust client-side rendering/notification systems—substantially enhancing coop, accessibility, and overall maintainability.

That all sounded about right as well, but now how do I move forward? Here’s where I got stuck. I decided to show a friend a Beyond Compare of the original mod source with the new codebase. That’s when it finally hit me that they’d changed a lot. They even went from C to C++.

Next Step

I believe what I need to do is remember what I did to make Freeze Tag in the first place, to break it down. I wrote these changes many decades ago though. I think I’ll get the AI to explain to me what particular changes were made. Then I’ll see if I can ask AI to make each individual change to the new codebase. But that’s for another day.

Notes For Getting Quake 2 Remaster Building

Grab Visual Studio 2022 Community Edition
You only need “Desktop development with C++” but must install/run “vcpkg integrate install”
When you first build, a vcpkg.json is created. Change this file to be: (newer fmt causes the error “Unicode support requires compiling with /utf-8” so use older ver)

{
  "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json",
  "name": "q2-game-dll",
  "version": "2022",
  "builtin-baseline": "3426db05b996481ca31e95fff3734cf23e0f51bc",
  "dependencies": [
    "fmt",
    "jsoncpp"
  ],
  "overrides": [
    { "name": "fmt", "version": "10.2.1" }
  ]
}
CategoriesAI

Leave a Reply

Your email address will not be published. Required fields are marked *