# Impostor
-Impostor is one of the first **Among Us** private servers, written in C#.
+[](https://discord.gg/Mk3w6Tb)
+[](https://ci.appveyor.com/project/Impostor/Impostor/branch/dev)
-The latest version supported is `2020.9.22`, both desktop and mobile.
+Impostor is one of the first **Among Us** private servers, written in C#.
+
+We support steam, itch, android and iOS. The latest version supported is `2020.9.22`, the `dev` build currently supports `2020.10.22`.
+
+| Impostor version | Among Us version | Experimental | Download |
+|-|-|-|-|
+| 1.1.0 | 2020.09.07 - 2020.09.22 | No | [](https://github.com/Impostor/Impostor/releases/tag/v1.1.0) |
+| 1.2.0 | 2020.09.22 - 2020.10.22 | Yes | [](https://ci.appveyor.com/project/Impostor/Impostor/branch/dev/artifacts) |
There are no special features at this moment, the goal is aiming to be as close as possible to the real server, for now. In a later stage, making modifications to game logic by modifying `GameData` packets can be looked at.
-[Discord server for Impostor](https://discord.gg/Mk3w6Tb)
+
## Features
-All Among Us features are implemented. It is a full replacement for the official server.
-
-- [x] Create game
-- [x] Join game
-- [x] Start game
-- [x] Game listing
-- [x] V1 GameCodes (AAAA)
-- [x] V2 GameCodes (AAAAAA)
-- [x] Kick player
-- [x] Ban player
-- [x] Server redirection
-- [ ] Multiple master servers
+- All Among Us features are implemented. It is a full replacement for the official server.
+- Plugin support.
## Installation
version: '{build}'
environment:
- IMPOSTOR_VERSION: '1.1.0'
+ IMPOSTOR_VERSION: '1.2.0'
DOTNET_CLI_TELEMETRY_OPTOUT: 1
branches:
1. [Running the server](Running-the-server.md)
2. [Server configuration](Server-configuration.md)
-3. [Building-from-source](Building-from-source.md)
-4. [Frequently answered questions](FAQ.md)
\ No newline at end of file
+3. [Building from source](Building-from-source.md)
+4. [Writing a plugin](Writing-a-plugin.md)
+5. [Frequently answered questions](FAQ.md)
\ No newline at end of file
- `IOptions<ServerRedirectorConfig>`
- You can add your own classes and `EventListener` implementation to the `IServiceProvider` by creating a new class and implementing `IPluginStartup`. Make sure to register them as a singleton `services.AddSingleton<IEventListener, GameEventListener>();`.
+### Server configuration
+
+Constantly copying the plugin dll to your server directory can be pretty annoying. Luckily we have a solution for that. In your Impostor server open the `config.json` and add the `PluginLoader` from the example below, replace the path with the build destination of your plugin.
+
+```json
+{
+ "Server": {
+ "PublicIp": "127.0.0.1",
+ "PublicPort": 22023,
+ "ListenIp": "0.0.0.0",
+ "ListenPort": 22023
+ },
+ "PluginLoader": {
+ "Paths": [
+ "D:\\Projects\\Impostor\\src\\Impostor.Plugins.Example\\bin\\Debug\\netstandard2.1"
+ ],
+ "Libraries": []
+ }
+}
+```
+
+### Using other libraries
+
+Sometimes you need to use libraries that the original Impostor server does not provide. The dll files of these libraries must be placed in the `libraries` folder next to the server executable. You could also provide them by modifying the `PluginLoader.Libraries` option in the `config.json`, similarly to the `PluginLoader.Paths` option.
+
## 8. Missing/invalid data or want more functions?
The `Impostor.Api` is currently in beta. There are a lot of things still missing and we would like to hear from you what you need to develop a plugin.
dotnet_naming_style.pascal_case_style.capitalization = pascal_case
+# Async methods should have "Async" suffix
+dotnet_naming_rule.async_methods_end_in_async.symbols = any_async_methods
+dotnet_naming_rule.async_methods_end_in_async.style = end_in_async
+dotnet_naming_rule.async_methods_end_in_async.severity = warning
+
+dotnet_naming_symbols.any_async_methods.applicable_kinds = method
+dotnet_naming_symbols.any_async_methods.applicable_accessibilities = *
+dotnet_naming_symbols.any_async_methods.required_modifiers = async
+
+dotnet_naming_style.end_in_async.required_prefix =
+dotnet_naming_style.end_in_async.required_suffix = Async
+dotnet_naming_style.end_in_async.capitalization = pascal_case
+dotnet_naming_style.end_in_async.word_separator =
+
# error RS2008: Enable analyzer release tracking for the analyzer project containing rule '{0}'
dotnet_diagnostic.RS2008.severity = none
<Project Sdk="Microsoft.NET.Sdk">
- <PropertyGroup>
- <TargetFramework>netstandard2.0</TargetFramework>
- <CodeAnalysisRuleSet>ProjectRules.ruleset</CodeAnalysisRuleSet>
- <LangVersion>9</LangVersion>
- <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
- <Nullable>enable</Nullable>
- <Version>1.0.0</Version>
- <IncludeSymbols>true</IncludeSymbols>
- <SymbolPackageFormat>snupkg</SymbolPackageFormat>
- </PropertyGroup>
+ <PropertyGroup>
+ <TargetFramework>netstandard2.0</TargetFramework>
+ <CodeAnalysisRuleSet>ProjectRules.ruleset</CodeAnalysisRuleSet>
+ <LangVersion>9</LangVersion>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <Nullable>enable</Nullable>
+ <Version>1.0.0</Version>
+ <IncludeSymbols>true</IncludeSymbols>
+ <SymbolPackageFormat>snupkg</SymbolPackageFormat>
+ <AssemblyName>Impostor.Api</AssemblyName>
+ <AssemblyTitle>Impostor.Api</AssemblyTitle>
+ <Authors>AeonLucid</Authors>
+ <Description>An api library for Impostor, an Among Us private server. You need this package to write plugins for Impostor.</Description>
+ <PackageId>Impostor.Api</PackageId>
+ <PackageTags>Among Us;Impostor;Impostor Plugin</PackageTags>
+ <PackageIconUrl>https://raw.githubusercontent.com/Impostor/Impostor/dev/docs/images/logo_64.png</PackageIconUrl>
+ <PackageProjectUrl>https://github.com/Impostor/Impostor</PackageProjectUrl>
+ <RepositoryType>git</RepositoryType>
+ <RepositoryUrl>https://github.com/Impostor/Impostor</RepositoryUrl>
+ </PropertyGroup>
- <ItemGroup>
- <PackageReference Include="Microsoft.Bcl.HashCode" Version="1.1.0" />
- <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0-rc.1.20451.14" />
- <PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="5.0.0-rc.1.20451.14" />
- <PackageReference Include="Nullable" Version="1.3.0">
- <PrivateAssets>all</PrivateAssets>
- <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
- </PackageReference>
- <PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
- <PrivateAssets>all</PrivateAssets>
- <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
- </PackageReference>
- </ItemGroup>
+ <ItemGroup>
+ <PackageReference Include="Microsoft.Bcl.HashCode" Version="1.1.0"/>
+ <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0-rc.1.20451.14"/>
+ <PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="5.0.0-rc.1.20451.14"/>
+ <PackageReference Include="Nullable" Version="1.3.0">
+ <PrivateAssets>all</PrivateAssets>
+ <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+ </PackageReference>
+ <PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
+ <PrivateAssets>all</PrivateAssets>
+ <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+ </PackageReference>
+ </ItemGroup>
</Project>
\ No newline at end of file