Challenge maps (Design Doc) - ntrf/blamod GitHub Wiki

Overview

Ok, so i'll try to explain my vision of how Blamod Challenges should work.

First of all, apart from the established timing technique used in Q3 jumping mods, KZ, Momentum, TF2 & Portal maps, there are other games out there, do things differently and sometimes better. I never was a fan on a "classic" scheme, where timer starts as soon as you cross the start line, keeps going while you fail tricks and stops only at the end. I think it comes from the racing games, where failures are rare, easy to avoid or mitigate the consequences. This way of timing also blends well with a multiplayer games. However, as games become harder to master and more movement tricks can lead you to a failure, this system shows one significant weakness - it's discourages beginners from retrying tricks multiple times. Things become even worse when a challenge is designed in such way, that the best solution is only possible in flawless completion. I think map makers should not buld a wall in front of a newcommers.

I went through that myself back in the days of Q3 Defrag and i don't think it's a good solution. In other words: "GIT GUD" is a shitty answer and there is a better way.

In Blamod Reborn there is no multiplayer element, and even if it becomes a thing i can give every player his own timer, so keeping a common timer is not an issue. There is however one issue, which is not part of KZ, TF2 maps or racing games - with propflying you need to reset positions of boxes, pallets and other flyable objects on every respawn, which is hard without respawning the entire world, that also means that player's health will be restored. This can be exploited and i don't see it blending well with continuous timing. That's why i want to use timing system from another game i run - Cloudbuilt - with some minor differences. In Cloudbuilt you can respawn at any moment with a press of a button, but game adds a +3 seconds penalty to your time and restores time back to a what it was when you activated a checkpoint. As a result some people died about 120 times and still managed to get final time under a 4 minutes. This creates a better experience for begiiners and lower gaps in leaderboards. It's slightly harder to implement, but i don't see this as a significant difficulty.

(TL;DR) Implementation plan

This leads us to the following implementation:

  • Timer starts when you cross the start line
  • Timer is saved at every activated checkpoint
  • Checkpoints can be made mandatory
  • Checkpoints have attached player_start nodes, that are used for respawning
  • Each respawn, except for respawns at the start, adds +5 seconds penalty to final time
  • Times resets to saved value on each respawn
  • Game world partially resets on every respawn

This way completing a map without checkpoint would be still valuable

Q/A

Q: Aren't respawns slow. You nned to load saves or reload map and etc. A: Nope. In multiplayer games it's possible to respawn instantly, however there is a limiter, that prevents you from respawning too fast. Later i take the limiter off and instant respawns will become possible. Also there is a way to destroy and re-create all the moveable objects and triggers, which is already in the game and invoked with respawn_entities command. Currently there are bugs associated with it, but i'll fix them as we go.

Q: Players will be able to restore health and ammo with respawns. How is this fair? A: I don't know. There is a concern that respawns can be abused, but with +5 seconds penalty it's extremly unlikely due to lost momentum. If necessary - we can rank clean completion higher in the leaderboard or something like that. However i see the proposed system as an easier way to fix all the problems i mentioned. A good map design should allow player to heal-up and restock on ammo anyway.

What is implemented so far

blamod_timer

Implements a generic timer. It has inputs Start, Finish and Fail, that are used to controll the timer with a regular triggers. You're not required to place any special triggers.

To activate challenge mode

  • disconnect
  • change blamod_challenge to 1
  • load a map

If done correctly you'll spawn with a suit equiped. If you die anywhere on the map, you'll respawn by perssing fire button.

TODO

Mutiple blamod_timers

Multiple timers will be used for multiple categories on the same map. Low priority.

blamod_checkpoint

Shows location of the next checkpoint player has to reach on a radar. Has input Trigger that is enabled by a general-purpose triggers. You can make a map, that triggers checkpoints when you throw a rollermine into a dumpster and etc.

Has outbound connection to player_start node, that will be used for respawning the player if he dies.

Has outbound event, firsd on each respawn. You can use it to give player equipment or unlock some doors. Or to play anoying laughing sound. Keep in mind that all the previously reached checkpoints will fire this event on respawn, not only the most recent one.

blamod_give

When activated by trigger - gives or takes away all the equipment you specify. Can be activated by a checkpoint respawn or a simple trigger. Can even be activated with a trigger.

blamod_overview

Cameras for overview, shown when player first enters the map.

Prefabs for start, finish and checkpoints

To make design of the maps more consistent.

Guidelines

  • Blamod Reborn is a weapon-heavy game. Favor use of the weapons in your map. That's why they were designed in the first place.
  • Avoid surfing. There are too many maps and mods featuring surfing and jumpmaps. I don't think it's necessary to make blamod another one.
  • Make sure player knows where to go. Mark dangerous areas in recognizable way and start using them ASAP. Same for weapon pickups.
  • Avoid disjoint areas with teleporters and etc. If neessary, make a large jumppads that will transport player into another part of the map.
  • Make sure player can see the goal from the very beginning. This will be later solved by an overview. Differentiate the design of areas as player progresses through: like more watter in the bottom parts of the map, more windows in the highest parts.
  • If possible create several paths. Leaving potential exploits in your map is more interesting in a long run, that overcomplicating the route.
  • Typical map should be about 1~2 minutes long with relaxed first-try completion.
  • Don't use photographs of people in your maps. Most of the time it's either a semi-pronographic content or memes, that only a few people will appreciate. Just don't do that. Please.
  • Don't include copyrighted content. If you need to include models, sounds or textures - talk to me. I can either provide you a free replacement or aquire a license.