[Big Layer] Solarus-online

Started by stdgregwar, January 20, 2018, 04:50:20 PM

Previous topic - Next topic
January 20, 2018, 04:50:20 PM Last Edit: January 20, 2018, 10:56:17 PM by stdgregwar
Hello everyone!

As I promised to Christopho and others during his live on Monday. I'm unveiling my work of the few past months: Solarus-online.  8)



Demo footage : https://www.youtube.com/watch?v=PTfFjHSJ7Ho&feature=youtu.be

This is basically a set of lua scripts that uses luasocket and a small server to synchronise clients across the network.

Features


  • server
  • fully working 'async' networking
  • asymetric mob simulation
  • symetric map,object simulation
  • movement replication primitives
  • api adaptation for multiplayer aware ennemies
  • network synchronised states and actions

In practice the following engine entities are synchronisable :


  • hero
  • ennemies
  • npcs
  • destructibles
  • maps

But this require light to heavy modifications in the enemy,map,object code!

Code is not bigger, thank to a reconstruction of an api similar to solarus one. But it's different.

Demo

A small demo serve as template on my github:
https://github.com/stdgregwar/solarus-online

You can launch it as any solarus quest, provided that you have 'luasocket' and 'luajson' in your lua5.1 path. and Solarus 1.6 (dev version)

The save selection screen serve as a server selection screen. You can edit data/scripts/serverlist.lua to replace the three default servers.

There is more details in the readme.

Demo server opened h24 for a while

A demo server is open from know on at gregwar.duckdns.org:1337, the server is already in the provided serverlist.

I strongly encourage you to test this on this server. As it is not very demonstrative if there is no other one on screen.

It is also more fun if you use a proper pseudo (not like on the screen  ::) ).

Be aware the server might crash, after all this is an alpha and I never tested all of this with more than two clients, so it's probable that everything breaks. If
this is the case, put a message here or ping me on github.

I might post some video footage in a week or so

Future

If enough people are interested in this I could make a tutorial on how to use it. Or at least develop a nice wiki to explain what it implies in terms of code.

Improvements

There is still plenty to do to really make this usable. The movement replication part is still in a very early stage and suffer when ping is too high.

Please contact me if you want to contribute.

AMA

You can ask me anything about the way this works and what are the limitations. As well as proposing any improvement, ideas.

Conclusion

I don't know if this is really the multiplayer mode that everyone was waiting for. But it's a light solution in terms of engine modification (2 pull-request) and
can be extended to make anything.


This is awesomly awesome!!!  ;D
"If you make people think they're thinking, they'll love you. But if you really make them think, they'll hate you."

Wow this is insane :D
Really impressive work. We can finally answer "this is possible" instead of "this is theoretically possible" to one of the most frequently asked questions :P

I tried the demo and it works nice :)
A small remark: LuaJIT is needed because of ffi stuff in Vector.lua. I don't know if you were aware of that but it might be a limitation on some systems. It should be mentioned in the readme if this is normal.

Anyway... this is a big step for Solarus :D

QuoteA small remark: LuaJIT is needed because of ffi stuff in Vector.lua. I don't know if you were aware of that but it might be a limitation on some systems. It should be mentioned in the readme if this is normal.

Yes i knew this... and in fact this is not needed... that's a bit silly from me, I took this vector class from another project and forgot that it was LuaJiT only. I will certainly revert it to a plain lua version.

QuoteAnyway... this is a big step for Solarus :D

Glad that you take it this way! ;D

Quote from: MetalZelda on January 21, 2018, 12:09:28 AM
Oh wow so lan multiplayer is now a thing

Not only lan actually, it works quite well across the internet. There is still solutions to be found to smooth the movements when ping increase but this is not a priority.

Quote from: Diarandor on January 21, 2018, 12:54:43 AM
This is awesomly awesome!!!  ;D

Thanks

What excites me the most is the new ways that it opens in terms of crazy puzzles and quests. Running through dungeons with a squad of 4-8 players, with epic boss fights at the end.

Wow, I haven't been on here for a while so I've only just seen this...this is amazing! I haven't tested it or anything but it started my imagination going crazy with new types of quest that can be made....new modes and types of gameplay....

can the users interact with eachother? so that you could make something like...zelda bomberman for example? or a battle arena? Not what I intend to use it for, just wondered.


Quote from: ponderitus on March 24, 2018, 08:18:11 PM
Wow, I haven't been on here for a while so I've only just seen this...this is amazing! I haven't tested it or anything but it started my imagination going crazy with new types of quest that can be made....new modes and types of gameplay....

can the users interact with eachother? so that you could make something like...zelda bomberman for example? or a battle arena? Not what I intend to use it for, just wondered.

Hi ponderitus,

Yes the users can interact with each other. The library will be cleaned for the release of Solarus 1.6 and proper documentation/tutorials/demo will be made.

No release date is scheduled for 1.6 tough, so stay tuned!

stdgregwar