revenantx / liteentitysystem Goto Github PK
View Code? Open in Web Editor NEWPure C# HighLevel API for multiplayer games
License: Apache License 2.0
Pure C# HighLevel API for multiplayer games
License: Apache License 2.0
Right now, this library doesn't seem to have a good support for matchmaking, because the server allocates memory beforehand for each one of the maximum player number, which restricts this very same maximum number, right now at 255. Also, each match being hosted on their own server means that each match allocates one UDP port. Because of those reasons, although It is possible to host a matchmaking server, they tend to scale poorly.
I think it would be a good idea to implement a real support for matchmaking. Much of the server load can be lifted considering that the matchmaking only needs one entity per player, always of the same type. And, of course, everything have to be not pre-allocated. And more scaling-oriented implementations could be considered.
Another feature that would probably be a rewarding effort is to allow the matchmaking server to act as a relay, so only one UDP port gets allocated and players are restricted to their matches more easily.
Hi, does this project have any NuGet packages? I can't seem to find any, and directly including the source creates clutter.
Thanks.
ClientEntityManager#Deserialize(byte*, int)
calls ConstructAndSync(true)
only after constructing every pending entity, which is a problem when my entity constructor calls GetEntities<T>
looking for a previously constructed entity during the same client tick. Would it be possible to sync every time after constructing each entity? I cannot postpone entity search because it's a dependency for Sync vars, which should be readonly! Am I using a bad practice here? Am I suppose to achieve the behavior I want in a different way?
Hello! I'm having mostly a good time integrating with your library, thank you for making it available!
But now I'm having problems with it :(
I have a game client that runs fine on Windows. Now I'm trying to run on Android and I'm having trouble with RefMagic. Do you have it documented anywhere, by the way?
First of all, Utils.IsMono
doesn't seem to be enough for the conditional RefFieldValue
call. Check if what I'm doing makes sense:
public static readonly bool IsMono = Type.GetType("Mono.Runtime") != null
|| RuntimeInformation.OSDescription.Contains("android");
After that, I'm getting the following error:
[libc] Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x40 in tid 23914 (.Client.Android), pid 23914 (.Client.Android)
Does this look like anything to you? I debugged it and it's not the first call that fails, but one of the first ten. I tried to move only this specific crashing call from RefFieldValueMono
to RefFieldValueDotNet
(probably insane) and got "arith type mismatch" (as expected). I also tried adding IntPtr.Size
to the offset for this specific crashing call only, which passes the breaking point, but the returned reference is null, so it crashes somewhere else at call-site.
By the way, I'm running the last version of MonoGame on .NET 7 and x64 everywhere, but I've also tried every architecture I could and the repro seems the same. I'm using an Android emulator.
Thanks!
First of all, this looks great! :)
Im currently using your LiteNetLib in a c# gameserver and implemented the rest of the logic by myself.
E.g. Once an entity moved, its written to the NetManager using .SendNetSerializable<T>(...)
and similar calls.
Sending the stuff is happening once during the frame.
This is already working fine, however this add on looks very promising.
I wonder how those two compare. E.g. are there any performance benefits from using LiteEntitySystem?
Or does LiteEntitySystem allocate garbage or is even slower/faster in particular situations? ^^
When does it make sense to switch? And how long will you support this, what are the plans for the future?
Hello,
Firstly thanks for your effort to develop this project. Could you change it to transport-agnostic architecture?
For example, you added LiteNetLib as default transport (I know it's tightly coupled now). If you can change this to a changeable transport structure. We as community can add all other transport systems like SteamNetwork, self-hosted relay, enet etc.
Regards
This will be quite an effort, because I already tried before and know that it wasn't easy, but it would bring more null safety to both the development of the library as the development of the consumers games.
Add AOT support
использовал chat gpt чтобы узнать о создании сервера для archeage. оно мне предложило репозиторий archecore. но этот репозиторий уже удален. благо ии имеет доступ к старым данным и я попросил его названить ники людей, которые вносили вклад в разработку. оно выдало твой ник. если это действетельно ты - напиши свой эмайл.
если у тебя просто такой же ник - прости за неудобства
Implement support for automated host migration(if the host player disconnects, another client will take over server role)
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.