Giter VIP home page Giter VIP logo

simulator-controller's Introduction

Simulator Controller

Simulator Controller is a modular and extandable adminstration and controller application for complex Sim Racing Rigs. At the core is a comprehensive plugin capable automation framework, which can use almost any external controller hardware, such as Button Boxes, to control typical simulator components such as SimHub, SimFeedback and alike. Beside that, Simulator Controller also comes with several voice chat capable assistants, which are based on artificial intelligence technologies. The first, a kind of Virtual Race Engineer, will assist you during your races to keep the hands on the wheel. It will handle all the cumbersome stuff, like preparing a pitstop, take an eye on the weather forecast, calculate damagae impact on your lap times, and so on. The second assistant, a Virtual Race Strategist, will keep an eye on the overall race situation and will develop and adapt strategies depending on race position, traffic and weather changes. Beside that, Simulator Controller brings even a bunch of other functionality and features to make the life of all of us virtual racers even more fun and simple. You will find a comprehensive overwiew of all features later in this document, but first things first...

Donation

If you find this tool useful, please help me with the further development. Any donation contributed will be used only to support the project.

Another possibility is to use Patreon to give me a hug, and as a benefit, you might get access to the public Team Server for your multiplayer endurance races.

Thank you very much for your support!

Download and Installation

Installation is very easy. For first time users I recommand using the automated installer below. But there are different download and installation options available. Please see the complete documentation about Installation & Configuration for more information.

Antivirus Warnings

The programming language used for building Simulator Controller uses some really nasty tricks to control Windows applications, tricks also used by malware. Therefore, depending on your concrete Antivirus program, you may get some warnings regarding the Simulator Controller applications. I can assure you, that there's nothing about it. But you can read about these issues in the forums of AutoHotkey itself. If your Antivirus programm allows exception rules, please define rules for the Simulator Controller applications, otherwise you need to have a beer and search for another Simulator Controller tool. Sorry...

If you don't want to use the automated installer (or you can't cause of your Antivirus protection), you can manually install one of the versions below. There are separate download links for the current development build and at least the two latest stable releases. Download one of these builds and unzip it anywhere on your hard disks. Beginnging with Release 3.5.2, you then need to run the "Simulator Tools" application in the Binaries folder. This will guide you through the remaining installation process. For release information, even for a preview on upcoming features in the next stable build, don't miss the Release Notes.

Automated Installer

Simply download and run Simulator Controller.exe (you may have to deactivate your Antivirus or Browser download protection). This small application will connect to the version repository and will download and install the latest version automatically for you. If you want to install a version other than the current one, no problem. This is possible by downloading and installing one of the versions below manually, but consult the documentation beforehand.

Latest release build

VERY IMPORTANT (for users with an already configured installation of Simulator Controller): An automated update mechanism for local configuration databases exists since Release 2.0. Please read the information about the update process carefully before starting one of the Simulator Controller applications. It might also be a good idea, to make a backup copy of the Simulator Controller folder in your user Documents folder, just to be on the safe side. Also, if you have installed and used a prerelease version, it will be necessary to rerun the automatic update. Please consult the documentation mentioned above on how to do this.

3.7.4-release (New features: New "Server Administration" application, New "Team Console" application, Added global functions parseConfiguration and printConfiguration.)

Please read the Release Notes and - even more important - the release specific Update Notes of this version and all the versions you might have skipped, before installing and using this version.

Earlier release builds

3.7.2-release (New features: Vastly reduced memory consumption of assistants in endurance races, Full refactoring of the setup database, Many fixes for "Team Server", Fixed pitstop handling for ACC 1.8, Fixed a bug for "Tactile Feedback" with actions bound to dials, New "Team Server" administration backend.)

3.7.1-release (New features: New "Team Server" for endurance races, New "Team Server" tab in "Simulator Configuration", New "Team" tab in "Race Settings", Bugfix in "Simulator Setup" for Stream Deck configuration support, Fixed label handling in "Simlator Setup", Fixed several other Bugs in "Simulator Setup", Fixed a bug when using mixed scenarios in "Strategy Workbench", Rework of the voice configuration both for locally installed as well as for Azure voices. Version 3.7.1 is a maintenance release for 3.7.0)

Latest development build

None for the moment...

Discord Community

