New cross-platform .NET plugin for UK trains released, class 323 3D cab and Cross-City South v1.31.09 update, openBVE v1.2.9 development branch, .NET plugins and AI support

Posted by Anthony_B on November 20, 2010 at 07:30
Screenshot
Updated: 22nd November 2010 @ 00:15 UTC (FEVF railway and steam loco update – see below)

New cross-platform .NET plugin for UK trains (EMUs currently), 323 3D cab / X-City South v1.31.09 updates, and openBVE v1.2.9 AI support

Railsimroutes LogoAfter the latest development branch of openBVE (v1.2.9 series) was released last month, I started work on a new open source, cross-platform plugin written in C#, which I wanted to be a suitable alternative to the plugin currently used by the class 323 EMU. Simon Gathercole’s UKMUt.dll has served me well since BVE Trainsim 4 was released, but after the latest openBVE developments, I knew the time had come to create a new plugin which could be developed to take advantage of the new possibilities which openBVE now provides. I also wanted to create a plugin which could be updated as openBVE develops, either by myself, or with help from other programmers and developers, so that the community doesn’t need to experience plugin-related problems for too long.

This new plugin is called UkTrainSys (short for UK Train System of course); it is modular in design, and aims to simulate a variety of systems that trains which run on the UK’s rail network may be equipped with. Initially, I’m working to recreate as much of the functionality found in Simon Gathercole’s range of BVE 4 plugins as necessary, although some new features are included as well. So far, the plugin features the following:

▪ Automatic Warning System (AWS);
▪ Train Protection and Warning System (TPWS);
▪ Driver Reminder Appliance (DRA);
▪ Vigilance Device;
▪ Traction and brake interlocks;
▪ Battery which can be discharged, recharged and overloaded;
▪ Overhead supply;
▪ Pantograph and vacuum circuit breaker;
▪ Automatic Power Control;
Power supply and electrical system circuit breakers (more for future use);
▪ In-cab blower;
▪ Head and tail lights;
▪ AI guard for station stop monitoring and buzzer codes;
AI Support which assists openBVE’s AI human driver in handling systems simulated by the plugin automatically
  (including support for visible in-cab driver’s hands and arms).

Note: Wipers, windscreen rain effects and diesel engine simulation are yet to be started. I’m also planning for various other systems to be inlcuded in future, such as TPWS+ (TPWS Plus), RETB, ERTMS, random failures, and a tap changer.

Users of trains which include plugins developed for BVE 4, will likely know that when openBVE’s AI human driver is enabled, the AI driver may not always be able to operate a plugin enabled train correctly, simply because openBVE has no way of knowing what systems are simulated by a plugin, and even if openBVE did know what systems were simulated, it still wouldn’t know what to do with them. Hence, the new UkTrainSys plugin uses openBVE v1.2.9’s AI Support feature, which lets the plugin assist openBVE’s AI human driver with operating the systems which are simulated by the plugin.

When you start a route, and enable openBVE’s AI human driver by pressing Ctrl+A, while using the latest release of the class 323’s 3D cab in combination with the UkTrainSys plugin (see below for the download), you will see the AI driver’s arms and hands reach out for the controls, and interact with them whenever necessary. The AI human driver will run through the startup and self-test procedure for you, pressing the AWS reset button, raising the pantograph if required, and setting the taillights and headlights. The plugin takes the time-of-day into account, so the correct headlight setting is chosen based upon the in-game time (and updated as the day goes on). The AI driver will deactivate the DRA before departure, respond to the guard’s buzzer signal with a buzzer response, cancel AWS warnings as they occur, respond to TPWS brake demands, re-raise the pantograph if it is lowered mid-journey, and so-on. The UkTrainSys plugin’s AI Support will also respond to a new beacon type, which instructs the AI driver to blow the horn at certain locations.

Screenshot
Note: Both the 323 3D cab and UkTrainSys plugin were updated on 21st November 2010 @ 01:30 UTC
Issues with TPWS Isolation, and the driver’s arms remaining visible after turning off openBVE’s AI driver, are hopefully resolved…
Inset image

I’ve updated the class 323’s 3D cab with new animations which require the UkTrainSys plugin (now included in the download), and I’ve also equipped Cross-City South v1.31 with the aforementioned new beacon type, so the AI driver can sound the horn automatically.

  • The updated 323 3D cab and pre-configured UkTrainSys plugin can be downloaded here [2.3 MiB]
    (The unrefurbished class 323 from Trainsimcentral is required first – the 3D cab and plugin update should OVERWRITE any existing files in the “Cl323 Unrefurb_openbve” folder).
  • If you are already using Cross-City South v1.31.071, you can download a small update to v1.31.09 link out of date [95 KiB]

If you don’t already have the route, aren’t sure which release of Cross-City South v1.31 you already have, or want to see details about the latest changes, please download the full version and visit the Cross-City South v1.31 project page instead.

