Beatle's's profileBeatle's BlogPhotosBlogLists Tools Help

Blog


    June 30

    Function Overloads

    Hey All,

    In the C++ native client’s documentation, some of the function descriptions list default values for some of the function parameters.  In C++, this means you can use a shortened form of the API function and the default values will be used.  While .Net/C# doesn’t currently support default parameter values, it does support function overloading, and I have used that ability in the new Managed SimConnect Client library to provide overloaded functional equivalents for the C++ shortened forms (I’ve used the same default values as listed in the C++ docs, so you can reference those for API specific defaults).  So when working in Visual Studio, pay attention to the IntelliSense popups, as they will list all the available overloaded versions.

    I’ve also added a few “specialized” extra functions for dealing directly with the User Sim Object (basically, these functions don’t take a dwObjectID value, they internally use the constant that specifies you want to talk to the user):

    RequestDataOnUserSimObject

    SetDataOnUserSimObject

    SendClientEventToUser

    The parameter list for these APIs is equivalent to their non-User specific versions, except the dwObjectID param isn’t included in the list.

    Another variety of overload I’ve used is to accept different types of data to the same API call.  The Text function uses this ability to provide a version of the function that takes a regular string (same as the C++ version) and also a version of the function that takes an array of strings (this version useful with the SIMCONNECT_TEXT_TYPE.MENU flag so you don’t have to embed nul chars(‘\0’) in your string.

     

    A couple of samples

    The MapInputEventToClientEvent function is a good example.  It’s full blown version contains 7 function parameters, but the function is valid with as little as the first 3 parameters defined.  In the original managed wrapper, you would always need to enter all 7 parameters like this:

    sc.MapInputEventToClientEvent(Groups.GroupID, “shift+a”, Events.ShiftA, 0, SIMCONNECT_UNUSED, 0, false);

    but with the new client library, you can use the shortened form:

    sc.MapInputEventToClientEvent(Groups.GroupID, “shift+a”, Events.ShiftA);

     

    The Text function can be used to display both scrolling/paging text across the top of the FSX/ESP display and to display a 1 up to 10 selection dialog.  With the original managed wrapper, you would have to define the string for a selection dialog something like this:

    string strSelectionDlg1 = “Dialog Title\0Selection Prompt:\0Selection 1\0Selection2\0Selection3\0\0”;

    but with the new client library having an overload that takes a string array, you can define that same selection dialog this way:

    string[] strSelectionDlg1 = { “Dialog Title”,
                                  “Selection Prompt:”,
                                  “Selection 1”,
                                  “Selection 2”,
                                  “Selection 3”};

    which is much easier to read.

     

    Stay tuned for more

    If you notice any overloads missing or just want to suggest some additional overloads, drop a line in the SimConnect forum on FSDeveloper.com.  And keep an eye here on the blog for additional info on the new Managed Client Library.

     

    Tim “Beatle” Gregson

    June 24

    Initializing and Connecting

    [This is the first in a small series of posts covering some of the new/different parts of the client library compared to the version in the official SDK.  In this first installment we’ll cover Initializing and Connecting.]

    I don’t use the SimConnect.cfg file with its index based selection of a set of connection parameters; for one, that just flat out wouldn’t work for a Silverlight application, and there are several other environments where that doesn’t work well.  So instead, I just take the server information directly via the Open() function.  You application is free to use whatever method it wants to query/store this information.

    Here's some prelim docs for the constructor, open, and close functions.

    Constructor (Desktop version of client)

    new SimConnect(object syncObject, bool bSerializePackets);

    Where

    syncObject

    Synchronization object used to marshal the OnRecvXxx calls onto your applications UI thread.  This can be either a Window/Control for a WinForms app, or the Dispatcher object for a WPF app.  If this value is null, then the OnRecvXxx calls will be made on a background thread, and you will need to do any UI thread syncing where needed. 

    Default value is null.

    bSerializePackets

    If true, the OnRecvXxx handlers will be serialized through a background thread provided by the client library.  If syncObject is non-null, the OnRecvXxx handlers will be UI thread synced from this background thread.  This ensures that the OnRecvXxx handlers are called in the same order the data was received from SimConnect.  Only one OnRecvXxx handler will be active at the same time

    If false, the OnRecvXxx handlers are called directly from the IO Completion port handlers (OS/Framework provided background thread).  If syncObject is non-null, the OnRecvXxx handlers will be UI thread synced from this IO Completion port thread.  Multiple OnRecvXxx handlers can be active at the same time (and the same OnRecvXxx handler can be called a second time before the first instance has returned).  You will need to know your multi-threading and reentrant programming requirements when using this option with syncObject = null.  ** Note – this option hasn’t been extensively tested yet, so if you are trying it and things aren’t working, try chaning this back to true and see if that clears up the problem :->  **

    Default value is true.

     

    Constructor (SilverLight version of client)

    new SimConnect(object syncObject);

    Where

    syncObject

    Synchronization object used to marshal the OnRecvXxx calls onto your applications UI thread.  For SilverLight, this value must be a Dispatcher object.  Silverlight is much touchier about anything much running on a background thread (including updating data bound fields, which WPF is just fine with on a BG thread), so the Dispatcher object is required for SilverLight applications and all OnRecvXxx events will be UI thread sync’d, a null value for this field will throw an exception.

     

    Open function (Desktop version of client)

    Open a local connection using the default named pipe

    void Open(string strAppName);

    Where

    strAppName

    String name for your client application

     

    Open a TCP/IP connection (IPv4 or IPv6)

    void Open(string strAppName, string strHostName, Int32 iPort, Boolean bIsIPV6);

    Where

    strAppName

    String name for your client application

    strHostName 

    String name for the server to connect to.  This can be either a machine name or the IP address as a dotted string “192.168.2.110”.  Passing either a null or an empty string for this parameter will default to localhost.

    iPort

    The port number to connect to.  Passing a 0 for this value will default to looking up the port number of the currently running local instance in the registry.  Only valid if passing null, empty string, “localhost”, or “127.0.0.1” as the strHostName parameter.

    bIsIPV6 

    Boolean value that selects between IPv4 (false) and IPv6 (true).

     

    Open a TCP/IP connection (IPv4 only)

    void Open(string strAppName, string strHostName, Int32 iPort);

    Where

    strAppName

    String name for your client application

    strHostName 

    String name for the server to connect to.  This can be either a machine name or the IP address as a dotted string “192.168.2.110”.  Passing either a null or an empty string for this parameter will default to localhost.

    iPort

    The port number to connect to.  Passing a 0 for this value will default to looking up the port number of the currently running local instance in the registry.  Only valid if passing null, empty string, “localhost”, or “127.0.0.1” as the strHostName parameter.

     

    Open a named pipe connection

    void Open(string strAppName, string strHostName, string strPipeName);

    Where

    strAppName

    String name for your client application

    strHostName

    String name for the server to connect to.  This can be either a machine name or the IP address as a dotted string “192.168.2.110”.  Passing a null or empty string will default to localhost.

    strPipe

    String name for the named pipe.  Passing a null or empty string will default to “Microsoft Flight Simulator\\SimConnect” (which works with both FSX and ESP).

     

    Open function (SilverLight version of client)

    Open a TCP/IP connection (IPv4 only)

    void Open(string strAppName, string strHostName, Int32 iPort);

    Where

    strAppName

    String name for your client application

    strHostName 

    String name for the server to connect to.  This can be either a machine name or the IP address as a dotted string “192.168.2.110”.  Passing either a null or an empty string for this parameter will default to localhost.

    iPort

    The port number to connect to.  Passing a 0 for this value will default to looking up the port number of the currently running local instance in the registry.  Only valid if passing null, empty string, “localhost”, or “127.0.0.1” as the strHostName parameter.

     

    Close a connection

    void Close();

    June 22

    Announcing a new Managed SimConnect Client SDK

    Hey All,

    Today I’m releasing the first public beta of my new Managed SimConnect Client SDK.  This SDK can be used to build managed SimConnect clients, both desktop (Console, WinForm, WPF) and web (Silverlight).  For the impatient, here’s the download link:

    http://beatlescloudstorage.blob.core.windows.net/downloads/BeatlesBlog.SimConnect.SDK.Beta1.zip

    And here’s a more nicely formatted version of the ReadMe file included in the download:

    Welcome to Beta 1

    Enclosed is the SDK for the Beatle's Blog Managed SimConnect client library.  This SDK can be used to build both Desktop clients (Console, WinForm, & WPF) and SilverLight clients.  The client libraries included are built using the Any CPU setting, so you should use this setting in your own projects, unless some other requirement of your client needs a different setting.  The client libraries included are written in 100% managed code with no dependencies on any existing libraries/DLLs/etc (except for a minimal number of .Net FrameWork libraries).

    Benefits of new client library:

    • No reliance on SimConnect.MSI or the native client library it installs.
    • Ability to compile projects using the Any CPU build setting.
    • Ability to build SilverLight based web clients.
    • Simpler Data Structure Definition/Registration system using custom attributes.
    • Overloads provided for those APIs where appropriate allowing use of default values like the native library has.
    • Ability to pass an instance object to a RequestDataOnSimObject call, allowing the instance to be auto updated as new requested data is received.
    • Working support for Client Data API functions
    • No SimConnect.CFG file required/used, Server Name and Port provided in the SimConnect.Open(...) call.
    • In general, more .Net friendly :->.
    • Uses a Ships-With model i.e. you ship the library with your application, installed in the same directory as your application.  An alternate option is to use something like ILMerge.exe to embed the client library directly into your application.
    • Client libraries are compatible with FSX SP2, FSX + Acceleration pack, and ESP v1.  Client libraries will NOT connect to FSX RTM or FSX SP1.

     

    A note on Silverlight Support

    The SilverLight runtime imposes several restrictions on socket communications.  SilverLight applications can only open a port in the range 4502 through 4534, so you will need to modify your SimConnect.XML file to open one or more IPv4 ports in this range.  Here is a sample SimConnect.XML file:

    <?xml version="1.0" encoding="Windows-1252"?>

    <SimBase.Document Type="SimConnect" version="1,0">
      <Descr>SimConnect Server Configuration</Descr>
      <Filename>SimConnect.xml</Filename>
      <Disabled>False</Disabled>

      <!-- Global (remote) IPv4 Server Configuration (SilverLight compatible) -->
      <SimConnect.Comm>
        <Disabled>False</Disabled>
        <Protocol>IPv4</Protocol>
        <Scope>global</Scope>
        <MaxClients>64</MaxClients>
        <Address>0.0.0.0</Address>
        <Port>4504</Port>
      </SimConnect.Comm>

    </SimBase.Document>

    Another restriction is that in order to make a cross-domain connection (which would be any SimConnect connection), the machine you are trying to connect to (the machine that Flight Simulator/ESP is running on) must be running a Silverlight Policy File server on port 943.  See the Samples section below for a simple Policy File server that fills this requirement.

     

    Client Library Files

    • Libs\BeatlesBlog.SimConnect.DLL

    This is the main desktop version of the client library built using .Net 3.5.  If you are building a desktop application, this is the version you most likely want to use.

    • Libs\BeatlesBlog.SimConnect20.DLL

    This is an alternate version of the desktop client built using .Net 2.0.  This version does not include Named Pipe support (as .Net 2.0 doesn't provide this support).  If some other requirement of your application limits you to only using .Net 2.0, then you should use this version of the library instead.

    • Libs\BeatlesBlog.SimConnectSL.DLL

    This is a SilverLight version of the Client library built using SilverLight 2.0, but the library should be usable in a SilverLight 3.0 project.

     

    Solution Files

    • Samples\SamplesBasic.sln

    Solution file contains the 3 basic desktop samples, one each for Console, WinForm, and WPF.  This solution file is compatible with the Visual Studio C# Express product and doesn't require any additional items be installed in order to build.

    • Samples\Samples.sln

    Solution file contains all of the available sample projects.  Some of these have extra requirements (SilverLight tools, Silverlight ToolKit, Virtual Earth SilverLight Map Control CTP, Virtual Earth 3D Map control).

     

    Basic Sample List (those in SamplesBasic.sln)

    • Samples\Console\SimConnectTestConsole

    This sample uses the MENU version of the Text(...) function to display a heirarchical set of selection dialogs that allow testing several SimConnect functions.  Built using the .Net framework 3.5.

    • Samples\WinForm\SimConnectTestWinForm

    This sample displays all of the Aircraft (User and AI) in a detail mode ListView showing Lat, Lon, Alt, Pitch, Bank, Heading.  Menu allows connecting to either a local SimConnect instance (if one is available) or a remote SimConnect instance.  Built using the .Net framework 3.5.

    • Samples\WPF\SimConnectTestWPF

    This sample displays all of the Aircraft (User and AI) in a data bound ListBox using a custom DataTemplate to display Lat, Lon, Alt, Pitch, Bank, Heading in Degrees and Radians/Feet and Meters.  Built using the .Net framework 3.5.

     

    Enhanced Sample List (those only in Samples.sln)

    • Samples\WinForm\WinForm20Map

    This sample is a WinForm application built using .Net 2.0 and the BeatlesBlog.SimConnect20.DLL version of the client library.  This sample also uses a Virtual Earth 3D (VE3D) map control, which you can install by going to http://www.bing.com/maps and clicking on the 3D button in the map nav bar.  Once connected, the application creates a custom Camera Controller that provides a "cockpit view" from the user aircraft Lat, Lon, Alt, Pitch, Bank, Heading.

    • Samples\WPF\ClientDataTest

    This sample shows how to use the Client Data API functionality in the client library.  Built using .Net 3.5

    • Samples\SilverLight\SimConnectTestSilverlight

    This sample is basically the same as the SimConnectTestWPF sample, but written as a SilverLight application.  There is also an associated ASP.Net webpage project.  Built using SilverLight 2.0.

    • Samples\SilverLight\MovingMapSL\MovingMapSL

    This sample uses the CTP Virtual Earth Silverlight Map control, available from http://connect.microsoft.com.  There is also an associated ASP.Net webpage project.  Built using SilverLight 2.0.

    • Samples\SilverLight\SilverLightPolicyServer

    This is the sample Silverlight Policy Server mentioned above.  You must be running this, or a similar utility, on the same machine as Flight Simulator / ESP in order for Silverlight Clients to be able to connect to it.

     

    Documentation

    At the moment, the documentation consist of this readme file and the sample projects included in this SDK.  Please keep an eye on my blog for future posts related to the new client library.  Please use the FSDeveloper SimConnect forum for questions, suggestions, and bug reports.

    Wow, look at all the cobwebs in here

    <cough/><cough/>

    Yes, it’s been quite awhile since I last posted, sorry about that.  Quick catch up, Aces got shut down and for the time being, I’m still employed at Microsoft.

    Just a quick post for now to blow out the cobwebs (and make sure Live Writer is setup correctly).  I should have some more interesting posts in the next few days.

    <cough/><cough/>

    Tim “Beatle” Gregson

    July 21

    In-Process DLL SimConnect Client Sample

    Hey All,

    In my last blog post, I mentioned we had a new download area with some new samples and that I had a couple of samples that needed some minor cleaning up and then they would be posted there.  Well one of those has been posted there, the In-Process DLL SimConnect Client sample (actually, it was posted almost 2 months ago, I'm just now getting around to blogging about it :-> ).

    I wrote this sample because I noticed we didn't have any in-proc DLL samples in the SDK. 

    First off, what does that mean, In-Process?  It means that the DLL SimConnect client is loaded within the ESP/FSX process space instead of within its own process space like an external .EXE based SimConnect client.  This has some good points and some bad points (depending on what you are trying to do). 

    The good points are that you register a callback function once, right after the SimConnect_Open call, and that callback will get called directly by the Server Side SimConnect code when messages are available for your client.  This bypasses all of the networking layer (ie no TCP/IP, no Named Pipes, you get a direct function call into your code from the Sim side code).  This also means you don't have to run your own HWND based message pump, you don't need to use a background thread with an Event Handle, you don't need to use a timer based query scheme, etc - in other words, it makes life much easier.

    The bad points are that you can't really do standard windows based UI this way - well, you can but its not guaranteed to work (DirectX and GDI get into fights with each other sometimes, especially in full screen mode) unless you put the Sim into Dialog Mode first.  You can still add menu items, use the SimConnect_Text function to display both scrolling text and simple "select one of the below" style dialog boxes.  Another bad point, in some folks eyes anyway, is you can only use C++ to write an In-Proc DLL client.  Also, since your client is running within the ESP/FSX process space, if your client code goes nuts (causes a fault of some sort, or goes into an infinite loop) you can take down the entire Sim.

    So, if you want to write a client with lots of UI and/or you want to use managed code, stick with an out-of-proc EXE style client, but if you can live within the above restrictions, then an in-proc DLL style client may be the way to go.

    Things that would make a good in-proc DLL style client:

    • adding Custom Action support for missions
    • transferring data between the Sim and some external app
    • interfacing custom hardware to the Sim

     

    What the sample does

    The sample is fairly simple in what it does.  It adds a couple of menu items to the AddOn menu (Show Weather Menu and Show Time Menu).  Selecting one of these menu items will use SimConnect_Text to show a "Select on of these options" dialogs, the weather dialog allows you to query the dialog from either the current location or from SeaTac, the time dialog lets you set the time to either 12:00 Local or 00:00 Zulu.  Selecting one of the weather reporting options will query for the Metar string at the requested location, and then use SimConnect_Text to display the Metar string as a scrolling message across the top of the screen.  Selecting one of the time set options will, surprisingly enough, set the time accordingly :->

    Hopefully a few of you will find the sample useful.  If you do, or you have any questions about it, drop by the Microsoft ESP Forum to discuss it/ask questions.

    Tim "Beatle" Gregson

    May 13

    New Microsoft ESP OnLine Resources

    Hey All,

    I'm a little late with this news, but Todd, our Developer Evangelist, has been hard at work getting lots of new resources for Microsoft ESP developers online.  We now have our own MSDN Microsoft ESP Developer Center, which includes:

    and if you have an MSDN subscription, you can also download the ESP runtime and SDK from the Subscriber's Download area (I'd provide a link, but my subscription expired and my renewal hasn't gone through yet :-> ).

    Over time we'll be adding additional content to the ESP Developer Center (I've got a couple of samples I need to get cleaned up a little so Todd can post them), so check back often (the team blog and forum area both have RSS feeds available).

    I want to draw a little extra attention to the SDK docs being online.  For those of you who bought the Standard version of FSX or those who just don't want to install the whole SDK, you can now lookup the format and options available in the various configuration files (aircraft.cfg, panel.cfg, etc) online.  If you are trying to find the Microsoft ESP section within the MSDN online docs, just remember that we are under the "Servers and Enterprise Developement" top-level section :->

    Tim

    February 23

    ESP in the news

    I've got another round of ESP news articles for ya.

    Business Week

    This one is a little old, from back in December, but if you haven't seen it yet, take a look:

    Business Week ESP Article

    I particularly like the part about Northrup Grumman using ESP to create a prototype/Proof of Concept on page 2 of the article, since I got to spend a week up in Reston, VA working with this team to pull this off :->  I doubt every Service Provider who uses ESP is going to get a week of my time to help them out, but it was a lot of fun and they were a great group of developers to work with.

    Training & Simulation Journal

    TSJOnline.com has 2 articles on ESP:

    First TSJOnline article - this one mentions Lockheed Martin and FlightSafety have signed up as partners.

    Second TSJOnline article - this one is a more general article on Microsoft entering the Visual Sim market.

    Games Developer Conference / Serious Games Summit

    This next one is an article on Gamasutra about the GDC / SGS last week in San Francisco and the Microsoft ESP presence there - you even get to see a picture of our studio head, Shawn :->

    GDC / SGS coverage

    Microsoft MSDN

    For those of you with a Microsoft MSDN account, you can now download the ISOs for Microsoft ESP for testing purposes from the MSDN Subscriber downloads section.

    Microsoft ESP Home Page

    Our home page has been updated with a short demo video, click and enjoy :->

     

    That's all for now, till next time

    Tim "Beatle" Gregson

    February 11

    SimConnect and WPF

    I've noticed some folks having problems using SimConnect with WPF based apps because there's no easily accessed hWnd and no easily overridden DefWndProc.  Here's a solution that works around those problems and is also usable in WinForms apps if you like.

    In the existing managed samples provided in the SDK, the 2nd param of the new SimConnect(...) line is the hWnd and the 3rd param is the WM_Xxx based message to send to the main window.  For this solution, we will instead pass 0 for both of those params and pass an AutoReset EventWaitHandle object as the 4th param to that call.  Then we will create a background thread that waits for this event to fire and then calls the ReceiveMessage function to handle data received from SimConnect.

    Here's a couple of code snippets:

    This first snippet shows the data used:

    // data
    Microsoft.ESP.SimConnect.SimConnect sc;
    System.Threading.EventWaitHandle scReady = new System.Threading.EventWaitHandle(false, System.Threading.EventResetMode.AutoReset);
    System.Threading.Thread bgThread = null;
    public delegate void MyDelegate();

    And this next snippet shows the code that uses these data items:

    // code
    private void ConnectToSimConnect(void)
    {
        sc = new Microsoft.ESP.SimConnect.SimConnect("VE_SC_WPF", (IntPtr)0, 0, scReady, 0);
     
        bgThread = new System.Threading.Thread(new System.Threading.ThreadStart(scMessageThread));
        bgThread.IsBackground = true;
        bgThread.Start();
    }
     
    private void scMessageThread()
    {
        while (true)
        {
            scReady.WaitOne();
            this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new MyDelegate(scMessageProcess));
        }
    }
     
    private void scMessageProcess()
    {
        sc.ReceiveMessage();
    }

    With the code above, all of the OnRecvXxx callbacks will still happen on the UI thread context, meaning the rest of your code can stay the same as it was when using the hWnd and WM_Xxx message with an overridden DefWndProc. 

    If you would prefer that the message handling and the OnRecvXxx callbacks occur on the background thread context, you can do that with this code snippet instead:

    // code
    private void ConnectToSimConnect(void)
    {
        sc = new Microsoft.ESP.SimConnect.SimConnect("VE_SC_WPF", (IntPtr)0, 0, scReady, 0);
     
        bgThread = new System.Threading.Thread(new System.Threading.ThreadStart(scMessageThread));
        bgThread.IsBackground = true;
        bgThread.Start();
    }
     
    private void scMessageThread()
    {
        while (true)
        {
            scReady.WaitOne();
            sc.ReceiveMessage();
        }
    }

    Doing things this way will require you to handle any thread synchronization that might be required to access any UI elements within each OnRecvXxx callback, but if you aren't accessing UI elements much in your callbacks, then the 2nd way might be more efficient overall, but will require more work on your part to insure things happen on the correct thread.

    I've been playing around with WPF for the last couple of weeks and its a lot of fun and can do some really cool things (repeat after me, DataTemplates are your friend :-> ).  Hopefully the above code snippets will let folks out there write some cool WPF based SimConnect clients.

    Tim "Beatle" Gregson

    November 29

    Microsoft ESP Buzz

    We've posted case studies from a couple of our launch partners on the ESP Website.  They are located on the Resources page.

    Adacel MaxSim Flight Trainer

    The first one, from Adacel, is a .DOC file describing their MaxSim Flight Trainer program.  I'm going to quote the Executive Overview paragraph here, because it really says it all about what ESP is, but do go read the entire Case Study Document.

    Adacel wanted to be first to market with an integrated flight and air traffic control (ATC) simulation solution for flight schools not served by multi-million dollar offerings. It created the MaxSim Flight Trainer based on its own speech-driven Air Traffic Control simulation technology and the Microsoft® ESP™ visual simulation platform. Adacel created the integrated solution in just three weeks with a single developer, and produced a rich, immersive flight simulation experience that it estimates would have taken millions of dollars and months of work to create from scratch. The extensive after-market of add-ons for Microsoft ESP helps to ensure that Adacel and its customers can easily extend the simulation. And the low-cost Windows® hardware on which it runs helps to ensure that the MaxSim Flight Trainer is more cost-effective, scalable, and transportable than traditional, proprietary offerings.

    Acron Capability Engineering

    The second one, from Acron, is a Windows Media Video file produced by Acron describing the ways they are using Microsoft ESP.  Here's a link to some news/press releases from Acron, including information about a couple of support products they will be offering including a 3D modeling program and a HLA interface for Microsoft ESP.

    Northrop Grumman

    This one isn't on our Resources page, but Northrop Grumman has put out a Press Release announcing they will be using Microsoft ESP as part of their C4ISR Route and Mission planning system.  In fact, I'll be up in Reston, VA all next week, at the Microsoft Technology Center, helping them work on a Proof of Concept for this.

     

    Well, that's all the case studies/press releases I've come across so far, will post again as I find more of these.

    Beatle

    November 28

    Microsoft ESP at I/ITSEC

    Several members of the Microsoft ESP team are down in Orlando this week at the I/ITSEC conference.  Anybody interested can check out the I/ITSEC web site, which has the daily conference newspaper, ShowDaily, available as PDF files for each day.  If you take a gander at the Tuesday Nov 27th issue, on page 10, there's a write up about Microsoft ESP.

    Beatle

    November 15

    I've got ESP ...

    No, I can't tell what you are thinking (but stop thinking that or you'll go blind :-> ), I'm talking about Microsoft ESP (ww.microsoft.com/esp) of course.  What is Microsoft ESP I hear you asking (and no, really, I don't read minds), well, I'll let the Press Release answer that as its much better at it than I could be.  And just why am I bringing this up (besides the fact that we just announced the new product today), why because I just transferred to the ESP team a couple of weeks ago of course.  I see great things in the future (and I promise that's the last cheap ESP joke, for this post at least :->).
     
    DEVCON and FANCON
     
    Well, Simulation DevCon 2007 has come and gone now, and from everything I heard both during the DevCon and since it seems to have been a great success (big kudos to the AVSim folks for organizing all the conference logistics).  If you happened to hear there were some announcements at the DevCon that weren't allowed out in public, well see the first paragraph for info about one of them that is now public :->
     
    FanCon immediately followed the DevCon, and also seemed to be well received by those in attendence, although I got to admit, I was pretty much conferenced out after the DevCon and was sorta dragging through the FanCon part.  I did get one of the Vuzix VR920 VR goggles to play with though (more on that after I've had some time with it).  Lots of cool stuff on display including several different styles of motion platforms including muscle powered, electric actuators, and hydraulic based systems (don't recall seeing any pnuematic based systems though).
     
    Welp, I gotta get to sleep.  If the Microsoft ESP link above doesn't work, try it again later, we're experiencing some technical difficulties at the moment :->
     
    Beatle
    November 03

    On the Road Again ...

    ... I don't have to wait to get back on the road again, as I'm on it right now :->.  I'm currently in Grinnell, IA, about to start my second day of a 3 day drive from Virginia to Seattle/Redmond, Washington for both some direct work related stuff and the AVSIM conference next weekend.  If all goes well, I should be in Ogden, UT by the time I stop tonight.
     
    I'll try to remember to post some updates here about the conference, that way I'll have updates that are less than 6 months apart :->
     
    And just to give the post a little Flight Sim-ness, a hint/feature for folks with the XPack and enjoying the online racing feature, wouldn't it be nice to see each individual lap time?  Well, while viewing the in-game version of the race results screen (ie the semi-see through version you get right after crossing the finish line), if you right click on a users name in the list, that item will expand out to show all the lap times, right clicking again will collapse that line back to normal.
     
    Well, gotta get back on the road again, Salt Lake Cit or BUST :->
    March 06

    Band stuff 03/06/07

    Figured I'd post this seperately to keep the XPack news in its own post :->

    Band stuff has been going pretty well.  Dirty Jack has had a few gigs now and they went fairly well.  I decided my 88-key MIDI controllers were just too large and heavy (well the one with hammer action keys anyway) to lug around and setup on stage, so got myself a pair of M-Audio Axiom 61 MIDI controllers to use.  These are very nice controllers if anyone is in the market for a USB MIDI controller (actually, I like just about everything in the M-Audio product line :->), they even have after-touch (first keyboards I've had with that, one of these days I may even figure out how to use it well :->).  They also have 9 sliders, 8 rotary controllers, 8 drum pad like controllers (which I use for stuff like a VibraSlap, CowBell, helicopter sound effect, etc).  They are light enough, but still feel well made.

    Dirty Jack has one more gig currently booked on March 17th (St Patrick's Day) at the Box Seats in Massaponox (which is just a few miles south of my house), and we are currently working on setting up a few more gigs, so if you are in the Northern Virginia area, check out the calendar on our website for future dates and drop by for a listen.

    I've also joined a second band (really more of a 4 piece combo) called Flaming Red Horizon.  I'm playing Bass Guitar in this band.  This band is doing more blues type music, along with some originals written by a couple of the members.  We've had a couple of half gigs (we split the bill with another recently formed band at one gig and also played in a battle of the bands contest) and I think we did fairly well, considering we only had 3 or 4 practices before hitting the stage.  Here's a couple links to some video Dave's wife shot at one of the gigs:

    Voodoo Child

    Smokin' in the Boys Room

    I'm the one wearing the black bass guitar :->

    Tim "Beatle" Gregson

    March 05

    Is that Adrenaline in your pocket, or are you just happy to see me

    As you've no doubt already seen by now, we've finally announced the product I've been working on but couldn't talk about - the Flight Sim X:Adrenaline expansion pack.  XPack (easier to type than Adrenaline :-> ) will include single player and multiplayer air racing including a P-51 Mustang racing aircraft, some new non-racing related missions (no public details on those yet), some new aircraft (no public details except the P-51 mentioned above yet).  And to assuage the fears of the add-on developers out there, we aren't out to put you out of business, but are designing the XPack to include new features that you guys and gals can write your add-ons against (like creating your own air racing courses, creating race specific aircraft add-ons, and a few other bits and pieces that we haven't been cleared to talk about publicly yet).

    The one point in some of the talk (both our official announcements and general talk among the users) that I take a little exception to is that this is something "new" in the Flight Sim franchise (ie releasing an add-on).  Granted it has been awhile since we've done one (OK, back before MS bought us when we were still BAO), but we have released a number of pay for add-ons over the years, including SGA (Sound, Graphics, and Aircraft) for FS4 (I remember this one because it was the first thing I worked on after joining BAO), we bundled Laeming Wheeler's aircraft editing program with some additional goodies (can't remember if that was FS4 or FS5), we released several scenery area add-ons via Microsoft as the publisher, via Mallard publishing, and eventually via our own BAO Publishing (these I remember because I ported them all for release in Japan :->) - all of these scenery areas were included with FS95.  So, this is the first pay for add-on we've released since joining Microsoft 11 years ago, but it's certainly not the first one I've worked on :->

    We also announced a tentative release month for Service Pack 1 (April ish), and announced that the DX10 update has been pushed back some and targeted for release around the same time as the XPack (Fall 07).  Both of these updates (SP1 and DX10) will be free downloads when released, only XPack will be a pay for boxed release (I assume it will be in a box anyway :-> )

    Well, that's enough good news for now

    Tim "Beatle" Gregson

    January 19

    New Train Sim in the works!!!

    Hey All,

    We've lifted the veil a little today on what some of the team has been working on since FSX shipped (not me though, still can't mention what I'm working on :->) and that is Microsoft Train Sim.  This new version is being built on top of the Flight Sim X engine.  Check out the Website for more info.  There's also a feedback form on the site if you want to send your wishlists in (no guarantees we'll implement any of them though :->).

    I've also updated the ACES Bloggers list to the right with 3 new Train Sim related blogs (Yard Limits, Sim Elations, and Rolling).

    So, everyone follow along until the conductor yells "All Aboard" :->

    Tim "Beatle" Gregson

    January 17

    Two posts in one month :->

    Hey all,

    Well, a second post within one month, will wonders never cease :->.  (OK, technically the last post was Dec 30th, but that's less than 30 days ago :->).

    Band Stuff is going fairly well, although I'm still playing catchup on a few of the songs, but its getting there (and the others all sound great, so that just makes me sound better :->).  We're currently getting ready for our first public gig at Box Seats in Stafford County, VA next Saturday (Jan 27 2007), if you are in the area, drop on by for a rockin' show (Dirty Jack ... When you gotta have it LOUD -n- DIRTY) and/or checkout our website for other upcoming dates.

    And for some Flight Sim related stuff, work on Service Pack 1 is still continuing (I've got my SP1 fixes checked in already - MP hosts will be glad to hear they should be able to boot players from their game once SP1 is out in the wild) and there's lots of other activity going on in the team (some of which we should be able to talk about in the near future :->).

    And from the wierd weather department, a couple of days ago it was over 70 degrees here in VA and humid as heck (I was this close to turning the A/C on :->) and today its about 40.  Of course, that's nothing compared to all the snow, ice, and wind storms my co-workers out in the Seattle area have been fighting through the last few weeks.  Drive careful out there guys and gals, I don't want to inherit your code :->

    Well, so long until next time

     

    Tim "Beatle" Gregson

    December 30

    Beatle's Blog: 2.0

    Hey all,

    After a few things distracted me from blogging for a while last spring, I got out of the habit that I hadn't yet acquired (or something like that :-> ).  I'm going to give this blog thing another try but this time over here on Windows Live Spaces (because I can use the new Windows Live Writer software to edit the blogs).  I've reposted the few entries from my previous blog over on MSDN TechNet as entries prior to this one for historical purposes (including the original comments as intact as a cut and paste would leave them :-> ).

    Lets see, a quick recap since my last post:

    • several FSX beta releases went out
    • lots of bugs were found and fixed
    • a demo version of FSX was released (a first for the Flight Sim franchise), in fact, even a beta version of the demo was released
    • final version of FSX was released
    • some stores put FSX on the shelf early
    • release day came and went :->
    • I joined a local 70's, 80's, 90's cover band - Dirty Jack - playing keyboards
    • We played at The Loft here in Fredericksburg on Dec 14, 2006
    • We'll be playing at Box Seats in both Stafford, VA and Massoponax, VA over the next 3 months, check the Dirty Jack Web Site for dates and locations if you live in the area.

    Well, that about brings us up to date for now, hopefully I'll be writing more often this time around :->

    Tim "Beatle" Gregson

    Repost from old blog - Original Post Date: February 14, 2006

    New FSX Screenshots are out

    I know its been awhile since my last post, and I completely missed the first round of info we released at CES and the associated screenshots we released about that time.  But, we have some new screenshots out now, the first 3 new ones are available over at AVSIM .  Here's a link to the discussion thread talking about the new screenshots.

    I know I haven't had much FS related on this blog, but I didn't figure folks would be all that interested in changes to our dialog boxes (which is what I'm working on this version) :->.  I mean, how interesting is it to hear that our list controls now have the ability to display graphic images within the cells, or can have different colored text per line or per column, etc.  Useful stuff for us as we design the dialogs, but not exactly earth shattering info for you guys :->.  That and I can only talk about features, etc that have been publicly announced (which granted, doesn't cover a whole lot just yet :->) further limiting what dialog/UI things I can talk about, even if anybody did find them interesting.

    So, go check out those screenshots and I'll se ya around.

     
    Original Comments
    # re: New FSX Screenshots are out

    I for one am interested in your work, granted, not the most important part of the sim, but think of it this way.....The dialog boxes are the very first thing one would see when starting FS and so consider them a "window to a world" and yes, that DOES have impact!
    I'm sure you're doing great work, especially gfx within dialog boxes, as beforehand, it was sometimes like trying to 'paint a room through a letterbox stuck on the door.'

    Wednesday, February 15, 2006 1:51 AM by André Hedegaard

    # re: New FSX Screenshots are out

    Well I for one, am glad the reports of your demise were GREATLY overstated.LOL
     Denny

    Thursday, February 16, 2006 10:56 AM by delta november

    # re: New FSX Screenshots are out

    Well, I'm very interested in how interaction with ATC might be improved.  I don't like having to use the keyboard.  Any thoughts on adding mouse/wheel interaction to it?

    Thursday, February 16, 2006 10:33 PM by Thomas Perry

    # re: New FSX Screenshots are out

    it's a dirty job, but someone has to do it

    Tuesday, February 21, 2006 9:09 AM by JayCee

    # re: New FSX Screenshots are out

    Hi,
    Well, I think they are very important.  One of my favorite improvements in FS2004 was to be able to select the current Flight name in the Save dialog (to be able to overwrite an existing Flight).
    I hope to see much more of that!
    Thanks,

    Wednesday, March 01, 2006 3:36 PM by tgibson

    Repost from old blog - Original Post Date: December 04, 2005

     

    Hey Look, Geometry really does come in handy in everyday life :->

    First off, sorry for the rather large gap since my last post (to all 3 or so of you that aren't related to me that read this :->). 

    Now, for that Geometry reference...

    I was up in Wilkes-Barre, PA over Thanksgiving helping my parents move furniture and boxes and whatnot around their new house (well, it's an old house, but its new to them :->), they had just moved the weekend before Thanksgiving.  The previous owner of the house had finished the basement, but it has a really low ceiling (maybe 6' 4" to 6' 6").  They had some guys unload the truck for them and place most of the furniture, but when Mom showed me the basement, there was this white particle board shelf laying on its side.  When I asked where it needed to go, Mom said it was going to have to go back upstairs, because the movers couldn't get it to stand up in the basement because of how low the ceiling was.  At first I just accepted that (since everytime I moved around I seemed to be hitting my hands on the ceiling, seemed reasonable to me :->), but I kept looking at the shelf and something in the back of my head kept saying there was something wrong here.  Eventually I realized what it was.  The shelf was laying on its side (this is a 6ft high by 2 ft wide by 9 inches deep shelf), and I suddenly asked, "Hey, when they tried to stand this shelf up, was it laying on its side like this?", and Mom said "Yes".  So I had the bright idea to lay the shelf on its back and then stand it up, and it JUST cleared the ceiling ( sqrt((72 * 72) + (9 * 9)) is less than sqrt((72 * 72) + (24 * 24)) ).

    So, sometimes you really can use math in real life, thanks Mr Gower (my High School Freshman Year Geometry teacher).

    And for those who think you have to be a math wiz to be a computer programmer, the above was more math than I generally use at work.  Of course, not much call for math when doing dialog boxes and UI widgets (except for converting to and from meters, feet, miles, etc - and we have utility functions that do that sort of stuff for us :->), lots of cajoling windows messages into the right function/handler, but not much math.  Which isn't to say I've never used math for work, back in the old DOS days of FS4 and FS5, I used to do 2d graphics drivers, and for Tower I did some 3D to 2D point projection stuff (cylindrical projection to match the panoramic pictures we were using for our airport backdrops), so I did use some math then :-> 

    I actually did do well in math in school, until Calc 2, which I took twice (at 2 different colleges) and got a C both times, at which point I decided me and math had gone far enough :->

    All right, that's enough for now, getting close to bed time here on the east coast, and according to the weather report, I might be waking up to white stuff on the ground.

     
    Original Comments
    # re: Hey Look, Geometry really does come in handy in everyday life :->

    Speaking of UI widgets and windows; please, please, please, allow the auxilliary windows to scale to the resolution of the screen in the next version. My laptop is stuck at 1920 x 1200, and when I look at the login and map windows, etc of FS (IOW, non-flying windows), they are really small and hard to make out because they are stuck at 800x600 or something, and I have all this wasted black space that if the window could scale to the resolution of the screen I'd be able to see those little windows better. (<--fan of runon sentences). Or maybe you know of a switch I can throw to turn this kind of functionality on? I've tried everything. Scaling is turned on in my video card (nVidia 4200 Go 64 MB), I've tried it both on and off.
    BTW, and you can tell everyone this, FS runs great on my Dell D800 1Gig Mem, 1.7 GHz PentiumM, 64MB nVidia 4200 go laptop. Thank you. It's not easy to keep it that way (since I keep downloading more and more addons), and I often have to put blocks of ice under it to keep it cool enough to run fast, but, I am very happy with how it runs and am always amazed at what you can do with FS. I have done some simple scenery and aircraft panel design (to match that of my own plane and areas that I fly), and I also really appreciate that you all built FS to be expandable.
    Thanks,
    Thomas

    Thursday, December 08, 2005 1:45 PM by Thomas Perry

    Repost from old blog - Original Post Date: November 10, 2005

    Department of Prognostication - The demise of Sony/BMG

    OK, this may be more wishful thinking than prognostication :->.  Why am I predicting/wishing for the demise of Sony/BMG?  Well, if you haven't already seen this elsewhere in the blogosphere, start with this article by Molly Wood on C|Net: http://www.cnet.com/4520-6033_1-6376177.html

    Apparently, Sony has come up with yet another stupid, ill-thought out (at least from the consumers standpoint, I'm sure it meets all of their requirements :->) DRM scheme to keep us from exercising our Fair-Use rights to the CD music we buy (in fact, the CDs come with a EULA that basically states that, like computer software, you are only licensing the right to use the music on the CD, not buying the CD outright).  The truly nasty part of this DRM scheme is that is uses a "root-kit" in order to hide the files used to implement the DRM scheme, and according to reports on the net, the hidden DRM software also "phones home" to Sony, sending along what CD and track you are playing and the IP address of the computer that is playing it.  As if that wasn't bad enough, attempting to remove this malware from your computer can permanently trash your Windows OS install from a minimum of disabling the CD-ROM drive in your computer up to causing the computer not to be able to reboot anymore.  Also, the root-kit that they install can be used by other malware-types to hide their own files without them even having to ship/install their own rootkit on your computer.

    From what I've read, its quite likely that this DRM scheme will be found to violate several existing US and international computer fraud statutes - I find it humorous that in Sony's attempts to keep us from breaking the law, they have resorted to breaking the law themselves, and hope that if they are found to be breaking the law the various courts go after them with gusto :-> (apparently there is already investigation underway in Italy relating to this).

    So, when shopping for CD's for your loved ones this holiday season (or personal/home electronics devices for that matter), "Just Say No" to Sony/BMG.

    Well, enough ranting for now :->, I should get back to work.

     
     
    Original Comments
    # re: Department of Prognostication - The demise of Sony/BMG

    I think the situation is horrible, but I honestly believe that Sony is mostly guilty of ignorance, as opposed to malice.
    Sony isn't a software company. They probably knew they wanted some kind of DRM protect, they licensed the software to do it, and away they shipped.
    I believe they're most likely guilty of not completely understanding the situation they got themselves in.

    Thursday, November 10, 2005 5:53 PM by Vincent

    # fxwzdu6@mail.ru

    ringtones free

    Thursday, July 06, 2006 4:49 PM by fxwzdu6@mail.ru

    # hsr9tau@dmoz.org

    funny ringtones

    Sunday, August 20, 2006 1:51 AM by hsr9tau@dmoz.org