If you want to become a part of the small and very young Community for Simulator Controller on Discord, please use this invitation...

Main features

  • Connect all your external controller, like Button Boxes, Stream Decks, and so on, to one single center of control

    • An unlimited number of layers of functions and actions, called modes, can be defined for your controller. Switch between modes simply by pushing a button or switch a toggle on your controller. Here is an example of several layers of functions and actions combined in five modes:

    • Modes are defined and handled by plugins, which can be implemented using an object oriented scripting language.
  • Configurable, visual feedback for your controller actions

    • Define your own Button Box visual representation and integrate it with the Simulator Controller using the simple plugin support and a graphical layout editor. Depending on configuration, the Button Box window will popup whenever an action is triggered from your controller, even during active simulation, or it might stay open all the time, if you have anough screen space, for example a second monitor.

    • Code your own functions to be called by the controller buttons and switches using the simple, object-oriented scripting language
  • Configure all additional applications to your taste, including the simulation games used for your virtual races

    • Start and stop applications from your controller hardware or automatically upon configurable events
    • Add splash screens and title melodies using a themes editor for a more emotional startup experience
    • Full support for sophisticated application automation - for example, start your favorite voice chat software like TeamSpeak and automatically switch to your standard channel
  • Several plugins are supplied out of the box:

    • Support for Assetto Corsa, Assetto Corsa Competizione, rFactor 2, iRacing, Automobilista 2 and RaceRoom Racing Experience is already builtin, other simulation games will follow
    • Fully customizable plugins supplied for total control of SimHub and SimFeedback - change your settings while racing using the dials and switches on your favorite Button Box
    • Control the calibration curves of your high end pedals by a simple button press with the plugin for the Heusinkveld pedal family
    • Send your predefined kudos and rants to the ingame chat without touching the keyboard
  • Additional support to trigger every function and action from external sources like a voice or gesture recognition software to always keep your hands on the wheel

  • Builtin support for visual head tracking to control ingame viewing angle - see third party applications below

Virtual Race Engineer & Virtual Race Strategist

And, last but not least, an AI based Race Engineer with fully dialog capable voice control will guide you through your race, warn you about critical issues and will help you with the pitstop, whereas the Race Strategist keeps an eye on the race positions, develops a pitstop strategy, and so on. These smart chat bots are independent applications, but are integreated with the ACC and other simulation game plugins using interprocess communication right now. An integration for a new simulation games requires some effort, especially for the necessary data acquisition from the simulation game, but a knowledged programmer can manage it in about three to four hours.

Based on the data sets, that are acquired during your sessions by the Virtual Race Assistants, a very flexible tool allows you to analyze your performance and the performance of your opponents in many different ways.

Another capability of the Virtual Race Strategist is to support you during the development of a strategy for an upcoming race using the telemetry data of past sessions on the same track in similar conditions.

You can even use all this functionality during multiplayer team races using the Team Server, which handles the state and the knowledge of the Race Assistants and share this information between all participating drivers.

Additional features

  • Configurable and automated build tool for developers
  • Sophisticated logging, tracing and debug support to track down any errors while developing your own plugins
  • Fully graphical configuration utilities

Simulator Controller has been implemented mostly in AutoHotkey, a very sophisticated and object-oriented Windows automation scripting language, which is capable to connect keyboard and other input devices to functions in the script with a simple macro language. On the other hand, AutoHotkey also has a lot of robotics capabilities to automate software packages, which do not provide external APIs, by simulating mouse clicks and keyboard input. You can write your own plugins using the AutoHotkey language. To get you started, full source code for all bundled plugins with different complexity from simple to advanced is included.

Included plugins

These plugins are part of the Simulator Controller distribution. Beside providing functionality to the core, they may be used as templates for building your own plugins. They range from very simple functional additions with only a small number of lines of code up to very complex, multi-class behemoths controlling external software such as SimHub.

