The online racing simulator
"ultimate insim" (is it possible?)
(12 posts, started )
#1 - X-Ter
"ultimate insim" (is it possible?)
...the "ultimate insim mod"? Let me explain

I use LFS Auto Message a lot when hosting. But when I'm racing I like to use the PitSpotter mod. Is it possible to combine these two into one mod? And while we're at it... Why not put the SlickMod and the Ghostcar mod in there as well. And possible the neat track changer feature from RaceManager.

Well I know I won't have to explain further... All these mods are very usefull, but you can only run one of them at a time. I would like to run them all. Since LFS only allow for one InSim program at a time, I guess the program would have to be multifunktional instead. But is it possible?
#2 - Stuff
Silkswift made a mod to do that. Its part of the RaceManager Toolset. Called Gateway. Here's a link, not sure if its the best one, but its there
#3 - X-Ter
Thanks
I allready new about Racemanager and it has a lot of nifty features. Problem is I can't get all of it to work, and I can't figure out how to use the relay. Problem is (i guess) that the configurations is a bit technical
For the end user (that's me and a lot of other peple) a simple interface is absolutley crucial. That's why even I can get PitSpotter and AutMessage to work. Compared to those two programs, Race Manager is really intimidating.

So... I'm still waiting for an InSim mod that has Rolling Start, Track Changer, Auto Message, Pit Spotter, Ghost Car and may some other stuff I find usefull, all in a nice package with a clean and easy to understand interface
Indeed, RM does not have a great graphical interface. But after all, it was made to be used on a server without a graphic card .

As for configuring the Gateway mod, once RaceManager actually starts and connect, you need to:
- edit RaceManager.cfg
- go to the Gateway section
- enter a free "insim" port, and a password (this port and password is what your other insim applications need to use in their settings. Instead of connecting to the LFS Server, they need to connect to the Gateway to this port and password)
- restart RM
- start the Gateway module

For each insim app you want to use:
- configure your other Insim app to use the new "insim" port and password (from the Gateway config)
- start your app


All the insim apps i've tried this way actually worked correctly, but I haven't tried with PitSpotter or Ghost car mod.
If someone feels like repackaging all that to be easier to install, feel free to do so.
#5 - X-Ter
Thanks Silkswift
By the way... I found out that when I press the Welcome Message button in RaceManager (I use windows version since I don't have a clue about what "pyton" is) I actually starts the VoteChecker. Is there an update?
Combining everything to one application is not a very realistic idea in my opinion, not only because they are made by different people (and propably with different languages) but also because it would be difficult to keep it up to date, and for someone who would only need one part of it everything else would be just unnecessary bloat.

It would be best if Scawen could fix InSim so that multiple connections would work "natively". It now gives the impression that multiple insim connections would work, but when you try it the apps just end up in a race situation where the other one gets disconnected when the other connects, and the disconnected one then tries to reconnect and disconnects the other and so on... In fact I would personally like an all new DLL based insim system, which would be alot easier to use, wouldn't have the overhead of UDP for local things, and wouldn't be asynchronous like the current system.
Quote from Kegetys :Combining everything to one application is not a very realistic idea in my opinion, not only because they are made by different people (and propably with different languages) but also because it would be difficult to keep it up to date, and for someone who would only need one part of it everything else would be just unnecessary bloat.

It would be best if Scawen could fix InSim so that multiple connections would work "natively". It now gives the impression that multiple insim connections would work, but when you try it the apps just end up in a race situation where the other one gets disconnected when the other connects, and the disconnected one then tries to reconnect and disconnects the other and so on... In fact I would personally like an all new DLL based insim system, which would be alot easier to use, wouldn't have the overhead of UDP for local things, and wouldn't be asynchronous like the current system.

#8 - filur
Quote from Kegetys :.. In fact I would personally like an all new DLL based insim system, which would be alot easier to use, wouldn't have the overhead of UDP for local things, and wouldn't be asynchronous like the current system.

Oh please, no!

DLL extensions? sure, but leave insim alone.

It would change a system that's using a 'universal' method such as UDP, to a system using a native windows method, and require a much more
specialized approach to programming, not to say deeper programming knowledge.
There are over 1500 scripts on mircscripts.org, and about 120 dll's.
PHP expansion thru source vs. dll's? ..

Trying to compare how users choose to expand a piece of software where there's the choice of using a "harder" method for adding simple functionality.
I mean UDP would be the simpler way of interfacing with LFS, in whichever way you want / can, DLL is native/special and, i'd like to say, difficult in comparison.

Universal is wonderful, you could even write an insim app in quickbasic.
Using UDP will never force a developer to learn a new language, use another platform, be hassled in any other way then making his software.
Would it not also kind of reverse the problem, like say i want insim from a non-local lfs server, the server would then need an insim dll providing network functionality?

Simply handling many connections at once would be a fine logical feature.
Quote from filur :It would change a system that's using a 'universal' method such as UDP, to a system using a native windows method, and require a much more
specialized approach to programming, not to say deeper programming knowledge.

I'd say making a simple dll that exports a function is much more simplier to code with any language than what an UDP interface with InSim is. Not to mention that the asynchronous nature makes it impossible to make some things work with 100% reliability, for example with my Ghostcar mod this caused problems and headache for me.

If InSim would be a native dll interace, then you could use that to do whatever you want, including a dll that would emulate the current UDP based insim functionality and you could use it as you are doing now if you want. Or you could make a DLL that offers a direct LUA interface to insim functions that would make it very easy for anyone to make insim "scripts".

If, in the future, there will be proper telemetry (All suspension, engine, etc. data at whatever rate the internal physics calculations work at) added to InSim then the UDP interface will propably cause even more problems as sorting through that amount of data for UDP transmission failures (lost packets, proper order) would cause quite a lot of problems and "wasted" cpu cycles.
Quote from Kegetys :If InSim would be a native dll interace, then you could use that to do whatever you want, including a dll that would emulate the current UDP based insim functionality and you could use it as you are doing now if you want. Or you could make a DLL that offers a direct LUA interface to insim functions that would make it very easy for anyone to make insim "scripts".

But you'd have to do it on windows, and if you made a LUA thingy only people who know LUA can use it, or people need to learn LUA.
Then you'd need a dll to offer python support, perl, whatnot, when it already works, really, emulating the udp system that already works.

But i think we're looking at insim from completely different point of views, you're making "mods" for the player, modding a game that really isn't mod-able currently,
like ghost and pitspotter, i'm making server-side control / logging / simple extras etc.

I really doubt the devs where expecting a mod like ghostcar to be made using insim
I mean that's really an "extreme" insim mod, really a thing that would need an extension type of interface rather then a system like insim.
I think insim should be kept as it is because it works great for it's purpose, don't get me wrong, i think ghostcar and pitspotter are
wonderful addons, but i think insim is kind of the wrong thing to use, especially for ghostcar, ofcourse there's currently no other way.

The move from scripting a webpage in php to making dll's is really pretty big, but the move from that to connecting php to insim and making use of insim data is very small.

Insim using udp: know/find a way to use networking in your language of choice, read the insim documentation.
Insim using dlls: use windows, know the windows api, know the lfs api, know the concept of dll's, have a software developing / compiler suite etc,
get access to a thousand times more complexity and performance then you'd ever need in most cases.

Also, imagine

"<app> needs version <x> of <dll>, the latest <dll> doesnt work, and you can't run it together with <another app> because it needs <another version of dll>,
and you need lfs version <x>, because the needed <dll> was compiled for version <x> and doesnt work with the newer version <y>"

"yes i'll update my <app> for the new lfs version, but i need to wait until <developer> updates <dll> for the new lfs version"

"the <udp dll emulating old behavior> doesnt work with <new lfs>, so no insim apps using this works at all with <new lfs>"

Do we need this for the simple thing insim really is?
I think what you'd need for your mods is something else.

Oh, and

Quote from Kegetys :I'd say making a simple dll that exports a function is much more simplier to code with any language than what an UDP interface with InSim is.

I'd say the number of languages that cannot in any way make dll's, but can use udp networking, far outnumber the ones that can
Quote from filur :
Then you'd need a dll to offer python support, perl, whatnot, when it already works, really, emulating the udp system that already works.

No you wouldn't "need" to offer such, if there were a DLL that offers the current UDP interface then you could just use that with whatever language you want just like you do now. Just that if there were LUA, python, or whatever language DLL, that would make it even easier as you wouldn't need to worry about the UDP protocol, and it would be fully synchronous.

Quote :
"<app> needs version <x> of <dll>...

How would this be any different than with the current system? If there were a change to the InSim protocol then it would not matter what interface you would be using, you would still need to update everything to use the new protocol.

Quote :I think what you'd need for your mods is something else.

I'm not talking about my mods. Why would it be so bad to offer both the ability to use a synchronous DLL interface, and a UDP based asynchronous interface (Through a DLL)? Currently, if you make some simple insim application (Say, for example an app that displays a welcome message whenever someone joins the server), you'll most likely end up with over 90% of the code being used to handle the UDP connectivity. If you would use a "local" scripting language interface instead, you could do it with just a few lines of code without having to worry about anything else. It would be much easier and faster to code and it would be much less bloated.

Quote :I'd say the number of languages that cannot in any way make dll's, but can use udp networking, far outnumber the ones that can

You could code DLL's with PHP if you'd have a compiler that would be capable of compiling your PHP code to a DLL. A language doesn't usually define such restrictions.
But, the udp system already works

"<app> needs version <x> of <dll>..." is different because DLL integration is "closer" to the LFS core,
if a DLL plainly stops working with LFS, you know what happens, if insim slightly changes, an older insim app might very well still work.

And still, if the insim protocol as it is now would change so that my apps would not work, i don't need to rely on someone else fixing something to make my thing work, i can just update it myself.

Look, what i'm basically saying is something like this
When you have an extension interface you can use to make your software do what you like, that people successfully use, it's fine.
When you want to go further, you need another interface.

Take mirc for example, i'd guess about 5% of extensions for mirc are DLL's, 95% are fine with what's offered by the standard interface.
The other 5% use a _different_ system to get their functionality into mirc using dll's, the systems are separated, but can ofcourse interact.
The 95% do not need the complexity of the DLL system, they do not need the extra performance, or they cannot be
bothered with such development, the stuff will work fine anyway.

The interface that the 95% of users use is made by the developer of mirc, not someone making a plugin that offers this, the
other 5% get access to whatever they want, with all the complexity in the world.

The 95% of users can develop without ever caring about the other method(s), the software from these users will work without anything else.

If you as a user want to extend <software> and you can't be satisfied with what <software> offers, the way you solve this problem
should not interfere with how other users extend <software>

Insim/udp is the standard interface, if this interface is unable to provide functionality for, say, modding lfs in a ghostcar sort of way,
this problem should be solved without altering the standard interface that already works.

The more complex you make the insim system, the less insim apps will be made, simple as that.
Even if it's as simple as "go download this dll and you can do this", this is added complexity that isn't needed.

A dll extension system would be great, but keep the simple universal insim system
that already works perfectly, don't emulate it, there's no need for extra layers, it does already work.

About the welcome message, i just wrote a small php script to test that, 14 lines of code, 3 lines for handling the udp connection. it even handles the keepalive.

This discussion is getting rather pointless, i mean, you're talking about bloated code, to me nothing could be more bloating then
converting insim to a dll based system, because there's absolutely nothing in such a thing i'd ever need, nor would any of the regular insim apps i've encountered so far.
To me that means coding something to make something that already works, work again.
I would never need the performance of getting/parsing full telemetry data at 100hz, this is very unreasonable traffic for a server.
My opinion is that insim does precisely what it's designed to do, and does it very well, if you need a better link then that, then
something else should offer that, just like any other software i can think of that offers extension thru a main interface and a dll method.

Maybe i'm all wrong, but to me insim seems to be designed for server functionality, maybe that's why you who make very different stuff seem unhappy with it.

If it's not broken, don't fix it, i-m-h-o

Why would you not rather want a full-fledged dll extension system?

"ultimate insim" (is it possible?)
(12 posts, started )
FGED GREDG RDFGDR GSFDG