mirror of
https://github.com/Shpoike/Quakespasm.git
synced 2024-11-10 07:21:58 +00:00
Some documentation and stuff.
This commit is contained in:
parent
afb6583375
commit
66b486472b
3 changed files with 196 additions and 9 deletions
|
@ -243,9 +243,9 @@ typedef struct
|
|||
unsigned int v[2]; // vertex numbers
|
||||
} dledge_t;
|
||||
|
||||
#define MAXLIGHTMAPS 4
|
||||
#define LMBLOCK_WIDTH 256
|
||||
#define LMBLOCK_HEIGHT 256
|
||||
#define MAXLIGHTMAPS 16
|
||||
#define INVALID_LIGHTSTYLE 0xffffu
|
||||
#define INVALID_LIGHTSTYLE_OLD 0xffu
|
||||
typedef struct
|
||||
{
|
||||
short planenum;
|
||||
|
|
|
@ -1487,10 +1487,10 @@ static qboolean S_Opus_Init(int encdec)
|
|||
#ifndef OPUS_STATIC
|
||||
#ifdef _WIN32
|
||||
char *modulename = "libopus-0.dll";
|
||||
char *altmodulename = "libopusenc-0.dll";
|
||||
// char *altmodulename = "libopus.dll";
|
||||
#else
|
||||
char *modulename = "libopus.so.0";
|
||||
char *altmodulename = "libopusenc.so.0";
|
||||
// char *altmodulename = "libopus.so";
|
||||
#endif
|
||||
|
||||
if (s_voip.opus.inited[encdec])
|
||||
|
@ -1498,8 +1498,8 @@ static qboolean S_Opus_Init(int encdec)
|
|||
s_voip.opus.inited[encdec] = true;
|
||||
|
||||
s_voip.opus.opuslib[encdec] = Sys_LoadLibrary(modulename, encdec?qopusencodefuncs:qopusdecodefuncs);
|
||||
if (!s_voip.opus.opuslib[encdec] && encdec)
|
||||
s_voip.opus.opuslib[encdec] = Sys_LoadLibrary(altmodulename, encdec?qopusencodefuncs:qopusdecodefuncs);
|
||||
// if (!s_voip.opus.opuslib[encdec] && encdec)
|
||||
// s_voip.opus.opuslib[encdec] = Sys_LoadLibrary(altmodulename, encdec?qopusencodefuncs:qopusdecodefuncs);
|
||||
if (!s_voip.opus.opuslib[encdec])
|
||||
{
|
||||
Con_Printf("%s or its exports not found. Opus voip %s is not available.\n", modulename, encdec?"transmission":"reception");
|
||||
|
@ -2192,7 +2192,7 @@ void S_Voip_Transmit(unsigned char clc, sizebuf_t *buf)
|
|||
// opus_encoder_ctl(enc, OPUS_SET_COMPLEXITY(complexity));
|
||||
// opus_encoder_ctl(enc, OPUS_SET_INBAND_FEC(use_inbandfec));
|
||||
// opus_encoder_ctl(enc, OPUS_SET_FORCE_CHANNELS(forcechannels));
|
||||
// opus_encoder_ctl(enc, OPUS_SET_DTX(use_dtx));
|
||||
// opus_encoder_ctl(enc, OPUS_SET_DTX(use_dtx)); //FIXME: we should probably use this one, as we're sending network packets regardless.
|
||||
// opus_encoder_ctl(enc, OPUS_SET_PACKET_LOSS_PERC(packet_loss_perc));
|
||||
|
||||
// opus_encoder_ctl(enc, OPUS_GET_LOOKAHEAD(&skip));
|
||||
|
@ -2408,13 +2408,19 @@ void S_Voip_Transmit(unsigned char clc, sizebuf_t *buf)
|
|||
s_voip.curbitrate = nrate;
|
||||
if (nrate == 0)
|
||||
nrate = -1000;
|
||||
else
|
||||
{ //"Rates from 500 to 512000 bits per second are meaningful"
|
||||
nrate = q_max(512, nrate);
|
||||
nrate = q_min(nrate, 512000);
|
||||
}
|
||||
qopus_encoder_ctl(s_voip.encoder, OPUS_SET_BITRATE_REQUEST, (int)nrate);
|
||||
}
|
||||
//fixme: might want to add an option for complexity too. maybe others.
|
||||
|
||||
level += S_Voip_Preprocess(start, frames, micamp);
|
||||
len = qopus_encode(s_voip.encoder, start, frames, outbuf+outpos, sizeof(outbuf) - outpos);
|
||||
if (len >= 0)
|
||||
{
|
||||
{ //FIXME: "If the return value is 2 bytes or less, then the packet does not need to be transmitted (DTX)."
|
||||
s_voip.encsequence += frames / s_voip.encframesize;
|
||||
outpos += len;
|
||||
samps+=frames;
|
||||
|
|
181
Quakespasm-Spiked.txt
Executable file
181
Quakespasm-Spiked.txt
Executable file
|
@ -0,0 +1,181 @@
|
|||
QuakeSpasm-Spiked
|
||||
|
||||
---------
|
||||
1. About
|
||||
|
||||
QuakeSpasm-Spiked <http://fte.triptohell.info/moodles/qss/> is an
|
||||
even more modern Quake 1 engine based on everyone else's hard work
|
||||
that I stole, as well as some of my own stuff from FTE.
|
||||
|
||||
It includes networking fixes and improvements, which means you can
|
||||
actually stand a chance of being able to use this thing as a server.
|
||||
It also includes a whole load of (serverside) QuakeC extensions so that
|
||||
modders are no longer limited to what is essentially crippleware.
|
||||
If the way I explain that grates on you, then you're probably part of
|
||||
the reason why I got annoyed enough to spend my time on this.
|
||||
|
||||
-------------
|
||||
2. Downloads
|
||||
|
||||
Sourcecode for this branch is available from:
|
||||
https://github.com/Shpoike/Quakespasm
|
||||
|
||||
Windows builds are available from:
|
||||
http://fte.triptohell.info/moodles/qss/
|
||||
|
||||
Linux and Mac builds are not currently available. These users will need
|
||||
to build their own from source.
|
||||
You may be able to find third-party versions prebuilt by other people.
|
||||
|
||||
Users familiar with Quakespasm shouldn't have any issues. This thing
|
||||
will still feel like QuakeSpasm, except for the optional additions,
|
||||
so the Quakespasm readme is included, its pretty much all still valid.
|
||||
|
||||
The included dlls are identical to the versions from an equivelent
|
||||
copy of regular QuakeSpasm, you should be able to have both installed in
|
||||
the same game directory without issue - on the condition that they're
|
||||
both win32 or both win64, not a mix.
|
||||
|
||||
-------------
|
||||
3. New Toys!
|
||||
(This is all relative to the regular QuakeSpasm at the time of writing)
|
||||
|
||||
----------------------
|
||||
3.1. Protocol Changes
|
||||
|
||||
o VOIP. Yes, voip is a thing.
|
||||
+voip or cl_voip_send 1 to use.
|
||||
cl_voip_test 1 will let you listen to yourself (*sigh*) to
|
||||
get volume levels acceptable.
|
||||
WARNING: vanilla quakespasm distributes a libopus-0.dll that lacks encoding.
|
||||
This results in opus playback but not transmission, transmission will instead
|
||||
fall back on the much-simpler-but-inferor PCM-A codec, which is built-in.
|
||||
FIXME: QSS still provides the same broken opus version. I need to compile my own.
|
||||
|
||||
o Split signons. Maps are no longer limited by the number of
|
||||
baselines or static ents etc. Go crazy if you dare.
|
||||
|
||||
o Decent deltas (using FTE's network protocol).
|
||||
You can have 5000+ ents visible at a time.
|
||||
They won't randomly disappear any more.
|
||||
Gracefully downgrades for old clients like QS or MarkV.
|
||||
|
||||
o More accurate view angles compatible with ProQuake.
|
||||
|
||||
o Rcon support compatible with most other NQ engines.
|
||||
rcon_password empty leaves this disabled.
|
||||
|
||||
o Single-Socket-Servers. You no longer need to re-route every single
|
||||
port to the QuakeSpasm Server. If you're hosting a public server,
|
||||
you simply need to (identity-)route a single port, as determined by
|
||||
the port cvar.
|
||||
|
||||
o IPv6. Future ready! Even Windows 2000 had support for it...
|
||||
IPv6 was finalised 20 years ago, and its still not even
|
||||
available in most of the world.
|
||||
So lets change that!
|
||||
|
||||
o Master server support. Servers will be advertised globally. Set
|
||||
sv_public 0 to disable this.
|
||||
You can also view other people's servers too. Vital feature.
|
||||
|
||||
o File download support. No more hunting for maps!
|
||||
|
||||
o BJP3 protocol support. In case anyone ever cares.
|
||||
|
||||
o Partial clientside compatibility with DarkPlaces Protocol 7.
|
||||
No prediction, no csqc, a few other omissions.
|
||||
|
||||
----------------------
|
||||
3.2. Modding features
|
||||
|
||||
o Supports md3 (no shaders, no tags).
|
||||
|
||||
o Raised limits for the mdl format (much rewritten, vertex limit is somewhere north of 32k, which should be enough...).
|
||||
|
||||
o Fixed sprite framegroups (vanilla bug).
|
||||
|
||||
o Support for .spr32, although its a bit of a poo format.
|
||||
|
||||
o Supports .pk3 archives (ie: renamed zips) common with large mods.
|
||||
|
||||
o Package wildcard support.
|
||||
-nowildpaks on the commandline to disable, if desired.
|
||||
|
||||
o Particle system, for custom effects, explosions, blood, decals!
|
||||
Ripped from FTE.
|
||||
Supports both FTE-style particles as well as DP-style ones.
|
||||
Docs for each style are elsewhere.
|
||||
|
||||
o Supports .png textures. Not just for saving screenshots!
|
||||
|
||||
o set and seta console commands. No more crappy configs.
|
||||
|
||||
o Custom binds can be added to the binds menu.
|
||||
Because noone reads readmes.
|
||||
... I seriously don't know why I'm bothering to write this.
|
||||
|
||||
o Late precaches. Because why not.
|
||||
|
||||
o Increased runaway limit, so that people may flee in terror.
|
||||
|
||||
o Player limit raised to 255. In case I ever get any friends.
|
||||
|
||||
o Lots of QC extensions.
|
||||
Not as many as FTE of course...
|
||||
Use pr_dumpplatform to see the new builtins/toys.
|
||||
If you're called Scrooge, you can block these from mods by setting
|
||||
pr_checkextension 0.
|
||||
|
||||
o Runs a range of new mods that will just fail in regular QS.
|
||||
|
||||
----------------------
|
||||
3.3. Mapping features
|
||||
|
||||
o Raised limits:
|
||||
Static Entities (limit removed)
|
||||
Static Sounds (limit destroyed)
|
||||
Baseline Limits (limit annihilated)
|
||||
Visible Entities (limit nuked from orbit)
|
||||
Lightmap Data (limit obliterated)
|
||||
Max Lightstyles (now 255 - bsp2 format limit).
|
||||
|
||||
o BSPX support.
|
||||
Lits can be embedded now, for fewer files to distribute.
|
||||
|
||||
o Lightmap scaling, for higher res lightmaps (or possibly lower).
|
||||
Requires tyrutils-ericw to use (_lmscale field).
|
||||
|
||||
o Autodetects watervis on a per-surface-type basis.
|
||||
Opaque lava and transparent water works fine.
|
||||
|
||||
o Doesn't bug out from tyrutils-ericw's -notex argument, which
|
||||
can help with certain copyright issues by not distributing textures.
|
||||
|
||||
o Doesn't crash from qbsp run with the -noclip argument.
|
||||
|
||||
o Understands the hexen2 bsp format, but don't expect it to work
|
||||
without rampant palette issues.
|
||||
(Use replacement textures. Also requires mod support.)
|
||||
|
||||
o Particle system, for rain or random custom effects!
|
||||
Emit from textures, or see below.
|
||||
|
||||
o Special fields that can be used on any entity without QC changes:
|
||||
"emiteffect" field - to specify a constantly emitting effect.
|
||||
"traileffect" field - for particles any time the entity moves.
|
||||
|
||||
--------
|
||||
4. Todo
|
||||
|
||||
o opus voip encoder library
|
||||
|
||||
o properish dev kit, with proper docs (ahahaha!).
|
||||
|
||||
o IQM, maybe, some time (mdl sucks).
|
||||
|
||||
o remove hull size limitation.
|
||||
|
||||
o maybe menuqc. otherwise known as cvar hell, so mods can avoid quake's clunky nightmare.
|
||||
|
||||
o maybe basic csqc. primarily for huds.
|
Loading…
Reference in a new issue