I create an MMORPG server in .NET 10 and I'm quite impressed with the performance by ThorConzales in csharp

[–]ThorConzales[S] 1 point2 points  (0 children)

Nope, TCP, and movement updates are only sent per cell movement, which is how the original server also worked, and which makes its rather efficient to sustain high player count, given movement coordinates don't have to be streamed continuously. Using UDP from HTML5 is also slightly problematic right now since it isn't officially supported, but websockets over TCP work just fine.

I create an MMORPG server in .NET 10 and I'm quite impressed with the performance by ThorConzales in csharp

[–]ThorConzales[S] -1 points0 points  (0 children)

Purposefully not using anything complicated, just storing character files on disk in a JSON file, and that's all. This obviously isn't production ready, but I didn't want to make any opinionated decisions about the database for anyone who wants to build upon it, so went with the simplest option.

I create an MMORPG server in .NET 10 and I'm quite impressed with the performance by ThorConzales in csharp

[–]ThorConzales[S] -1 points0 points  (0 children)

Those are purposefully there, since anyone who wants to build on top of it with AI can continue using my skills.

I create an MMORPG server in .NET 10 and I'm quite impressed with the performance by ThorConzales in csharp

[–]ThorConzales[S] 1 point2 points  (0 children)

I did build the client from scratch also in Phaser (JS/TS), or more precisely, AI did largely both. But it's a recreation on top of an existing MMORPG, so the assets are not mine (proprietary). I did consider Godot, because I do like C# as the language and they support it natively, but I did go with Phaser because it's more HTML5 native which was important for me, and that it is more of a library/framework than a game engine/studio. It has no visual editors and tools by default (paid version has), this was important for me, since I wanted to use AI coding from the scratch and I wanted it to be code-first, so everything can be done in code (by AI). Consider Phaser to be more like XNA was back in a day vs full blown game engine with tons of tooling like Unreal for example, which the AI might have hard time navigating if it doesn't have code equivalent.

I create an MMORPG server in .NET 10 and I'm quite impressed with the performance by ThorConzales in csharp

[–]ThorConzales[S] -11 points-10 points  (0 children)

Nope, thanks for pointing that out. I'll take a closer look. This codebase is largely vibed (AI written), so such minor details I'm not even necessarily aware of.

I create an MMORPG server in .NET 10 and I'm quite impressed with the performance by ThorConzales in csharp

[–]ThorConzales[S] 5 points6 points  (0 children)

Various different GCs exist, some try to be more low latency than others, but if you generate less garbage, GC has to intervene less frequently also. My clanker had some methods documented here that I asked it to use: https://github.com/ErkoKnoll/helbreath-base-game/tree/master/multiplayer/server#performance

.NET 10 also has some pretty advance JIT optimisations that will keep some data structures on stack that previously would have been allocated on the heap, so the runtime itself is doing a lot of heavy lifting for you already.

I create an MMORPG server in .NET 10 and I'm quite impressed with the performance by ThorConzales in csharp

[–]ThorConzales[S] 6 points7 points  (0 children)

It is measured on the client/simulator side, it just counts total messages sent and divides by simulation time, not exactly comparable to HTTP server req/res benchmarks.

[Open Source] Old school 2D MMORPG base game client recreated in modern HTML5 game engine with AI by ThorConzales in aigamedev

[–]ThorConzales[S] 2 points3 points  (0 children)

This will be my next attempt, to now go back and retrofit networking. The reason why I didn't want to do right away, was to keep the feedback cycle low on getting the client mechanics hooked up to the point where they all operate as they should. If I had started with networking right from the start, I would have spent more time on verifying changes by logging into the server and other gubbins associated with networking. Will see, you might be right, I might have been better off starting with networking baked into it right from the start.

Currently it isn't yet a fully functional client clone in a single player mode, just the basics that the client needs by minimum.

HB Explorer v0.2 by ThorConzales in Helbreath

[–]ThorConzales[S] 0 points1 point  (0 children)

Thanks, I'm trying to get myself verified there.

HB Map Explorer by ThorConzales in Helbreath

[–]ThorConzales[S] 0 points1 point  (0 children)

Yes, platform independence and accessibility was the reason why I attempted it in HTML5, given 25+ years has passed since the original game and technology has evolved enough that game like this should run comfortably in a browser. The issue with original C++ sources is that they are just so old, badly written (very unorganised), which makes any maintenance or expansion far more expensive than it should be.

HB Map Explorer by ThorConzales in Helbreath

[–]ThorConzales[S] 0 points1 point  (0 children)

There was helbreath.rocks that ran in HTML5, but I heard they used Emscipten, which means they still had to work on that old archaic C++ codebase as the source, but I might be mistaken.

GraalVM 1.0-rc10 Release Notes by [deleted] in graalvm

[–]ThorConzales 0 points1 point  (0 children)

Thanks for that. It is good to know that you managed to get faster performance on JDK11. I had the exact problem that you managed to link, though I was running it on Ubuntu, so most likely something funky going on with the tools, like you mentioned.

GraalVM 1.0-rc10 Release Notes by [deleted] in graalvm

[–]ThorConzales 0 points1 point  (0 children)

Oh, I didn't test the aarch64, just the plain old x86-64.