Gauging Interest in CPQ Beta Jam (Map Logic Mod)

Qalten

New member
Jul 8, 2022
3
6
3
So I'm (finally) finishing up development on v0.2 of CPQ, a logic mod that I've been working on off and on for about a year or so (website: http://cpq.1019.net/) and I'd love to run a jam in the near future to encourage mappers to get to know it, and to really put some flexible, dynamic power in the hands of the mappers in this community. It'd also be an opportunity to give me feedback before a final release as there are a lot of different systems in there and there are sure to be sharp edges that need softening. Oh, and the jam would be included in the final release of v0.2.

But what is CPQ? It's a logic mod that gives mappers a ton of flexibility to change the state of entities dynamically during gameplay. It emulates how a computer works (hence the name) and enables values (usually numbers) to be both dynamically stored in and used in a multitude of ways. Here's a brief table with examples of current functionality:

Where We Can Get Values FromManipulating those Values
  • Entity Position & Distances from each other
  • Player Look at Angle
  • Entity Health, Damage Taken
  • Player Armor, Items, Ammo & Current Weapon
  • Random Numbers
  • Execute mathematical operations on them and store the result, including two different numbers we have stored (for example: Player Health x Skill Level, or Offset from the Player's current position )​
Using the Values for Logic FlowUsing the Values for Actions
  • Create chains of triggers that only proceed if a value is equal to something or is within a certain range (for example: Only trigger this door opening if the player has the Nailgun or Only spawn this enemy if the player has over 50% of their health left)
  • Deal & Heal Damage
  • Give Items, Armor, Armor Mitigation, Ammo
  • Dynamically change door/platform state data such as lip, angle, speed and position
  • Dynamically enable/disable triggers and teleporters

Basic Example:
register_example.png
In our example, we want the door to open when the player is under 50 health. We have four entities:
  • func_door - a standard Quake brush entity for a door
  • info_register - our primary CPQ entity, a point entity that holds a numerical value
  • trigger_setregister - a CPQ trigger that is targets a register and sets that register to a "sourced" value (from a list of possible sources, including player health), or a "static" value (meaning the value to be set is defined on the trigger itself)
  • trigger_boolexpr - a CPQ trigger that targets a register, checks whether a specific expression is true (such as "is value less than 5" or "is value equal to 0")
Now that we've established our entities, let's look at the steps.
  1. Player walks into the trigger trigger_setregister, which is connected to our info_register. As configured, when triggered trigger_setregister sets the register to whatever the current health value of the player is.
  2. Let's assume the player has 30 health. Thus, trigger_setregister sets info_register to 30.
  3. Now, trigger_setregister subsequently triggers trigger_boolexpr, which is configured to look at the value in the info_register, and if it's less than 50, trigger the func_door. If the value is not less than 50, it's configured to display a standard centerprint message, something akin to "You're not wounded enough!"
  4. The trigger_boolexpr triggers, checks info_register, evaluates that the value inside (30) is less than 50, and then triggers the func_door, which opens and allows the player through.


If anyone would be potentially interested in participating (or would like to do a map if there's not enough participants for a jam) please feel free to reply or like this post, or hit me up on Discord (Qalten#1019 and in the Quake Mapping Discord).

The CPQ Jam Devkit will include:
  • A quick start tutorial PDF
  • A comprehensive entity reference PDF
  • Two example maps (the "showcase" featured below and a devkit map, both BSP and MAP)
  • A Trenchbroom FGD file for development

If you like to see a playthrough of a "showcase" map I made last year, check it out here:
 
Last edited:
I think there might be more people interested out there, even in QMD where I originally saw this video, but not everyone has time to watch a 25-minute video. it would be great if you could list some of the possibilities so everyone could understand the impact of this mod (without having to watch this video + the second part which is even longer).

Nonetheless, count me in!
 
  • Like
Reactions: Qalten
I think there might be more people interested out there, even in QMD where I originally saw this video, but not everyone has time to watch a 25-minute video. it would be great if you could list some of the possibilities so everyone could understand the impact of this mod (without having to watch this video + the second part which is even longer).

Nonetheless, count me in!
Great idea! I've updated the first post with some more details about what CPQ is, including an example. I'm also thinking of making a very short video to also give a brief overview.

Additionally, I'll list the ways CPQ was used in the showcase video in case people haven't seen it (spoilers!)
  • Moving a brush around and then changing a teleporter destination based on the brush's position
  • Opening a door based on player health
  • Triggering a secret once a grunt walks close to a specific position
  • Creating a setpiece door that requires the player to fill a dynamic gauge (using two smaller gauges) until it is full to proceed
  • Enabling a trigger to only be hurt by a certain weapontype
  • Opening a door when a player is looking straight up
  • Using player position (x y and z) to create a brush that crushes monsters underneath the player when they jump
  • Taking cells from the player and filling up a battery that will open a door once it's charged enough
  • Granting the player extremely high armor mitigation for as long as they're in a specific zone
  • Changing whether or not a lift goes up or down based on if the player currently has the ring of shadows
  • Requiring a player to lose a % of life in a particular zone before proceeding
  • Using buttons to enter a specific code to open a door
  • Creating a boss battle against an angry AI wherein the player has to shoot exposed circuits that randomly open up, and only with a lightning gun while the AI tries to push the player into slime. It features the boss's health bar, and three phases.
 
Last edited:
Oh man, I've been looking forward to this! I'm hoping you'll provide some source maps as examples when you start the jam, that would help a lot in figuring out these systems.
 
Oh man, I've been looking forward to this! I'm hoping you'll provide some source maps as examples when you start the jam, that would help a lot in figuring out these systems.
Yep! The jam devkit will include documentation, and two maps: the showcase map in the video and a devkit-specific one to demo each feature in a development environment. Both BSPS and MAPS will be included for them. I've updated the OP with this info as well.