Plugin Description
System Handles multiple Button Box layers and manages all applications configured for your simulation configuration.
Button Box Tools for building your own Button Box / Controller visuals. The default implementation of ButtonBox implements grid based Button Box layouts, which can be configured using a graphical layout editor.
Stream Deck Tools for connecting one or more Stream Decks as external controller to Simulator Controller. A special Stream Deck plugin is provided, which is able to dynamically display information both as text and/or icon on your Stream Deck.
Tactile Feedback Fully configurable support for pedal and chassis vibration using SimHub.
Motion Feedback Fully configurable support for rig motion feedback using SimFeedback.
Pedal Calibration Allows to choose between the different calibration curves of your high end pedals directly from the hardware controller.
Race Engineer This plugin integrates Jona, the Virtual Race Engineer, with all other plugins for the simulation games, like the ACC plugin. The plugin handles the data transfer between the simulation game and the Virtual Race Engineer.
Race Strategist This plugin integrates Cato, the Virtual Race Strategist, with all other plugins for the simulation games, like the ACC plugin. The plugin handles the data transfer between the simulation game and the Virtual Race Strategist.
Team Server The Team Server supports using the Virtual Race Assistants even in a multiplayer team race. It is based on a serverside solution, which manages the state of the car and assistants knowledge and passes them between the participating drivers.
ACC Special support for starting and stopping Assetto Corsa Competizione from your hardware controller and supplies functions and actions for configurable, automated chat messages in a multiplayer game. Additionally, beginning with Release 2.0, this plugin provides sophisticated support for the Pitstop MFD of Assetto Corsa Competizione. All settings may be tweaked with the controller hardware using the "Pitstop" mode, but it is also possible to control the settings using voice control to keep your hands on the steering wheel. This plugin uses configuration based data, defines two simulator dependent modes and shows how to automate your simulation game. Due to its functional richness, this plugin provides a good showcase when starting your own development. Since Release 2.1 Jona, the Virtual Race Engineer, is available for Assetto Corsa Competizione and an integration with Cato, the Virtual Race Strategist exists since Release 3.1.6. The "Assistant" mode can handle most of the race assistant commands from your hardware controller.
AC Special support for starting and stopping Assetto Corsa from your hardware controller.
AMS2 Support for starting and stopping Automobilista 2 from your hardware controller. An integration with Jona, the Virtual Race Engineer, as well as wtih Cato, the Virtual Race Strategist, is available since Release 3.1.8 and the plugin supports a "Pitstop" mode for adjusting pitstop settings and a "Assistant" mode to interact with the race assistants.
IRC This plugin integrates the iRacing simulation game with Simulator Controller. A "Pitstop" mode is available to control the pitstop settings from your controller hardware and an integration with Jona, the Virtual Race Engineer, including full support for automated pitstop handling is also available, as well as wtih Cato, the Virtual Race Strategist. The "Assistant" mode can handle most of the race assistant commands from your hardware controller.
RF2 Similar to the ACC and IRC plugin provides this plugin start and stop support for rFactor 2. A "Pitstop" mode is available to control the pitstop settings from your controller hardware and an integration with Jona, the Virtual Race Engineer, including full support for automated pitstop handling is available as well since Release 2.8. An integration with Cato, the Virtual Race Strategist exists since Release 3.1.6. The "Assistant" mode can handle most of the race assistant commands from your hardware controller.
R3E Similar to the ACC, IRC and RF2 plugins provides this plugin start and stop support for RaceRoom Racing Experience. A "Pitstop" mode is available to control the pitstop settings from your controller hardware and an integration with Jona, the Virtual Race Engineer, including full support for automated pitstop handling is available as well. An integration with Cato, the Virtual Race Strategist exists since Release 3.1.6. The "Assistant" mode can handle most of the race assistant commands from your hardware controller.

Third party applications

The following applications are not part of the distribution and are not strictly necessary for Simulator Controller. But Simulator Controller is aware of these components and will integrate them for a better overall experience, if available.

