Page 1 of 2

Josh, a question!

Posted: Thu Sep 24, 2015 2:25 pm
by Silverware
Currently, we are awaiting Limit Theory 1.0 with all the patience of a toddler who can SEE their birthday presents!

So I am wondering how the game currently separates input and action and rendering at a code level.

Do you have a object/script/interface that passes information through to the game to simulate the display?
Or are things a little less flexible, with the commands from a user directly modifying the game?

This might not be the best way to ask, but it's so I can get an idea of how much work it will be to hack the user input away from the world simulation, so that we (the community) can start abusing your wonderful creation with the insertion of Multiplayer! Much like the world did to Just Cause 2.

Re: Josh, a question!

Posted: Thu Sep 24, 2015 3:04 pm
by Slymodi
MVVM :ghost:

~Sly

Re: Josh, a question!

Posted: Thu Sep 24, 2015 3:09 pm
by JoshParnell
Silverware wrote:Currently, we are awaiting Limit Theory 1.0 with all the patience of a toddler who can SEE their birthday presents!

So I am wondering how the game currently separates input and action and rendering at a code level.

Do you have a object/script/interface that passes information through to the game to simulate the display?
Or are things a little less flexible, with the commands from a user directly modifying the game?

This might not be the best way to ask, but it's so I can get an idea of how much work it will be to hack the user input away from the world simulation, so that we (the community) can start abusing your wonderful creation with the insertion of Multiplayer! Much like the world did to Just Cause 2.
Not sure exactly what's being asked, but scripting in LT is about as flexible as it can get. (Some degree of) multiplayer mod should be feasible if and when I get the networking functions integrated into LTSL. It sounds like you're asking if input is directly injected into the game to change state? If so, then no. Any kind of mouse / keyboard / gamepad code that you see will be in script, the game engine is not concerned with that. The game engine provides support for creating objects with certain configurations of data, allowing access to that data, and providing an interface to a rendering engine capable of using that data to put things on screen.

If you're asking does user input currently directly modify game state (through LTSL) rather than having client / server separation? Then yes. To fix this someone will need to implement an LTSL-based LT "server-only" that holds only the game state, and sends/receives requests from clients to modify that state. This will mean changing the LTSL to look less like "if the thrust-forward key is down, send a message to the currently-piloting object to activate all backward-facing thrusters" to "send a message to the server requesting that all backward-facing thrusters on my currently-piloting object be activated." The server then modifies the state based on that request (and, if security is a concern, verifies that the request is valid). The server will also need to broadcast game state changes to all clients, so that everyone has a local game state that is kept in sync.

In theory it's not too hard. In practice it's extremely difficult to get it working really well. In terms of LT, it should be a "reasonable but not overwhelming" challenge to build a 'good-enough' multiplayer. If you want to build perfect multiplayer that includes state prediction, backtracking / interpolation, anti-cheat measures, good compensation for high latencies, support for loads of clients in the same verse, etc...best wishes :ghost:

Re: Josh, a question!

Posted: Thu Sep 24, 2015 3:15 pm
by Silverware
Awesome, perfect response!

Post release then I will require sockets in the LT engine. :D :squirrel:

Re: Josh, a question!

Posted: Thu Sep 24, 2015 3:17 pm
by Talvieno
Silverware wrote:Awesome, perfect response!

Post release then I will require sockets in the LT engine. :D :squirrel:
Already in. :squirrel: At least from what I remember.

Re: Josh, a question!

Posted: Thu Sep 24, 2015 3:18 pm
by Silverware
Talvieno wrote:
Silverware wrote:Awesome, perfect response!

Post release then I will require sockets in the LT engine. :D :squirrel:
Already in. :squirrel:

Well then... I wish I had known to back this, so I could get into the beta level specific to build Multiplayer for us all. :D
GUISE!
Multiplayer is plausible and possible and we are going to build the shit out of it!

Re: Josh, a question!

Posted: Thu Sep 24, 2015 6:32 pm
by GoatChops
Silverware wrote:
Talvieno wrote:
Silverware wrote:Awesome, perfect response!

Post release then I will require sockets in the LT engine. :D :squirrel:
Already in. :squirrel:

Well then... I wish I had known to back this, so I could get into the beta level specific to build Multiplayer for us all. :D
GUISE!
Multiplayer is plausible and possible and we are going to build the shit out of it!
Who let you out of the Off topic section :?:

Also yes building the shit out of it is exactly what we will do :squirrel:

Re: Josh, a question!

Posted: Thu Sep 24, 2015 9:50 pm
by Grumblesaur
JoshParnell wrote: If you want to build perfect multiplayer that includes state prediction, backtracking / interpolation, anti-cheat measures, good compensation for high latencies, support for loads of clients in the same verse, etc...best wishes :ghost:
I should hope anti-cheat be unnecessary for a community server.

Re: Josh, a question!

Posted: Thu Sep 24, 2015 10:24 pm
by Silverware
Grumblesaur wrote:
JoshParnell wrote: If you want to build perfect multiplayer that includes state prediction, backtracking / interpolation, anti-cheat measures, good compensation for high latencies, support for loads of clients in the same verse, etc...best wishes :ghost:
I should hope anti-cheat be unnecessary for a community server.
You should, I will take the pragmatic approach and make sure it is not required, but making sure the player doesnt get given anything (data) they can abuse. :V

Re: Josh, a question!

Posted: Thu Sep 24, 2015 10:31 pm
by Grumblesaur
Silverware wrote: You should, I will take the pragmatic approach and make sure it is not required, but making sure the player doesnt get given anything (data) they can abuse. :V
Nothing thrashes wishful thinking like a healthy dose of reality, I guess.

Re: Josh, a question!

Posted: Thu Sep 24, 2015 11:01 pm
by Silverware
Grumblesaur wrote:
Silverware wrote: You should, I will take the pragmatic approach and make sure it is not required, but making sure the player doesnt get given anything (data) they can abuse. :V
Nothing thrashes wishful thinking like a healthy dose of reality, I guess.
And nothing makes one hate another more than people cheating, when you are trying to play fair.
Plus, why not do it right from the get go?

Re: Josh, a question!

Posted: Thu Sep 24, 2015 11:19 pm
by Grumblesaur
Silverware wrote:
Grumblesaur wrote:
Silverware wrote: You should, I will take the pragmatic approach and make sure it is not required, but making sure the player doesnt get given anything (data) they can abuse. :V
Nothing thrashes wishful thinking like a healthy dose of reality, I guess.
And nothing makes one hate another more than people cheating, when you are trying to play fair.
Plus, why not do it right from the get go?
I think it'd be neat to do an experiment, but describing what it would entail here might spoil the results.

Re: Josh, a question!

Posted: Thu Sep 24, 2015 11:37 pm
by Silverware
Grumblesaur wrote:I think it'd be neat to do an experiment, but describing what it would entail here might spoil the results.
Indeed it would, although allowing the client to make gameplay decisions would go against my personal belief of "do it right first time" but any mod I do write would be opensource, so you could still run that experiment :D

Re: Josh, a question!

Posted: Sun Dec 06, 2015 1:56 pm
by Graf
Sounds like we are going to need a git repository to handle this. :geek:

Unless everybody wants svn. :? :angel:

(Flame shield online.) :wave:

Re: Josh, a question!

Posted: Sun Dec 06, 2015 2:52 pm
by FormalMoss
Graf wrote:Sounds like we are going to need a git repository to handle this. :geek:

Unless everybody wants svn. :? :angel:

(Flame shield online.) :wave:
Nah, let's just set up a mailing list and work it that way..
Let the code flow
(thanks Dune - the movie)
:wave: