Nonlinearity in Quake

Balgorg

Member
Jul 31, 2023
68
39
18
Shooters old and new tend to generally stick to the tried and tested formulas.
If you have played through a multitude of titles you will be well aware of the most basic formula of linearity.
Since Unreal, some titles have expanded upon non linear routes through maps, and focused upon large levels. The epitome of such would be Farcry, and it's descendant Crysis.
The lines obviously have been blurred in some shooters that inevitably have become fps-rpg's.
But how to create nonlinear maps in Quake is a topic of interest for me.
In my recent mapping experiments within Peril, I have tried to create maps that are far more open than is usually the case, with multiple routes. But, without coding anything in, it proved to be rather challenging.

The main issue of course is that Quake was never designed for large open maps. But, the arrival of source ports that allow for maps that exceed the old limits clearly begs for a radical new approach to mapping in Quake.

Open non linear maps.
Its clear that when you read through generalised commentary in regard to nonlinear game design, there is a tendency to assume that certain aspects are to be coded in to make the space work and keep the player from getting bored. Progression trees and leveling up for example.
But in vanilla quake, or even a complex mod, there's no such thing.
The challenge therefore is to make the game world work and remain interesting without these added elements, or wait for a mod to impliment them.
I don't think I have cracked it, but wish to find out ways of improving the more open ended format, take away some of the confusion inherited by multiple route choice, but without leading the player by the hand.
The tricks employed in Peril were a rich audio environment, the sounds making up the bulk of the pak files. Attempts to make combat scenarios and set peices work in reverse.
But reading reviews it's clear that something else needs to be added to the formula.
It would be interesting to hear your thoughts on nonlinear mapping in Quake, and also what potentially could be created through coding to really take advantage of the extended limitations now available.
 
Perhaps best non-linear maps existing are Bal maps "Tears of the False God" from Arcane Dimensions and "Dancing in the Golden Sun" from Alkaline. Tears is better example for a cpl of reasons, but both worth studying. Anyway...
First of all, the goal of the whole map is just find 7 shards wherever they are. So already there're no keys, and the quest itself is non-linear by nature.
Secondly, Bal managed to introduce some sort of respawning system so if you backtrack to already cleared area then it will be repopulated - repopulated with totaly different mobs. I didn't see such trick done in any other Quake map at all. Usually you just leave dead spaces behind you.
Thirdly and most importantly, map is filled with the secrets and those secrets are not some artifacts, but whole new playable areas. More of that if you will collect not 7 but 14 shards - area with "true" boss will open up. So it's giant reward for hunting the secrets. And I think secrets is the most important thing because there're 2more widely known and famous non-linear maps "The City of Zendar" by Sock and "Forgotten Sepulcher" by Guftmacher & Sock. In both cases there's a similar approach - there's an easy linear route to finish the map fast. But half of mobs are hidden within secret areas. So I may conclude that secrets, opening new playable areas, are crucial for non-linear Quake maps.
Fourth but this is not particularly important, there's a giant but linear map by Ionous & PuLSar exists and it's called "Leptis Magna". This one is interesting to us from only one point - there's a literal short story hidden in secrets. Ionous wrote the short story about what happened to this derelict castle. Spooky lovecraftian story. Divided that story into 20+ small pieces and hid in secrets across the map. So if you will find them all you will be rewarded with a very nice piece of lore of the map. I suppose to have an individual short story about the history of the map is a very nice bonus

[to be continued]
 
Lots of interesting thoughts here. On the one hand, modding for old game engines should make the most of their strengths, rather than trying to make them do something they weren't designed for. On the other hand, it's fun to use constrained old tech and push it in new ways!

I think that non-linearity can be done well in any engine. The key is making sure some kind of objective is made obvious at the start of a level, with either explicit instruction provided to the player during their progress, or through environmental changes. If a player doesn't know what they are meant to be doing, that's bad game design. Guide the player, give them multiple ways of doing things over multiple routes, but don't leave them somewhere not knowing what to do: that's when they will stop playing.
 
  • Like
Reactions: Balgorg
There is one element of non-linearity, though, that Quake ( 1 ) is not currently prepared to handle, but that Quake II gained with its new .dll-based approach to level design: Being able to visit previous maps, but with new objectives and exit points.

Maybe someone wiser than me on the subject of map creation can see it differently, but to this day I simply can't figure out how to do the same map from another start point and to reach to another exit point, while at the same time remembering what was done to the environment and monsters in a previous visit…
 
  • Like
Reactions: Balgorg
The Arcane Dimensions documentation suggests that it's possible in AD by using up to seven info_player_start2 locations and trigger_runes and to trigger different events depending on where you spawn and which runes you've collected, so that you're not just restricted to opening up new areas when the player has all four runes. AD and Alkaline also have persistent variables across maps that can help with this, so it may be possible to a lesser extent in Alkaline. I don't know how to do it outside of those mods, though, I'm certainly interested to know if others have found a way.
 
Last edited:
There's a very small amount of state that can be retained across level transitions, so you can't really keep track of which monsters have been killed, what state each door is in, which buttons have been pressed, etc. for each map.

A clever solution might involve using savegames, but I think that would involve some engine modification. e.g. you'd not only need to load the level, but set the player's current stats as well and re-orient them away from the level exit.