Translate
EnglishFrenchGermanItalianPortugueseRussianSpanish

The XL Engine is and will remain free, donations are purely optional but greatly appreciated.

Recent Comments

Networking

I’ve been working on the networking model – basically client/server with “co-simulation” but ultimately server authoritative.

Basically it means that the client immediately reacts to inputs and actions and sends key presses, mouse movements and other input up to the server with timestamps. The server performs the exact same simulation, re-winding player positions and such when using certain types of weapons and then sends the client what it’s state should be. If the client and server state become out of sync then the client state is corrected using interpolation to smooth it out (unless it is severe – popping may occur in this case).

The idea is to make the game feel latency free (as much as possible) but still correcting as needed. Since the game update/physics time step is fixed, replaying a command stream will generate deterministic results – meaning the server and client will come up with the same answer most of the time.

So you get twitch gameplay, accurate weapons and still be cheat resistant due to server authoritative simulation.

As a side note, even though game updates and physics run at a fixed timestep rendering does not. In-between states are generated by interpolating gamestate and physics.

 

Level Interactivity

I’ve been moving over the INF system from DarkXL and making it more general to support BloodXL, OutlawsXL and DaggerXL. INF is essentially a system for controlling the interactive elements of levels, such as doors, elevators, dynamic sector lighting, scrolling textures, switches and so on. The result is a system where these elements can be built in code or script.

The DarkXL functionality will basically just transfer over. In BloodXL most of the level interactivity necessary for the first level (and much for the following levels as well) is now complete. Things like sliding doors, rotating doors, elevators, flickering lights, opening gates and more are working as you’ll see in the video below.

OutlawsXL interactivity should work pretty quickly, since the system will already be in place and working.

The interactivity in DaggerXL is comparatively simple, so switching it over to the new system won’t take very long. However this means that modders will get much greater support for interactive elements and puzzles in the dungeons using the scripting system.

 

I’m getting very close to holding the first multiplayer tests and then getting the merger build finally released!

 

BloodXL – A First Look

I’ve decided to post a video showing the current state of BloodXL. The game is running in “Bloodbath” mode, which basically means that all the Bloodbath weapons and items show up but that enemies are not represented. Note that this is still early work in progress and there are still numerous issues that need to be ironed out. However, hopefully you’ll agree, that BloodXL is progressing well and is nearly ready for the release.

