Mortal Monkey on 6/7/2008 at 18:24
I don't know if it's been mentioned yet, but have you looked into the network interfaces available to the OSMs?
Code:
extern const GUID IID_INetworkingScriptService;
interface INetworkingSrv : IScriptServiceBase
{
STDMETHOD_(long,Broadcast)(const object &,const char*,int,const cMultiParm &) PURE;
STDMETHOD_(long,SendToProxy)(const object &,const object &,const char*,const cMultiParm &) PURE;
STDMETHOD_(long,TakeOver)(const object &) PURE;
STDMETHOD_(long,GiveTo)(const object &,const object &) PURE;
STDMETHOD_(int,IsPlayer)(const object &) PURE;
STDMETHOD_(int,IsMultiplayer)(void) PURE;
STDMETHOD_(int,SetProxyOneShotTimer)(const object &,const char *,float,const cMultiParm &) PURE;
STDMETHOD_(object*,FirstPlayer)(object &) PURE;
STDMETHOD_(object*,NextPlayer)(object &) PURE;
STDMETHOD_(long,Suspend)(void) PURE;
STDMETHOD_(long,Resume)(void) PURE;
STDMETHOD_(int,HostedHere)(const object &) PURE;
STDMETHOD_(int,IsProxy)(const object &) PURE;
STDMETHOD_(int,LocalOnly)(const object &) PURE;
STDMETHOD_(int,IsNetworking)(void) PURE;
STDMETHOD_(object*,Owner)(object &,const object &) PURE;
}
I stripped out (
http://www.thiefmissions.com/telliamed/) telliamed's documentation to save space. It's from lg/scrservices.h provided in any of his script packages.
KoHaN69 on 6/7/2008 at 19:31
Quote Posted by vort
By the way, Tos implemented a method of making players transparent depending on the light level they're in as well as your distance from them. This is similar to the Keepers on the Equilibrium FM, although it didn't factor in your distance from the target. It is all done through the hook so that we can set up just how hard the players are to see for co-op and other server types (so friendly players won't be completely invisible, as that might be annoying but keep enemies near or completely invisible) there will probably be an option in the ini to disable it for games you host as well if you don't like the idea.
You can also see other players' names and health at a close range when you mouse over them, so you won't have to guess in >2 player games.
Hell's yeah! Thievery done RIGHT. :thumb:
Tos on 8/7/2008 at 21:23
Quote Posted by Mortal Monkey
I don't know if it's been mentioned yet, but have you looked into the network interfaces available to the OSMs?
Yes, I have. Most of the script service interfaces I've looked at aren't too interesting in and of themselves, and most of the functions do nothing more than wrap calls to other interfaces (to provide the script modules access to them from one central location, I assume). For example, INetworkingSrv::HostedHere does nothing more than call IObjectNetworking::ObjHostedHere.
RavynousHunter on 9/7/2008 at 01:39
I can grasp the basic idea behind doing that... Still sounds a wee... off. I personally think it wasn't a *good* idea per se, but there was probably a reason for it... Still seems weird tho... :confused:
Volca on 9/7/2008 at 06:42
You mean the call wrapping? It was probably intended as a way to lower the count of needed requests for various object interfaces per script.
Also it works as a layer of abstraction between the script's calls and actual implementations (so if someone changed an internal object, the script service's interfaces stay the same, only the service will need updating).
muncadunc on 24/7/2008 at 18:43
any updates?
RavynousHunter on 24/7/2008 at 21:06
True, true.
Tos on 26/7/2008 at 03:18
I haven't had much time to work on it over the past few weeks, but I plan on getting back to it soon.
I don't think I said anything about this in any of my previous posts, but I decided to re-examine the master server idea and wrote a pretty rudimentary server application that can receive heartbeats from Thief 2 servers and maintain a list of active servers.
There's still quite a bit of work to be done on this (there's currently no code for retrieving the server list or displaying it in the game client), so I'm not making any promises that this will be in the first beta. Assuming I don't run into any major issues with it however, this could potentially be adapted to work with System Shock 2 as well, just as the DirectPlay wrapper was.
I'd still really like to make some progress on a few of the remaining crash bugs before releasing anything. While the frequency of crashes has been greatly reduced since then (you could usually expect to play from anywhere between 1-10 minutes before at least one person crashed to the desktop back then), it's still not perfect. Most of the remaining crashes are occurring in sound propagation functions in thief2.exe, but I have not been able to determine what the problem is yet.
Sound in general has been quite buggy and difficult to get working properly in multiplayer actually, which is somewhat surprising given that none of the problems we've encountered occur in SS2.
Quote Posted by Volca
You mean the call wrapping? It was probably intended as a way to lower the count of needed requests for various object interfaces per script.
Also it works as a layer of abstraction between the script's calls and actual implementations (so if someone changed an internal object, the script service's interfaces stay the same, only the service will need updating).
Ah, that sort of clarifies it. My knowledge of COM is quite limited and most of it has come from reversing Thief and a few other games that make use of it, but I assume that doing this results in fewer calls to the function that returns the interface pointers for each script (AppGetAggregated).
sNeaksieGarrett on 26/7/2008 at 17:17
It's cool, do your best man!:thumb:
In other news, typeRED is doing a thief kart game.... Looks really promising. Perhaps once you get something out we could get a multiplayer thief kart game goin':D
Eculus on 2/8/2008 at 09:21
Can someone help me? I put thief 2 in my computer and the window came up & i clicked install and it just didn't do anything. i don't know if it is my computer or the disc.