tduniverse / cyberverse Goto Github PK
View Code? Open in Web Editor NEWThe Cyberpunk 2077 Multiplayer Framework
Home Page: https://discord.tduniverse.org
License: MIT License
The Cyberpunk 2077 Multiplayer Framework
Home Page: https://discord.tduniverse.org
License: MIT License
Currently, the game requires CLI arguments to connect to a specific server, but it may be a more immersive experience, if we had the server browser built into the game (on the main menu) instead of having an external launcher.
https://github.com/jpribyl/action-docker-layer-caching seems to be the proposed fork for it.
The native log statement that comes when spawning a server isn't present up until you close the container in WSL.
Maybe it's some missing stderr/stdout stream, maybe something else, too.
Currently we're using random NPCs to replicate other players, because it's probably more difficult to use Vs (as they may have body properties that need to be set, were never meant to be animated in third person) and as some people/servers certainly also like appearing as existing NPCs
Let's find out what is required to get some basic Vs to render.
Currently, we have no useful way of authentication. There is a packet, but it only sends the windows username.
To be of use, we need a (preferrably passwordless) approach that also leads to stable user identifiers.
My idea was to have a central hosted oidc compliant IdP (preferrably doing identity brokering with the major game stores).
Then, after logging in on the website, the JWTs (maybe the auth token, but especially the ID token) are used towards the individual user-hosted game servers. The tokens are signed, so the server can trust them, but is probably capable of using the auth token to query more information from an API endpoint (e.g. on which servers the user has been banned).
The only remaining question is how this interfers with #7 . It's much easier when we use an oidc flow from a desktop application than it probably is to cram into the red4ext DLL.
*: The client should first accept the damage and only roll it back on demand, as this is a relatively rare use case. It's only about how other NPCs health appears to you as a player and about self-inflicted damage (e.g. fall damage).
Also: As hinted above with "default configuration", there will be server plugins that may influence how damage is calculated (maybe with a scalar factor, but more common will be preventing damage). Maybe we can also add a "immune" flag to handle the godmode use-cases relatively well.
Basically, the created entity should have a component (and the related PS), so for instance when entering a car that has already been spawned by another player, we can tell the server that we wanted to enter exactly that car (by looking up if the entity we mount has a network id), otherwise we need to ad-hoc spawn a car and enter that.
yeah imo component is the cleanest solution
technically you can register persistent state without having an actual component
look at what I do in DynamicEntitySystem, you'll just need composite PersistentID with entity id and unique component name
There is a lot of locomotion / state machine that we need to synchronize / derive from NPC states. It may not be worth it to try to synchronize them perfectly (e.g. the keyframe inside the walk animation that we are currently), but we should at least start and stop animations accordingly.
This can be done as simple as: When the NPC moves forward, play the walking animation. That way, we can derive it without requiring actual packets.
For things such as swimming and ladders, additional packets may be required. Jumping is already stubbed via the PlayerActionTracker, just implemented falsely, as it listens to key-presses instead of the actual jumping.
ref<WeaponObject>
at hand anyway?And commit the results so tweakdbstr.txt is not required to build the code. It may be done whenever there's adjustments to the tweakdbstr or like only once.
What counts is that we have something like:
namespace Cyberverse.Server.TweakDb.Generated;
public enum Character {
Judy,
Panam
}
Maybe we'd also want actual class members instead of an enum, so we can directly grab the string "Character.Panam"
or their uint
crc32 hash from them.
Currently, when pressing space on the intro video, we will load the last used savegame, but it would be more useful to not need that manual interaction.
For development purposes, it may even be nice to skip all the banners before the intro video even is a thing.
Currently, only the actual "recordId" is synced, so the tweakDB entry representing the entity itself, but not the appearance (cab, jackies bike, ...)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.