Environment Profiles – Store and Swap VR Boundaries

What’s an Environment Profile and why it’s needed? The SynthesisVR Environment Profiles cover headset variables such as boundaries, button states, scheduled HMD restarts, and other configuration and environment adjustments. With the growth of the LBVR segment and the VR industry in general, we do see more and more standalone HMDs released for business purposes. As of March 2023, there are multiple established platforms and HMD models: What SteamVR has been great at for so many years is providing a unification between all the PCVR HMDs. Regardless if you go for HTC Vive, Valve Index, Oculus, PiMax, or another PCVR HMD, they always get linked to SteamVR and become a viable LBVR option. With the growth of standalone HMDs, this has dramatically shifted. The manufacturers bundle their products with custom software and functionalities that cannot be used on a competitive brand. This all creates a bit of chaos and not to make it any easier – all of the standalone HMDs have the option to operate as Wireless PCVR HMDs (as a way to fuel more power / stunning visuals). Getting familiar with the specifics of all manufacturers and making them part of your daily operations can be challenging. SynthesisVR is the first LBVR platform to unify the environment variables into Environment Profiles in a simple yet powerful interface. Setting up a new Environment Profile: Step 1) Find the Environment Profiles page Head to “my.synthesisvr.com >> Administration >> Devices” and switch to the brand new “Environment Profiles” tab: Step 2) Creating an Environment Profile There are a few simple concepts behind the Environment Profiles: Example Configurations: Room-Scale: Free-Roam: Room-Scale profile for PCVR->HMD streaming: Free-Roam profile for PCVR->HMD streaming: Step 3) Specify the hardware platform that will be used for the specific Environment Profile: Please note that upon applying your selection, you no longer would be able to change it for the current Environment Profile. Luckily, deleting a Profile and creating a new one is quick enough. Upon defining the hardware platform, the next step is to define platform-specific actions. Examples: An HTC Focus 3 profile that disables the Focus 3 popup menu and, if there are any boundary changes (like switching between room-scale and free-roam spaces) – then the HMD gets restarted. Once the session is over, the Focus 3 popup menu is re-enabled and the HMD is shut down to save battery: A Pico profile that automatically turns on the screen at the start of the session and disables the screen upon the session ends. During session, the screen will be always on, regardless if the HMD is actually in use: Disable the 2D menu for Free-Roam sessions: Step 4) Export and Sync the boundaries: Click the boundary icon right from the Environment Profiles page: The pop-up will guide you through what devices(=HMDs) are online and which ones match the hardware platform: As can be seen on the screenshot, the Environment Profile won’t let you export SteamVR chaperone data from a PC streaming to an HMD. In that case, you have to run Synthesis on the HMD and use an Environment Profile with the appropriate Hardware Platform. Upon clicking the Save button, the export signal is submitted to the HMD: Please wait until you see a confirmation popup: Your boundary data is saved in two locations: Known Limitations: HTC Focus 3: Pico 4 Enterprise: Meta Quest 2:

Synthesis VR Proxy – Cloud Proxy for VR Arcades – Amazon / AWS

1. Obtain your Proxy Activation Code 2. Subscribe for the SynthesisVR Proxy Image on the AWS Marketplace and launch your instance We do recommend the Medium General Purpose AWS instances (t2.medium ; t3.medium ; t3a.medium). As with any other AWS Windows-based instances, make sure your RDP port allows external connections or you could be unable to connect to your instance. 3. Complete your installation Upon RDP connecting to your instance for the first time, the “Local Manager” app will automatically launch in full-screen mode and will ask for the Activation Code from step 1. Enter the code and wait for the installation process to complete. It could take a couple of minutes. 4. Finalize Your Proxy installation is done and your SynthesisVR Access Point instances would automatically detect and connect to your newly installed Cloud Proxy. Note: The Cloud Proxy installation process is streamlined, but it also may not be straightforward for businesses who do not have previous experience with AWS. Please do not hesitate to seek assistance from hundreds of certified AWS professionals or hire a SynthesisVR engineer as well. You don’t know what a SynthesisVR Proxy is or looking for self-hosted options? Find out here:

