djcev.com

//

Memory / Work / QuakeOneDogMode

Created , last updated . Source file.
Tags: , , .

This page is for taking notes for and tracking my work on a Quake mod. You can find the mod itself (such as it is) in this software repo. The mod in its current state is almost entirely the work of other people; you can find a credits list in the README.

Table Of Contents

TODO list

Current significant bugs / improvements scheduled:

  • camera / cutscene system needs to be refactored
  • spawn_tfog & spawn_tdeath need to be reworked
  • graphical user interface for the inventory
  • CSQC improvements (fixed tempentities [lightning], etc.)
  • Improve (or implement a new) player unstick function
  • Sounds
    • New (varied) sounds for jumping

Naming Conventions & Style

Indent with tabs. Break lines that don't fit within 80 columns. Braces ("{}") get their own line. Always use braces for switch/case blocks, and for every member of an if / else if / else block if any member of that block has more than one line.

Constants are CAPS_WITH_UNDERSCORES, functions are lowercase_with_underscores, variables are lowercase_with_underscores.

Stats and Skills

Reserve one float field for stats: self.stats (name?). Each stat is represented by three bits allowing for seven possible values for each stat (0-5 with one reserved?). A float can contain 23 possible bits; this gives us enough space for 7 (7x3=21) individual stats.

Strength, Intelligence, Endurance, Agility, Luck

The fallout S.P.E.C.I.A.L. system has seven stats. Strength, Perception, Endurance, Charisma, Intelligence, Agility, Luck. Each stat has a range of 1-10 (IIRC).

VtM: Bloodlines has nine stats (Attributes): Strength, Dexterity, Stamina, Charisma, Manipulation, Appearance, Perception, Intelligence, Wits. Three physical, three social, three mental. Each stat has a range of 0-5.

Cyberpunk 2.0.2.0. has nine stats: Intelligence, Reflexes, Cool, Tech, Luck, Attractiveness, Movement Allowance, Empathy, Body.

Doom RPG has eight stats: Strength, Defense, Vitality, Energy, Regeneration, Agility, Capacity, Luck

Arcana has four: Strength, Endurance, Intelligence, Alertness

Morrowind has eight: Strength, Intelligence, Willpower, Agility, Speed, Endurance, Personality, Luck

Divinity Original Sin has six: Strength, Dexterity, Intelligence, Constitution, Speed, and Perception

Hexen II has six: Intelligence, Wisdom, Dexterity, Strength, HP, Mana Level

Items & Weapons

New item selection / use system:

8 item slots (numbers 1-8 on the keyboard / impulse 1-8, think of them as inventory slots). Slots can be selected at-will even if empty. If an empty slot is selected then item 0 (the player's hands) will be shown. If item 0 is selected then the player will not automatically pick up objects on the map. Instead the player can +attack while the crosshair is on an item to perform the normal pickup function. A new button (button6) can be pressed to grab and then hold an item in the crosshairs, or throw an item currently held.

This allows for picking up and carrying things like ammo boxes and health packs. With an ammo box selected "using" it (+attack) will add that ammo to the player's ammo pool. A health box would heal the player on +attack, and so on. A thrown item will do a negligible amount of damage if it hits an enemy (5? 10? dmg).

Weapons can also be thrown and picked back up, allowing the player to freely move them around in their inventory. (Super shotgun might be on impulse 8 rather than 3, for example). An inventory screen (show when holding Tab / +showscores) will be implemented to allow mouse interaction with inventory.

Categories & specifics

  • ammo
    • id1: shells, nails, rockets, cells
  • armor
    • id1: green armor, yellow armor, red armor
    • armor shards
  • backpacks
  • debris & gore
  • health
    • id1: health pack (rotten, normal, mega)
    • health vial (Q3 bubble)
  • keys (id1 silver & gold, each in three worldstyle variations)
  • lights
    • torch (uses same model as Q1 walltorch)
  • powerups (id1 envirosuit, invisibility, invulnerability, quad)
  • runes / sigil
  • weapons
    • id1: axe, shotgun, ssg, nailgun, sng, GL, RL, lightning gun

Ideas for additional items:

  • Lockpicks
  • Rations (food? function as a health item?)

Movement

Currently implemented:

  • Quake 1-style air control (PM_AirAccelerate)
  • CPM/Painkiller-style +movement direction air control
  • Quake 3 strafejumping
  • Quake 3 wall clipping / skimming
    • 250ms window checked against the doublejump timer.
  • New slidemove based on Q1, Q3, and Nuclide.
    • Implements airsteps and Q3-like 'sticky' steps
  • Crouching (based on Quake 3, Nexuiz, and Nuclide code)
  • Crouchsliding (based on Rapha's demonstration in his QC movement tutorial)
  • Doublejumps & Stairjumps (two jumps within 400ms)
  • Teleporter jumps (doublejump through a teleporter)
  • Walljumping (based on Warsow, Xonotic, and Quake Champions Classic code)
  • Targeted trigger_push entities (Quake 3 jumppads)

Monsters

New monsters: bats, rats, spiders, etc. Maybe I can learn how to model for Quake? I dunno. That seems unrealistic.

Mapping

TODO table of biomes, associated maps, progression

Client Prediction Notes

FTE has some kind of anti-cheat that sometimes loses packets when doing QC player movement physics, see https://github.com/fte-team/fteqw/issues/208. "cl_maxfps_slop 0" might improve the situation. See also "cl_threadedphysics" (conflicts with CSQC_Input_Frame according to Spike).

Bookmarks, Reference Links

Mapping

Mods

Movement References

Quake C

Vector Math

Sounds