28 Responses to “Merger Update 10: Networking, Level Interactivity and More”

  • Michel Renier:

    Lucius, your work is awesome! Keep up with it!
    After the release i am going to test your merger on some low-budget systems. Will you be interested in it? What data should i provide in my reports?

  • Simon Buchan:

    Obviously you should do whatever you want, it’s your project – but why are you dealing with multiplayer stuff before completing the beta? I’d have to guess it’s because you’re doing this the Quake style, always a client/server architecture, meaning you have to treat things like AI a bit differently? Or you got bored of singleplayer?

    Hmm, what is that fixed rate? Dark Forces felt a lot smoother than Doom, which used 25 Hz, if I remember right. I’d guess 30 Hz to divide into screen refresh?

    • luciusDXL:

      You basically have the right idea. Simply put, I don’t want to do another “merger” style refactoring any time soon. If I don’t handle the networking now then I’ll have to rewrite/modify a lot of the AI/level interactivity/player handling code again when I did get to that.

  • jet800:

    Hi, lucius. Something bad happened, forums and wiki are unavailable for about 12+ hours

    • luciusDXL:

      I’m aware of the issue.

      The host is undergoing some scheduled maintanence today that affects the database and FTP. It was only supposed to last for a few hours but as you have noticed has been going on a lot longer. The plan is to call up the host tomorrow if it is still not resolved since the site login is also not functioning.

      In fact, I have no idea why the wordpress side of things has continue to function. Not that I’m complaining about that.

  • K-Bone:

    About BloodXL,I was wondering if BloodXL will Support One Unit Whole Blood since it’s sold on gog.com?

  • morhlis:

    This is amazing! I’ve been watching your progress now for a very long time. But I am so excited! I’ve been waiting to play Blood on something other than DosBox…forever! Thank you for your hard work!

  • zZaRDoZz:

    Excellent work lucius! Any clues on how you’ll implement Blood’s shaking sector effect?

  • Tnoyce:

    Lucius,

    Looking good from what I can see.

  • An idea:

    Would it be possible to implent something like coop multiplayer in daggerxl, or would that be too complex? would be very cool if possible :)

    • luciusDXL:

      DaggerXL will use the same client/server architecture as the rest of the games. The system is being tested with the games that more naturally support MP but the intention is to support it in some form for DaggerXL later.

  • Valek:

    Lucius, how are you able to do all this stuff??? Graphics engines, networking, the game engine… It’s amazing! I would really like to know, how are you able to do all this?

    • luciusDXL:

      I’m not exactly sure how to answer, other then I’ve been programming for a long time. :)

      • Valek:

        I’ve been following DaggerXL for a long time now, and I’ve seen your posts talking about dealing with all the different aspects that have to be dealt with, and I’m really, REALLY amazed that one person can do all this stuff! And you’re not building a game that you’ve started from the ground up, so you know how everything is done; You’re taking games that other people have made, and figuring out how they did stuff, and then making it work, and making it work better than it originally did! I really have a hard time wrapping my mind around how one person could be able to do ALL of this stuff!

        I’ve said it in the comments in the past, and I have to say it again– you are doing an AMAZING job!!!

  • Carl Kenner:

    That’s a bad idea. You are locking people into a specific control scheme.

    What if someone wants to play with a setup you didn’t think of, like a Head Mounted Display? Note that a head mounted display uses absolute values for head orientation, and (if it’s a good one) head position in 3D space.

    The client needs to be able to communicate things like absolute head orientation, and 3D movement in game units, and the server needs to be able to decide whether it’s possible to move there or not.

    It’s much better to communicate “player tried to move 3 units in X, 2 units in Y and 1 unit in Z” than “player pressed up key”. And it’s better to communicate “player tried to face compass bearing 70 degrees” than “player moved mouse 30 mickeys right”. You should have a layer of abstraction in the networking, so one player can play with a HMD against another player playing with a Novint Falcon, and another with a mouse and keyboard, etc.

    The server should ensure that you don’t move faster than maximum movement speed, don’t move into objects, etc.

  • Larsus:

    How is the testing and developing going now? It’s a pity that the silence continues so long

  • softdrinkviking:

    looks nice!!

    i have been following your work for years, ages even.

    great work, man. it’s things like this that continue to make pc gaming fun and exciting.

    :)

  • AdamantC:

    @Larsus
    You should follow the forums more. Lucius said he would be away for two weeks on October 17th.

  • GreggD:

    Dude, Lucius! I am so happy that this whole thing is finally starting to come together. I’m not sure if you remember me, but I’ve been trumpeting your work on several forums for years since you started with just DarkXL. It’s gonna be so good to finally play Blood at a high resolution, and for that you have my eternal thanks.

  • Tanner:

    This is pretty amazing; I’m almost glad I didn’t know Daggerfall existed when it first released; this is looking like it’ll be much better :)

    Until dialogue and a few of the more advanced features like travel preferences are implemented I’ll simply have to stalk and play on DOSbox however :)

    Thanks so much for doing this; it means a lot to Elder Scrolls fans (plus the other fans of course). If this project were to die I might start crying.

  • Tanner:

    Sorry if this turnes out to be a double post; it was laggy for a moment. Anyway, to recap in case it wasn’t a double post, thank you a ton! Also, if this project dies I may cry.

  • Fabio Bittar:

    So, where is it? You disappeared…

  • Larsus:

    Will the current release work with hd 2000 graphics (core i3-2100)?

Leave a Reply

The XL Engine is and will remain free, donations are purely optional but greatly appreciated.