Originally shared by Benjamin “BeRo” Rosseaux

Originally shared by Benjamin “BeRo” Rosseaux

I did it again :)

https://github.com/BeRo1985/rnl

RNL - Realtime Network Library - The opensource reliable UDP network library for real-time games

RNL is an UDP-based network library for real-time applications and games, inspired by ENet, yojimbo, libgren, and so on.

https://github.com/BeRo1985/rnl

Comments

  1. Reliable and UDP in the same sentence!

    ReplyDelete
  2. First error compilation demo Delphi berlin
    GetTickCount64 line 5638 on RNL.PAS cannot find
    since TGetTickCount64=function:TRNLUInt64; stdcall; on line 9805

    How i love those PAS files that do not compile and never seem to work.!!!!

    ReplyDelete
  3. Hm at Delphi Tokyo 10.2 and FreePascal >= 3.0.x, GetTickCount64 is already in the Windows Unit, but I'll fix that, thanks for the bug report

    ReplyDelete
  4. Sounds cool. But please consider using multiple units instead of one monolithic one ;)
    (and if you're interested, take a look at Delphinus, a Packagemanager for the Delphi-IDE to distribute your project ;) https://github.com/Memnarch/Delphinus/wiki)

    ReplyDelete
  5. Alexander Benikowski RNL is a single-file project in flavour of the various single-header C/C++ libraries for to be fast-includeable into projects, without to have a chaos of many single files. And it would be difficult anyway to split RNL in many files, because inside RNL are very many recursive class dependency references. It would indeed be possible (for example with cross-unit-scope pointer<->class typecasting tricks), but however still difficult and ugly for the code beauty look. See my BESEN project ( github.com - BeRo1985/besen ), where you can see this recursive-class dependency-reference-beyond-the-unit-scope-borders-approach in action.

    ReplyDelete
  6. Does this use broadcast on IPv6? It doesn't seem to join any multicast group. Does it work on iOS/macOS?

    ReplyDelete
  7. David Nottage No, it doesn't use the IPv6 multicast feature, since it should be portable and also working with IPv4 (without the multicast feature, which IPv4 did became it later additionally), but RNL has anyway a broadcast feature, but in a portable way, and but only for to the connected clients.

    But it should work already with iOS&MacOS, if even I've not tested it yet on iOS&MacOS, because Darwin (iOS&MacOS) is also a POSIX-based operating system kernel (which iOS&MacOS are using it), it should work already, unless I have a really stupid Darwin-related bug somewhere in the code. ;-)

    ReplyDelete
  8. Benjamin Rosseaux So it doesn't use IPv6 at all, or did you mean something else?

    ReplyDelete
  9. David Nottage No, it has IPv6 support but just only with the same feature-set as just as with vanilla IPv4, because the RNL network code should be OSI-Layer-3-API-neutral so that the TRNLVirualNetwork and TRNLNetworkInterferenceSimulator classes were also only made possible by this neutral OSI-Layer-3-API-abstraction approach, and besides also, RNL should be neutral for all connected clients, for example, to avoid unfair OSI-layer-3-feature advantages for some connected player clients compared to other connected player clients, so that all players in a network game match have the exactly same chances.

    ReplyDelete
  10. David Nottage But to make it clear again, it has IPv4 "and" IPv6 support.

    ReplyDelete
  11. Lars Fosdal Have you had any success with it, using Delphi?

    ReplyDelete

Post a Comment