|
IECC8
Oct 1, 2018 10:50:31 GMT -6
Post by hawk777 on Oct 1, 2018 10:50:31 GMT -6
My apologies if this is off-topic here, but I thought it might be of interest to people in this community. Over the past year and a half or so, in my Copious Free Time (hah), I have been working on a project called IECC8. The purpose of this project is to develop an external dispatcher program for Run8 in the style of the United Kingdom's modern control centres. This was very much inspired by SimSig, but has nothing to do with that software other than a similar user interface; IECC8 doesn't borrow any code from SimSig nor is it affiliated in any way. Today, IECC8's core logic and communication seems to work fine, and the rest is mostly a data entry and layout problem. I've so far only developed the Cajon Run8 route; I want to cover all of the southwest region but time is limited and I haven't really been keeping up. The plan was always to share IECC8 with the community for free, as an open source project. I had hoped to get it more developed before doing so, but that obviously didn't happen. This doesn't mean I'm going to give up on it; however, if anyone else wants to help, send me a message and I'll be happy to take contributions. Primarily, I wanted to start sharing the project with the Run8 community. IECC8 has GitLab and GitHub pages where you can get the code and contribute (merge requests at GitLab and pull requests at GitHub will both be accepted). At present there aren't any compiled releases (though I can easily enough publish one if there's demand), so you'll need Visual Studio to build and run IECC8; I've been using Visual Studio 2017 community edition, which is available from Microsoft as a free download. If you want to contribute, please let me know ahead of time so we can coordinate and avoid duplicating work. The attached screenshot shows a small part of Cajon near Summit, with a couple of routes set to bring a train out of the siding. The rest of Cajon is implemented, just not visible in the screenshot for size reasons. Attachments:
|
|
|
IECC8
Oct 1, 2018 15:27:25 GMT -6
Post by survivorsean on Oct 1, 2018 15:27:25 GMT -6
Does it actually communicate with the external dispatcher in Run8?
Thanks
Sean
|
|
|
IECC8
Oct 1, 2018 22:07:47 GMT -6
Post by hawk777 on Oct 1, 2018 22:07:47 GMT -6
For those who don’t have Visual Studio installed but would still like to give this a try, I’ve marked what I have so far as version 0.1 and uploaded an EXE. You can find it on Github by clicking “1 release”, or on Gitlab by clicking “Tag (1)”.
|
|
|
IECC8
Oct 1, 2018 22:10:59 GMT -6
Post by hawk777 on Oct 1, 2018 22:10:59 GMT -6
Does it actually communicate with the external dispatcher in Run8? Thanks Sean IECC8 does not communicate with the existing external dispatcher by Mr. Balls, and you do not need it installed. IECC8 communicates directly with Run8 and controls Run8’s signals and switches. You turn on the “Enable External DS” switch in Run8 and then run IECC8, and that’s it; no other software is needed. You can see IECC8 as a replacement or substitute for, or competitor to, Mr. Balls’ external dispatcher, or for TSCAD once that comes out.
|
|
|
IECC8
Oct 2, 2018 10:34:31 GMT -6
Post by survivorsean on Oct 2, 2018 10:34:31 GMT -6
Wow that is interesting. I looked into it but from what I could see the DLL doesn't like others from using it with ominous warnings. Where you able to get support from the team on this? I tried and had some help a few years ago, but I wasn't in position to get any link setup. As far as my personal projects I'm still looking at RTS Dispatcher which I would like to a) be a replacement to TD3 b) possibly be linked to Run8 though that won't be the biggest bread winner. All RTS projects moving forward will likely be some form of payware. Haven't got around to it as of yet, as I have a tendency of getting distracted (dispatching again) as well as procrastinating. I do have the time, as I decided to fall asleep watching YouTube on the couch last night. At least I'm doing something twice a week again that benefits someone Thanks Sean
|
|
|
IECC8
Oct 2, 2018 15:43:48 GMT -6
Post by hawk777 on Oct 2, 2018 15:43:48 GMT -6
Wow that is interesting. I looked into it but from what I could see the DLL doesn't like others from using it with ominous warnings. Where you able to get support from the team on this? I tried and had some help a few years ago, but I wasn't in position to get any link setup. I initially e-mailed Run8 Studios to ask about the dispatcher protocol. At the time I was told to wait a while as the person with that information was on vacation and would get back to me when they got back. They never did, but I certainly didn’t get the impression that the information was secret, just that nobody had bothered documenting it publicly yet, so I went ahead and investigated on my own. I initially used Wireshark to learn that the protocol was built on top of Windows Communication Foundation. I then used Microsoft’s ILDASM to examine just one DLL file; I carefully chose a file that was not part of Run8 itself nor was identical to any file in the Run8 install directory (it was part of Mr. Balls’ external dispatcher), did not have any copyright notice in the file properties, and was marked as allowed-to-be-disassembled (when building a .NET DLL, you can put a marker in the DLL indicating whether ILDASM is allowed to be used on it or not and ILDASM will respect that marker; in this case, the marker said it was allowed). I certainly didn’t copy any files, not even the file I examined; instead, I merely recorded information about the names of the message structures and their fields and the data types involved, then wrote my own code, 100% from scratch, just using that name-and-type information to build the needed structures. I could have obtained that name-and-type information using Wireshark, not disassembling any files, it just would have taken longer. All information gathering from that point on was totally black-box; for example, I then needed to know the ID number of every switch in a route, and I would get that by just connecting a test program which would print out all messages Run8 sent to it, throw the switch in the F3 screen, and then write down the ID number on the map next to the switch—no reverse engineering of any files here, just observing cause and effect. I never saw any warnings of any sort, ominous or otherwise. Maybe they were in a file I didn’t even look at. Worst case, if Run8 Studios doesn’t like IECC8, they can just send me an e-mail and I’ll delete the public repositories. It’s not like I’m making any money from this, nor ever want to.
|
|
|
IECC8
Oct 2, 2018 19:46:25 GMT -6
Post by survivorsean on Oct 2, 2018 19:46:25 GMT -6
Well to be honest I don't see them having an issue with it. I think they are just a little concerned of people maliciously using it to screw up servers and/or their product. They had quite a bit of threats back in the day and pirates etc. But honestly I think they get a bit too up tight, but that is none of my business.
I'm going to keep this in mind in fact it has rekindled my thoughts on building my own external dispatcher and/or making something as I said and in some way integrating it to be capable of interfacing with Run8. The only reason why I would keep the Run8 part as the 2nd step is the fear that they may change things up by V3.
But I'd love to be able to work with you and try and help at least get your project working, while learning more about how things work to use in my projects. Of course my projects will be payware. I wouldn't have payware just for Run8 anyways due to lack of market. But TD3 is a huge market that I can't resist trying.
Let me know what you think. I'll talk about this tonight in a live stream as well.
Thanks for the information and I look forward to your project and would be happy to beta test what I can for you.
Thanks
Sean
|
|
|
IECC8
Oct 2, 2018 21:46:29 GMT -6
Post by hawk777 on Oct 2, 2018 21:46:29 GMT -6
Well, if you want to look at my code to get an understanding of how the protocol works, and get the layout of the messages and what they mean, then by all means go ahead; I’d love to see more external software talking to Run8 (even though GPL3 means you can’t outright copy any of my code unless you’re also making an open-source program). Maybe eventually someone could use the dispatch protocol to ping a server, find out where all its trains are (although it doesn’t tell you about ones that are in non-CTC territory), and then showing the result on a Web page? Could be really neat to work that in with the registries that public servers (like SWRS) use!
If you want to contribute to IECC8, if you haven’t yet, then please give it a try. Most of my recent work on it has been just gathering data and entering it in XML files which describe all the signals, switches, track circuits, and routes available in the game, then also figuring out the graphical layout to use and building that. That could be done even if you haven’t had much experience with .NET development (not sure if you have or not). It’s… not all that interesting, though. If you want to give it a go, let me know and I can explain how everything fits together.
The controls are pretty simple. Left-click on two consecutive signals to set a route between them. Right-click on a signal to cancel the route. Clicking switches moves them, but generally doesn’t need to be done (they move automatically as part of setting a route). The middle button is used for less-common things, like putting switches in manual mode or showing a flag-by aspect on a signal. This will all be documented somewhere more appropriate when I get around to it, but for now might as well leave it here.
|
|
|
IECC8
Oct 3, 2018 17:50:18 GMT -6
Post by survivorsean on Oct 3, 2018 17:50:18 GMT -6
Sounds like a plan.
|
|