forked from bachingo/TF2Vintage
-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
119 changed files
with
58,557 additions
and
2 deletions.
There are no files selected for viewing
379 changes: 378 additions & 1 deletion
379
game/tf2vintage/license/TF2V/tf2v-server-thirdpartylegalnotices.txt
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
--- | ||
name: Bug Report | ||
about: Found Issue | ||
title: "[BUG] ants?" | ||
labels: bug | ||
assignees: '' | ||
|
||
--- | ||
|
||
**Describe the bug** | ||
A clear and concise description of what the bug is. | ||
|
||
**To Reproduce** | ||
Steps to reproduce the behavior: | ||
|
||
|
||
**Expected behavior** | ||
A clear and concise description of what you expected to happen. | ||
|
||
**Screenshots** | ||
If applicable, add screenshots to help explain your problem. | ||
|
||
**Info** | ||
- OS: | ||
- Played Mod: | ||
- Coplay Version: | ||
|
||
**Additional context** | ||
Add any other context about the problem here. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
--- | ||
name: Feature request | ||
about: Suggest an idea for this project | ||
title: "[FEATURE] add ..." | ||
labels: '' | ||
assignees: '' | ||
|
||
--- | ||
|
||
**Is your feature request related to a problem? Please describe.** | ||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] | ||
|
||
**Describe the solution you'd like** | ||
A clear and concise description of what you want to happen. | ||
|
||
**Describe alternatives you've considered** | ||
A clear and concise description of any alternative solutions or features you've considered. | ||
|
||
**Additional context** | ||
Add any other context or screenshots about the feature request here. |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,111 @@ | ||
<p align="center"> <img width="500" src="https://coaxion.games/res/coplayLogo.svg"/> </p> | ||
|
||
Logo made by FLARE145. | ||
|
||
# Coplay | ||
A MPL2 licensed Source Engine Multiplayer SDK addon that enables the use of the Steam Datagram Relay for P2P connections with support for Linux and Windows. | ||
|
||
If your mod implements Coplay please redirrect issue reports related to it [here](https://github.com/CoaXioN-Games/coplay/issues/new/choose). | ||
|
||
## Usage | ||
Mods implementing Coplay can make their own UI if they want to but there are commands and cvars that come standard. | ||
|
||
| Command | Description | Usage | | ||
| :-----: | :---------: | :---: | | ||
| `coplay_about` | Reddirects to this Github page and prints the current version | `coplay_about` | | ||
| `coplay_connect` | Connect to a server with a Ipv4 address, User SteamID64 or Lobby SteamID64 * | `coplay_connect (IP or SteamID64)` | | ||
| `coplay_getconnectcommand` | Prints a command for others to use to connect to your server | `coplay_getconnectcommand` | | ||
| `coplay_opensocket` | Allows your game to be joined via Coplay, this is automatically called on server creation if coplay_joinfilter is above -1 | `coplay_opensocket` | | ||
| `coplay_closesocket` | Disables your game from being joined via Coplay, this will also kick currently connected players | `coplay_closesocket` | | ||
| `coplay_listlobbies`* | List joinable lobbies | `coplay_listlobbies` | | ||
| `coplay_invite`* | Brings up the game invite dialog if you're in a game | `coplay_invite` | | ||
|
||
|
||
| Cvar | Description | Default value | | ||
| :--: | :---------: | :-----------: | | ||
| `coplay_joinfilter` | Sets who is allowed to join the game. -1: Off, 0: Invite Only, 1: Friends only, 2: Anyone(Lobby advertised if available*) | 1 | | ||
| `coplay_timeoutduration` | How long in seconds to keep a connection around that has no game activity | 5 | | ||
| `coplay_portrange_begin` ** | Where to start looking for ports to bind on | 3600 | | ||
| `coplay_portrange_end` ** | Where to stop looking for ports to bind on | 3700 | | ||
| `coplay_connectionthread_hz` | Number of times to service connections per second, it's unlikely you'll need to change this | 300 | | ||
| `coplay_forceloopback` | Uses the loopback interface instead of others, only change this if you have issues | 1 | | ||
|
||
\* : Requires Steam Lobbies, Lobbies are only available for mods with an appid on Steam. | ||
\** : Only change this if issues arise, a range of at least 64 is recommended. | ||
|
||
# Adding to your mod | ||
|
||
## Prerequistes | ||
|
||
### Updating the Steamworks SDK | ||
A more updated Steamworks SDK than the one that comes with the Source SDK is required to use Coplay, If you haven't already updated your mod's version you can find the latest download that works with [here](https://partner.steamgames.com/downloads/steamworks_sdk_160.zip). | ||
|
||
If your mod still has references to `CSteamAPIContext`/`g_SteamAPIContext`/`steamapicontext` either replace them with the new global accessor equivelent (something like `steamapicontext->SteamFriends()->...` turns to `SteamFriends()->...`) or use the last version of the Steamworks SDK that still provides it, 159, found [here](https://partner.steamgames.com/downloads/steamworks_sdk_159.zip). | ||
|
||
Steamworks versions above 157 do not apear to work with the Source SDK by default, if neither of the above versions work for you the download for version 157 is [here](https://partner.steamgames.com/downloads/steamworks_sdk_157.zip). When a fix is confirmed to work this README will include it. | ||
|
||
1. Delete the `public/steam` folder of your mod's source tree and replace it with `public/steam` folder inside the downloaded zip, you're safe to delete the contained `lib` folder if you want. | ||
|
||
2. Replace the steam_api.lib and libsteam_api.so files found in `lib/public` and `lib/public/linux32` with the ones in the zip under the folder `redistributable_bin`. Make sure to copy the 32 bit versions. | ||
|
||
3. Rerun your VPC script and build. | ||
|
||
|
||
### Fix host_thread_mode | ||
Coplay enables this convar on start. Due to an engine bug, locally hosted servers will sometimes run faster than intended. host_thread_mode 2 fixes this but causes inputs by the host player to be discarded because of a desync. | ||
This can be side-stepped by changing this statement in player.cpp CBasePlayer::IsUserCmdDataValid() from | ||
``` | ||
bool bValid = ( pCmd->tick_count >= nMinDelta && pCmd->tick_count < nMaxDelta ) && | ||
// Prevent clients from sending invalid view angles to try to get leaf server code to crash | ||
( pCmd->viewangles.IsValid() && IsEntityQAngleReasonable( pCmd->viewangles ) ) && | ||
// Movement ranges | ||
( IsFinite( pCmd->forwardmove ) && IsEntityCoordinateReasonable( pCmd->forwardmove ) ) && | ||
( IsFinite( pCmd->sidemove ) && IsEntityCoordinateReasonable( pCmd->sidemove ) ) && | ||
( IsFinite( pCmd->upmove ) && IsEntityCoordinateReasonable( pCmd->upmove ) ); | ||
``` | ||
to | ||
``` | ||
// when using host_thread_mode 1 or 2 on a listen server the client and server tickcount get desynced resulting in none of the hosts usermsgs getting accepted | ||
// this first || fixes that and doesnt seem to do anything else as far as i can tell; Tholp | ||
bool bValid = ((!engine->IsDedicatedServer() && entindex() == 1) || ( pCmd->tick_count >= nMinDelta && pCmd->tick_count < nMaxDelta )) && | ||
// Prevent clients from sending invalid view angles to try to get leaf server code to crash | ||
( pCmd->viewangles.IsValid() && IsEntityQAngleReasonable( pCmd->viewangles ) ) && | ||
// Movement ranges | ||
( IsFinite( pCmd->forwardmove ) && IsEntityCoordinateReasonable( pCmd->forwardmove ) ) && | ||
( IsFinite( pCmd->sidemove ) && IsEntityCoordinateReasonable( pCmd->sidemove ) ) && | ||
( IsFinite( pCmd->upmove ) && IsEntityCoordinateReasonable( pCmd->upmove ) ); | ||
``` | ||
|
||
## Adding Coplay | ||
|
||
1. First Either clone Coplay as a git submodule, or download it as a zip then place it into the root of your mod's source( Where folders such as `devtools`, `game` and `public` are. ) | ||
|
||
2. Open your mod's client .vpc file, and add the line | ||
`$Include "$SRCDIR\coplay\src\coplay.vpc"` | ||
to it somewhere at the top, if your mod has an appid on Steam you'll probably want to append `COPLAY_USE_LOBBIES` to your `$PreprocessorDefinitions`( Don't add this preprocessor if your mod does not have an appid, otherwise Coplay will be effectively nonfunctional ). | ||
|
||
3. Rerun your VPC script and build. | ||
|
||
4. If you have linker issues when building on Linux delete the libSDL2.so found in your mod's `src/lib/public/linux32` folder and retry. | ||
|
||
5. Add the SDL2_net.dll and libSDL2_net.so (if your mod supports Linux) found in coplay/lib to you mod's /bin folder. | ||
|
||
# FAQ | ||
|
||
## How? | ||
Coplay is a network relay that maps ports on your local machine to Steam datagram connections, this allows it to not require modifing engine code. | ||
|
||
## Whats the difference if Steam's Lobby system is available? | ||
Lobbies allow user hosted games to be advertised and joined akin to the server browser. | ||
|
||
## Does custom content work? | ||
Yes, as normal. | ||
|
||
## My mod wont launch anymore! "Can't load library client" | ||
Reading the instructions is recomended. | ||
|
||
## I Can't move in my own local server! | ||
Reading the instructions is recomended. | ||
|
||
## Whats your favorite color? | ||
Green, thanks for asking. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,233 @@ | ||
/* | ||
Simple DirectMedia Layer | ||
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org> | ||
This software is provided 'as-is', without any express or implied | ||
warranty. In no event will the authors be held liable for any damages | ||
arising from the use of this software. | ||
Permission is granted to anyone to use this software for any purpose, | ||
including commercial applications, and to alter it and redistribute it | ||
freely, subject to the following restrictions: | ||
1. The origin of this software must not be misrepresented; you must not | ||
claim that you wrote the original software. If you use this software | ||
in a product, an acknowledgment in the product documentation would be | ||
appreciated but is not required. | ||
2. Altered source versions must be plainly marked as such, and must not be | ||
misrepresented as being the original software. | ||
3. This notice may not be removed or altered from any source distribution. | ||
*/ | ||
|
||
/** | ||
* \file SDL.h | ||
* | ||
* Main include header for the SDL library | ||
*/ | ||
|
||
|
||
#ifndef SDL_h_ | ||
#define SDL_h_ | ||
|
||
#include "SDL_main.h" | ||
#include "SDL_stdinc.h" | ||
#include "SDL_assert.h" | ||
#include "SDL_atomic.h" | ||
#include "SDL_audio.h" | ||
#include "SDL_clipboard.h" | ||
#include "SDL_cpuinfo.h" | ||
#include "SDL_endian.h" | ||
#include "SDL_error.h" | ||
#include "SDL_events.h" | ||
#include "SDL_filesystem.h" | ||
#include "SDL_gamecontroller.h" | ||
#include "SDL_guid.h" | ||
#include "SDL_haptic.h" | ||
#include "SDL_hidapi.h" | ||
#include "SDL_hints.h" | ||
#include "SDL_joystick.h" | ||
#include "SDL_loadso.h" | ||
#include "SDL_log.h" | ||
#include "SDL_messagebox.h" | ||
#include "SDL_metal.h" | ||
#include "SDL_mutex.h" | ||
#include "SDL_power.h" | ||
#include "SDL_render.h" | ||
#include "SDL_rwops.h" | ||
#include "SDL_sensor.h" | ||
#include "SDL_shape.h" | ||
#include "SDL_system.h" | ||
#include "SDL_thread.h" | ||
#include "SDL_timer.h" | ||
#include "SDL_version.h" | ||
#include "SDL_video.h" | ||
#include "SDL_locale.h" | ||
#include "SDL_misc.h" | ||
|
||
#include "begin_code.h" | ||
/* Set up for C function definitions, even when using C++ */ | ||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
/* As of version 0.5, SDL is loaded dynamically into the application */ | ||
|
||
/** | ||
* \name SDL_INIT_* | ||
* | ||
* These are the flags which may be passed to SDL_Init(). You should | ||
* specify the subsystems which you will be using in your application. | ||
*/ | ||
/* @{ */ | ||
#define SDL_INIT_TIMER 0x00000001u | ||
#define SDL_INIT_AUDIO 0x00000010u | ||
#define SDL_INIT_VIDEO 0x00000020u /**< SDL_INIT_VIDEO implies SDL_INIT_EVENTS */ | ||
#define SDL_INIT_JOYSTICK 0x00000200u /**< SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS */ | ||
#define SDL_INIT_HAPTIC 0x00001000u | ||
#define SDL_INIT_GAMECONTROLLER 0x00002000u /**< SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */ | ||
#define SDL_INIT_EVENTS 0x00004000u | ||
#define SDL_INIT_SENSOR 0x00008000u | ||
#define SDL_INIT_NOPARACHUTE 0x00100000u /**< compatibility; this flag is ignored. */ | ||
#define SDL_INIT_EVERYTHING ( \ | ||
SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | \ | ||
SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER | SDL_INIT_SENSOR \ | ||
) | ||
/* @} */ | ||
|
||
/** | ||
* Initialize the SDL library. | ||
* | ||
* SDL_Init() simply forwards to calling SDL_InitSubSystem(). Therefore, the | ||
* two may be used interchangeably. Though for readability of your code | ||
* SDL_InitSubSystem() might be preferred. | ||
* | ||
* The file I/O (for example: SDL_RWFromFile) and threading (SDL_CreateThread) | ||
* subsystems are initialized by default. Message boxes | ||
* (SDL_ShowSimpleMessageBox) also attempt to work without initializing the | ||
* video subsystem, in hopes of being useful in showing an error dialog when | ||
* SDL_Init fails. You must specifically initialize other subsystems if you | ||
* use them in your application. | ||
* | ||
* Logging (such as SDL_Log) works without initialization, too. | ||
* | ||
* `flags` may be any of the following OR'd together: | ||
* | ||
* - `SDL_INIT_TIMER`: timer subsystem | ||
* - `SDL_INIT_AUDIO`: audio subsystem | ||
* - `SDL_INIT_VIDEO`: video subsystem; automatically initializes the events | ||
* subsystem | ||
* - `SDL_INIT_JOYSTICK`: joystick subsystem; automatically initializes the | ||
* events subsystem | ||
* - `SDL_INIT_HAPTIC`: haptic (force feedback) subsystem | ||
* - `SDL_INIT_GAMECONTROLLER`: controller subsystem; automatically | ||
* initializes the joystick subsystem | ||
* - `SDL_INIT_EVENTS`: events subsystem | ||
* - `SDL_INIT_EVERYTHING`: all of the above subsystems | ||
* - `SDL_INIT_NOPARACHUTE`: compatibility; this flag is ignored | ||
* | ||
* Subsystem initialization is ref-counted, you must call SDL_QuitSubSystem() | ||
* for each SDL_InitSubSystem() to correctly shutdown a subsystem manually (or | ||
* call SDL_Quit() to force shutdown). If a subsystem is already loaded then | ||
* this call will increase the ref-count and return. | ||
* | ||
* \param flags subsystem initialization flags | ||
* \returns 0 on success or a negative error code on failure; call | ||
* SDL_GetError() for more information. | ||
* | ||
* \since This function is available since SDL 2.0.0. | ||
* | ||
* \sa SDL_InitSubSystem | ||
* \sa SDL_Quit | ||
* \sa SDL_SetMainReady | ||
* \sa SDL_WasInit | ||
*/ | ||
extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags); | ||
|
||
/** | ||
* Compatibility function to initialize the SDL library. | ||
* | ||
* In SDL2, this function and SDL_Init() are interchangeable. | ||
* | ||
* \param flags any of the flags used by SDL_Init(); see SDL_Init for details. | ||
* \returns 0 on success or a negative error code on failure; call | ||
* SDL_GetError() for more information. | ||
* | ||
* \since This function is available since SDL 2.0.0. | ||
* | ||
* \sa SDL_Init | ||
* \sa SDL_Quit | ||
* \sa SDL_QuitSubSystem | ||
*/ | ||
extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags); | ||
|
||
/** | ||
* Shut down specific SDL subsystems. | ||
* | ||
* If you start a subsystem using a call to that subsystem's init function | ||
* (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(), | ||
* SDL_QuitSubSystem() and SDL_WasInit() will not work. You will need to use | ||
* that subsystem's quit function (SDL_VideoQuit()) directly instead. But | ||
* generally, you should not be using those functions directly anyhow; use | ||
* SDL_Init() instead. | ||
* | ||
* You still need to call SDL_Quit() even if you close all open subsystems | ||
* with SDL_QuitSubSystem(). | ||
* | ||
* \param flags any of the flags used by SDL_Init(); see SDL_Init for details. | ||
* | ||
* \since This function is available since SDL 2.0.0. | ||
* | ||
* \sa SDL_InitSubSystem | ||
* \sa SDL_Quit | ||
*/ | ||
extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags); | ||
|
||
/** | ||
* Get a mask of the specified subsystems which are currently initialized. | ||
* | ||
* \param flags any of the flags used by SDL_Init(); see SDL_Init for details. | ||
* \returns a mask of all initialized subsystems if `flags` is 0, otherwise it | ||
* returns the initialization status of the specified subsystems. | ||
* | ||
* The return value does not include SDL_INIT_NOPARACHUTE. | ||
* | ||
* \since This function is available since SDL 2.0.0. | ||
* | ||
* \sa SDL_Init | ||
* \sa SDL_InitSubSystem | ||
*/ | ||
extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags); | ||
|
||
/** | ||
* Clean up all initialized subsystems. | ||
* | ||
* You should call this function even if you have already shutdown each | ||
* initialized subsystem with SDL_QuitSubSystem(). It is safe to call this | ||
* function even in the case of errors in initialization. | ||
* | ||
* If you start a subsystem using a call to that subsystem's init function | ||
* (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(), | ||
* then you must use that subsystem's quit function (SDL_VideoQuit()) to shut | ||
* it down before calling SDL_Quit(). But generally, you should not be using | ||
* those functions directly anyhow; use SDL_Init() instead. | ||
* | ||
* You can use this function with atexit() to ensure that it is run when your | ||
* application is shutdown, but it is not wise to do this from a library or | ||
* other dynamically loaded code. | ||
* | ||
* \since This function is available since SDL 2.0.0. | ||
* | ||
* \sa SDL_Init | ||
* \sa SDL_QuitSubSystem | ||
*/ | ||
extern DECLSPEC void SDLCALL SDL_Quit(void); | ||
|
||
/* Ends C function definitions when using C++ */ | ||
#ifdef __cplusplus | ||
} | ||
#endif | ||
#include "close_code.h" | ||
|
||
#endif /* SDL_h_ */ | ||
|
||
/* vi: set ts=4 sw=4 expandtab: */ |
Oops, something went wrong.