Well, how to hell are we meant to know if a another InSim Client is using that ClickID? This is a terrible idea and a massive oversight!
There are a few things that we can do, but none of them are great.
We could like GeForz said, limit the ClickID number available to the client by a configuration file option.
Ask Scawen to give us a packet once a InSim Instance uses a ClickID, and allow us to reserve a set of ClickIDs when we want to present a interface object to the client.
We could ask the Scawen fix this, so that each InSim client get's in own button space.
We ourselves make a Meta InSim client, that acts as an intermediary to the other InSim instances. So "MetaSim" will connect to LFS's InSim. From there, all of the conventional InSim client's connect to MetaSim, and it acts as a pass-trough. But we ourselfs add some packets to the InSim interface so we know when another InSim instance uses a ClickID as the information will be reported back to each InSim Instance that is connected to MetaSim. Basically, it's MetaMod for LFS.
Yeah, but the fact that the log system does not work is slightly embarrassing considering the amount of time the code and configuration opens have been there. But your right, I should work on LVS as well.
I don't know if anyone else has tested what GeForz has made with the pylons plugin, but that was cool. I just did like a lap with it, and it's basically the arrow marks the follow you around the track, but even cooler then that, it also shows your angle of attack into the corner, so the front of the arrow might be pointing into the corner even if your going straight. It's very cool. Great for visualizer what your doing on the track with the car.
Ok, I have a 0.4.1 build that is a simple merge of what GeForz has done. Is there anything that anyone would like to see in 0.4.1 outside of the scope of buttons?
I was reading today's coding horror article about Performance is a Feature, of any web site. At point three he talks about making performance a point of (public) pride, and using the MVC Mini Profiler to profile his .NET stack. I am so freaking jelous of .NET web programmers right now. Mind you not enough to switch to .NET just yet, but still ... Pretty awesome stuff.
With GeForz working on the Button Manager, and Morpha working on the LFS String class, I'll work on the not so sexy stuff. I'm going to work on the loging functions of PRISM so that the console function logs to a file, like it should. This should help with some debugging later down the road. .
That's great! I'm happy if you're willing to do the work. I wonder why Victor has not chimed in yet, seeing as he deals with this on the LFSWorld site, with hostnames, and usernames.
Might be more of a latency thing then any thing else. Is the InSim client on the same computer as the LFS host? Are they connected via the lookback IP? If both cases are true, then I would say that you might be right, otherwise it's almost sure to be a latency issue.
We should really have a paging mechanism, where buttions that go past the 240 are displayed once a the require number of ClickIDs are available for that element. This becomes important when the client is given a interface where multiple elements are presented to them in a single context. These single context relationships will have to be known to PRISM so that it may intelligently display these buttions to the client when the ClickIDs do become available to it. But it has a caveat, where even tho the elements are within the same context, it might not be assigned sequential ClickID's as the ClickID's could open at random.
I want access to every engine event. I want what AMX Mod had in 2002, I want what AMX Mod X had in 2004, I want what Source Mod had in 2006 and that is access to the engine. I will learn C++ just to take proper advantage of it too!
The Tech Report has an intresting article about The 10 commandments of PC games. It's ten things that a PC game company should never do. So let's see how LFS fairs shall we?
Thou shalt not shun thine player's mouse.
LFS get's more then full marks for this one. Using the mouse to control the car's steering, and doing it well at this was a stroke of genius!
Thou shalt not accelerate mouse input.
And it does not.
Thou shalt not make a mockery of third-party controllers.
I think LFS has the best 3rd party controller support I've ever seen.
Thou shalt not mix thine bindings.
No mixed bindeds found, in fact I don't think LFS allow it at all.
Remember thine user-interface conventions and keep them holy.
Even going so far as to recommend them to InSim devs with buttons.
Keep thine configurations options exposed.
Top marks for LFS on this one.
Thou shalt allow players to host dedicated servers.
And LFS does.
Enough with the save points already!
Not a problem.
Thou shalt not worship false gaming services.
Not a problem here
Honor thine modders and mod communities.
This one, needs some discussion.
That does bring up a good point ... Timed buttons. Where a button must only display for some time, the delete it's self. This comes to a point where I must think how to setup the API to allow for buttons to have their own callbacks within plugins, so things like a count down clock could be done easily.