vrekt / lunargdx Goto Github PK
View Code? Open in Web Editor NEWA networking library for LibGDX utilizing Netty allowing easy creation of multiplayer games.
License: MIT License
A networking library for LibGDX utilizing Netty allowing easy creation of multiplayer games.
License: MIT License
Work on updating the wiki information.
This network infrastructure reminds me of RuneScape private server designs. I would suggest the ISAAC Cipher for packet security if that's something you're interested in. I also remember RuneScape used RSA for username and password encryption as well, so another thing to look at. Not really an issue, but a suggestion.
In the basic example sometimes a ghost player can be seen.
Could be:
Implement a new networking model with GameStates full of inputs processed in a single update/tick period.
My brain is broken so I always have the urge to redo a project that is perfectly fine. Regardless, I want this project to be less confusing.
The wiki is pretty good but...
The protocol needs to change and authentication. It's very dirty and not practical at all. You can customize all that but it just seems like alot.
Worlds need to change I think. The way entities and players are handled with the spawning system doesn't allow easy switching between worlds and instances.
Entities are very fleshed out but its still missing some things with context switching.
The way worlds and interiors work is just its hard to implement and manage, I need something different. I think the system with being able to implement your own extended entities is good but sometimes it doesn't always work and causes casting errors.
The server needs a heavy rewrite, it was never a focus point and it should have been. It works but its very barebones.
Please update the LiquidFun library for LibGDX. Because there is an old version of Box2d and there are errors with the joints :libgdx: ๐ :lustlogic:
The wiki has alot of content and can be overwhelming. Include quick start guides and quick code snippets + Q&A
This issue will track progress with switching over to Ashley.
Instances
within Lunar describes an interior that is networked. For example rooms, interiors, dungeons, etc. They exist within a world.
As such a few issues come up:
worldFrom
should it still be loaded and receiving/updating data?
LunarWorld
but a very barebones implementation to prevent too many resources being used from a simple interior.LunarWorldSkeleton
.
world
and entity/player lists.worldFrom
should probably stop updating itself while in interior, implement some kind of lock/pause state for that.
Oct 06, 2021 11:17:01 PM io.netty.util.ResourceLeakDetector reportTracedLeak
SEVERE: LEAK: ByteBuf.release() was not called before it's garbage-collected. See https://netty.io/wiki/reference-counted-objects.html for more information.
Recent access records:
Created at:
io.netty.buffer.PooledByteBufAllocator.newDirectBuffer(PooledByteBufAllocator.java:363)
io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:187)
io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:178)
io.netty.buffer.AbstractByteBufAllocator.ioBuffer(AbstractByteBufAllocator.java:131)
gdx.lunar.protocol.packet.Packet.<init>(Packet.java:19)
gdx.lunar.protocol.packet.server.SPacketPlayerVelocity.<init>(SPacketPlayerVelocity.java:43)
gdx.lunar.server.world.World.handlePlayerVelocity(World.java:176)
gdx.lunar.server.network.PlayerConnection.handlePlayerVelocity(PlayerConnection.java:69)
gdx.lunar.protocol.packet.client.CPacketVelocity.handle(CPacketVelocity.java:26)
gdx.lunar.protocol.LunarProtocol.lambda$initializeClient$15(LunarProtocol.java:124)
gdx.lunar.protocol.LunarProtocol.handleClientPacket(LunarProtocol.java:198)
gdx.lunar.server.netty.codec.ClientProtocolPacketDecoder.decode(ClientProtocolPacketDecoder.java:36)
io.netty.handler.codec.LengthFieldBasedFrameDecoder.decode(LengthFieldBasedFrameDecoder.java:332)
io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:498)
io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:437)
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1486)
io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1235)
io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1282)
io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:498)
io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:437)
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714)
io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650)
io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576)
io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
java.lang.Thread.run(Thread.java:748)
Worlds need to be disposed of when switching from world to world or lobby to word/vice versa.
Start working on implementing networked tiles/textures, objects and maps.
Ideally, have a general Tile that has a String texture location and position to spawn locally.
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.