Synthesis VR Proxy – Troubleshooting

How to troubleshoot the SynthesisVR Proxy? 1) Access the “Run” prompt by press the Windows key + R 2) Type: services.msc 3) Scroll down the list until you find SynthesisVR – Proxy 4) If the service is not running, click on the “Start” option on the left side (or the Restart button). You should see the following popup:When the popup disappears, the service status should be changed to “Running”. 5) If the status remains empty (meaning – not running) or you don’t have permission to start the service, you could simply restart the computer. By default, SynthesisVRMainService is configured to start automatically along with Windows. 6) If SynthesisVR – Proxy still isn’t starting, please reach to us at info@synthesisvr.com

localmanifest.json Cheatsheet

“pauseSessionCountdownWhenNoPID”: true, The session clock would automatically pause when there is no any running game. May not be suitable for multiplayer sessions “dontPauseIdlePlaybackOnPID”: true, The idle playback wont pause automatically upon starting a session and/or a game. Suitable for KIOSK installations. “disableAPGameChange”: true, Disable the ability to start games through the Desktop Menu of the Access Point “disableAPSessionStart”: true, Disable the ability to start sessions through the Desktop Menu of the Access Point “disableKeyboardControl”: true, Disable the keyboard control for the VR menu (arrows, Enter, Backspace) customAnnouncementInSeconds: { “30”: “Custom Message 30 seconds before the end” }, Add precise (in seconds) text-to-speech support “nfc_shared”: “shared”, Fine tune your NFC integration. The default value is “shared” and your other options are “direct” and “exclusive”. You don’t have to set this up unless your NFC documentation hints otherwise “nfc_protocol”: “T1″, Fine tune your NFC integration. The default selection is “T1” and other options are: “default” ; “raw” ; “t0” ; “tx” ; “undefined” “preferredMac”: “000000000000”, In the case of multiple connected network adapters, define the MAC address of the primary one KATVR custom locomotion – https://synthesisvr.com/knowledge-base/kat-i-o-custom-locomotion-settings-for-non-kat-i-o-games/ “disableFTDI”: true, disable the default FTDI coin-op integration. This could be needed for third party FTDI based integrations “singlePerSessionLaunch”: [1,15], A comma-separated list of games that can be launched only once per session. This can be used to prevent non-PPM content to be launched multiple times when you are charging your customers per minute. “dontDownloadTrailers”: true, makes sure the Access Point won’t be trying to download and synchronize any trailers. Usually to be used in the case when you manage your own folder of playback videos.

Membership Add-On – Convert Your Visitors To Regular Customers

