vcpkg manigest:
- Add vcpkg-cmake as dependency of this project
- Don't support bcrypt as vcpkg feature. Nobody using vcpkg wants bcrypt,
so this is just a trap.
Local/test overlay port:
- Fix how we are setting SOURCE_PATH
- Add symlink to out vcpkg.json manifest, since a port needs one
Chat example built using vcpkg:
- Add GNS_LINK_STATIC option to vcpkg_example_chat project so I can test
an app linking against static or dynamic lib.
Replace a bunch of non-standard defines with standard ones
Don't #define POSIX in public header or test for it. Fixes#228.
(We shoulkd probably also make this change to Steamworks headers.)
Use IsLinux(), IsPosix(), etc instead of #ifdef LINUX or #ifdef POSIX
Moved some platform socket stuff out of steamnetworkingsockets_platform.h
and into platform_sockets.h. (none of this is actually particular to
steamnetworkingsockets.)
Some platforms don't have IPv6 support.
ENABLE_ICE means "enable any ICE support, including the native client"
and is on by default. (Because the native client is not much code.)
Try to build the trivial_signling_server if we are building either
examples or tests, and ENABLE_ICE is set. The P2P test needs it.
Moved instructions for building windows manually to a separate file
and marked that method as not supported.
- Deleted the vcpkg CONTROL file, upgrade to a modern vcpkg.json manifest.
- Added tests and examples as vcpkg "features".
- Make sure we obey static/shared from the vcpkg triplet (I believe this
addresses #175)
- Split out the detailed instructions for how to build Windows dependencies
manually to a separate document, so we don't clutter up the main doc.
Also:
- Examples will always link with shared lib
- Tests always link with the static lib
I'm doing my best here to obey vcpkg (and cmake in general) best
practices / conventions, but this is not really something I have
expertise in, and the documentation on all this is realy not good,
so feel free to make suggestions if you see something that could be
done better.
Possible future improvements (HELP WANTED):
- Don't select the crypto with a feature, that is explicitly listed
in the vcpkg docs as an anti-pattern.
- Add a feature for the cert tool.
- Add more CI actions to build more platforms to make sure they
are all working.
Removed the word "custom" from the namesofinterfacesthatwerealreadyverylong.
Added k_ESteamNetworkingConfig_Callback_CreateConnectionSignaling, which is
a mechanism for connections that require signaling to be iniated locally.
This is used by ISteamnetwrokingSockets::ConnectP2P and connections created
using the ISteamNetworkingMessages interface....which has been added.
These changes address issue #137 and bring the opensource code more in
line with Steamworks version.
Delete the define STEAMNETWORKINGSOCKETS_HAS_DEFAULT_P2P_SIGNALING. "Default
signaling" is a thing that can exist on any platform, and can only be determined
at runtime. Most places that were using this actually should have been
checking STEAMNETWORKINGSOCKETS_ENABLE_STEAMNETWORKINGMESSAGES anyway, and
those two defines were equivalent in practice.
STEAMNETWORKINGSOCKETS_ENABLE_STEAMNETWORKINGMESSAGES will be defined by default.
I could add a mechanism to disable it if anybody is relaly concerned about
code size.
(Also started some refactoring of the P2P listen sockets, to merge them
with hosted dedicated server listen sockets. The goal is to enable a
way to connected to hosted dedicated servers without tickets. That is a work
in progress, and also not relevant to the opensource code.)
* Fixed installation with WebRTC is enabled
* Added vcpkg feature option for webrtc
* Try to detect abseil before using our own submodule copy (means we can use the one from vcpkg)
* Fixed standalone example build
* Shaved down abseil dependencies and use properly namespaced names
I don't want to learn or maintain two build systems. cmake is the javascript
of cross-platform build systems: Yes, it's weird and old and crusty and you
can point out all sorts of problems with it. But it's also what the
community is consolidating on.
WIP. This compiles but hasn't been tested yet. Working on a test case
that exercises it.
Also I'm still not sure I like the way the interfaces are organized. It's
slightly more complicated than necessary, to handle what is probably a
relatively rare use case. Maybe the only use case I care about is "Here
is the one and only signaling service to use" and I could essentially
combine ISteamNetworkingCustomSignalingRecvContext and
ISteamNetworkingCustomSignalingService. You could replace the default
platform service, but not mix and match.
Or maybe the only thing that is needed is some comments clarifying
the relationship between ISteamNetworkingCustomSignalingRecvContext
and ISteamNetworkingCustomSignalingService. In both cases, the primary
purpose is to create a signaling session for a specific connection. But
one is for remotely initiated connections (a signal that respresents a
connect request coming in) and the other is for locally-initated
requests that do not go through ConnectP2PCustomSignaling.
It has a really dumb client protocol, no authentication, etc. But
it should be sufficient to illustrate how a plugin for a real signaling
service (maybe XMPP or DERP) could be written.
Now you can register standard function pointers, instead of deriving
from a special class. This means that Steam and the opensource code
can now work the same, so this fixed issue #124
This is used to poll many connections in a single function call. Previously,
this was only possible if all of the connections were those accepted on the
same listen socket. (ReceiveMessagesOnListenSocket). But this left out at
least two important use cases with known users:
- If you create more than one listen socket (because there is more way to
contact your service, e.g. once for P2P and another for direct IP, and
another for relayed connections), then you could not poll all of the
connections efficiently.
- In P2P use cases, we may initiate many connections to peers, and we want
to poll all of them at once.
This change is relevant to: Issue #49, Issue #50, and issue #52. (But I don't
this it really "fixes" any of them.)
Also:
- STEAMNETWORKINGSOCKETS_STEAM now mens "running on steam", not "running using
the steam client". STEAMNETWORKINGSOCKETS_STEAMCLIENT is for that.
- Refactored stats stuff, moved it into the namespace. At one point I thought
I might expose some stuff in a public interface. For now, keeping it internal.
- Removed concept of Steam "universe" from this branch of the code.
- Don't use OVERRIDE, override works.