Skip to content

Commit

Permalink
Add ZenKit tool information
Browse files Browse the repository at this point in the history
  • Loading branch information
lmichaelis committed Feb 9, 2024
1 parent 271c8db commit 4580288
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 0 deletions.
4 changes: 4 additions & 0 deletions docs/zengin/tools/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,7 @@ video games Gothic and Gothic 2 Night of the Raven.
- [Union Gothic World Editor](https://worldofplayers.ru/threads/42322/) - Saturas' world editor, supports new object classes created with Union
- [Gothic World Editor](https://worldofplayers.ru/threads/40530/) - World editor for vanilla worlds, works with G1, G2 and G2 NotR worlds
- [Spacer.NET](https://forum.worldofplayers.de/forum/threads/1557793-WORLD-EDITOR-Spacer-NET) - A modernised version of Spacer available as a Gothic Mod.

**Libraries**

- [ZenKit](libraries/zenkit.md) - A library to load, save and use almost all ZenGin asset files
49 changes: 49 additions & 0 deletions docs/zengin/tools/libraries/zenkit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# ZenKit

![ZenKit Logo](https://zk.gothickit.dev/assets/logo.png)

[ZenKit](https://github.com/GothicKit/ZenKit) is a C++-library for loading and saving proprietary *ZenGin* files and
is intended to be a successor to [Andre Taulien](https://github.com/ataulien/)'s
[ZenLib](https://github.com/ataulien/ZenLib). ZenKit wrappers for *Java* and *C#* are also available in the form of
[ZenKitCS](https://github.com/GothicKit/ZenKitCS) and [ZenKit4J](https://github.com/GothicKit/ZenKit4J) which are also
published to [NuGet](https://www.nuget.org/packages/ZenKit) and
[Maven Central](https://mvnrepository.com/artifact/dev.gothickit/zenkit) respectively.

ZenKit is used as the file loading and scripting backend for [OpenGothic](https://github.com/Try/OpenGothic) and has
recently found adoption in [GothicVR](https://github.com/GothicVRProject/GothicVR).

## File Support

The following file types and operations are supported by ZenKit. Requests to support additional file types are welcome
and can be submitted to [the GitHub repository](https://github.com/GothicKit/ZenKit).

| File Type | Extension | Load[^1] | Save[^2] | Comment |
|-----------------------|--------------------------------|----------|----------|--------------------------------------------------------------------|
| Model Animation | `.MAN` | ✓ Yes | ✘ No ||
| Model Hierarchy | `.MDH` | ✓ Yes | ✓ Yes ||
| Model Mesh | `.MDM` | ✓ Yes | ✓ Yes | Saving is only partially supported |
| Model | `.MDL` | ✓ Yes | ✓ Yes | Saving is only partially supported |
| Morph Mesh | `.MMB` | ✓ Yes | ✘ No ||
| Multi Resolution Mesh | `.MRM` | ✓ Yes | ✓ Yes ||
| Mesh | `.MSH` | ✓ Yes | ✓ Yes | Saving is only partially supported |
| Daedalus Script | `.DAT` | ✓ Yes | ✘ No | A VM implementation is available (see [Daedalus VM](#daedalus-vm)) |
| Texture | `.TEX` | ✓ Yes | ~ Yes | There is currently no API to alter image data |
| Font | `.FNT` | ✓ Yes | ✓ Yes ||
| ZenGin Archive | `.ZEN` | ✓ Yes | ✓ Yes ||
| Text/Cutscenes | `.BIN`, `.CSL`, `.DAT`, `.LSC` | ✓ Yes | ✓ Yes ||
| Model Script | `.MDS`, `.MSB` | ✓ Yes | ✘ No ||
| Virtual File System | `.VDF` | ✓ Yes | ✓ Yes | Allows full integration with the host file system |

## Daedalus VM

Along facilities to read and write most resource files you might find in a typical Gothic installation, ZenKit also
includes a virtual machine which can execute Daedalus scripts. An extensive API is available to inspect the files,
add external handlers and bind Daedalus classes into C++-structs. Bindings for the original classes are available
as an extension to ZenKit and available to the *C#* and *Java* wrappers natively.

## Documentation

Additional documentation for ZenKit can be found at [zk.gothickit.dev](https://zk.gothickit.dev/library/overview/).

[^1]: ZenKit is able to fully load these files
[^2]: ZenKit is able to save these files at least partially

0 comments on commit 4580288

Please sign in to comment.