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)
(https://github.com/stdgregwar/solarus-online/raw/master/screen1.png)
Demo footage : https://www.youtube.com/watch?v=PTfFjHSJ7Ho&feature=youtu.be (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.
DemoA small demo serve as template on my github:
https://github.com/stdgregwar/solarus-online (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 whileA 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 soFutureIf 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.
ImprovementsThere 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.
AMAYou can ask me anything about the way this works and what are the limitations. As well as proposing any improvement, ideas.
ConclusionI 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.
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