Cerebrum™ is the GameManager/ObjectMessageHandler/LevelGenerator package which manages dynamic level generation, scenario logic, and scene intelligence all in external files separate from the game engine executable. Its flexible structure means that new functionality can be incrementally added to old simulations quickly simply by modifying some external text scenario files which contain variables, logic, branching, functions, and 3D object creation and management. It can be run in a web browser, a stand-alone application, or even in VR and AR. Guides for development are here.
The goal of Cerebrum is to make reusable components which are external to the game application/executable, so that changes to an existing simulation or creation of new simulations or variations can often be quickly and easily made by Subject Matter Experts (SMEs) themselves, thereby lowering the costs and speeding up production of medical simulations. Goals and benefits include:
- Most of game is dynamic through extensive use of external or remote folders
- Logic and scenes can be changed without game rebuilds
- Existing C# routines can be simply and quickly integrated for complex behaviors
- Assets/scenes can be dynamically loaded/created at runtime.
- Assets can be dynamically changed/updated at any time.
- Can co-exist/work-with existing projects/code.
- New commands can be easily added to the language through Message Handlers.
- Variable and expressions support permits easy reference of GameObjects
- Supports logic, loops, variables, expressions, and psuedo-arrays (dictionaries)
- Short-hand name access for finding GameObjects in a hierarchy.
- AI chat integration
Scenario Files
Scenario files are text files which contain GameManager statements/expressions, and also commands for GameObjects (which are handled by their ObjectMessageHandler component). Statements are either recognizable by the GameManager, or they are assumed to be commands for a GameObject which as an OMH component attached. GameObject commands operate on a Noun-Verb-Modifier syntax (Subject-Command-Parameters).
A partial scenario file to create a male patient with diabetes is seen below:
$AgeInYears = 73
$PatientModel = 'uAvatar'
$PatientDiag = 'Tear of the distal supraspinatus tendon'
$PatientGender = 'Male'
$PatientCondition = 'Mr ‘ + $PatientName + ‘, admitted electively for left shoulder arthroscopic cuff repair. He has past medical history of diabetes mellitus. Post op instruction: hourly parameter for the next 4 hours.'
$PatientType = 'News1'
### Set patient vitals
$Temperature = 36.5
$HR = 70
$BP = '150/71'
$BPSys = 150
$Respiration = 20
$SpO2 = 100
Do 'NEWS_Nurse/SetupPatient.txt'
For example, AI-driven chat can be added to older Cerebrum simulations with only a few lines of scenario changes, as seen below:
Do 'PatientCreations/Voices/MaleVoice1.txt'.
$PatientChatPrompt = ‘Reply as a man named ‘ + PatientName ’.+ ‘You are ‘ + AgeInYears + ‘years old and you are hospitalized. Your condition is ‘ + PatientCondition + ‘ The nurse has just approached you…’
Do 'PatientAIChatController'
RoomGenerator
Scenes can be dynamically created and loaded based on text or spreadsheet file definitions external to the simulation build so that simulation content can be modified without rebuilding the project. In Cerebrun scenes, there is a RoomGenerator which uses Unity Addressables to dynamically create levels, as well as reference GameObjects by their Addressables’ name.
The RoomGenerator also can launch and support multiple GameManagers which run concurrently. This can be used to have GameManagers running independently to monitor/manage individual characters such as multiple patients, with each patient running its own copy of the scenario files, and therefore having its own local copy of variables. The RoomGenerator is beyond the scope of this guide and has its own guide, and can be seen below.
Reusable Assets and Scenarios
In Cerebrum, scripts are called Scenarios and are stored in Scenario Files. With Cerebrum, your game world can be modified simply by changing variables in external Scenario files. Human characters can be specified in Scenario files by age, gender, height, weight, etc. In addition, all 3D game objects can be added, modified, and controlled by the Scenario files as well as the RoomGenerator files. The following videos demonstrate scenarios which share and reuse content for different simulation objectives.
Editing Scenario Files
Scenario files can be edited directly by a text editor, or through a drag-and-drop Blockly interface, or via an intelligent Google Sheets editor that uses dropdowns to provide appropriate choices.
Under Development
While originally developed to run on older home computers with simpler graphics, current development includes improving the fidelity of the characters, environments, and animations for higher-end simulations. Our new universal avatar will be part of this development to provide custom character generation based on verbal descriptions of the characters or the ability to hand-create desired characters. These characters will support a wide range of emotions, the ability to do real-time lip-syncing and face tracking to be remotely controlled by a remote operator, or the ability to be driven by leading AI systems such as Chat-GPT.