1

Topic: 2025/2/7

There was no update this past week.

I didn't have time to make a complete update. I've been working on both the client and server:

- The client now uses a unified map library. It uses it for save, load, and for decompressing patches.
- The server now uses this same unified map library. It uses it for loading and compressing patches.
- The server's scripting, pathfinding, and database handling (mail, market, pets) are now all combined into the same C library, instead of being three separate libraries. This library can also independently send packets over the network, instead of relying on the VB server code for the task.

What I'm doing next is:

- Making the server use Art.frc instead of the disparate Resource.* files.
- By doing this, the unified map library will be able to generate obstacle information itself.
- After this, short term, I will start on a map editor in the client. Previously, obstacle information was uploaded by the client alongside the map sectors. But it meant the client and server actually stored their maps differently. I don't want to rewrite this in the client. I want the map library to figure it out by itself.
- After this, long term, I can move the pathfinding code into the unified map library. This lets me have, eventually, unified pathfinding between client and server.
- Unified obstacle information also lets me do a better job of pathfinding with stairs. Right now, it works rather badly on the server.
- Once all this unification is complete I will have the ability to change the map format itself. My goal is to have a map format where sector music, sector sounds, and spawns are all stored together.

2

Re: 2025/2/7

I wonder if this will help with scenarios where multiple monsters are spawned, such as events, where the monsters don't actually seem to be there till you're in the middle of 20 of them. For example, when you're running sewers or pit there are 20-25 monsters spawned at a time.  You might cast a spell in sector x while your character is in sector y, no spells hit. When you move into x, all the monsters in that sector appear at once and gang up on you.

Out of retirement... for now.

3

Re: 2025/2/7

The server currently assumes a sight area roughly around the original 640x480 view. So if you are more zoomed out it won't be sending anything for far-off sectors. I actually hadn't noticed this in practice, probably because mine is 2X but effectively 800x600, and the view code is sector-based so not so precise as to what it doesn't send.

I don't think this will help with that, but I do hope to eventually clean up the view code.

4

Re: 2025/2/7

Ah, that makes sense. It would be a big QOL improvement if you could render monsters and NPC's in adjacent sectors. As it sits when you're playing in 1080 it often gives the feel you're in a empty area then bam, monsters appear on top of you as you move. Or, NPC's appear to blink in after a brief delay.

Out of retirement... for now.

5

Re: 2025/2/7

Oh, it does send them from adjacent sectors. But to determine what sectors to include, it uses a fairly small bounding box. So usually it's just the current sector, and as you approach the next sector, that next sector as well. Most of the time, it's 1-4 sectors. For 1080 height, I'd expect it would be zoomed in 2X. Is this not the case?

6

Re: 2025/2/7

I uploaded a video to the discord to highlight what I'm talking about, It's probably the easiest way to explain. But, I could send it elsewhere if that makes more sense for you to see it.

Out of retirement... for now.

7

Re: 2025/2/7

Mechanics Video from Discord

Evil Devil - Prometherion