Application Description
AutoHotkey [Development Only] Object oriented scripting language. You need it, if you want to develop your own plugins.
Visual Studio [Development Only] Development environment for Windows applications. Used for the development of the different telemetry interfaces of the supported simulation games.
NirCmd [Optional] Extended Windows command shell. Used by Simulator Controller to control ingame sound volume settings during startup.
SoX [Optional] Audio processing utility. Used by the race assistants for audio post processing to achieve a team radio like audio quality.
VoiceMacro [Recommended] Connects to your microphone and translates voice commands to complex keyboard and/or mouse input. These macros can be connected to Simulator Controller as external input to control functions and actions identical to your hardware controller.
AITrack [Optional] Neat little tool which uses neural networks to detect your viewing angle on a dashcam video stream. Used in conjunction with opentrack to control your ingame viewing angle.
opentrack [Recommended] Connects to your simulation game and controls the viewing angle using the freetrack protocol. Several input methods are supported, for example analog joysticks or UDP based sources such as AITrack.
SimHub [Recommended] Versatile, multipurpose software collection for simulation games. Generates vibration using bass shakers or vibration motors and provides a fully integrated Arduino development environment. Additional features support the definition of custom dashboards. A special plugin is part of Simulator Controller to control the tactile feedback options of SimHub, such as vibration strength, with a touch of a button.
SimFeedback [Optional] Not only a software, but a complete DIY project for building motion rigs. SimFeedback controls the motion actuators using visual control curves, which translate the ingame physics data to complex and very fast rig movements. Here also, a plugin is integrated in Simulator Controller to use your hardware controller for controlling SimFeedback.
SFX-100-Streamdeck [Optional] This extension for SimFeedback is used to connect to SimFeedback in order to control effect states and intensities. If not used, a subset of the SimFeedback settings will be controlled by mouse automation, which on a side effect requires the SimFeedback window to be the topmost. Since this is not really funny, while currently trying to overtake one of your opponents in a difficult chicane, I strongly advice to install the connector extension, but this requires the commercial expert license for SimFeedback. You will find a copy of the SFX-100-Streamdeck plugin in the Utilities\3rd Party folder for your convenience. And don't forget to read the installation & configuration instructions, since there are two steps necessary.
Microsoft Voice Languages [Optional] Depending on your Windows version and your selected language, you might want to install additional Text-to-Speech languages from Microsoft for the speech generation capabilities of Simulator Controller, especially for Jona, the Virtual Race Engineer.
Microsoft Voice Recognition [Optional] Also depending on your Windows version and your selected language, you might want to install additional Speech-to-Text or voice recognition languages from Microsoft, especially for Jona, the Virtual Race Engineer. You will find a copy of the language runtime and some selected recognizer in the Utilities\3rd Party folder for your convenience.
rFactor 2 Telemetry Provider [Optional] If you are running the rFactor 2 simulation game and want to use Jona, the Virtual Race Engineer during your races, you need to install this data aqcuisition plugin in your rFactor 2 application directory. You will find a copy of the plugin (named rf2_sm_tools_3.7.14.2.zip) including a Readme file in the Utilities\3rd Party folder for your convenience.

Documentation

A very extensive documentation will guide you through the configuration process and will help you to understand the inner concepts and all the functions & features of Simulator Controller. For developers, who want to create their own plugins, a complete developers guide & reference is available as well.

The markdown files, the so to say source code of this documentation Wiki, can be found in the Docs folder.

Discord Community

If you want to become a part of the small and very young Community for Simulator Controller on Discord, please use this invitation...

Known issues

  1. Connection between the "Motion Feedback" plugin and SimFeedback has some stabilty issues. Looks like the root cause is located in the SFX-100-Streamdeck extension. For a workaround click on "Reload Profile..." on the Extensions tab in SimFeedback, if you see strange numbers in the Button Box "Motion" mode page.

Development

For new features coming in the next release, take a look at the Release Notes.

Want to contribute? Great!

  • Build your own plugins and offer them on GitHub or join the Discord community and post your plugin in the #share-your-mods channel. Contact me and I will add a link to your plugin in this documentation.
  • Found a bug, or built a new feature? Even better. Please contact me, and I will give you access to the code repository.

Heads Up: I am looking for a co-developer for the some fancy upcoming AI stuff.

To Do

After firing out one release per week during the last few weeks, the project will slow down a little bit from now on. But the development of Simulator Controller still goes on, and I am sure that we will end up in a two weeks cycle in the long run. My own list of ideas in the backlog is always long enough for at least three more releases and if you want to propose a feature to be included in the backlog, you can open an enhancement issue on GitHub or join the Discord community and post your idea on the #request-a-feature channel...

License

This software is provided as is. You are free to use it for any purpose and modify it to your needs, as long as you do not use it for any commercial purposes.

(2021) Creative Commons - BY-NC-SA - by Oliver Juwig (TheBigO)

simulator-controller's People

Contributors

seriousoldman avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.