Screenshot
Important: Remember that you need openBVE v1.2.9.15 in order to use the new UkTrainSys .NET plugin with AI support, and to enjoy the new 3D cab features! Also remember that this is an early alpha release of the plugin, so it has some issues, but they’ll be addressed as development progresses.

The UkTrainSys plugin also has it’s own project homepage, where just the plugin, source code, current and planned feature list, changelog and documentation can be found. Train developers with an interest is using the UkTrainSys plugin, now or in future, may wish to visit the following page and read the documentation.

Note: If you have downloaded the updated class 323’s 3D cab with the pre-configured UkTrainSys plugin, remember that you should not overwrite the UkTrainSys.cfg file included with the class 323 3D cab update!


Railsimroutes.net - UK Train System Cross-platform .NET Plugin banner

UK Train System (UkTrainSys)
Cross-platform .NET Plugin

[Alpha release now available]

I’ve also been working on some new backdrops for both Cross-City South v2.0 and Watford Junction to Rugby. I was happy with the daytime backdrops which you’ve all seen already, but the sky portions of the last set of sunset and sunrise backdrops were entirely hand-made (replacing low resolution BVE4-era images), and I wanted to replace these with photographic textures of a similar quality to the daytime backdrops instead. Fortunately, there as been some favourable weather during the past few days, so I was able to take some nice photographs. Here are the new sunrise and sunset scenes, shown with the 323’s latest 3D cab update, and the openBVE v1.2.9 / UkTrainSys plugin enabled AI support feature in use:

Screenshot Screenshot Screenshot Screenshot

Recent openBVE v1.2.9 development branch updates

openBVE LogoTowards the beginning of the November, openBVE v1.2.9.11 was released (now up to v1.2.9.15), and Michelle introduced a new set of experimental preprocessing directives. These take the form of $if(), $else() and $endif(), and obviously, these allow for conditional parsing of blocks of code within a route file. This can be an alternative means of achieving what can be accomplished with the $Include directive, which is handy when only a small block of code needs to be conditional.

Personally, I’m finding this very handy for such features as temporary speed restrictions (TSRs). In this scenario, I can randomly introduce TSRs at different locations, so routes can be rather more fun to drive. At the start of the file, we can declare a variable $Sub(0), which has a random number assigned from within a certain range, and then use the value stored in $Sub(0) as a condition which is used by $if() directives. If the value held by $Sub(0) is zero, then the code within any $if() block which depends upon this variable is not used, but if the value is greater than zero, then it is. By using the $else() directive, we can show something else if the TSR is not to be included, such as discarded sections of old rail, left there by the track workers after they made their repairs and removed the TSR. Spate indicators could be handled in a similar way.

For example:

; Declare a variable which stores a randomly generated number…
$Sub(100) = $Rnd(0;1)

With Structure
.FreeObj(0) tsr_warn_20mph.csv
.FreeObj(1) tsr_20mph.csv
.FreeObj(2) tsr_terminate.csv
.FreeObj(3) discarded_rail_sections.csv
.FreeObj(4) track_workers.csv

.Beacon(0) portable_aws_magnet.csv

With Route

; Enclose the route commands related to a TSR within $if()/$else()/$endif() directives…
$if($Sub(100))
    3000, .Beacon 44001;0,    ; portable AWS magnet
$endif()

$if($Sub(100))
    3183, .Freeobj 0;0,    ; 20 mph TSR advanced warning board
$endif()

$if($Sub(100))
    4200, .Freeobj 0;1, .Limit 33;0,  ; commencement of 20 mph TSR
$else()
    4305, .Freeobj 0;3;5,    ; no TSR so show discarded old rails instead
$endif()

$if($Sub(100))
    4400, .Freeobj 0;2, .Limit 97;0,    ; termination of TSR
$endif()

It’s also possible to use these new preprocessing directives elsewhere in the route file. For example, a different object could be assigned to a free object index, depending upon a condition being true. You can also nest these new preprocessing directives; i.e. place $if/$else()/$endif() selection statements within other selection statements, for example:

; a nested $if()/$else()/$endif() selection statement
$if($Sub(100))
    4200, .Freeobj 0;1, .Limit 33;0,  ; commencement of 20 mph TSR
    $if($Sub(101))
        4205, .Freeobj 0;4;-4,  ; track workers shown based upon another $Sub variable but only if the TSR is shown
    $endif()
$else()
    4305, .Freeobj 0;3;5,    ; no TSR so show discarded old rails instead
$endif()

Support for these new preprocessor directives is still experimental, and not guaranteed to be included in the next stable release of openBVE, however I’ve not encountered a problem with the feature thus far, at least with regard to the things I’d like to use the feature for, and it’s really very easy to use. Some more testing would be beneficial, but I hope the feature stays, and I’ll certainly be making use of it if it does.

Other news – Chashinai .NET plugin updated with AI support, new Network West Midlands video, and FEVF railway updates

