LuigiBlood / sat_wave

SatellaWave
MIT License
66 stars 8 forks source link

Is the project dead ? #19

Open omerien opened 3 years ago

omerien commented 3 years ago

Hello, I was recently interested on a way to bring back to life satellaview servers, and then I found your project. It seems to be dead. Is it ? How could I contribute ?

Edit : will it be available for Linux/Mac ?

LuigiBlood commented 3 years ago

It's not necessarily dead but basically there's only two ways for me to handle servers:

This is a .NET project so if you use Mono it should in theory work on Linux and Mac without much issue. But I cannot be 100% certain.

Edit: If you want to contribute you can just make a fork and then do a pull request. But server stuff has been on the back of my mind, and adding support to that would require some changes on SatellaWave, but before that I need to see the real Satellaview working, which might take a few months if we're lucky enough to have crucial information about the signal itself.

Casuallynoted commented 2 years ago

It's not necessarily dead but basically there's only two ways for me to handle servers:

  • Either we get clean audio material and other things for games.
  • Or we manage to get a real Satellaview working for research... and we may get close to that thanks to a hardware engineer with contacts.

This is a .NET project so if you use Mono it should in theory work on Linux and Mac without much issue. But I cannot be 100% certain.

Edit: If you want to contribute you can just make a fork and then do a pull request. But server stuff has been on the back of my mind, and adding support to that would require some changes on SatellaWave, but before that I need to see the real Satellaview working, which might take a few months if we're lucky enough to have crucial information about the signal itself.

I'm curious if you were able to get it running on real hardware! I think that would be hella neat. :)

LuigiBlood commented 2 years ago

We only got audio to work thanks to a testing device that provides the same signal the Satellaview expects. The data side of things we just haven't figured it out.

LittleToonCat commented 2 years ago

This is a .NET project so if you use Mono it should in theory work on Linux and Mac without much issue. But I cannot be 100% certain.

Been a long time since I ran this thing, but the last time I used SatellaWave with Mono, it worked without any problems. Not sure about Mac though.

maraakate commented 1 year ago

Hi LuigiBlood!

I've always loved the history behind BS-X and I thought I'd take a small peek at this code and start off by trying to do some simple PRs by running the codebase through PVS static code analyzer. Hats off to you, because only 3 warnings showed up, likely to be false positives.

With that said... I'm interested in poking around. If I am understanding correctly, each server hosted by SatellaWave is it's own local server and does not connect out to anything else and this was a planned feature? Currently, I host a gamespy master server emulator and other old game servers over at maraakate.org. I don't know your design plans, but maybe having SatellaWave connect to a master "node" would be the way to go? Do you have any documentation on how you planned to implement it?

If I am looking at the code correctly, it appears you could take Program.cs and the other non-GUI specific code and port this over to C++ so it could run on a platform without Mono as long as you have the XML/config files already made up. Yes?

LuigiBlood commented 1 year ago

There's no server system, it only exports files for emulators that support them at the moment. I would want a server system, but I am very strict in what I want, I don't want a server that sends files, I want a constant stream of data and audio.

Things were originally going on about reverse engineering the actual hardware, but events happened that I'm not sure if it will be happening in the end, while we know quite a bit more since, I may actually attempt actual stuff regarding Satellaview and streaming, but the way I want it, as close as possible to the original experience.

EDIT: The way I want it is more like a stream of data/audio that's supposed to be read at a specific speed like the original thing, which means that downloads will have to take time (for compatibility reasons, when it's too fast BS-X can actually lag).

maraakate commented 1 year ago

I understand wanting control over the design process when it's your project. I do that quite a bit myself with my own projects.

With that said, sometimes I've had to make some compromises to satisfy users and then reimplement the way I want at a later date when I'm more motivated to do so.

I'm unfamiliar with the reverse engineering efforts or how the streams work. I mostly do a lot of id engine hacking. With that said, what about using the IRC protocol as a starting point? This allows a round robin node system to reduce latency. I think you could get a proof of concept working to stream the NPC/"community" parts this way and build from there. Maybe there's technical reasons not to do so, if there is and this was a dumb suggestion then I apologize.

I do wonder, since it was satellite based, that latency was part of the experience and it was compensated somehow on the client side.

Anyways, if you reach a point with some documentation on how you'd like it implemented I'm more than willing to lend a hand where I can.

LuigiBlood commented 1 year ago

The latency is not an issue. There's no online component. It's purely a receiver, you cannot interact with others in any way, no upload in the slightest. The data (in packets) was interleaved with the audio stream.

I'll probably do proper documentation in the future about how it works.