Comments (4)
How did this work originally I wonder?
from remc2.
I try not to change the game code. I'm just creating a kind of NETBIOS/IPX emulator over UDP/IP. So it's more about how exactly NETBIOS works. See..:
https://www.lifewire.com/netbios-software-protocol-818229
http://www.cs.vsb.cz/grygarek/PS/sem/netbios/netbios.h
https://en.wikipedia.org/wiki/NetBIOS
On top of that, I've added IP address detection(as a unique identifier of the computer), which the server then recognizes each computer by. I'll also extend that identifier with a port - hopefully this can be used to test multiple instances on a single PC, where each would have a different port. I didn't want to make it difficult to find out the individual interfaces, because there are specific APIs for different OSes, so I do it by sending a message to the server, it learns the IP from which the message came and sends the information back.
Next, the NETBIOS function ADD_NAME is used, which plugs the computer into the network. Then the connection is established using CALL and LISTEN. And then messages can be sent using SEND and RECEIVE. The CANCEL, DELETE and HANG_UP functions are used to terminate various things, so I'm still figuring out what each does. I'm still thinking about a function that disconnects the client from the network if it doesn't answer for a long time, for example if some client application closes violently.
I managed to get this working in classic DOSBOX, but unfortunately not in DOSBOX-X, which I use to get information about how the game works.
from remc2.
On older networks, a lot of things were handled by broadcasts, so some things were simpler. On IP we first have to put together a group of IP addresses and then it can work similarly.
from remc2.
It is interesting that it says NETBIOS works over TCP/IP. I even found a list of games that used it: https://www.mobygames.com/attribute/sheet/attributeId,129/offset,0/p,2/so,0a/
It includes Duke3D.
Anyway Quake used UDP, so perhaps that is all we need? Each client broadcasting their updates without ensuring they are received and the server being the single point of truth. So if a client update is not received it simply does not happen on the server and the client updates with whatever it gets from the server.
You seem to have a handle on things anyway, I'll stop bothering you and get back to understanding the HD render code so I can implement OpenGL
from remc2.
Related Issues (20)
- "Error creating setup directories" when trying to execute 0.91 release HOT 11
- Cinematic audio playback speed is too fast / out of sync with video HOT 17
- Application crash when loading a level
- Application closes without error on loading a save game HOT 1
- Spolupráce HOT 8
- Issue with GOG Version HOT 1
- Hey Tom it is Tim, from the Magic Carpet HD Fork...
- Issue with original cd version
- HRTF 3D positional audio support
- Nothing happens HOT 3
- Network - receive only from correct client HOT 2
- Network - remake Sender to Handler
- convert colorPallette_var28 to TColor
- Network - Problem with bad height or bad rendering after use portal in first multiplayer level HOT 2
- Network - slow game HOT 1
- Network - x64 fixes
- TODO HOT 3
- Random glitches in higger resolution(1000 x 1000) in Render HD(in first level) after fly via house HOT 1
- joystick support HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from remc2.