By my own admission, I like to dabble. I enjoy learning, and discovering new things. I also like to implement concepts.
I have of recent introduced a few components into UOX3 (like UOP items). This has been part of a much larger activity behind that I have been working on. I am looking to give UOX3 a refresh. Not a total redesign or anything like that. But to refresh the source
to take advantage of c++17, and perhaps implement a few things I have wanted to do. But in general UOX3 stays what it is.
Now having said that, there is two significant area that I am doing different. The first is pointers. I am extensively using the shared, unique, weak pointer support in c++17 (weak is a c++17 capability).
The other is in how network/packet/sockets are handled.
Essentially, each socket has two queues, and outgoing and incoming. These queues are serviced by a thread that reads/writes the sockets.
So essentially, all networking is handled off in separate threads. The main thread will deal with Players (versus sockets) and packet objects, along with all the other interactions it currently does. My goal has been the same data format as now (with a lot of prodding by Xuri, I think that will be achievable). Lord knows I would love to take a gander at standardizing the data format, and add some delimiters so text strings can be better addressed. I have made numerous attempts at different approaches, but Xuri has prodded me back to keeping it the same.
Now, I can not say the same for the JS scripts. Although there will be JS (Xuri and I have discussed possible JS Engines), since many of the classes/methods names may be slightly different, they will probably need to be updated. However, no fear, as it isn't like this refresh is forthcoming. Just something I am working on, to see how it goes. Ideally I would like to incorporate components as I go, but not sure how feasible that is. I got lucky with the UOP items, but didn't bring over the entire way UO Data handling is.
Oh well, back to dabbling.