├── docs └── public │ └── screenshot.PNG ├── tutorial ├── 01_getting_started │ ├── assets │ │ ├── screenshot_01.PNG │ │ ├── screenshot_02.PNG │ │ ├── screenshot_03.PNG │ │ ├── screenshot_04.PNG │ │ ├── screenshot_05.PNG │ │ ├── screenshot_06.PNG │ │ ├── screenshot_07.PNG │ │ ├── screenshot_08.PNG │ │ ├── screenshot_09.PNG │ │ ├── screenshot_10.PNG │ │ ├── screenshot_11.PNG │ │ ├── screenshot_12.PNG │ │ ├── screenshot_13.PNG │ │ ├── screenshot_14.PNG │ │ ├── screenshot_15.PNG │ │ ├── screenshot_16.PNG │ │ ├── screenshot_17.PNG │ │ ├── screenshot_18.PNG │ │ ├── screenshot_19.PNG │ │ ├── screenshot_20.PNG │ │ ├── screenshot_21.PNG │ │ ├── screenshot_22.PNG │ │ └── screenshot_23.PNG │ └── 01_getting_started.md ├── 03_building_engines │ ├── assets │ │ ├── screenshot_01.PNG │ │ ├── screenshot_02.PNG │ │ ├── screenshot_03.PNG │ │ ├── screenshot_04.PNG │ │ └── screenshot_05.PNG │ └── 03_building_engines.md └── 02_using_community_engines │ ├── assets │ ├── screenshot_01.PNG │ ├── screenshot_02.PNG │ └── screenshot_03.PNG │ └── 02_using_community_engines.md ├── .github └── FUNDING.yml └── README.md /docs/public/screenshot.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/docs/public/screenshot.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_01.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_01.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_02.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_02.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_03.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_03.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_04.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_04.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_05.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_05.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_06.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_06.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_07.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_07.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_08.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_08.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_09.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_09.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_10.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_10.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_11.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_11.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_12.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_12.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_13.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_13.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_14.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_14.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_15.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_15.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_16.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_16.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_17.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_17.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_18.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_18.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_19.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_19.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_20.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_20.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_21.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_21.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_22.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_22.PNG -------------------------------------------------------------------------------- /tutorial/01_getting_started/assets/screenshot_23.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/01_getting_started/assets/screenshot_23.PNG -------------------------------------------------------------------------------- /tutorial/03_building_engines/assets/screenshot_01.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/03_building_engines/assets/screenshot_01.PNG -------------------------------------------------------------------------------- /tutorial/03_building_engines/assets/screenshot_02.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/03_building_engines/assets/screenshot_02.PNG -------------------------------------------------------------------------------- /tutorial/03_building_engines/assets/screenshot_03.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/03_building_engines/assets/screenshot_03.PNG -------------------------------------------------------------------------------- /tutorial/03_building_engines/assets/screenshot_04.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/03_building_engines/assets/screenshot_04.PNG -------------------------------------------------------------------------------- /tutorial/03_building_engines/assets/screenshot_05.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/03_building_engines/assets/screenshot_05.PNG -------------------------------------------------------------------------------- /tutorial/02_using_community_engines/assets/screenshot_01.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/02_using_community_engines/assets/screenshot_01.PNG -------------------------------------------------------------------------------- /tutorial/02_using_community_engines/assets/screenshot_02.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/02_using_community_engines/assets/screenshot_02.PNG -------------------------------------------------------------------------------- /tutorial/02_using_community_engines/assets/screenshot_03.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Engine-Simulator/engine-sim-community-edition/HEAD/tutorial/02_using_community_engines/assets/screenshot_03.PNG -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: atg_engine_simulator 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 14 | -------------------------------------------------------------------------------- /tutorial/02_using_community_engines/02_using_community_engines.md: -------------------------------------------------------------------------------- 1 | # Tutorial 2: Using Community-made Engines 2 | ## Important 3 | **This tutorial assumes that you are using `v0.1.12a` or higher.** 4 | 5 | ## Introduction 6 | Changing engines has historically caused great confusion for players because the first versions of *Engine Simulator* were not intended to be used in this way. Recent versions of *Engine Simulator*, however, have solved this problem and made changing engines much easier. Some older community-made engines, however, might be formatted differently and won't work immediately with newer versions. This guide will show you how to solve these issues. 7 | 8 | ## Step 1 - Navigate to the Community Engine Hub 9 | Follow [this link](https://catalog.engine-sim.parts/) to the *Engine Simulator* community hub where hundreds of engines have been uploaded by players. 10 | 11 | ## Step 2 - Be Careful Online 12 | There are no *known* security vulnerabilities in *Engine Simulator* and no known ways that someone could inject malicious code or viruses into an engine file. HOWEVER, it is important to always exercise caution online and acknowledge the risks of running any foreign software from a potentially untrustworthy source. 13 | 14 | ## Step 3 - Choose an Engine and Download It 15 | Download an engine of your choice and place it wherever you like. 16 | ![Alt text](assets/screenshot_01.PNG?raw=true) 17 | 18 | ## Step 4 - Load the Engine in *Engine Simulator* 19 | Press the "Load Script" button in *Engine Simulator*, navigate to the engine you downloaded and open it. 20 | 21 | ## Step 5 - Debug Common Issues 22 | Sometimes an engine will not load and you'll see "" in the status text. *Engine Simulator* will automatically open the console when this happens. You can navigate between the console and the engine visualizer using the `F5` key or the button to the right of the title. 23 | 24 | ![Alt text](assets/screenshot_02.PNG?raw=true) 25 | 26 | In the screenshot above, the script compiled successfully but *Engine Simulator* is complaining that it's missing a vehicle, engine and transmission. In this case, the fix is easy. First, open the `.mr` file that you downloaded. Search the file for the text `set_engine`. This command tells *Engine Simulator* which engine to simulate. Since it's not present, *Engine Simulator* doesn't know what to simulate. 27 | 28 | In the catalog site you may see that the authors of engines have specified instructions for a `main.mr` file. This is the old way of changing engines which is now discouraged. Instead, simply transplant the `main.mr` instructions and put them at the end of the downloaded script. 29 | 30 | ![Alt text](assets/screenshot_03.PNG?raw=true) 31 | 32 | In this case, the original author supplied the three commands needed to set the engine, transmission and vehicle. Moving this exact text to the bottom of the script will solve the issue for this script: 33 | 34 | ``` 35 | set_engine(eng()) 36 | set_transmission(trn()) 37 | set_vehicle(veh()) 38 | ``` 39 | 40 | **However, it is strongly recommended to instead use the following instead:*** 41 | 42 | ``` 43 | run( 44 | engine: eng(), 45 | transmission: trn(), 46 | vehicle: veh() 47 | ) 48 | ``` 49 | 50 | Reloading the script should then load the engine successfully. 51 | 52 | ### Engines that use `public node main` 53 | Some newer scripts will have something like this at the bottom: 54 | 55 | ``` 56 | public node main { 57 | set_engine(Nissan_RB26()) 58 | set_vehicle(Nissan_GTR_R32()) 59 | set_transmission(RB26_transmission()) 60 | } 61 | ``` 62 | 63 | In this case, simply adding the following code to the end of the file will work: 64 | 65 | ``` 66 | main() 67 | ``` 68 | 69 | The best way to update this file, however, would be to replace the `main` code above with this instead: 70 | 71 | ``` 72 | run( 73 | engine: Nissan_RB26(), 74 | vehicle: Nissan_GTR_R32(), 75 | transmission: RB26_transmission() 76 | ) 77 | ``` 78 | 79 | ## Conclusion 80 | Following the steps in this guide should allow you to load most engines in the online catalog. In some cases, engines are so old that the script will not run properly in newer versions. In this case, you'll either need to update the script yourself or run it in an older version of *Engine Simulator* 81 | 82 | The next tutorial will teach you how to modify and build engines yourself! 83 | 84 | - [Tutorial 3: Build Your Own Engines From Scratch](../03_building_engines/03_building_engines.md) 85 | - [Back to main page](../../README.md) 86 | -------------------------------------------------------------------------------- /tutorial/03_building_engines/03_building_engines.md: -------------------------------------------------------------------------------- 1 | # Build Your Own Engine From Scratch 2 | 3 | ## WARNING: This tutorial is currently under development and not yet complete! 4 | 5 | This tutorial will teach you how to build an engine from scratch using *Engine Simulator's* scripting interface. 6 | 7 | ## Prerequisites 8 | ### 1. Download and Install VS Code 9 | If you don't already have VS Code installed, you can do so [here](https://code.visualstudio.com/download). You could use any text editor for this but VS Code is recommended if you want syntax highlighting. 10 | 11 | ### 2. Install the Piranha Syntax Highlighting Plugin 12 | Open VS Code and click on "View" then "Extensions". In the search bar, search for "Piranha". 13 | 14 | ![Alt text](assets/screenshot_01.PNG?raw=true) 15 | 16 | Click on the search result and install the extension. 17 | 18 | ![Alt text](assets/screenshot_02.PNG?raw=true) 19 | 20 | Once the extension is installed, `.mr` files should be colored in VS Code. 21 | 22 | ![Alt text](assets/screenshot_03.PNG?raw=true) 23 | 24 | ## 1 - Setting up the Script 25 | 1. Create a new file called `tutorial-engine.mr`. It can be called whatever you want, however the `.mr` extension must be present 26 | 2. Open the file in VS Code (or the text editor of your choice) 27 | 3. The first step is to include the following line at the top of the file, which will import everything needed from the *Engine Simulator* library. 28 | 29 | ``` 30 | import "engine_sim.mr" 31 | ``` 32 | 33 | 4. Next we need to define an engine. To make organization a bit easier, we will create this engine inside a *node*. A node is a logical unit of code within the Piranha programming language. This can be done with the following code: 34 | 35 | ``` 36 | public node my_engine { 37 | alias output __out: engine; 38 | 39 | engine engine( 40 | name: "My Engine" 41 | ) 42 | } 43 | ``` 44 | 45 | Line by line, this is what the code does: 46 | - Line 1 - creates a new node type called `my_engine` 47 | - Line 2 - the main output of this node is going to be the engine node defined below 48 | - Line 3 - empty 49 | - Line 4 - create an `engine` node. This is a node-type that is built into *Engine Simulator* and signifies a common piston engine 50 | - Line 5 - the name of the engine 51 | - Line 6 - closing bracket 52 | - Line 7 - closing brace 53 | 54 | 5. Tell *Engine Simulator* that this is the engine we want to simulate. To do this, add the following code at the bottom of the file: 55 | 56 | ``` 57 | run( 58 | engine: my_engine() 59 | ) 60 | ``` 61 | 62 | The full script should look like this at this point: 63 | 64 | ``` 65 | import "engine_sim.mr" 66 | 67 | public node my_engine { 68 | alias output __out: engine; 69 | 70 | engine engine( 71 | name: "My Engine" 72 | ) 73 | } 74 | 75 | run( 76 | engine: my_engine() 77 | ) 78 | ``` 79 | 80 | 6. Let's try running this script now by pressing the "Load Script" button in *Engine Simulator*. 81 | 82 | You should see this in the console: 83 | ![Alt text](assets/screenshot_04.PNG?raw=true) 84 | 85 | Our script compiled successfully but *Engine Simulator* correctly pointed out that our engine does not have any crankshafts and is therefore invalid. Everything looks fine so far, we just need to continue building our engine. 86 | 87 | ## 2 - Creating a Crankshaft 88 | 89 | 1. Specifying engine measurements is much easier with standard units. To use units, add the following line before line 3: 90 | 91 | ``` 92 | units units() 93 | ``` 94 | 95 | 2. Next it'll help with our code organization to specify a list of engine parameters. To do that, add the following code before line 9: 96 | 97 | ``` 98 | // Engine parameters 99 | label stroke(86.0 * units.mm) 100 | ``` 101 | 102 | The `label` node is simply a way to give a name to a value. In this case, we are saving the value of 86 mm in a node called `stroke` for use later. 103 | 104 | 2. Now, it's time to create the crankshaft. The two most important parameters that define the crankshaft are the `throw` and `tdc` position. TDC stands for top-dead-center which is the point at which the piston is at the top of the compression stroke. We'll discuss how this is set in more detail later. Add the following code after the `engine` node: 105 | 106 | ``` 107 | crankshaft crankshaft( 108 | throw: stroke / 2, 109 | tdc: 90 * units.deg 110 | ) 111 | ``` 112 | 113 | This code creates a new crankshaft object called `crankshaft` with a *throw* of the engine's stroke divided by 2 and `tdc` point of 90 degrees. A crankshaft's "throw" is the distance between the center of the crankshaft to the center of it's rod journals (also called crank-pins). 114 | 115 | 3. The final step is to add the new crankshaft to the engine using the following code placed underneath the `crankshaft` code earlier: 116 | 117 | ``` 118 | engine.add_crankshaft(crankshaft) 119 | ``` 120 | 121 | By this point, the entire script should look like this: 122 | 123 | ``` 124 | import "engine_sim.mr" 125 | 126 | units units() 127 | 128 | public node my_engine { 129 | alias output __out: engine; 130 | 131 | // Engine parameters 132 | label stroke(86.0 * units.mm) 133 | 134 | engine engine( 135 | name: "My Engine" 136 | ) 137 | 138 | crankshaft crankshaft( 139 | throw: stroke / 2, 140 | tdc: 90 * units.deg 141 | ) 142 | 143 | engine.add_crankshaft(crankshaft) 144 | } 145 | 146 | run( 147 | engine: my_engine() 148 | ) 149 | ``` 150 | -------------------------------------------------------------------------------- /tutorial/01_getting_started/01_getting_started.md: -------------------------------------------------------------------------------- 1 | # Tutorial 1: Getting Started 2 | ## Important 3 | **This tutorial assumes that you are using `v0.1.12a` or higher.** 4 | 5 | ## Step 1 - Download and Install Engine Simulator 6 | Follow the instructions for downloading/installing *Engine Simulator* on the [main page](../../README.md). 7 | 8 | ## Step 2 - Start Engine Simulator 9 | Navigate to `bin/` and run `engine-sim-app.exe` 10 | 11 | ![Alt text](assets/screenshot_01.PNG?raw=true) 12 | 13 | After double clicking the `.exe` *Engine Simulator* should start and open with a default engine. 14 | 15 | ![Alt text](assets/screenshot_02.PNG?raw=true) 16 | 17 | **If an error pops up saying that you're missing a DLL, then run the `.exe` files in the `installation/` folder** 18 | 19 | ## Step 3 - Adjust the Simulation Performance 20 | *Engine Simulator* requires a fairly powerful CPU to run well. However, you can still adjust the performance to work with slower CPUs. 21 | 22 | To do this, we first check the RT/DT gauge. 23 | 24 | ![Alt text](assets/screenshot_03.PNG?raw=true) 25 | 26 | A value around 70 is ideal. Above 80 and you will notice audio distortions or a drop in framerate. If your gauge looks like this, you need to adjust the simulation frequency: 27 | 28 | ![Alt text](assets/screenshot_04.PNG?raw=true) 29 | 30 | The **simulation frequency** is the internal simulation "framerate" or tickrate. It is displayed in the *Frequency* gauge: 31 | 32 | ![Alt text](assets/screenshot_05.PNG?raw=true) 33 | 34 | To adjust the tickrate, hold the `n` key and scroll down with your mouse. Once the RT/DT gauge stabilizes at around 70, you've found a good simulation frequency for your PC. 35 | 36 | **IMPORTANT:** different engines have different performance requirements so you may have to adjust this differently for different engines 37 | 38 | **If you still experience audio distortions even after following the above procedure**, check the `IN. BUFFER` gauge. If the gauge is erratic or moves very far to the right or left, your CPU is struggling to keep up with the real-time audio processing. There is no solution to this right now but a fix is planned for future versions. Different engines have different audio processing requirements and so they may work on your PC. Typically engines with 2 or more exhaust systems tend to be the most expensive. 39 | 40 | ## Step 3 - Start the Engine 41 | The system status lights in the bottom left corner show the states of the ignition, starter, dynamometer and dynomometer hold functions. For now, we're only concerned with the ignition and starter lights. 42 | 43 | ![Alt text](assets/screenshot_06.PNG?raw=true) 44 | 45 | ### 1. Turn the ignition on with the `a` key 46 | To turn the ignition on and off, press the `a` key. You should see the ignition indicator light turn on. In a real spark ignition engine, "ignition" indicates that the ignition module is active and the spark plugs will fire. It has the same meaning in *Engine Simulator*. 47 | 48 | ### 2. Enable the starter with the `s` key 49 | The starter is a small electric motor that is fitted to most internal combustion engines. It spins the motor initially so that it can start and then run on its own power. Pressing the `s` key will engage the starter. Once the engine is running under its own power, you can let go of the `s` key. 50 | 51 | ### My audio sounds messed up. What do I do? 52 | If you still have strange audio artifacts like skipping or looping even after adjusting the simulation frequency, the bottleneck may instead be on the audio side of things. There are no adjustments in *Engine Simulator* to solve this right now but it's an area we're actively researching. You may have better luck with a different engine but it's likely that your CPU will struggle regardless of which engine you select. Sorry about that! Look out for future updates which will make the audio processing faster and easier to run on slower CPUs. 53 | 54 | ## Step 4 - Revving the Engine 55 | To rev your engine like a maniac, you can use the following buttons: 56 | 57 | 1. `q` - Light throttle 58 | 2. `w` - Light/part throttle 59 | 3. `e` - Part throttle 60 | 4. `r` - Full throttle 61 | 62 | To finely adjust the throttle, press the `space` key and scroll up and down with mouse. You can see the exact throttle amount in the "Throttle" instrument on the right. 63 | 64 | ![Alt text](assets/screenshot_07.PNG?raw=true) 65 | 66 | ## Step 5 - Performing a Dyno Test 67 | A dynamometer (dyno) is a device which measures the output torque of an engine and converts that to a power output. By default, torque is measured in lb-ft and power is measured in horsepower. 68 | 69 | The dyno in *Engine Simulator* has more features than a real-life dyno. Since it is a theoretical dynamometer, it can both act as an engine brake and it can also *motor* the engine. Motoring an engine means to spin it using an external motor. 70 | 71 | ### 1. Enable the dynamometer with the `d` key 72 | If this stalls your engine, it's probably because the engine idles higher than the minimum speed supported by the dyno (by default it is 1000 rpm). In this case, simply apply part throttle to keep the engine from stalling. 73 | 74 | ### 2. Give the engine full-throttle by pressing the `r` key 75 | Dyno tests in real-life are usually conducted at full-throttle. You could nonetheless do a part-throttle dyno test if you really want to. 76 | 77 | ### 3. Wait for the dyno to reach the engine's redline 78 | The dynometer will continue increasing its speed until either it reaches the engine's redline or it senses that the engine can no longer apply a positive torque to the dynamometer (ie. the engine requries external help to maintain engine speed). 79 | 80 | When the dyno can no longer increase its speed, it is automatically disabled and the maximum torque and power are displayed on the "Torque" and "Power" gauges. 81 | 82 | ![Alt text](assets/screenshot_08.PNG?raw=true) 83 | 84 | To get a read-out of the peak torque and power, press the `i` key. The read-out will be displayed in the status text in the top left corner. 85 | 86 | ![Alt text](assets/screenshot_09.PNG?raw=true) 87 | 88 | ## Step 6 - Visually Inspecting the Engine 89 | 90 | *Engine Simulator* offers a variety of ways to look around and inspect your engine. The **Engine Visualization** display in the center of the screen is a 2D visual representation of the engine you are testing. 91 | 92 | ### Panning and zooming 93 | 1. Pan the display by clicking on the Engine Visualization and dragging with the mouse 94 | 2. Zoom in and out by placing the cursor within the Engine Visualization window and scrolling with the mouse wheel 95 | 96 | ### Warping time 97 | The engine might be a little hard to see while it's running. To slow down time, use the following keys: 98 | 1. `1` key - 1/10 speed 99 | 2. `2` key - 1/100 speed 100 | 3. `3` key - 1/200 speed 101 | 4. `4` key - 1/500 speed 102 | 5. `5` key - 1/1000 speed 103 | 104 | The current simulation speed can be seen in the **1 / Speed** gauge. 105 | 106 | ![Alt text](assets/screenshot_10.PNG?raw=true) 107 | 108 | ### Change Display Layout 109 | Pressing the `tab` key will change between display layouts. 110 | 111 | #### Layout 1 (default) 112 | ![Alt text](assets/screenshot_11.PNG?raw=true) 113 | 114 | #### Layout 2 115 | ![Alt text](assets/screenshot_12.PNG?raw=true) 116 | 117 | #### Layout 3 118 | ![Alt text](assets/screenshot_13.PNG?raw=true) 119 | 120 | ## Step 7 - Drive a Vehicle 121 | *Engine Simulator* comes with a simple vehicle simulation with a manual transmission. Launching is the same as launching a vehicle in real-life but is somewhat complicated by the lack of smooth pedal inputs. Nontheless, it can be done (though controller/steering wheel support is planned). 122 | 123 | ### 1 - Press the clutch pedal with the `shift` key 124 | The `shift` key presses the clutch in (ie disconnects the transmission from the engine). The pressure applied by the clutch disk on the flywheel is shown in the **Clutch** gauge. 0 is equivalent to the clutch pedal being completely pressed. 125 | 126 | ![Alt text](assets/screenshot_14.PNG?raw=true) 127 | 128 | ### 2 - Give the engine part throttle with `w` or `e` 129 | This will depend on the engine. If you want to smoke your clutch completely, you can bounce off the rev-limiter instead of holding part-throttle. For some engines, it might be too difficult to launch without the fine control of a clutch pedal. In that case, simply holding the engine at full throttle will suffice. 130 | 131 | ### 3 - Shift into first gear by pressing the `up` key 132 | Gears are changed using the `up` and `down` arrow keys. The current gear is displayed in the **Gear** display. 133 | 134 | ![Alt text](assets/screenshot_15.PNG?raw=true) 135 | 136 | Release the clutch pedal by releasing the `shift` key. To smoothly release the clutch, hold the `space` key simultaneously. 137 | 138 | ### 4 - Adjust the throttle using `q/w/e/r` until your desired rate of acceleration is achieved 139 | 140 | ### 5 - Shift gear 141 | To change to a higher gear, the same procedure as a real car is followed. Press the clutch with `shift` then the `up` or `down` arrow to change gear. Once you've selected your intended gear, release the clutch by releasing `shift`. The engine's current RPM and the vehicle's current speed are shown prominently in the **Engine Speed** and **Vehicle Speed** gauges. 142 | 143 | ![Alt text](assets/screenshot_16.PNG?raw=true) 144 | 145 | ## Step 8 - Measuring Engine Braking 146 | An engine's braking capabilities can be measured using the dynamometer as well using the hold feature. The dyno hold will *motor* the engine at a rate of your choosing. 147 | 148 | ### 1 - Enable the hold feature by pressing the `h` key 149 | Nothing will happen immediately upon enabling the hold feature because it also requires the dynamometer to be active. 150 | 151 | ### 2 - Enable the dynamometer by pressing the `d` key 152 | The dynamometer will now spin the engine at the speed shown in the "Dyno. Speed" gauge. 153 | 154 | ### 3 - Change the dyno speed by holding `g` and scrolling up/down with the mouse wheel 155 | After adjusting the speed, you can read the measured torque and power of the engine which will usually be negative if the throttle is closed. 156 | 157 | ![Alt text](assets/screenshot_17.PNG?raw=true) 158 | 159 | ## Step 9 - Changing Engines 160 | To change the engine being simulated, press on the "Load Script" button in the upper left corner. 161 | 162 | ![Alt text](assets/screenshot_18.PNG?raw=true) 163 | 164 | Then, navigate to the location that you unzipped *Engine Simulator* to. To load one of the engines that appeared in AngeTheGreat's video series, open an engine in `assets/engines/atg-video-1/` or `assets/engines/atg-video-2/`. 165 | 166 | Allow a little time for the script to load and for the simulation to stabilize. 167 | 168 | ![Alt text](assets/screenshot_19.PNG?raw=true) 169 | 170 | Once the script is loaded, you can interact with the engine in the same way as described in the previous steps. 171 | 172 | ## Step 10 - Changing to Metric Units (optional) 173 | If you'd like to change to metric units, click on the "Load Theme" button in the upper left of the window. 174 | 175 | ![Alt text](assets/screenshot_20.PNG?raw=true) 176 | 177 | Navigate to the location where you unzipped *Engine Simulator* then go to `assets/themes` and choose `default_metric.mr`. You only need to set this once and *Engine Simulator* will remember your theme next time you open the application. 178 | 179 | ![Alt text](assets/screenshot_21.PNG?raw=true) 180 | 181 | ## "Blown" Engines 182 | It can sometimes happen that an engine "explodes" or disappears off the screen. This means that the simulator has reached an unsolvable state from which it cannot recover. This *shouldn't* happen under normal conditions but can happen if you lower the simulation frequency too much or try to run a physically impossible engine. 183 | 184 | There is no way to bring the engine back after it "explodes" in this way. The best option is to press the "Reload" button in top left corner or pressing the `enter` key which will reset the engine and the simulation. 185 | 186 | ![Alt text](assets/screenshot_22.PNG?raw=true) 187 | 188 | ## Conclusion 189 | This tutorial covered all the basics of operting *Engine Simulator*. The next tutorial will teach you how to download engines from the community portal and run them in *Engine Simulator*. 190 | 191 | - [Tutorial 2: Running Community Engines](../02_using_community_engines/02_using_community_engines.md) 192 | - [Back to main page](../../README.md) 193 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Engine Simulator - Community Edition 2 | 3 | [Click here to download the most recent release for Windows](https://github.com/Engine-Simulator/engine-sim-community-edition/releases/download/v0.1.14a/engine-sim-v0.1.14a.zip) 4 | 5 | [Please read the installation instructions below.](#installation-Instructions) 6 | 7 | ## Project Status 8 | 9 | *Engine Simulator - Community Edition* is no longer actively maintained as it is being replaced by a newer and more capable version. To get updates on the state of this project, please join the community [Discord server](https://discord.com/invite/engine-sim-official) where I post updates actively. I also post video updates to my [YouTube channel](https://www.youtube.com/@AngeTheGreat). 10 | 11 | ### Why is this project no longer open source? 12 | This repository is only for the distribution of the Engine Simulator application. You'll notice that there is no application code here. The version of Engine Simulator (v0.1.14a) being distributed here is almost identical to the open source version found [here](https://github.com/ange-yaghi/engine-sim), at least in terms of its core functionality. That version is 100% open-source and free to use for everyone. At the time that that codebase was released, I didn't think much of it and simply released the code for free so that others could learn from it. Since then, it has been used in a few game projects, usually with credit given (which I do appreciate). However, I was not very impressed with certain very high profile game studios using my work and pretending that it was actually their own creation. After that experience, I have been very hesitant about following an open source model for future projects. Going forward, I prefer to follow a model that does not rely on indirect income sources like advertisements, sponsorships, crowdfunding or corporate donations which is how many open-source projects are funded. I prefer the simpler model of creating an application and selling it for a reasonable price which I view as more honest. 13 | 14 | ### What is the Patreon campaign for? 15 | The Patreon funds the development of the **new** Engine Simulator which has almost nothing in common with this project other than the concept. Do not join the Patreon if you intend to support the development of this project as it is no longer actively maintained. 16 | 17 | While I've been able to remove my dependence on YouTube sponsorships, this project does still require Patreon donations to be financially feasible. Please understand that while I appreciate all contributions to the Patreon, the income generated is not nearly enough for me to justify releasing the entire codebase for free (which took me thousands of hours of work to create). Also, my productivity does not magically increase as Patreon donations increase. I'm only a single person with limited hours in the day. Please do not join the Patreon if you want to "speed up development", it unfortunately doesn't work that way. In fact, I really don't need any more Patreon supporters right now as I am in a comfortable position financially to continue development for at least the next 1-2 years. Only join if you want behind the scenes updates and to get a closer look at the development of the game. Otherwise, it's probably best to wait until the general release on Steam. Thank you for understanding. 18 | 19 | ## Introduction 20 | 21 | Welcome to *Engine Simulator - Community Edition*, the free version of *Engine Simulator* by [AngeTheGreat](https://www.youtube.com/@angethegreat). If you're a software developer, the original open-source *Engine Simulator* can be found [here](https://github.com/ange-yaghi/engine-sim). 22 | 23 | ![Alt text](docs/public/screenshot.PNG?raw=true) 24 | 25 | *Engine Simulator* is an engine simulation game that allows you to build, run, test and actually *hear* your engine creations. 26 | 27 | ## How to Download Engine Simulator 28 | 29 | [Click here to download the most recent release](https://github.com/Engine-Simulator/engine-sim-community-edition/releases/download/v0.1.14a/engine-sim-v0.1.14a.zip) 30 | 31 | [Click here](https://github.com/Engine-Simulator/engine-sim-community-edition/releases) for historical releases after v0.1.11a 32 | 33 | [Click here](https://github.com/ange-yaghi/engine-sim/releases) to go to releases v0.1.11a and before 34 | 35 | ## Installation Instructions 36 | *Engine Simulator* does not come with an installer. The `.zip` file that you download contains the entire game and is standalone. You can place it wherever you want. **Do not modify anything inside the game's file directory**. 37 | 38 | 1. Download the *Engine Simulator* `.zip` file (see *How to Download Engine Simulator* above) 39 | 2. Unzip the `.zip` file wherever you like 40 | 3. Inside the unzipped directory, navigate to the `bin/` folder 41 | 4. Run `engine-sim-app.exe` 42 | 5. **For v0.1.13a or earlier**: If an error message pops up saying you are missing a DLL, run the `.exe` files inside the `installation/` folder. These will install the dependencies that *Engine Simulator* needs to run if they're not already on your computer 43 | 44 | ## Controls 45 | *Engine Simulator* uses a minimalistic UI driven by keybinds. The most important ones are below. 46 | | Key/Input | Action | 47 | | :---: | :---: | 48 | | A | Toggle ignition | 49 | | S | Hold for starter | 50 | | Shift | Clutch (hold spacebar at the same time to slowly engage/disengage) | 51 | | Y | Hold clutch at current pressure | 52 | | T/U | Decrease/increase clutch pressure (hold Y while using these keys) | 53 | | Up Arrow | Up gear | 54 | | Down Arrow | Down gear | 55 | | Q, W, E, R | Change throttle position | 56 | | . | Vehicle brake | 57 | | D | Enable dyno | 58 | | H | Enable RPM hold (see below for instructions) | 59 | | G + Scroll | Change hold speed | 60 | | F | Enter fullscreen mode | 61 | | I | Display dyno stats in the information panel | 62 | | Left Arrow | Previous oscilloscope page | 63 | | Right Arrow | Next oscilloscope page | 64 | | Z + Scroll | Volume | 65 | | X + Scroll | Convolution Level | 66 | | C + Scroll | High frequency gain | 67 | | V + Scroll | Low frequency noise | 68 | | B + Scroll | High frequency noise | 69 | | N + Scroll | Simulation frequency | 70 | | M | Increase view layer | 71 | | , | Decrease view layer | 72 | | Enter | Reload engine script | 73 | | Escape | Exit the program | 74 | | Space + Scroll | Fine throttle adjustment | 75 | | 1, 2, 3, 4, 5 | Simulation time warp | 76 | | Tab | Change screen | 77 | 78 | ## Tutorial 79 | If you want to learn how to use *Engine Simulator* check out the tutorials below: 80 | 81 | 1. [Tutorial 1: Getting Started](tutorial/01_getting_started/01_getting_started.md) 82 | 3. [Tutorial 2: Using Community-made Engines](tutorial/02_using_community_engines/02_using_community_engines.md) 83 | 4. Tutorial 3: Build Your Own Engine From Scratch (under construction) 84 | 85 | ## Reporting an Issue 86 | If you find a bug in the game or have a feature request, please open a ticket [here](https://github.com/Engine-Simulator/engine-sim-community-edition/issues). 87 | 88 | If you'd like to speak to the development team directly or get help from the community, it's best to join the [**Engine Simulator Official** Discord Server](https://discord.gg/engine-sim-official). 89 | 90 | ## Patreon Supporters 91 | ### Master Mechanics 92 | 93 | || 94 | |-| 95 | |BeamNG| 96 | |レナVA| 97 | |Maisteer| 98 | |Goldwolf| 99 | |Jai Morgan| 100 | |EMOYGI| 101 | ### Engineers 102 | 103 | || 104 | |-| 105 | |Didrik Esbjug| 106 | |Avxnt| 107 | |Christian Livingston| 108 | |Matej Sadovsky| 109 | |Kohl | 110 | |Eon Valterra| 111 | |Tyler Hull| 112 | |ManagerOfC**| 113 | ### Hotrodders 114 | 115 | ||| 116 | |-|-| 117 | |Kruddy|Deerlight| 118 | |Supernalboot |Jim C K Flaten| 119 | |Brady Fulham|Emil Sönksen| 120 | |Andrew Yacoub|William Leu| 121 | ### Grease Monkeys 122 | 123 | |||||| 124 | |-|-|-|-|-| 125 | |asimo3089|Devin@Hondatuningsuite|Benton1234|Lukas Bartee|darcuter| 126 | |FatFluffyFox|The Zuck|Blade Skydancer|Hayden Henderson|Snowy| 127 | |Brendan M.|Alex Layton|The Cheeze Ity|Elizabeth Layton|MichaelB450| 128 | |Emily|Steelorse |Sgt. Fluff|Ye' old apple|damo| 129 | |WelcomeCat|Thibaut Dubuisson|Bartdavy|sasha bandelier|Andrew Cooper| 130 | |SlimmyJimmy|Jason Becker|ves|Paul Harrison|nicholas jacobs| 131 | |AVeryPlainTyler|Tristan Walker|Mitchell Almstedt|cole newcomb|mike | 132 | |dung|Alvaro ArroyoZamora|viperfan7|Elden|Jenz| 133 | |Tyler Russell (Nytelife26)|Saints Sasha|FémLol Stúdió|Crazy Yany|COOKIES| 134 | |Sascha Kamp|DrDotMadness|CR33DYM0N14|Patt313|Philip Edwards| 135 | |RegularRuby670|J.Es|Lucas Diem|Powerpuncher |Orbitstrider| 136 | |Sampo Karvonen|Mav .|NK10K|Bradley Bristow-Stagg|larsloveslegos| 137 | |JM1NA351|Jaksu2696|Carcar404|John Crowell|Xander| 138 | |Modest MOSFET|Heful |Goeiegast10|Dennis |Jay Dog| 139 | |MaximumQc|Archangel Motors|Steven Wiley|UNIVERSAL ACE|Nicholas H (TheNH813)| 140 | |Bullet Storm|Max Wilson|J D|Restless Apple|Robert Little| 141 | |DragonRuins|William Howard|Josh Donner|Lucas Bos|ryan ellis| 142 | |Yasakai|Sakura Sedaia|IceManV93|beans|Banger King| 143 | |Jake The Rake|Slideless. Woofsky|UNight Industries|Pierce Crawford|Morgs| 144 | |AlphaX|Noah Greenberg|Carl Linden|Dylan Lebiedz|Devin C Martinez| 145 | |Caleb Black|Kyle Knipfer|Lucas Martins Bündchen|svnsixtwo|Matthew McDonald| 146 | |Steven Doyle|FirePuncher |labourateur|nut|MrPiThon| 147 | |Mateusz Ładosz|Skinna Godwin|Björn|Ben Dunn|Gabriel Estores| 148 | |Vim Wizard|Loganboi|Kevin Arsenault|IBS-IS-CRAP|Kroklethon| 149 | |Paul Schaefer|Talal Tariq|Clay Bauer|rotary media|Epic Randomness| 150 | |Sabata |Aloisuri |Kevin Nowald|Eisberg|Beacrox| 151 | |Korimanta|0nope0|Shaqalito|poklijn|Blobby McBlob| 152 | |Name Here|Gavin Osowski|Junpodium TV|wildxkat|Jan-Sander Huiting| 153 | |vincie.net|BeppoBarone|Facundo Estevez||| 154 | ### Tuners 155 | 156 | |||||| 157 | |-|-|-|-|-| 158 | |Kele Tappi|Alexander Stone|Aidan Szalanski|J Anderson|LexLuther| 159 | |Robert K|Marlod|Ian Moss|Beljim46|UCD| 160 | |OldManJenkins|Colin Sandage|Dakota Mackinnon|Carter Kopp|Jakub Kozak| 161 | |Carter Williams|Cadence Plume|BLANK|Provenance EMU|Kalle Nilsson| 162 | |Andrew Taylor|Adrian Kucinski|Boosted Media|Matthew McLennan|Sped| 163 | |Lyan le Golmuth|BetaToaster|Michael Frey|RSOFT92|YellowLight| 164 | |Alessandro Dal Pino|Robert D|Alberto R.|Richard Budíček|Apolly007| 165 | |Chris Fischer|GM|Amelia Taylor|deniaL|James Hart| 166 | |Dylan Engler|BreadForMen|Devin Freeman|Jimmy Briscoe|AIDAN POWELL| 167 | |Ceze |Asher Blythe|Mason E. Cheese|EsuKurimu|Caleb Sartin| 168 | |Jared L.|Hunter Wood|Steven Victoria|Jordan Zondlak|Christopher Fahs| 169 | |Dalton Guillot|Andrew Urbanczyk|vPam |Justin Kruithof|Sawyer Clark| 170 | |Miles Guo|Rewind |Keaton Call|Jeremy B|Atte Saari| 171 | |Ryan Clayton|ISON |Curtis C Coomber|Mike Hart|Zach | 172 | |GeneralMoineau|Jack Sheppeard|Cornelius|Jelle Plukker|Cirithor| 173 | |NPException|Cronos Skies|Symix7|oranjest1|Mathew Graham| 174 | |Matt Amott|Ben Poole|playfulmean videos|Tyler Hughes|James Morgan| 175 | |Stephan Cote|CpTKugelHagel|Floyd Henderson|User 2820|Keegan| 176 | |Phontonic|Justin Biggerstaff|Wesley Bear|kyle crawford|ApatheticWood| 177 | |Ben Vaughn|Erich Westhoven|Zack Myers|Derek Thom|Aaron Beck| 178 | |Scott Petersen|Silvano Früh|Baciu Florin-George|Dylan |Matthew Horton| 179 | |Simon Armstrong|Jabba Jubba|Meemen|Morgn|Myles The Gaming Guy| 180 | |Mors2657|Supersonic2510|Bas Vangermeersch|CYBERBUG_JR|Tbjoern| 181 | |Tyson Makovec|Milkshiekh |Shinkaaaa|Mason Little|Iron| 182 | |Jim Price|Leon Jordan|Octo|Malcolm |Drath| 183 | |Winston Young|Cyrus Bennett|Andy Gilliland|robbie watkins|The_Strebla's| 184 | |Nyle Evans|Matéo Bouchet|Pionpouage|thelvadumee|AbzuOMSi | 185 | |PDMnordChiller|Tiziano Della Fazia|Jon Røsnæs|JohnF|janne| 186 | |las_xd|Mathew Faber|Liam Martin|Creyz974|Luke Davis| 187 | |Senzor Wins|Acrain7|Moore|Asmyth123|Ryan Zanolini| 188 | |Jakob Braun|Multiple Speeding Tickets|John|Turetimber|MAXIMUM YEET| 189 | |Aarav Sinha|Generic_Gamer|Braiden Blood|bluegrey6124|Dean Cannon| 190 | |ttvusmcxapple|Nathem Phillips|John Cushion|ZeldaACFan17|Slabb| 191 | |oror|BigLynch|Alex|Matteo La Corte|Kohler| 192 | |Eric Larvin|IceManDiesel |Devo343 |Thanos|Vincent Sterzel| 193 | |nawaf alsarraf|Colton B|OmegaBushWookie|Artiom Casapu|Gene Brockoff| 194 | |Jan Gruber|Abyssomicin|Panagiotis Zacharis|Jan Pavlic|Vincent Wilfart| 195 | |Connor White|WG89|TRIZE|LimeTurtl3|pschlik| 196 | |Logan Meyers|Jaxx Staxx|William Moore|Avarice|JONATHAN| 197 | |Luca.K2TF|Chris|Frexson|Tom Klukhuhn|Haylee Schäfer| 198 | |Jesse Zuidema|Bjarkizh|Thomas Babik|pirateinanotherlife|Nick Gerner| 199 | |Jaleel trotter|Nathan Byrd|Sami Leiviskä|Engine Sim Fan 94|Shannon Smith| 200 | |Connor Warth|Daniele Perito|Four-C|luggash|Starfire213| 201 | |Simon |Dennis Fechner|Sergi Canaleta|Johannes Rappelt|Photocopied| 202 | |Kari|Niko Autio|Daniel Martinek|Remi |clout_westwoof| 203 | |IcyBlackAgeis|TotallyAm|CJ Plessas|PickleRick |Loizeau| 204 | |Jw|Chance Hall|Akira Takemoto|XxBrasta455xX |Daniel| 205 | |Simon Bernhardt|Fredrik Hagberg|Venican|Jonathan Vincent|Jason Hwang| 206 | |Vetle Høgås|Race Sim Studio|Simon Krayer|xilophor|Nathan Rojas| 207 | |C|Elijah Kleeman|Brendan Colmyer|RedneckSlimShady|Defaultio| 208 | |Bill McDermott|Jack Tompkins|Juuso Natunen|nikos_lvl|Riccardo Mariani| 209 | |MACHINA|Lane Mosier|E=mc^2|Paladin Bloodmoon|jammy| 210 | |sebiii|DMartland|Charles Mills|Caleb Bek|Lieven RYCKEBOER| 211 | |SirBoiledPotato|The British Beluga|AnomalousFerret_|Nathan Greaves|MoonOperator| 212 | |Chase Hansen|POPA ALBERT|Agelessgod|KidozyGAME (Dead)|ToyotaCipra| 213 | |Andrew Lai Wing|Andrew Zoglman|Ranzilla|Reese Norton|viktor lind| 214 | |Mattia Villa|Brenn_the_Otter|Martin .K|Rolly !|jacob3506| 215 | |Zypher|Kurt|B a g g y S h a g g y|Austin King|Iceberg la Fortuna| 216 | |sodmo |Prono_Wolfie|Quentin ZAOUI|Victor Cosiuga|ChiefArcher| 217 | |Ben|Vinnie DiMauro|พศวีร์ พ้นภัย|FLUXZiON|CreamyVonCreme| 218 | |Adam Lovelace|Brittany Hilton|george |notD34THNIGHT|Inventor| 219 | |Leon Schutte|Acid|Maxime Desages|József Gulyás|| 220 | ### Junior Mechanics 221 | 222 | |||||| 223 | |-|-|-|-|-| 224 | |Devin Abolins|Brooks Moses|Konrad|Anderson Huynh|Josh D| 225 | |SOPA_|teiiio|Tim van der Linde|Karol Szép|Kacpe| 226 | |veggie man (extreme)|Doudimme|Markus Pelto|Adrien MC|dazy| 227 | |Beppierre|Joe Underwood|KermenTheFrog|nathan gould|Rafael Monteiro| 228 | |Jules Schattenberg|Philipp Popetschnigg|adrian|Melonenstrauch|Christopher Zimmerman| 229 | |jonthefuzz|Kajetan Cupa|Mumaransa |Roman Niukhalov|Naters305 | 230 | |Dingus|Benoit Fournier|Alex Fehr|Dingocat|Riccardo Talamini| 231 | |Naomi Humin|Brandon Crotts|Josh Kern|Phil G|Kevin1 | 232 | |Jace Almanza|Jonas|Udo Schmidt|djsas3000|Class 800| 233 | |Cody Cox|Taylor Warwick|sock|T2 Beatnik|austyn | 234 | |Lukas Stadler|Aaron Hawkins|Bell|Avery Snyder|ZeroXlevel Gaming| 235 | |Maksymilian Suchomski|Nelson Pineda|Eli Boswell|sammy|Nick Galloway| 236 | |Vailos Quiet|Goun 2ice|joshua loar|CJ Clarkson|Fragzmantd82| 237 | |Ratsbedoinratstuffwithrats|Zach Ogdahl|Jon Pendleton|Jonas Füßer|Patrick Dreier| 238 | |Adrian |Rosita the Cat|Sebastix01 _|BraveSteelDragon|Reshi33| 239 | |SamDaSamosa|Olgierd Nowakowski|drew1234567890|Mr Engineer|daniel frick| 240 | |nzkiwibro|Gtaivmostwanted |Kingoffdarkness|eric |Anthony Stuart| 241 | |Jerry Harris|Tyler Rodenburg|Vjekoslav Babnik|Xen|R Rafferty| 242 | |supercharge71|Sc0pe |Sean Prevett|Blake Brown|ryunyun| 243 | |Marschae Sanders|GMoneyHomie|Emil DeVries|max mckeen|Tristan Lundquist| 244 | |Chirag Patel|Simon Viell|Ben Van Daele|Morgan Maugenet|The WeebCarEnthusiast| 245 | |Albie Roberts|Twatface McGee|Atle Grelland|Andy Petrow|Joshua Baker| 246 | |Samuel Donaldson|Jackson Attwood|Caramel|Ironman2613|ian weaver| 247 | |Devil|اوهام الشمري|Historic Sim Studios|Ian Williamson|Junkman | 248 | |Roland Respondek|LoKy|Feba|Marvin |Bob Smith| 249 | |Alfie |Josh Clarke|Han |Gabriel Spencer|Naren Rubio| 250 | |Aiolos |QUUXZ|Landers Lin|nate menter|GOOGLE WON'T LET ME USE A COPYPASTA AS MY NAME| 251 | |VJ Howard|sorgan 71|Tannargh|Raphael Kasper|貴哉 村木| 252 | |zach lewis|yesbuddy420|Patrick |Jackson Abney|Beesoldier | 253 | |Spencer McGeehan|Markus Kleine|dpitkin|Jesse Armstrong|Andy Shinn| 254 | |Mike van Esch|Francesco Mantegazza|RaptorJeezus|Rockdude442|RainerReinfall | 255 | |Simplysem|Ethan Tuck|117 Gaming|MyDuck|Ceclan Dumitru| 256 | |Samuel H|Gage Simon|Keo|Alternate Steve|mike9013 | 257 | |Josh West|Uruima|Alexander Hickey|DDev|Poppin_Pistons| 258 | |Apex|Samepic|ittikhon chaipool|ClydeOasis|William Bergström| 259 | |Ciro Rancourt|Texi|ElArGee|Patti Odds|Nutmaster333| 260 | |Meryem|Anon|Modestas Janulis |Daniel Inwood|nath boudreault| 261 | |Austin Hyde|Jesper |Alessandro Ianne|Mikhail|Lord Faulken| 262 | |Arttu Piippo|Ferry|Julian |Hyps Space|Rafael Moraes| 263 | |EpicDroneFilms|LunaFolf|Oscrr|ang ang223|Roam AU| 264 | |LIl SepTy|zach kettering|Matthew|Neonjellyfish |Anthony Florence| 265 | |Jokerzrus|Evan Gough|Jake Warner|Alex Squier|Colinitis Inc| 266 | |Fizzer99|Jeremy Grosser|Kurisez ||| 267 | --------------------------------------------------------------------------------