TL;DR
- I have “accidentally” revived the QuakeC Frogbot mod (aka FBCA)
- It now works (again) both in classic Quake engines and QuakeWorld
- Compiles with any recent FTEQCC, not only some specific ancient Windows build
- Bots are much more capable, play maps like
e1m1without compromises: shoot any trigger, improved jumps, simple task handling, much better swimming - Resurrected waypoint tool is way more usable, ridiculously detailed guide available
- Waypoints can be embedded in
.entfiles next to compiling them into the mod - Tons of bugs fixed
- Fresh waypoints for some old and newer maps, improved many existing waypoints.
Demo video:
The long story
During the 2024 Christmas holiday season, I got back into Quake after a 20-year hiatus, the trigger was needing to fact-check some things for a webcomic I work on. I started looking into how to run Quake, and one thing lead to another. Of course I totally suck compared to anyone who has kept playing all those years, but then I discovered the QuakeC-based Frogbot, also known as FBCA, that used to ship with nQuake at that time. The Frogbot was originally created by Robert ‘Frog’ Field in 1997, and is specifically designed to act believably as a human player, it simulates pressing keys and moving a mouse for its movement and makes similar mistakes as human players.
I thought: hey, if I can make this work with newer maps, I can use it for practice, and suck slightly less. But, I noticed development on FBCA had stalled. I forked the FBCA repository and started hacking away. My former self thought this would be a short little project. My former self was very wrong.
I hadn't really kept an eye on what was happening with nQuake and KTX, because I sort of got totally absorbed by working on this mod. It was only when I was already knee-deep in the QuakeC that I found out a server-side Frogbot reimplementation exists in KTX. Originally I thought my improved FBCA might replace the one shipped with nQuake, but it is obvious this is no longer going to happen, because only recently I noticed that nQuake has entirely swapped that mod for some kind of VM thing based on the KTX Frogbot. I haven't managed to get that working on my (admittedly non-cutting-edge) machine, and even recent releases of plain ezQuake are pretty much unusable due to being a glitch-and-crash-o-rama. My overall impression of nQuake/ezQuake is that it is drifting away from what I consider true Quake(world). The consequence is that I have shifted focus towards improving NetQuake support, although do I keep testing in an older ezQuake build that is still usable on my machine.
So, what has been changed?
First thing I fixed, was the inability to compile FBCA with support for any large number of maps, which used to require voodoo rituals and a specific ancient Windows build of FTEQCC. The fix is a rather straightforward change in the waypoint format, making it possible to build the mod using any recent FTEQCC on any platform with no limit on the number of supported maps, until some other QuakeC limit is reached of course.
Next big thing was to resurrect the waypoint tool, to make it much easier to craft new waypoints or edit existing ones. The tool is basically another Quake mod, sharing the Frogbot core with extra “UI” on top. This was the purest act of necromancy, I had to start from a decompilation as I could not find the original source anymore.
The new tool is much easier to use. Bot mode can be toggled and can be forced to reach a certain spot, to test what a bot will do from a given starting situation; this has proven invaluable for debugging and making good waypoints. (I often sigh at mistakes in Trinca's waypoints, but his work is actually impressive considering the tools he had to work with.) The new tool still requires skill and knowledge to use, but I have created a manual that is way more detailed than Mick's former old guide.
Now, because the waypoint tool only runs in NetQuake engines, making it buildable again has also restored the ability to run the entire Frogbot mod in NetQuake. At first I didn't think much of this and kept focusing on the QW runtime, but as I kept improving classic Quake support, it became clear that this is an excellent way to time travel back to 1996 and have a rather authentic Quake multiplayer experience in maps like dm4 or e1m1, without having to find people crazy enough to play a 30-year old game.
Another important new feature is the possibility to embed waypoint data into .ent and .map files (hence even into a .bsp although I would advise against this), to avoid the need to recompile the (qw)progs to add bot support to a map, although that does remain the best method for finalized maps. This entity-based representation is robust against minor edits when injected into a .map, because it relies on named identifiers for paths, instead of indexes that would shift when adding or deleting entities. This makes it a viable workflow to playtest new maps using the v2 Frogbot.
The README in the repository has a list of the new bot features and bug fixes. In a nutshell:
- Accurate jumps, air strafing, wall strafing, other modes for special situations
- Exclusive mode for smart path handling: push buttons to open doors etc.
- Universal shootable triggers
- Much improved swimming
- Better rocket jumping
- Slime and lava awareness
- Better lift handling
- A gazillion bug fixes
The new features have made it possible to offer feature-complete waypoints for many formerly crippled maps. The following are good examples of spectacular improvements compared to the old bot. Try adding a bot here and tracking it in spectate mode, or use the ‘become Frogbot’ feature in a NetQuake engine (impulse 123 or F4 in the waypoint tool) to view from the bot's perspective.
e1m1: the v2 bot can now play this map, all of it. Bots will intentionally grab the biosuit in order to safely swim through the slime to fetch the armor and pentagram. They can reach the Quad from both directions, even using the lift, which requires shootable triggers twice. They can even get the hidden shotgun (although they usually won't, due to its low reward/cost ratio). The only thing I didn't bother setting up, is reaching the MH purely by jumping, bots will only use an RJ for this (like any sane player).efdm13: again slime and biosuit. Tricky jumps, rocket jumps, and you don't want to know how many bugs I had to fix before the bot didn't get stuck anymore at some point in this map. It's now one of my favorites.
Next to improving existing waypoints, I have also created new waypoints from scratch for maps like hohoho, hohoho2, catalyst, burialb10, dark-terror-ffa, dmz1++, e1m4, nova, halo, zite, …
In total, there is support for 116 unique maps at this moment. Still not near the 370 from Trinca's collection, but I have tried to provide what seem to be the most popular maps (made easier by the sad fact that nowadays I only find a few truly active public servers to watch what is being played).
There are still plenty of improvement opportunities, next to providing more waypoints. For instance, the code contains what seems to be functional “runaway” logic to make bots evade enemies when conditions to fight are unfavourable, but this is not activated anywhere, no criterion to trigger it has been implemented. It is currently incompatible with the RJ/slime/lava path magic, but it should be possible to make it work. There are also remaining bugs, especially in the NetQuake team modes, and behaviour that could obviously be improved.
Some things you may want to try
lilithandhalo: bots are really good at these maps, or maybe I just suck at them… Bot performance varies per map, I haven't figured out what affects this, but they seem best at compact maps like these, while a higher skill level is needed to keep things challenging in maps likea2where everything is spaced further apart.- Spectate the statue water zone in
eodm3, add a bot, and wait. Or, just become a Frogbot in NetQuake (impulse 123 or F4 in waypoint tool), and enjoy the ride. You'll see a combination of many of the new features together: shootable triggers, exclusive markers, water navigation. - Experience total chaos.
- Open a relatively small map like
dm4. maxclients 16ormaxplayers 16- crank the audio volume
add4bots4 times- join the game
- have fun. Bystanders might think you're insane, though.
- Open a relatively small map like