Freedoom is an entirely free software game based on the Doom engine. https://freedoom.github.io/
Find a file
mc776 9ea70e75de
levels: various QOL fixes.
Generally there should be nothing *necessary to finish a level* that requires any of:
- straferunning;
- extremely sensitive timing that could softlock you if you're on keyboard, lagging in multiplayer or have motor issues;
- checking only for a sound cue that something has happened;
- remembering how to distinguish two visually nearly identical areas; or
- backtracking to a previous area on the map that you had previously been given no reason to revisit.

I haven't caught all of them by any stretch of the imagination but it's a start.

Also some regular minor fixes.

E1M9
- Fixed some textures around the big blue-trimmed lift and removed an extraneous use line that triggered a faraway lift for no reason.
- The red key bridge lowerable section is now textured differently from the rest of the bridge.

E3M5
- Teleporter platform to get back up to the catwalk from the northeastern blood maze is now clearly marked as having a switch, as it is a mandatory progression rather than a secret.

E4M8
- Got rid of some fake contrasts on the noodles at the start.
- Added a radsuit for the northwest switch. While it is possible to avoid damage even without straferun, unless you've got a tic counter display and can time it to the damage interval this is basically RNG.
- The water flat on top of the lowering wall in the east was very, very noticeable. The switch is now stepped on instead of hit. (Not too sure if the secret isn't *too* obscure now...)
- Removed asymmetrical doortrak on the slime bridge on the southeastern piston switch.
- The linedefs of said slime bridge pit are flipped so a deathmatch opponent trying to grab the berserk in there is not magically immune to rocket blasts. (see #996)
- Realigned the four pistons by the gate to the starship. They also reveal moving parts when activated - not nearly as good as the crushers on the original DI, but better than nothing.
- Made the southern walls use PLAT1 to make it more obvious that those walls will lower later (with the added bonus that they match the four pistons).
- The southern light bronze area now has a strip to guide the player towards the switch in case they lose track of their direction while fighting monsters and forget to explore inside that area, as well as to better distinguish it from the southeast.
- The gate threshold to the southern light bronze area now matches that of the pre-opened southeast.
- There is now actually a threshold where you can tell where the starport ends and the ship begins.
- The two light bronze areas are a bit too similar-looking. Added a few health boosts so the player can spot/be attacked by them and know this is an unexplored area.

Map11
- The lift going down into the yellow key room requires a switch that is out of sight from the lift itself, which is not clearly marked as a lift to begin with. The only real way to realize what's going on if you don't already know about the lift is to locate the sound and immediately turn to investigate before the lift comes back up. I thought this was annoying when I first did my big overhaul of this map, but ultimately left the basic mechanism alone out of an abundance of caution; however, with the recent discussion of accessibility in the proposed changes to the documentation I'm revisiting this. That upper switch now lowers a wall to reveal the lift which is triggered by a walk line.
- The lower far switch on that same lift was actually literally *impossible* to make on keyboard and no straferun (and no vanilla wallbounce exploit), even if I change it to a regular lift instead of fast. This is completely unacceptable for something necessary to progression (rather than an obscure secret). The lower switches are now permanent repeatable floor-lowerers, while the line crossing from the lift into the lower chamber is a permanent repeatable floor-raiser, with the line crossing into the lift from above being a simple lift line.
- Retextured the stairs out of the water in the eastern branch so it's not an unreadable mess of criss-crossing grey lines.
- Realigned the new skull switch texture in the skull room.

Map19
- One of the stealth worms was stuck in a burning barrel.
- Removed monster block flag on line 2083.
- Unmerged and remerged a few identical sectors to better match the intended sound travel.
- Flagged line 281 as a monster blocker. This allows the player to always be able to make the jump onto that bottom stair without being blocked by the octaminator.
- That octaminator is now a pain bringer in easy mode. The far end of that platform path is well outside the maximum vertical autoaim range in vanilla, which means that to actually hit the octaminator without up/down aiming you'd have to be on one of the later platforms - i.e., confined to a relatively narrow area with no cover *against an opponent that has seeker missiles*. The best way to solve this is to charge towards the octaminator as fast and as soon as possible with the SSG, minigun, or ripsaw+prayer to RNGsus that you'll get a good painlock. This is not the kind of tactic the sort of person who *needs* to play on easy will think to do, or could do while also being ready to sidestep if the octaminator fires at the wrong time.
- 347 and 249 are now also monster blockers, and the worms in that slime pit have been moved to the platform just behind the combat slug since they're awakened early on and that's where you'll first encounter them anyway.
- Replaced the teleport pad in the vertical platforming sequence with a lift, to minimize disorientation and going the wrong way. (In retrospect I probably could have just made the teleport destination face the pit you came in from, but the lift worked aesthetically better anyway.)
- A good chunk of that entire platforming area has been moved 8 units to the west so that things would align with the flat grid.
- Lines 307 and 309 are now also monster blockers. The worm that would be trapped between them is now moved further down the route and marked ambush.

Map20
- Removed the useless, misleading skull switch texture on the bars at the start.
- The door leading into the blue key arena needs no blue key; the door leading out needs a blue key. Both are marked with blue-light trim. Removed the blue lights on the first one.
- The lowering wall leading to the teleporter now uses a pipe texture.
- The door leading out of the giant quadruped arena now has a bright flickering light.
- Yellow key is another case of effectively-randomly-mandatory damage. Added a path.
- Same with the lava tunnel on the red key route.

Map25
- The silver lift near the river and shack is now activated by SW1GSTON switch right on the wall at eye level, rather than counterintuitively and invisibly recessed into additional sectors.
- The painlord ambush lift is now accessible after the encounter. A small health refill has been added there for easy and medium.
2023-09-04 20:16:33 -07:00
.github/workflows github: Update GitHub Actions "make" script 2023-04-02 14:19:09 -04:00
bootstrap Add missing SPDX identifiers, use CC0 explicitly in dist 2020-02-03 12:31:55 -08:00
dist Rewrite name section of the desktop files to "Freedoom #" 2023-04-22 18:16:36 -03:00
flats patches/flats: New gray bricks by Korp (#1087) 2023-09-01 16:49:51 -07:00
graphics graphics: Improve the CD-ROM graphic (#1089) 2023-08-30 17:20:24 -07:00
levels levels: various QOL fixes. 2023-09-04 20:16:33 -07:00
lumps textures: complete AQTRIM03. (#1079) 2023-08-26 18:08:53 -03:00
manual manual: Add a section about Freedoom's true goal. (#1094) 2023-08-31 16:55:25 -07:00
musics music: use tremolo strings for d_map19 not piano. (#1080) 2023-09-04 11:35:42 -07:00
patches patches: switch wall57_3 and 4. (#1084) 2023-09-02 09:08:13 -07:00
scripts scripts: Add news-to-feed script (#1042) 2023-07-30 15:03:10 -07:00
sounds sounds: fix dsbspsit. (#1099) 2023-09-02 16:55:06 -07:00
sprites sprites: new fist. (#1046) 2023-09-03 08:30:30 -07:00
.adoc-layout.conf fancify HTML output using the website style 2019-10-11 11:12:33 -07:00
.gitattributes Burn all GIFs: Convert everything to PNGs. 2017-07-18 22:26:52 -07:00
.gitignore Makefile: remove wad-image targets 2019-10-28 10:30:10 -07:00
BUILD-SYSTEM.adoc CREDITS: Add contributors since v0.12.1 2022-11-26 14:32:50 -05:00
buildcfg.txt sprites: new fist. (#1046) 2023-09-03 08:30:30 -07:00
COMPILING.adoc COMPILING: ASCIIDOC make variables, note asciidoctor-pdf 2019-09-12 15:44:49 -07:00
COPYING.adoc Update COPYING's year to 2023 2023-01-14 22:21:06 -05:00
CREDITS music: new D_BUNNY by Goji. (#1078) 2023-08-27 18:03:34 -03:00
Makefile scripts: Add news-to-feed script (#1042) 2023-07-30 15:03:10 -07:00
NEWS.adoc NEWS: document the 0.12.1 release 2019-10-22 11:26:10 -07:00
README.adoc CREDITS: Add contributors since v0.12.1 2022-11-26 14:32:50 -05:00

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

= Freedoom

The Freedoom project aims to create a complete, free content first
person shooter game, but _Freedoom_ by itself is just the raw material
for a game.  It must be paired with a compatible _Doom_ engine to be
played.

There is a massive https://doomwiki.org/wiki/Idgames_archive[back
catalog], spanning over two decades, containing thousands of _Doom_
levels and other modifications (“mods”) made by fans of the game.
_Freedoom_ aims to be compatible with these and allows most to be
played without the need to use non-free software.

_Freedoom_ is actually three games in one, consisting of two
single-player oriented campaigns and one set of levels designed
exclusively for multiplayer deathmatch:

[horizontal]
*Freedoom: Phase 1*:: Four episodes, nine levels each, totalling 36
levels.  This game aims for compatibility with _The Ultimate Doom_
mods, also known as plain _Doom_ or _Doom 1_.
*Freedoom: Phase 2*:: 32 levels in one long episode, featuring extra
monsters and a double-barrelled shotgun.  This project aims for
compatibility with _Doom II_ mods.
*FreeDM*:: A 32-level game designed for competitive deathmatch play.

The engine uses a single file, such as +freedoom2.wad+, that contains
all the game data such as graphics, sound effects, music, and so on.
This file is often called an “IWAD” by those in the _Doom_ and
_Freedoom_ communities.  While the _Doom_ engine source code is free,
you would normally still need one of the proprietary data files from
https://www.idsoftware.com/[id Software] to play _Doom_.  _Freedoom_
aims to create a free alternative: combined with the GPL-licensed
_Doom_ source code, this results in a completely free game.

For more information, see https://freedoom.github.io/.

== How to play

Since _Freedoom_ is only the game data, you will still need to
download an engine separately.  These are also often termed “source
ports” by the community.  There are an overwhelming number of choices
available, a lengthy list of which is available on the
https://doomwiki.org/wiki/Source_port[Doom Wiki].

One particularly recommended by the _Freedoom_ project is
https://zdoom.org/[GZDoom].  This engine offers good support for
single-player, multi-player, and the majority of mods created for both
_Doom_ and _Freedoom_.

On Windows, you should place _Freedoom_s data files (those ending
with +.wad+) alongside the engine (eg, +odamex.exe+).  On Unix-like
systems, these data files should go in either +/usr/share/games/doom+
or your home directory.  If _Freedoom_ comes packaged as part of your
operating system distribution, it should already be installed into the
proper location.

Hopefully, your engine of choice should already be capable of running
_Freedoom_ without extra configuration.  This may not be the case,
however, if the engine does not recognize any of the filenames for
_Freedoom_, and might require manual intervention to make it so.  One
of the following options should solve it:

  * Use the +-iwad+ command line parameter.  For example, to play
    Phase 2, you can enter +-iwad freedoom2.wad+ either at a command
    line, or adding it to an application shortcut.
  * Use the +DOOMWADPATH+ environment variable.  Many engines support
    this variable to add directories and/or files to their search
    path.  The exact syntax matches your operating systems normal
    +PATH+ environment variable.
  * Rename the game files.  This may be a bit crude, but you can
    rename the files to match those of _Doom_s.  This is often the
    easiest quick-fix, although it is normally desirable to use one of
    the above methods if possible.

    ** +freedoom1.wad+ can be renamed to +doom.wad+
    ** +freedoom2.wad+ can be renamed to +doom2.wad+
    ** +freedm.wad+ can be renamed to +doom2.wad+

Additionally, for Unix-like operating systems, such as GNU/Linux or a
BSD variant, _Freedoom_ may be packaged and installed with programs
named +freedoom1+, +freedoom2+, and +freedm+ that automatically run an
engine for proper play.  Desktop files may also be installed so that
you can start the game using a graphical interface and avoid the
command line altogether.

== What “free” means

When we speak of free content or software, we refer to the movement in
which your freedoms to use, copy, modify, and study a work is not
infringed.  For example, you may freely use _Freedoom_ for any purpose
you see fit, you may redistribute it to anyone without needing to ask
for permission, you may modify it (provided you keep the license
intact, see `COPYING`), and you may study it--for example, to see how
an “IWAD” is built.  To facilitate this, you can get the full source
code for _Freedoom_, in this case, in the form of a DeuTex tree.

You may read more about free software at the https://www.gnu.org/[GNU]
and https://www.fsf.org/[Free Software Foundation] websites.

== Contributing to Freedoom

Contributions to _Freedoom_ are always welcome, however there are a
few guidelines that should be followed:

=== Intellectual property

We know people hate legalese, but this is important.  This applies to
*everything* which is submitted.

You must be careful when basing on existing graphics or sounds.  Most
_Doom_ projects are lax on reusing intellectual property--there are
many mods which contain modified _Doom_ sprites, for example.
However, due to the nature of this project, we do not have the same
liberty to rip as we please.

The general rules go as follows:

  * You must have permission for everything you submit.  If you make
    your own resources, do not base on resources from _Doom_ or any
    other restricted work.  If you take work from other places, please
    make sure that the work is freely-licensed or that you obtain
    permission to include it in the _Freedoom_ project.  They may not
    place additional restrictions compared to the normal _Freedoom_
    license.
  * Do not try to emulate _Doom_ resources exactly.  Where possible,
    put effort to make new versions look visibly different from
    _Doom_.  This is a tough call, because our compatibility with
    _Doom_ mods limits how far we can deviate, but it is feasible.
  * Be especially careful of “free textures” (or “free sounds” or
    “free graphics”) sites.  Although these would appear at first to
    be okay to use, many are free for “non-commercial use only.”
    One of the things we want to be able to do is put this in
    GNU/Linux distributions (which can be sold or developed
    commercially).

=== Levels

All levels for _Freedoom_ must be vanilla-compatible, requiring an
expanded-limits or limit-removing engine is not permissible.  This
means you may not exceed the limits of the original _Doom_ engine, and
do not depend on additional mapping features.  Levels should be in
_Doom_s original format, not in “Hexen”-format.

It is sensible to also heed the following guidelines:

  * Make sure that skill levels are implemented, and that all
    multiplayer start points, both cooperative and deathmatch, are
    present.
  * Try to make levels appropriately difficult for their position
    within the progression of the game.  Also bear in mind that not
    all players may be as skilled a player as you.
  * Do not use tricks that exploit _Doom_s software renderer; some
    engines, especially those that use hardware accelerated rendering,
    may not render it properly.  Examples of tricks to avoid include
    those used to simulate 3D bridges and “deep water” effects.
  * While unrestricted by limits, do not make excessively complicated
    scenes.  It is desirable that _Freedoom_ levels should be playable
    on low-powered hardware, such as phones and old computers.
  * Test your levels in https://www.chocolate-doom.org/[Chocolate
    Doom] to make sure that vanilla compatibility is maintained.  This
    is an engine with strict adherence to vanilla Doom limits and
    bugs, and working in it assures that levels can be played with any
    _Doom_ engine.
  * Use a Doom editor to check for errors. In
    http://eureka-editor.sourceforge.net/[Eureka] it's possible to
    check for errors with the Check / All menu, or by pressing `F9`.
  * If possible run `make test` and fix any errors found. Note that
    some of the errors can be fixed by `make fix`.

=== Graphics

Graphics should generally have the same color and size as the original
_Doom_ graphics, as to remain compatible with mods.  Otherwise, levels
may end up looking like a nightmare in design.  They may be
thematically different as long as it doesnt clash.

_Doom_ uses a fictional corporation abbreviated as “UAC:” this is
trademarked by id Software and cannot be used in _Freedoom_.  Instead,
use the initials “AGM” for _Freedoom_.

=== Documentation

_Freedoom_ always needs help with documentation, so please send your
patches, but keep in mind:

  * We use http://asciidoc.org/[AsciiDoc] for writing the
    documentation.  AsciiDoc is a simple plaintext-based format which
    is simple to read and write in its source form, and can generate
    nice HTML documents out of them.
  * Headers are formated in a wiki-style format, this makes it easier
    for Vim (perhaps other editors, too) to automatically re-format
    text.
  * Text is kept at 72 characters wide.  In Vim, you can set the
    editor to automatically insert line breaks as youre typing by
    performing `set textwidth=72`.  Special exceptions to the width
    rule might be allowed when necessary (for example, inserting long
    URLs).

=== Submitting your work

The most common, and a fairly simple method, to submit your work is by
posting it on the
https://www.doomworld.com/forum/17-freedoom/[Freedoom forum] on
Doomworld Forums.  This allows a great number of people to review the
contribution and provide feedback, although the registration process
is known to be cumbersome.

An alternative to using the forum, is to post your submission on the
https://github.com/freedoom/freedoom/issues[issue tracker], which may
also be peer-reviewed and provide a feedback cycle.

Unfortunately, the Freedoom project cannot provide hosting space in
the form of a web page nor FTP, however there are many free file hosts
to use when you need a location to upload files.  Sites and services
such as https://www.dropbox.com/[Dropbox] and
https://mega.co.nz/[Mega], as well as others, are common and should be
simple to use.

==== Crediting information

_Freedoom_ is made up of submissions from many people all over the
globe.  All of them, and you, deserve credit!  Please do not forget to
provide your name and email when submitting resources.

==== Using Git

You can also commit on a clone of the _Freedoom_ repository, although
this is a technical task and it is okay to let other _Freedoom_
maintainers to do it instead: that is our normal mode of operation.
However, pull requests are much appreciated and you may submit them in
any manner you wish, with GitHubs direct pull requests being the
simplest, but by far not the only means.

Freedoom uses the commit message style commonly seen in distributed
version control systems, adopted by projects such as Linux and Git.
For an explanation of this style, see
https://chris.beams.io/posts/git-commit/[How to Write a Git Commit
Message].

If you create a git commit for someone else it is helpful to set the
author of the commit so that they get credit. Ask them what name/alias
and email they would like to use. For example:
[source,bash]
-----------------
git commit --author "Bob Smith <bob@example.com>" ...
-----------------
If they prefer not to give an email then the email can be omitted, so
just "Bob Smith" in the above example.