UnrealScript library and basis for all Acedia Framework mods
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
4.2 KiB

2 years ago
# AcediaCore alpha
AcediaCore is an UnrealScript library that is intended to provide a framework
for creating mods for Killing Floor.
Currently AcediaCore...
* **Changes as little as possible.** Despite its size, AcediaCore will only
make changes that were requested from it, otherwise doing nothing and
providing you with completely vanilla experience.
This is a quality it will keep in all consequent releases.
* **Server-side.** So far AcediaCore was developed as a server-side only
library.
Some work on client-side feature has already started and at some point
AcediaCore *will* support working with mods that affect clients, but
this side of API is not intended to be accessed as of right now.
* **Unstable API** This doesn't mean that AcediaCore crashes, but that API
provided by AcediaCore (classes definitions, functions' signatures, ...)
can and will change as development goes on.
We aren't going to do it just for the hell of it and will try to preserve
the current behavior as much as is reasonable, but if providing a better API
would require us breaking compatibility, we will break it
(until version `1.0` is released).
AcediaCore is currently in the alpha with a goal to expose it to slightly wider
circle of people, while finishing some yet incomplete features.
So far there's very little documentation to go by:
* For reference documentation you can check the source code: it is rather
heavily documented;
* For basic usage examples you can refer to
[this document](https://insultplayers.ru/killingfloor/acedia/howto/);
* For information about how it works internally and justifications for why
things were made the way they are, read
[this document](https://insultplayers.ru/killingfloor/acedia/docs/).
## Why should I be interested in it?
Currently AcediaCore doesn't offer much in terms of gameplay-altering features,
focusing mostly on utility APIs:
* **Aliases** Write `$ak47` instead of `KFMod.AK47AssaultRifle`;
* **Commands** Don't worry about parsing your `mutate` commands' input,
AcediaCore will handle it for you;
* **Text** Slower, but more functional text types. Define colored `string`s like
this:
`This is a string with {\$red red}, {rgb(0,255,0) green} and {#0000ff blue} colors! There is also {\$pink pink with {\$gold embedded gold} color}!`;
* **Parsing** Additional tools for making parsing whatever you want easier;
* **Signals and Slots** Want to handle user's `mutate` commands?
Just do this:
`_server.unreal.mutator.OnMutate(self).connect = HandleMutate;`;
* **Collections** Generic collections that can be converted into JSON and back;
* **Features** More of a pain in the ass to make than `Mutator`s, but should
provide better UX (I hope);
* **Console output** No more ugly-wrapped lines from `ClientMessage`,
AcediaCore's `ConsoleWriter` will auto-wrap long lines for you;
* **Local databases** Working local databases that can store arbitrary
JSON values, still require a bit of polish;
* **Unit testing** Built-in support for unit testing of things that can be
tested within one tick;
* **[WIP] External applications** Exchange JSON messages with external
applications, including remote JSON databases. Passed proof-of-concept
stage, but still unfinished;
## Installation
There is no need for installation besides copying the mod file into your
server's `System/` directory, but to actually make use of AcediaCore you need
to install
[AcediaLauncher](https://www.insultplayers.ru/git/AcediaFramework/AcediaLauncher).
There is a way to use AcediaCore without launcher or any other package, but we
will document it later, after polishing a few things.
## Related projects
Some of the projects that are still in development:
* [AcediaLauncher](https://www.insultplayers.ru/git/AcediaFramework/AcediaLauncher)
- for starting up AcediaCore and packages that depend on it;
* [AcediaFixes](https://www.insultplayers.ru/git/AcediaFramework/AcediaFixes)
- game bug fixes have moved into this package;
* [Futility](https://www.insultplayers.ru/git/AcediaFramework/Futility)
- a package that aims to make administration and mod testing easier through
Admin-Plus-esque commands and non-gameplay related configuration features.