LFSLib.NET

Moonlight at Remix 07

Miguel de Icaza just posted a long entry on a Hackathon the mono team did in the last 21 days to get some version of Moonlight ready for Remix 07 and it looks like they succeeded. Further progress information can also be found on the Moonlight site.

Next to the Silverlight 1.1 alpha which exposes the CLR, Moonlight is probably one of my favorite tech project to follow at this time. I don’t even run X anywhere anymore, just using linux for servers, so I don’t think i’ll ever need Moonlight. But its the availability that has me excited. I am personally rooting for a web programming model that doesn’t force javascript on you for client side programming, but I don’t think Win/MacOS is “cross-platform” enough to establish this as a norm, rather than a specialty plug-in. I hope Moonlight tips the adoption likelihood in Silverlight’s favor.

Currently, I’m mostly waiting for a Socket API to make it into Silverlight 1.1. Once that’s available, I’m going to make sure that my LFSLib can run under silverlight. This would open the door for some very cool in-brower LFS admin tools. I also have an internal DirectX implementation of the LFS smx and pth formats for rendering top down views. I’ve been looking at porting that to WPF, since i don’t required 3D and just rendering a plane at this point. If I can reduce it further to the Silverlight Xaml subset, I could easily produce a Silverlight equivalent of LFS Spectator. But I’m getting ahead of myself. Right now I just need to get full patch X support out the door for LFSLib.NET. The protocol is complete now, I just need to complete the TCP code, do some doc clean-up and testing.

LFSLib.NET v0.12b (this is a test version)

I’ve just put v0.12b on the server. This version does bring LFS 0.5X compatibility, but it does not expose the new functionality. The goal of this version is primarily to let 0.11b code work against LFS 0.5X with the least amount of changes (some data just isn’t represented the same anymore and caused breaking changes). This version is also ill tested, as I’m not going to go through an exhaustive set of tests until i get full 0.5X feature exposure (yeah, I know, i should be doing this test driven.. But that means a mock LFS or an LFS test harness and I haven’t had the patience for that).

So what has changed? Here are the notes:

  • Moved to .NET 2.0 and Visual Studio 2k5
  • Swapped out back-end for dealing with InSim packets to more closely resemble the native LFS formats and removed the intermediate Msg* classes (all internal changes)
  • Finally mostly functional Unicode support for LFS message in and out transfers
  • Updated existing functionality to work against patch X, with some breaking changes in what is available in Events and how that data is represented.
  • Full patch X protocol implemented, just not yet exposed, so new packets don’t come across as unknown packets

An extra note on “mostly function Unicode support”. Basically for conversion of unicode to LFS encoding, I am using a lookup table from unicode to codepage+byte and there are a couple of LFS specific characters that screw up under Japanese encoding. And split messages have some issues. This will be fixed in 0.13b.

The new version can be found here and the home of the lib is here

LFSLib 0.11b

Two bug fixes.

  • OutSim was broken.. missing the Roll member
  • OutGauge and OutSim would not work right if there was no ID defined in the LFS config, since the packets would be 4 bytes smaller each.

Also added an OutSim form to the Tester app.

As usual, docs, sources, etc. can be found here

By arne on | .net, geek | A comment?
Tags:

New LiveForSpeed Lib v0.10b, refactored

Ok, 0.10b of my lib for Live For Speed is out, but it was refactored quite a bit, so it’s not a drop-in replacement.

The refactoring was done in order to let the InSim library receive and handle OutSim and OutGauge events. InSim, OutSim and OutGauge are now all part of one library. The OutSim and OutGauge protocols can be used either via their own standalone handlers or received directly via the InSimHandler.

Here are the breaking changes when switching to this revsion:

  • Renamed namespace LiveForSpeed.* to FullMotion.LiveForSpeed.* so as to not monopolize the LiveForSpeed root namespace.
  • Moved LibVersion to FullMotion.LiveForSpeed.LibVersion
  • Renamed LibVersion.SERIAL to LibVersion.INSIM_SERIAL

As usual, docs, sources, etc. can be found here

By arne on | .net, geek | A comment?
Tags:

New LFS libs

Just updated my InSim Lib to match the 0.5U release of Live For Speed and also created a new lib to handle the OutGauge protocol.

Find the details here

By arne on | .net, geek | A comment?
Tags:

New LiveForSpeed InSimLib

Version 0.06b of InSimLib is done. Some bug fixes, some changes to go along with InSim changes in the recently release S2 alpha, and a complete rewrite of the Configuration code, to allow for simpler .NET friendly App.config or Web.config usage.

Current NDoc

Release Notes

Source Release

Binary Release w/ Sample Test App

Enjoy.

By arne on | .net | A comment?
Tags:

New InSimLib w/ source

InSimLib is now at version 0.5b. I consider it feature complete and have excersized it with a number of little Apps i’ve written, so I’m relatively confident it’s ready for use. If someone comes across any problem, just drop me a line at insimlib at claassen.net.

Binary only Dll w/ Windows.Forms tester is here.

Source for the Lib is here

And NDocs are still here

By arne on | .net, geek | A comment?
Tags:

Live For Speed InSim API 0.02a

New Version. This one adds the Race Tracking events. Get it here and the NDoc is still here

By arne on | .net, geek | A comment?
Tags:

Live For Speed InSim API 0.01a

I’ve been playing Racing Simulations for a while. I have an Act Labs Force RS, a wheel I truly enjoy, even though Act Labs has decided to get out of that market. My true love was Need For Speed: Porsche Unleashed. I think it was the best NFS game of the series. A good balance between Arcade and Simulator. However it is also the one that did the worst commercially and now NFS is pretty much a Console arcade racing franchise. Oh well.

I’ve spent some time with TOCA: Race Driver 2, a beautiful engine, but i never liked the feel of the cars. Grand Prix Legends, is of course the reigning champion among Simulation junkies, so much so that the 10 year(?) old game has been lovingly kept up to date by a devoted fanbase. But talk about hard to drive, and I am really more of a GT racing kind of guy.

While I’ve known about Live For Speed for a while and played the demo, it wasn’t until a couple of weeks ago that I finally broke down and bought the full game. And man, it’s shaping up to be my favorite simulator. S1 is already incredible, and graphically good enough. The driving is fun and challenging and extend to which you can tweak your car setup is incredible. And what’s been posted of S2 pretty much puts at the top of the genre, if you ask me.

And then there is InSim, a UDP protocol for communicating with either the individual game or a game server to control many aspects, or syphon racing statistics from it. Being a geek, I was drawn to this protocol almost as much as to the racing itself and so I’ve been busy building an Object/Event model to encapsulate the protocol in C#. Finally all the playing with binary serialization has paid off. The first version of the lib with a VS.NET winforms tester solution can be found here, the full NDoc generate docs are here. Right now this is a binary release of the Lib itself, but once i lock down the Model, i’ll release the full source, most likely under the General Public License.

This initial release understands all InSim packets, but I have not built objects around them, so really the only capabilities exposed are:

  • Connect to an LFS instance, and if so configured, automatically respond to keep alive packets
  • Access the LFS version information
  • Send and receive messages
  • Request and subscribe to Status packets.

It’ll probably take me a month to flesh out the rest, at my current pace.

By arne on | .net, geek | A comment?
Tags: ,