The membership cards functionality is a powerful tool for converting your visitors to regular customers and being able to collect funds upfront. Creating New Membership Plan Login to your SynthesisVR admin Account and go to “Administration >> Extras  >>  Cards” Click the Three Dots on the top right corner – then click Add New Batch of Membership Cards Fill in your settings Title = This is the name for each of the cards. When the “#code#” special string is placed in the title, it would be replaced by the actual code of the card Generation Pattern = keep it without any spaces inside. The # character would be replaced by the actual number of the card. If you plan to have 1000 cards, you should have at least 4 # characters (example: card:monthly:####) Quantity = the total number of cards to be generated Digital Cards Only = you may want to print the cards or just have pseudo cards (no hard copy). The printed cards are assigned to the customers via the “Scan QR Code” functionality on the sidebar and the digital cards are assigned via the “Customers” page. Generating Codes and Printing Physical Cards Now that you have created your membership option you have to generate them so the cards can be distributed among your customers Configuring Membership Cards As the next step, you can configure one or multiple modes for your cards. For this click on the “+ Add” button, to get the following popup Settings Title = Since a batch of cards could have different kind of discounts and promotions, use that field to identify the specific mode. Card Cost = You may want to sell the cards to distribute them for free. Give System Points Per Minute = This is no longer in use. If you want to create a points based rewards system, please subscribe to our points module. Discounts Applies For Sessions Up To [NN] Stations = This is to select how the concession rate is applied and to how many stations. Days of week = The days when the card can be used in your arcade. If it is a free card, you may want to restrict its benefits to apply only during the weekdays. Discounts are valid everyday = You may want to select if the discounts are valid for all days or selected days. Active period = how long after activation the card would expire. If you charges $200 for the card, it may expire after one year, so you can collect the next membership fee. Combine With Regular Discounts = You may combine the discount with an existing discount. Recurring Billing Period (optional) = You may select on what interval the bills are made. (Example: 30days or 15days) Mail the customer every time the card is used = You may want to send mails to your customers every time their cards are used. Packages Discounts = Here you can apply discounts to certain Experiences or All experiences. You can also add multiple discounts by simply clicking the Discounts + button. As example, the customers owning the card may have 10% during the weekdays. If the regular work hour rule cost is $30 our system will calculate the discount percentage and the customer will only be charged the discounted new amount. Included Free Time = As membership benefits, you can include free time for certain experiences so the customer does not have to pay. For example: The card owners would have 60 free VR Experience minutes every 30 days. Both the “free time” and the discounts can be used simultaneously. If the card has 60 free minutes then the customer will not be charged for the first 60 minutes of this experience. You can add multiple free minutes by clicking the + button. This way you can create different types of membership benefit programs. Carry over unused free time from month to month = Unused time will be transferred only if the renewal period for the free experience type is set to `1 month`. Free Time Renew Base = The `First Day` option works only if the renewal period for the free experience type is set to `1 month`. Points Collection Provide Points for Usage + = From here you can add points to visitors for: Session / Per Station; Minute; Session / All Stations for every of your Experience types for each day of the week.Point System can be chosen from: Membership; Room Scale Points; Session Reward Points; Global Points System. Membership Widget Setup Here you may select how the Membership widget needs to look like, by selecting the widget text color, card color, desired descriptions and the cover image. Assigning Membership to Customers Now you have the membership cards and their modes being setup. How you are using them depends on their mode (digital-only or not). Go to Customers on the left menu and search for the customer you want to sell the membership – Click Sell Card as Shown Below Select which membership card you would like to sell from the pop up On the pop up if you need you can still change the membership if you selected the wrong one in the previous step. You are ready to assign/sell the card (Note: all the non-free cards would affect the financial reports) You can choose a payment method and click Add Payment to assign this membership to this customer At the next step, go to “Stores >> Sell Ticket – Pick a customer for the next reservation”. The displayed cost would be reflected by the membership card settings. Every customer may have only 1 membership card. If you would like to assign more, you would have to create another account for this purpose

Multiple networks

Required SynthesisVR version: 3.12.4 In some setups, you may have Synthesis running on a VR station having 2 or more network adapters. In those cases, Synthesis will use the first connected adapter to determinate its settings. If you would like to change that, you have to add the following line to both your Access Point and Server Mode (Proxy): “preferredMac”: “001122334455”, where 001122334455 is the MAC address of the adapter you would like to default to. For the “Access Point” app, add that line to: %localappdata%\SynthesisVR\app\Resources\localmanifest.json For the Server Mode (Proxy): C:\Users\synthesisvr\AppData\Local\SynthesisVR\op.json

The SynthesisVR Engine

