If you haven’t already, Fabien’s write ups of the various ID engines are a joy to read: https://fabiensanglard.net/quake3/index.php
Shameless plug: I also like to play around with old game engines: https://github.com/bishopdynamics/Continuum
I remember asking someone who worked at my high school for a map of the school and remember thinking it would be fun to recreate the school... in quake... and probably model my least favorite teacher as a monster I could chase...
it's somewhat scary to think back about this - especially since Columbine happened the same year. there was no risk from me (absolutely no way or interest to access guns - we were teenage dweebs in a country with strict gun laws) but thinking back I'm glad I never finished my maps or shared them.
[0] https://www.macintoshrepository.org/6370-quiver-1-2-quake-ed...
Quake 3 Source Code Review: Network Model (Part 3 of 5)
I miss the days of shooters with strong community run servers.
- now i know someone would say "just read the source code bro" but i am not a 3d game dev
- as a beginner, how do you wrap your head around a codebase as complicated as quake or something?
Don't worry about understanding the entire codebase just yet. Instead, try to understand some specific parts of it to begin with. As you work with different bits of the code you'll gradually form a mental 'map' of how the whole thing fits together.
Start by trying making small changes, e.g. make the guns faster, or make the player jump higher. Look for where that code is that does that thing.
You might be taken on a bit of a journey, finding the definition of a function, then the function calls within that function and the variables passed to them, etc. - all the way along you'll be discovering how various other things are done within the game engine, and the general layout/structure of the codebase overall, as well as plenty of general programming concepts that will be useful anywhere.
Do this enough times and you'll gradually build a familiarity with the engine, and programming in general. Then if there's something you want to do that's in a part of the codebase you're not familiar with, you'll be more able to 'dive in' and find where it is in the code, and you'll be more confident that you can read code you're not familiar with it and be able to figure out what it does.
I can only speak from my experience from when I was just starting out learning to code (17 years ago!), adding and tweaking various features in Cube Engine and its sequel Sauerbraten, eventually moving onto Stepmania. Stepmania was a MUCH bigger codebase than Cube/Sauer (probably still not as big as Quake 3 though!) and the stuff I picked up modding those two was invaluable for working with Stepmania.
However trying to Quick Play the map gives me:
=== Stage 1: BSP ===
Q3Map v1.0s (c) 1999 Id Software Inc.
---- q3map ----
verbose = true
qdir: /quake/
gamedir: /quake/baseq3/
entering /quake/baseq3/scripts/shaderlist.txt
entering /quake/baseq3/scripts/acc.shader
entering /quake/baseq3/scripts/ammo.shader
entering /quake/baseq3/scripts/beams.shader
entering /quake/baseq3/scripts/cf_models.shader
entering /quake/baseq3/scripts/clown.shader
entering /quake/baseq3/scripts/clown2.shader
entering /quake/baseq3/scripts/common.shader
Unknown surfaceparm: "antiportal"
Unknown surfaceparm: "lightgrid"
entering /quake/baseq3/scripts/cosmoflash.shader
...
entering /quake/baseq3/scripts/weapon_shotgun.shader
1411 shaderInfo
--- LoadMapFile ---
Loading map file /quake/baseq3/maps/compile.map
entering /quake/baseq3/maps/compile.map
****** ERROR ****** LoadTGA: Only type 2 (RGB), 3 (gray), and 10 (RGB) TGA images supported