Information IconIn case you weren’t aware, the new cross-platform .NET plugin which is used by the trains which run on the Chashinai Railway, was updated earlier this month to include AI support, which is a lot of fun, especially with the Chashinai 9000 series train complete with ATS-Sn, ATS-P, ATC and TASC. As with the new UkTrainSys plugin, the updated Chashinai Railway plugin’s AI support assists openBVE’s AI human driver in operating the safety systems, so you can enable the AI human driver and even watch the startup procedures handled by the AI driver. The plugin source code is available as well, of course.

Screenshot Screenshot
Chashinai Railway Takahagi Line (9000 series train, ATS-P, AI driver enabled)

I also wanted to quickly mention that Steve Green has posted a short YouTube video of the upcoming Network West Midlands 2010 update, demonstrating animated level crossing barriers interlocked with the signalling, together with updated objects such as a new AWS magnet, which I thought looked really good:

Several other videos of the upcoming NWM release can also be found on Steve’s YouTube channel, and screenshots can be found on the Network West Midlands website.

Screenshot
Update: 22nd November 2010 @ 00:15 UTC

Lastly, I wanted to show something a little bit different – Roberto Benini, developer of the FEVF (Ferrovia Elettrica Val di Fiemme) railway, has released an animated Mallet Henschel & Sohn 6036 steam loco for openBVE, which is well worth a look, and I noticed that the FEVF Railway itself now has some moving trains at Cavalese station too. The route and train can be downloaded here:

Roberto Benini has also posted a YouTube video of the new loco:

Tags: , , , , , , , , ,

12 Responses to “New cross-platform .NET plugin for UK trains released, class 323 3D cab and Cross-City South v1.31.09 update, openBVE v1.2.9 development branch, .NET plugins and AI support”

  1. Alex says:

    Interesting article Anthony. And thanks for the update news. 🙂 I am not sure whether you know or not, but you have a fan here. 😀 In other note, do you know if the mono is still having trouble? I tried the recommended manual linux installation from this website, and recently (not more than a week) I got errors which crashed or blocked me from using the game. I realize openbve has their own forums, but I prefer all the information in one page to make it more easy readable.
    Alex

    • Anthony_B says:

      Thanks Alex. 🙂

      I’ll look into the Mono / manual installation issues for you, and find out what the current situation is; I’ll post again when I’ve done so.

  2. Melle says:

    Thank you! The new plugin works like a charm on my mac!

    Cheerio,

    Melle

  3. Jan says:

    Great news. As you’ve mentioned tap changers/support for AC locos, do you know about this page: http://www.locodocs.co.uk/brmanuals/81-85-86-87General-33056-102-1985.htm ? I’ve found this link sometime ago on a forum, though I can’t remember whether it was one of the predecessors of BVE Terminus or somewhere else. Anyway if you didn’t already know about it, the information in there should provide enough material for a standalone Class8x plugin, if you’ve got the time for that, of course. 🙂

    • Anthony_B says:

      I didn’t know about the link, many thanks for posting it – absolutely fantastic! The part discussing neutral section driving technique, is what inspired today’s blog entry and update. 🙂

  4. Alex says:

    Well, it turned out to be another problem that I can fix with some time. The plugin is awesome when I tested it on my Vista hard drive. I actually enjoyed letting the AI take control while I watched the scenery from the control panel (First Camera in case I got the name wrong lol), and I usually speed this up, but the hand animation was just great. I actually felt like I was a train conductor in training. Thank You 🙂

    I don’t mean to be rude, but I did notice an odd behavior from the animation when it reached the final stop Birmingham New Street on 323-Spring-2005-Dry Cloudy for the Birmingham-Cross-City-South route. When the AI stopped the train it had it’s left hand on the power stick, but had another hand going back and forth from neutral to forward on the reverser stick. (looked like another left hand not sure if this was meant to be the right hand).

    • Anthony_B says:

      I’m really glad you enjoyed the AI support feature. 🙂

      I wasn’t able to reproduce this particular odd behaviour unfortunately, although I’ve since updated the AI support code. Does the latest UkTrainSys v0.3.1.2 still have the same problem with openBVE v1.2.9.15?

  5. Jan says:

    Somehow my comment didn’t appear, so I’ll try again.
    Nice to hear about this, as you’ve mentioned tap changers, if you didn’t already know about it, this page http://www.locodocs.co.uk/brmanuals/81-85-86-87General-33056-102-1985.htm might contain some useful information about the operation of Class 81/85/86/87 locos. And there’s are Class 90 manual, too.

    • Anthony_B says:

      Sorry about that; the blog tends to get a lot of spam comments, so I need to approve each post manually, and I was just a bit busy during the past couple of days. I’ve changed a setting now, so if anyone has had a comment approved previously, it should appear straight away.

  6. BVE4TRAINZ says:

    hey mate!! Are you alive? I have not heard from you in months! hows the developing going? Or have you stopped? if you can please E-mail me on the E-Mail given. Cheers, Ben.

  7. Dan says:

    Any news on upcoming releases? hope everythings going ok 🙂

Leave a Reply