The “SynthesisVR – Engine” is a set of tools, purposed to unify different game functionalities without limiting the VR studios to specific scopes. This is one of the most important innovations in LBVR. “SVR Engine” can be described the “glue” between: · The games launcher · Advanced game settings · Scripting language · Network discovery · Provisioning tool At this moment, the Engine is supposed by only handful of titles, but we sees huge interest in our technology by a significant number of studios. Scripting variables We uses XML with the <svr> tag being the one specifying a custom action. The tags can be of two types: · static – performs custom actions or returns the same result across all PCs ü SynthesisVRNetworkNegotiation § timeout — specifies how long the system will be looking for players § start_delay – a delay in milliseconds. Helps in the cases where the game server have to be started before the actual client PCs ü pcs ü server_ip · condition – defines a condition and returns a text based on the condition result ü pcs § min – minimum number of stations § max – maximum number of stations § true – a value if the number of involved PCs is between min and max § false – a value if the condition does not match ü is_server § true – return value if the current PC is the server/host § false – return value if the PC is not the server/host How to perform automated network discovery: <svr timeout=”10000″ start_delay=”5000″ maxpcs=”4″ static=”SynthesisVRNetworkNegotiation”></svr> How to determinate if the current PC is the server: <svr condition=”is_server” true=”yes” false=”no”></svr> Is this a multiplayer session: <svr condition=”pcs” min=”2″ max=”4″ true=”yes” false=”no”></svr> <svr static=”server_ip”></svr> What is the server IP: Real life example For the purpose of the example, we’ll take “Arizona Sunshine Arcade”. 1) Go to “Administration >> Games & Licensing >> Your Games”. Locate Arizona Sunshine Arcade and click on it 2) Create a new game variant: ​ 3) Go to “Administration >> Games & Licensing >> Game Categories” and assign “Arizona Sunshine – Multiplayer” to the list: ​ 4) Save the changes and “Refresh” the page with the game categories 5) The “Advanced Game Settings” button would appear and it will lead to the following settings: ​ Take the default “Arizona Sunshine Arcade” config file and apply the Engine rules. Complete example: {<svr timeout=”10000″ start_delay=”5000″ maxpcs=”4″ static=”SynthesisVRNetworkNegotiation”></svr> “IsMultiplayer”: “<svr condition=”pcs” min=”2″ max=”4″ true=”yes” false=”no”></svr>”, “IsHost”: “<svr condition=”is_server” true=”yes” false=”no”></svr>”, “NumberOfPlayers”: <svr static=”pcs”></svr>, “AutoStart”: “<svr condition=”pcs” min=”2″ max=”4″ true=”Holdout_Canyon” false=””></svr>”, “ConnectIPAddress”: “<svr static=”server_ip”></svr>”, “ForceLanguage”: “”, “HordeModePlayTime”: “00:00:00”, “HordeModeReviveSeconds”: “00:00:10”, “MutilationAndBlood”: “yes”, “AutoReloadOnEject”: “yes”, “LaserSight”: “no”, “SingleHandMode”: “no”, “ForceLeftHanded”: “no”, “InvincibleAtStartOfLevelSeconds”: 180.0, “FriendlyFire”: “yes”, “SelfDamage”: “yes”, “Invincibility”: “no”, “InfiniteAmmo”: “no”, “ForceStartWeaponMainHand”: “”, “ForceStartWeaponOffHand”: “”, “ForceStartWeaponSingleHand”: “”, “AutoSkipEndScreenTime”: “00:00:30”, “PlayVideoAfterTimeIdle”: “23:59:59”, “VideoFilename”: “test.avi”, “PrintHighscore”: “no”, “ShowPrintDialog”: “no”, “LocalLeaderboardNetworkFolderPath”: “”, “NetworkTickRate”: 20, “InputDeviceLeftModelType”: “”, “InputDeviceRightModelType”: “”, “MainMenuQuitButton”: “yes”, “MatchMakerBranch”: “”, “RenderScale”: 1.0, “IsUsingNewSteamVRInputSystem”: “yes”, “UniquePlayerIndex”: 0, “UniquePlayerIndex0Color”: { “r”: 0.75, “g”: 0.7900000214576721, “b”: 0.04699999839067459, “a”: 0.0 }, “UniquePlayerIndex1Color”: { “r”: 0.8299999833106995, “g”: 0.03500000014901161, “b”: 0.03500000014901161, “a”: 0.0 }, “UniquePlayerIndex2Color”: { “r”: 0.03500000014901161, “g”: 0.03500000014901161, “b”: 0.8299999833106995, “a”: 0.0 }, “UniquePlayerIndex3Color”: { “r”: 0.03500000014901161, “g”: 0.8299999833106995, “b”: 0.03500000014901161, “a”: 0.0 } } On multiple of your stations, start the “Multiplayer” version through SynthesisVR. The result: https://svrstorage.s3.amazonaws.com/kamen/v3.7-launch-in- arizona.mp4 The “Engine” will be a subject of multiple additions over time. For questions or ideas, shoot us an email: info@synthesisvr.com

