LICENSE, README, and initial editor stuff

This commit is contained in:
Xaymar
2026-01-16 10:10:19 +01:00
commit 5fb62fe449
6 changed files with 193 additions and 0 deletions
+117
View File
@@ -0,0 +1,117 @@
# AUTOGENERATED COPYRIGHT HEADER START
# Copyright (C) 2018-2023 Michael Fabian 'Xaymar' Dirks <info@xaymar.com>
# AUTOGENERATED COPYRIGHT HEADER END
# Basic Formatting
TabWidth: 4
UseTab: ForContinuationAndIndentation
ColumnLimit: 0
#- 0 does not respect the original line breaks!
# Language
Language: Cpp
Standard: c++17
# Indentation
AccessModifierOffset: 0
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
IndentCaseLabels: false
#IndentPPDirectives: true
IndentWidth: 4
IndentWrappedFunctionNames: true
NamespaceIndentation: All
# Includes
#IncludeBlocks: Regroup
IncludeCategories:
- Regex: '^"warning-disable.hpp"$'
Priority: 50
- Regex: '^(<|")(config.hpp|common.hpp|ui-common.hpp|strings.hpp|version.hpp|obs.h)("|>)'
Priority: 100
- Regex: '^<obs-'
Priority: 150
- Regex: '^<'
Priority: 200
- Regex: '^<Q'
Priority: 250
- Regex: '^"'
Priority: 300
- Regex: '.moc"$'
Priority: 300
- Regex: '^"warning-enable.hpp"$'
Priority: 500
SortIncludes: true
# Alignment
AlignAfterOpenBracket: true
AlignConsecutiveAssignments: true
AlignConsecutiveDeclarations: true
AlignEscapedNewlines: Left
AlignOperands: true
AlignTrailingComments: false
AlignArrayOfStructures: Right
DerivePointerAlignment: false
PointerAlignment: Left
# Wrapping and Breaking
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: true
BraceWrapping:
AfterClass: false
AfterControlStatement: false
AfterEnum: false
# AfterExternBlock: false
AfterFunction: true
AfterNamespace: false
AfterStruct: false
AfterUnion: false
BeforeCatch: false
BeforeElse: false
SplitEmptyFunction: false
SplitEmptyRecord: false
SplitEmptyNamespace: false
BinPackArguments: true
BinPackParameters: true
BreakBeforeBinaryOperators: NonAssignment
BreakBeforeBraces: Custom
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: BeforeColon
#BreakInheritanceList: BeforeColon
BreakStringLiterals: true
ConstructorInitializerAllOnOneLineOrOnePerLine: false
Cpp11BracedListStyle: true
# Spaces
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: false
SpaceBeforeAssignmentOperators: true
#SpaceBeforeCpp11BracedList: false
#SpaceBeforeCtorInitializerColon: true
#SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
#SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
# Other
CommentPragmas: '^(!FIXME!|!TODO!|ToDo:)'
CompactNamespaces: false
DisableFormat: false
FixNamespaceComments: true
#ForEachMacros: ''
KeepEmptyLinesAtTheStartOfBlocks: false
ReflowComments: false
SortUsingDeclarations: true
+21
View File
@@ -0,0 +1,21 @@
# AUTOGENERATED COPYRIGHT HEADER START
# Copyright (C) 2017-2024 Michael Fabian 'Xaymar' Dirks <info@xaymar.com>
# AUTOGENERATED COPYRIGHT HEADER END
# top-most EditorConfig file
root = true
# Unix-style newlines with a newline ending every file.
[*]
insert_final_newline = true
trim_trailing_whitespace = true
charset = utf-8
indent_style = tab
indent_size = 4
[*.yml]
indent_style = space
indent_size = 2
[*.md]
trim_trailing_whitespace = false
+2
View File
@@ -0,0 +1,2 @@
/venv
/build
+23
View File
@@ -0,0 +1,23 @@
# License
Copyright 2025-2026 Narta Xaymar Dirks <info@xaymar.com>
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
## Third Party Projects & Licenses
| Project | Copyright (c) | License |
|---|---|---|
| boost::asio (WebSocket++) | | Boost Software License - Version 1.0 |
| libpqxx | 2000-2026 Jeroen T. Vermeulen | [3-Clause BSD License](https://github.com/jtv/libpqxx/blob/master/COPYING) |
| nlohmann::json | 2013-2026 Niels Lohmann | [MIT License](https://github.com/nlohmann/json/blob/develop/LICENSE.MIT) |
| WebSocket++ | 2014 Peter Thorson | [Modified 3-Clause BSD License](https://github.com/zaphoyd/websocketpp/blob/master/COPYING) |
### Notes
- We've applied the ASIO compatibility patches to WebSocket++ in order to use the newest versions.
+22
View File
@@ -0,0 +1,22 @@
# Archipelago Room Server
A room server implementation for the multiworld randomizer Archipelago.
Licensed under 3-Clause BSD License. For more information see COPYING.md
## Design
Some brainstorming about what needs to be done.
### Basics
In the ideal case there is one room server per machine that handles all rooms and users that connect to that machine. It'd also be nice if it could be controlled via WebSocket as well either locally or remotely.
## Frequently Asked Questions (FAQ)
*All the questions that were asked or would be asked frequently.*
### Why rewrite the room server in a different programming language?
While Python is quite nice when it comes to ease of use and how quickly you can get something off the ground it suffers from significant performance issues. Some of them can be reduced with CPython or similar but you can never fully get rid of them entirely. This is the case for most if not all higher level languages that either need an intermediate representation or are compiled at runtime (JIT).
Lower level languages tend to avoid this by shifting the heavy lifting to a compile and link step resulting in much faster execution. However they're harder to work with and any issues that occur during runtime tend to be unrecoverable. Technically Rust is "safer" to write this in but I have a personal hatred for Rust's awful inconsistent syntax and rules.
### Isn't uWebSockets faster than WebSocket++?
Maybe? There aren't any proper benchmarks out there for this kind of stuff. Most of the benchmarks tend to be tied to databases which will be end up being the bottleneck. I just picked what integrates with C++ more.
+8
View File
@@ -0,0 +1,8 @@
{
"folders": [
{
"path": "."
}
],
"settings": {}
}