Location Based Virtual Reality League (LBVRL)

lbvrleague.com LBVRL is available for all SynthesisVR customers and doesn’t imply any additional SynthesisVR subscriptions or fees. The only condition is to have the specific League game being licensed via the SynthesisVR platform. Setup: In the old interface – go to “Administration >> Global Arcade Settings” In the new interface – go to “Administration” and click on the name of your arcade. Fill your website domain name under the “Domain” field (don’t use http or https). Example: myarcadedomain.com Locate the “GPS Latitude” and “GPS Longitude” settings and set the exact coordinates of your arcade Usage: Start a VR session with an actual customer assigned to it. The customer can be also assigned after the start of the session Play the game End the session

Firewall and Network Information

Proxy: TCP 2010 – Video Streaming(optional) 5060 – VoIP(optional) 5066 – VoIP(optional) 8005 – SynthesisVR communication port(mandatory) 8088 – SynthesisVR communication port(mandatory) UDP 5060 – VoIP(optional) 8070 – Synthesis communication port (recommended) 8071 – Synthesis communication port (recommended) All ports above 10000 (VoIP Audio –optional)   Access Point: TCP 5060 – VoIP(optional) 8006 – SynthesisVR communication port(mandatory) 8007 – SynthesisVR Leaderboard 8079 – SynthesisVR communication port(mandatory) 8080 – SynthesisVR communication port(mandatory) UDP 5060 – VoIP(optional) 8070 – SynthesisVR communication port(mandatory) 8071 – SynthesisVR communication port(mandatory) All ports above 10000 (VoIP Audio –optional)

Command Calls – Create/Execute Custom Scripts & Commands

Required version: 3.9.6 Overview: As LBVR progress through the years, we sees a good number of new VR related hardware coming to the market. Often, to ensure fast and flawless operation, the new hardware have to be integrated in Synthesis. As long as we are working toward native support for as much hardware as possible (KATVR + KAT I/O as an example), we feel there is so much more you could achieve if you have the right tools to unleash your creativity. This is what the “Command Calls” are purposed for. Working with hardware in LBVR normally comes down to 4 simple events: An extra 5th event is -> manual actionsWhat if you could write a simple code in ANY programming language and attach it to any of the 4+1 events? Idea 1) You can turn the Graphic Card color to RED when the station is occupied and back to GREEN when its free Idea 2) In a conversation with the studio behind an upcoming game title utilizing the “fear of height” (like Richie’s Plank Experience), we came up to the idea it will be great if they could send a simple UDP START message when a person is falling down and STOP when the person “reach the destination” 🙂 If the develop do this (which is pretty easy for them), we’ll develop a very tiny open source app that will let you catch the START/STOP states and convert that to turning the power on/off for one the PC USB ports. On that port, you could attach a USB powered fan and that will have a great impact to the customer immersion with a very tiny investment on your end. Idea 3) If you are running hydraulic racing simulators, you have to use SimTools. What if SimTools can be taken care of by a script or by a direct call to the SimTools executable? Idea 4) Start the Vive Wireless Adapter software along with the session and stop it once the session is over. The “Command Calls” event system makes it all possible. Setup Guide: Example: In our example, the content of the startcmd.bat file is: For test purposes, you can attach it to a session start. Then, the opposite endcmd.bat will be: As result, Notepad and the Windows Calculator will open upon start of the session and close along with the session end.