rewog 3.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rewog-3.0.0.dist-info/METADATA +518 -0
- rewog-3.0.0.dist-info/RECORD +70 -0
- rewog-3.0.0.dist-info/WHEEL +4 -0
- rewog-3.0.0.dist-info/entry_points.txt +3 -0
- rewog-3.0.0.dist-info/licenses/LICENSE +21 -0
- wog_dump/__init__.py +27 -0
- wog_dump/cli/__init__.py +1 -0
- wog_dump/cli/auth.py +128 -0
- wog_dump/cli/cache.py +123 -0
- wog_dump/cli/catalog.py +167 -0
- wog_dump/cli/convert.py +59 -0
- wog_dump/cli/decrypt.py +118 -0
- wog_dump/cli/download.py +214 -0
- wog_dump/cli/errors.py +76 -0
- wog_dump/cli/info.py +197 -0
- wog_dump/cli/main.py +250 -0
- wog_dump/cli/pipeline.py +152 -0
- wog_dump/cli/print_export.py +110 -0
- wog_dump/cli/render.py +210 -0
- wog_dump/cli/scene.py +248 -0
- wog_dump/cli/serve.py +57 -0
- wog_dump/cli/unpack.py +120 -0
- wog_dump/core/__init__.py +1 -0
- wog_dump/core/anim.py +99 -0
- wog_dump/core/api.py +154 -0
- wog_dump/core/auth.py +471 -0
- wog_dump/core/catalog.py +118 -0
- wog_dump/core/config.py +373 -0
- wog_dump/core/database.py +368 -0
- wog_dump/core/decrypt.py +317 -0
- wog_dump/core/download.py +688 -0
- wog_dump/core/export.py +643 -0
- wog_dump/core/glb.py +657 -0
- wog_dump/core/http.py +72 -0
- wog_dump/core/key_import.py +502 -0
- wog_dump/core/keys.py +295 -0
- wog_dump/core/paths.py +59 -0
- wog_dump/core/printprep.py +249 -0
- wog_dump/core/probe.py +187 -0
- wog_dump/core/render.py +319 -0
- wog_dump/core/scene.py +1393 -0
- wog_dump/core/scene_states.py +440 -0
- wog_dump/core/scene_steps.py +73 -0
- wog_dump/core/transforms.py +240 -0
- wog_dump/core/unpack.py +846 -0
- wog_dump/core/viewer.py +125 -0
- wog_dump/core/webapp/__init__.py +1 -0
- wog_dump/core/webapp/app.py +218 -0
- wog_dump/core/webapp/static/app.js +66 -0
- wog_dump/core/webapp/static/index.html +26 -0
- wog_dump/core/webapp/static/weapon-view.js +130 -0
- wog_dump/core/webapp/static/weapon.html +46 -0
- wog_dump/resources/__init__.py +0 -0
- wog_dump/resources/blender_setup.py +182 -0
- wog_dump/resources/locales/ru/LC_MESSAGES/wog_dump.po +52 -0
- wog_dump/resources/render_turntable.py +111 -0
- wog_dump/resources/render_video.py +133 -0
- wog_dump/resources/viewer/template.html +84 -0
- wog_dump/resources/viewer/vendor/LICENSE +21 -0
- wog_dump/resources/viewer/vendor/PATCHES.md +8 -0
- wog_dump/resources/viewer/vendor/addons/controls/OrbitControls.js +1523 -0
- wog_dump/resources/viewer/vendor/addons/loaders/GLTFLoader.js +4727 -0
- wog_dump/resources/viewer/vendor/addons/utils/BufferGeometryUtils.js +1373 -0
- wog_dump/resources/viewer/vendor/three.module.min.js +6 -0
- wog_dump/resources/viewer/viewer.js +350 -0
- wog_dump/utils/__init__.py +1 -0
- wog_dump/utils/i18n.py +78 -0
- wog_dump/utils/logging.py +603 -0
- wog_dump/utils/normal_map.py +345 -0
- wog_dump/utils/progress.py +97 -0
|
@@ -0,0 +1,518 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: rewog
|
|
3
|
+
Version: 3.0.0
|
|
4
|
+
Summary: A modern tool to download, decrypt and unpack 3D gun models from World of Guns: Gun Disassembly
|
|
5
|
+
Project-URL: Homepage, https://github.com/InzGIBA/ReWOG
|
|
6
|
+
Project-URL: Repository, https://github.com/InzGIBA/ReWOG
|
|
7
|
+
Project-URL: Documentation, https://github.com/InzGIBA/ReWOG/blob/main/README.md
|
|
8
|
+
Project-URL: Changelog, https://github.com/InzGIBA/ReWOG/blob/main/CHANGELOG.md
|
|
9
|
+
Project-URL: Issues, https://github.com/InzGIBA/ReWOG/issues
|
|
10
|
+
Project-URL: Bug Tracker, https://github.com/InzGIBA/ReWOG/issues
|
|
11
|
+
Author-email: hampta <hampta@example.com>, inzgiba <inzgiba@gmail.com>
|
|
12
|
+
Maintainer-email: inzgiba <inzgiba@gmail.com>
|
|
13
|
+
License: MIT
|
|
14
|
+
License-File: LICENSE
|
|
15
|
+
Keywords: 3d-models,decryption,game-assets,unity,world-of-guns
|
|
16
|
+
Classifier: Development Status :: 4 - Beta
|
|
17
|
+
Classifier: Environment :: Console
|
|
18
|
+
Classifier: Intended Audience :: Developers
|
|
19
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
20
|
+
Classifier: Operating System :: OS Independent
|
|
21
|
+
Classifier: Programming Language :: Python :: 3
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
24
|
+
Classifier: Topic :: Games/Entertainment
|
|
25
|
+
Classifier: Topic :: Multimedia :: Graphics :: 3D Modeling
|
|
26
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
27
|
+
Classifier: Topic :: Utilities
|
|
28
|
+
Requires-Python: >=3.12
|
|
29
|
+
Requires-Dist: click>=8.1.0
|
|
30
|
+
Requires-Dist: pillow>=10.0.0
|
|
31
|
+
Requires-Dist: pydantic>=2.4.0
|
|
32
|
+
Requires-Dist: python-dotenv>=1.0
|
|
33
|
+
Requires-Dist: requests>=2.31.0
|
|
34
|
+
Requires-Dist: rich>=13.0.0
|
|
35
|
+
Requires-Dist: unitypy>=1.10.0
|
|
36
|
+
Provides-Extra: dev
|
|
37
|
+
Requires-Dist: black>=23.0.0; extra == 'dev'
|
|
38
|
+
Requires-Dist: flake8>=6.0.0; extra == 'dev'
|
|
39
|
+
Requires-Dist: httpx>=0.27; extra == 'dev'
|
|
40
|
+
Requires-Dist: isort>=5.12.0; extra == 'dev'
|
|
41
|
+
Requires-Dist: mkdocs-material>=9.5; extra == 'dev'
|
|
42
|
+
Requires-Dist: mkdocstrings[python]>=0.25; extra == 'dev'
|
|
43
|
+
Requires-Dist: mypy>=1.5.0; extra == 'dev'
|
|
44
|
+
Requires-Dist: pre-commit>=3.4.0; extra == 'dev'
|
|
45
|
+
Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
|
|
46
|
+
Requires-Dist: pytest-mock>=3.11.0; extra == 'dev'
|
|
47
|
+
Requires-Dist: pytest>=7.4.0; extra == 'dev'
|
|
48
|
+
Requires-Dist: types-requests>=2.31.0; extra == 'dev'
|
|
49
|
+
Provides-Extra: mitm
|
|
50
|
+
Requires-Dist: mitmproxy>=10.0; extra == 'mitm'
|
|
51
|
+
Provides-Extra: print
|
|
52
|
+
Requires-Dist: networkx>=3.0; extra == 'print'
|
|
53
|
+
Requires-Dist: numpy>=1.26; extra == 'print'
|
|
54
|
+
Requires-Dist: trimesh>=4.0; extra == 'print'
|
|
55
|
+
Provides-Extra: test
|
|
56
|
+
Requires-Dist: pytest-cov>=4.1.0; extra == 'test'
|
|
57
|
+
Requires-Dist: pytest-mock>=3.11.0; extra == 'test'
|
|
58
|
+
Requires-Dist: pytest>=7.4.0; extra == 'test'
|
|
59
|
+
Provides-Extra: usd
|
|
60
|
+
Requires-Dist: usd-core>=24.0; extra == 'usd'
|
|
61
|
+
Provides-Extra: web
|
|
62
|
+
Requires-Dist: fastapi>=0.110; extra == 'web'
|
|
63
|
+
Requires-Dist: uvicorn>=0.29; extra == 'web'
|
|
64
|
+
Description-Content-Type: text/markdown
|
|
65
|
+
|
|
66
|
+
<picture>
|
|
67
|
+
<source media="(prefers-color-scheme: dark)" srcset="assets/hero-dark.svg">
|
|
68
|
+
<source media="(prefers-color-scheme: light)" srcset="assets/hero-light.svg">
|
|
69
|
+
<img alt="ReWOG: World of Guns asset extraction toolkit" src="assets/hero-light.svg" width="100%">
|
|
70
|
+
</picture>
|
|
71
|
+
|
|
72
|
+
**WOG Dump: extract and rebuild 3D weapon models from [World of Guns: Gun Disassembly](https://store.steampowered.com/app/262410/World_of_Guns_Gun_Disassembly/).**
|
|
73
|
+
|
|
74
|
+
A command-line toolkit for 3D artists, modders and researchers who study game assets. WOG Dump logs in with your own game account, downloads encrypted Unity bundles from the game servers, decrypts them and rebuilds the weapon: one command turns the in-game AK-47 into a Blender-ready glTF scene with the exact part hierarchy, game materials and studio lighting. Scenes come out in disassembly states too, with an offline HTML viewer, STL/USD/FBX export, print preparation and turntable videos.
|
|
75
|
+
|
|
76
|
+
[Overview](#overview) · [Features](#features) · [Quick start](#quick-start) · [Usage](#usage) · [Configuration](#configuration) · [Development](#development) · [FAQ](#faq) · [Contributing](#contributing) · [License](#license)
|
|
77
|
+
|
|
78
|
+
<div align="center">
|
|
79
|
+
|
|
80
|
+
[](https://python.org)
|
|
81
|
+
[](LICENSE)
|
|
82
|
+
[](https://github.com/psf/black)
|
|
83
|
+
[](https://github.com/astral-sh/uv)
|
|
84
|
+
[](https://github.com/InzGIBA/ReWOG/issues)
|
|
85
|
+
[](https://github.com/InzGIBA/ReWOG/stargazers)
|
|
86
|
+
|
|
87
|
+
</div>
|
|
88
|
+
|
|
89
|
+
## Overview
|
|
90
|
+
|
|
91
|
+
WOG Dump automates the full path from the game's servers to usable 3D data: weapon catalog, per-asset decryption keys, encrypted downloads, XOR decryption, Unity unpacking and scene export. It targets the current `query2026` protocol (game `2.2.3t6`, Unity 6) and was verified live against the production API in November 2026.
|
|
92
|
+
|
|
93
|
+
- **For:** 3D artists, modders, educators and researchers studying weapon assembly and Unity asset pipelines
|
|
94
|
+
- **Input:** your game-account credentials (or a captured client session) and the weapons you want
|
|
95
|
+
- **Output:** decrypted Unity bundles, extracted models and textures (OBJ, PNG, TGA), glTF scenes in assembled or disassembled poses, an offline HTML viewer, STL/USD/USDZ/FBX export, print-ready parts and turntable videos
|
|
96
|
+
- **Scope:** personal, educational and research use, extracted assets remain the property of Noble Empire Corp. (see [License](#license))
|
|
97
|
+
|
|
98
|
+
> **What's new:** this release adds disassembly states and animated step-by-step builds, a self-contained HTML viewer with part annotations, STL/USD/USDZ/FBX export, print preparation, turntable and clip videos, the `catalog` command, a local web UI, CLI localization (Russian), a protocol compatibility probe, Docker images, a Blender addon and third-party extractor plugins. Full history: [CHANGELOG.md](CHANGELOG.md).
|
|
99
|
+
|
|
100
|
+
## Features
|
|
101
|
+
|
|
102
|
+
<picture>
|
|
103
|
+
<source media="(prefers-color-scheme: dark)" srcset="assets/feature-01-dark.svg">
|
|
104
|
+
<img alt="Full pipeline, one command from catalog to decrypted assets" src="assets/feature-01-light.svg" width="32%">
|
|
105
|
+
</picture>
|
|
106
|
+
<picture>
|
|
107
|
+
<source media="(prefers-color-scheme: dark)" srcset="assets/feature-02-dark.svg">
|
|
108
|
+
<img alt="Blender-ready scenes, game hierarchy, materials and lighting" src="assets/feature-02-light.svg" width="32%">
|
|
109
|
+
</picture>
|
|
110
|
+
<picture>
|
|
111
|
+
<source media="(prefers-color-scheme: dark)" srcset="assets/feature-03-dark.svg">
|
|
112
|
+
<img alt="Private by design, your own account login, keys stay in SQLite" src="assets/feature-03-light.svg" width="32%">
|
|
113
|
+
</picture>
|
|
114
|
+
|
|
115
|
+
- **Full pipeline**: one command goes from weapon catalog to keys, download, decryption and unpacking. Downloads run in parallel, respect rate limits and resume after interruptions.
|
|
116
|
+
- **Blender-ready scenes**: `build-scene` rebuilds the assembled weapon exactly like in game: part hierarchy and positions, game materials with textures, camera and studio lighting, real-world scale. UI arrows, cutaway meshes and VFX are classified and skipped unless you ask for them with `--extras`.
|
|
117
|
+
- **Disassembly states**: `--state field-strip` puts parts where the game itself puts them after removal, `--state exploded` pushes them apart along removal directions, `--state parts` lays everything out in a grid. `--assembly-steps` writes a step-by-step build, and `--animated` adds one glTF animation placing part after part.
|
|
118
|
+
- **Offline HTML viewer**: `--viewer` embeds the scene and the three.js runtime into one `viewer.html`: open it in any browser, click parts to highlight them, read annotations with part sizes. No Blender, no internet, no install.
|
|
119
|
+
- **Animations**: `--animations` embeds the bundle's operate animation (fire, reload, safety) as real glTF animation tracks.
|
|
120
|
+
- **Export formats**: `--format stl,usd,usdz,fbx` converts a built scene: binary STL for slicers (units baked in), USD/USDZ for AR with preview materials, FBX through headless Blender.
|
|
121
|
+
- **Print preparation**: `print-export` repairs and checks every part with trimesh, reports watertight status per part and writes millimeter-true STLs.
|
|
122
|
+
- **Previews and video**: `render` turns a built scene into transparent turntable PNGs plus a GIF, `--video` encodes an orbit MP4 or one animation clip, all through headless Blender.
|
|
123
|
+
- **Catalog**: `catalog` lists every weapon with its pipeline status and sizes, filters by name and stage, and emits a stable JSON schema other tools build on.
|
|
124
|
+
- **Web UI**: `serve` opens a local page with the same catalog, a 3D viewer per weapon and stage buttons with live logs.
|
|
125
|
+
- **Protocol probe**: `info --protocol-probe` answers "did I break something or did the game update" in one run: endpoint reachability, anonymous query, authenticated key query, weapon list, client version. Any failure exits with code 2.
|
|
126
|
+
- **Plugins**: third-party packages register extra Unity-type extractors through entry points, no fork needed (see [docs/plugins.md](docs/plugins.md)).
|
|
127
|
+
- **Localization**: `--locale ru` switches CLI messages to Russian, unknown locales fall back to English silently.
|
|
128
|
+
- **Private by design**: log in with your own game account (`login` / `register`) or a captured session. Credentials, sessions, keys and the weapon list live in a per-user SQLite database with owner-only permissions, no secrets ship with the repository.
|
|
129
|
+
|
|
130
|
+
## Quick start
|
|
131
|
+
|
|
132
|
+
### Requirements
|
|
133
|
+
|
|
134
|
+
- Python 3.12+
|
|
135
|
+
- [uv](https://github.com/astral-sh/uv) (recommended) or pip
|
|
136
|
+
- A game account: create one with `wog-dump register` or use your existing email/password
|
|
137
|
+
- Internet connection and ~10–20 GB of free disk space for a full extraction
|
|
138
|
+
- Optional: [AssetStudio](https://github.com/Perfare/AssetStudio) for browsing raw Unity bundles manually
|
|
139
|
+
- Optional: Blender, for preview renders, videos and FBX export
|
|
140
|
+
|
|
141
|
+
### Install
|
|
142
|
+
|
|
143
|
+
From [PyPI](https://pypi.org/project/rewog/):
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
pip install rewog
|
|
147
|
+
|
|
148
|
+
# USD/USDZ export support:
|
|
149
|
+
pip install "rewog[usd]"
|
|
150
|
+
# local web UI:
|
|
151
|
+
pip install "rewog[web]"
|
|
152
|
+
# print preparation:
|
|
153
|
+
pip install "rewog[print]"
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
From source (for development):
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
git clone https://github.com/InzGIBA/ReWOG
|
|
160
|
+
cd ReWOG
|
|
161
|
+
|
|
162
|
+
# with uv (install it via https://astral.sh/uv or `pip install uv`)
|
|
163
|
+
uv pip install -e .
|
|
164
|
+
|
|
165
|
+
# or with plain pip
|
|
166
|
+
pip install -e .
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Run your first extraction
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# 1. Create a game account and log in (once; or `wog-dump login` for an existing one)
|
|
173
|
+
wog-dump register
|
|
174
|
+
|
|
175
|
+
# 2. Everything: weapon list, keys, download, decrypt, unpack, normal maps
|
|
176
|
+
wog-dump full-pipeline --update-keys --convert-normals
|
|
177
|
+
|
|
178
|
+
# 3. Rebuild one weapon as a Blender-ready scene
|
|
179
|
+
wog-dump build-scene ak47
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Data lands under `runtime/`:
|
|
183
|
+
|
|
184
|
+
```text
|
|
185
|
+
runtime/
|
|
186
|
+
├── encrypted/ # raw encrypted Unity3D bundles
|
|
187
|
+
├── decrypted/ # decrypted bundles
|
|
188
|
+
├── unpacked/ # extracted models (OBJ) and textures (PNG, TGA)
|
|
189
|
+
└── scenes/ak47/ # ak47.glb + blender_setup.py + scene.json + textures/
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Open `runtime/scenes/ak47/ak47.glb` in Blender (`File > Import > glTF 2.0`), or run the generated setup script for a configured scene with collections, hidden extras and a saved `.blend`:
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
blender --background --python runtime/scenes/ak47/blender_setup.py
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Then try this
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
# Disassembly poses, straight from the game's own removal data
|
|
202
|
+
wog-dump build-scene ak47 --state field-strip
|
|
203
|
+
wog-dump build-scene ak47 --state exploded --explode-distance 0.5
|
|
204
|
+
|
|
205
|
+
# A step-by-step build plus one animated assembly GLB
|
|
206
|
+
wog-dump build-scene ak47 --assembly-steps 5 --animated
|
|
207
|
+
|
|
208
|
+
# Show it to someone without Blender
|
|
209
|
+
wog-dump build-scene ak47 --viewer --annotate
|
|
210
|
+
|
|
211
|
+
# Print a part
|
|
212
|
+
wog-dump print-export ak47 --part bolt
|
|
213
|
+
|
|
214
|
+
# Turntable previews and an orbit video
|
|
215
|
+
wog-dump render ak47
|
|
216
|
+
wog-dump render ak47 --video --duration 8
|
|
217
|
+
|
|
218
|
+
# What do I have, and how do I share this page?
|
|
219
|
+
wog-dump catalog
|
|
220
|
+
wog-dump serve
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## Usage
|
|
224
|
+
|
|
225
|
+
### Step by step
|
|
226
|
+
|
|
227
|
+
Each pipeline stage is also available as its own command:
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
wog-dump info # configuration and status; add --protocol-probe
|
|
231
|
+
wog-dump download-weapons # fetch the weapon catalog
|
|
232
|
+
wog-dump download-assets --update-keys # download bundles + fresh keys
|
|
233
|
+
wog-dump decrypt-assets # XOR-decrypt the bundles
|
|
234
|
+
wog-dump unpack-assets # extract models and textures
|
|
235
|
+
wog-dump build-scene ak47 # Blender-ready glTF scene
|
|
236
|
+
wog-dump render ak47 # turntable previews; --video for MP4
|
|
237
|
+
wog-dump print-export ak47 # print-ready STLs with diagnostics
|
|
238
|
+
wog-dump catalog # per-weapon status table
|
|
239
|
+
wog-dump convert-normals ./unpacked --recursive # optional: fix normal maps
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
Every command documents itself: `wog-dump --help` and `wog-dump <command> --help`.
|
|
243
|
+
|
|
244
|
+
### Common options
|
|
245
|
+
|
|
246
|
+
| Option | Purpose | Example |
|
|
247
|
+
| --- | --- | --- |
|
|
248
|
+
| `--weapons` | Limit a command to specific weapons | `--weapons "ak74,m4a1,glock17"` |
|
|
249
|
+
| `--update-keys` | Fetch fresh decryption keys first | `wog-dump download-assets --update-keys` |
|
|
250
|
+
| `--check-only` | Preview pending downloads without fetching | `wog-dump download-assets --check-only` |
|
|
251
|
+
| `--validate` | Verify decrypted files after decryption | `wog-dump decrypt-assets --validate` |
|
|
252
|
+
| `--extras` | Include UI arrows, cutaway meshes and VFX in a scene | `wog-dump build-scene ak47 --extras all` |
|
|
253
|
+
| `--state` | Disassembly pose: `field-strip`, `exploded`, `parts` | `wog-dump build-scene ak47 --state exploded` |
|
|
254
|
+
| `--assembly-steps` / `--animated` | Step-by-step build, add a placing animation | `wog-dump build-scene ak47 --assembly-steps 5 --animated` |
|
|
255
|
+
| `--animations` | Embed the operate animation in the GLB | `wog-dump build-scene ak47 --animations` |
|
|
256
|
+
| `--viewer` / `--annotate` | Self-contained HTML viewer, add part markers | `wog-dump build-scene ak47 --viewer --annotate` |
|
|
257
|
+
| `--format` | Extra formats: `stl`, `usd`, `usdz`, `fbx` | `wog-dump build-scene ak47 --format stl,usdz --stl-units mm` |
|
|
258
|
+
| `--video` / `--clip` | Orbit MP4 or one animation clip | `wog-dump render ak47 --video --clip "Take 001"` |
|
|
259
|
+
| `--part` / `--merge` | Print single parts or one combined layout | `wog-dump print-export ak47 --merge` |
|
|
260
|
+
| `--locale` | Message language (`ru` ships a catalog) | `wog-dump --locale ru catalog` |
|
|
261
|
+
| `--no-progress` | Disable progress bars (also automatic for piped output) | `wog-dump --no-progress full-pipeline` |
|
|
262
|
+
| `--max-threads` | Worker threads (global option, default 4) | `wog-dump --max-threads 16 full-pipeline` |
|
|
263
|
+
| `--verbose` / `--debug` | Increase logging detail | `wog-dump --debug full-pipeline` |
|
|
264
|
+
|
|
265
|
+
### Scene output
|
|
266
|
+
|
|
267
|
+
`build-scene` writes everything you need into `runtime/scenes/<weapon>/`:
|
|
268
|
+
|
|
269
|
+
```text
|
|
270
|
+
<weapon>.glb # full scene: hierarchy, materials, camera, studio lights
|
|
271
|
+
blender_setup.py # one-click Blender import + collections + .blend save
|
|
272
|
+
scene.json # manifest: state, placements, counts, skipped objects, parts
|
|
273
|
+
viewer.html # offline viewer (with --viewer, annotations with --annotate)
|
|
274
|
+
textures/ # source PNG textures (also embedded in the GLB)
|
|
275
|
+
previews/ # turntable PNGs + preview.gif (from wog-dump render)
|
|
276
|
+
renders/ # orbit / clip MP4s (from wog-dump render --video)
|
|
277
|
+
print/ # STLs + print_report.json (from wog-dump print-export)
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
Non-assembled states go to sibling folders: `<weapon>-field-strip/`, `<weapon>-exploded/`, `<weapon>-parts/`, and `<weapon>-steps/` for step builds.
|
|
281
|
+
|
|
282
|
+
### Cache management
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
wog-dump cache --migrate # import legacy weapons.txt / keys.txt
|
|
286
|
+
wog-dump cache --show-cache # detailed cache statistics
|
|
287
|
+
wog-dump cache --validate-assets # check downloads exist and are non-empty
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### Web UI
|
|
291
|
+
|
|
292
|
+
A local web UI over the same pipeline: catalog with statuses, a 3D viewer per weapon and stage buttons with live logs. Needs the web extra, binds 127.0.0.1 with a per-start token URL.
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
pip install "rewog[web]"
|
|
296
|
+
wog-dump serve
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### Docker
|
|
300
|
+
|
|
301
|
+
No local Python needed, all state lives in a named volume mounted at `/data`:
|
|
302
|
+
|
|
303
|
+
```bash
|
|
304
|
+
docker run --rm -it -v wog-data:/data ghcr.io/inzgiba/rewog:latest catalog
|
|
305
|
+
docker run --rm -it -v wog-data:/data ghcr.io/inzgiba/rewog:latest full-pipeline --update-keys
|
|
306
|
+
docker compose run --rm wog catalog # from the repo, via docker-compose.yml
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
Images publish to GHCR on release tags (`latest` plus semantic versions), pull requests build the image without pushing.
|
|
310
|
+
|
|
311
|
+
### Using as a Python library
|
|
312
|
+
|
|
313
|
+
```python
|
|
314
|
+
from wog_dump.core.catalog import build_catalog
|
|
315
|
+
from wog_dump.core.config import get_config
|
|
316
|
+
from wog_dump.core.download import DownloadManager
|
|
317
|
+
from wog_dump.core.decrypt import KeyManager, AssetDecryptor
|
|
318
|
+
|
|
319
|
+
config = get_config()
|
|
320
|
+
|
|
321
|
+
with DownloadManager(config) as downloader:
|
|
322
|
+
successful, failed = downloader.download_assets(["ak74", "m4a1"])
|
|
323
|
+
|
|
324
|
+
key_manager = KeyManager(config)
|
|
325
|
+
keys = key_manager.load_keys()
|
|
326
|
+
|
|
327
|
+
decryptor = AssetDecryptor(config)
|
|
328
|
+
decrypted_files, failed_assets = decryptor.decrypt_all_assets(keys)
|
|
329
|
+
|
|
330
|
+
# Catalog status without the CLI
|
|
331
|
+
for entry in build_catalog(config):
|
|
332
|
+
if entry.scene:
|
|
333
|
+
print(entry.name, entry.size_bytes)
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
More library entry points: `core.export.convert_format` (GLB to STL/USD/FBX), `core.render.RenderManager` (previews and video), `core.viewer.render_viewer_html` (offline viewer), `core.probe.ProtocolProbe` (compatibility check). The API reference pages live in the docs site.
|
|
337
|
+
|
|
338
|
+
## Configuration
|
|
339
|
+
|
|
340
|
+
Settings come from a gitignored `.env` in the repository root (see [`.env.example`](.env.example)) or from the environment. Credentials, sessions, keys and the weapon list are stored in a per-user SQLite database, never in the repository.
|
|
341
|
+
|
|
342
|
+
| Setting | Required | Default | Description |
|
|
343
|
+
| --- | --- | --- | --- |
|
|
344
|
+
| `WOG_ACCOUNT_EMAIL` / `WOG_ACCOUNT_PASSWORD` | No | — | Game account for automatic login (alternative to a captured session) |
|
|
345
|
+
| `WOG_AUTH_ID` / `WOG_AUTH_SESSION` | No | — | Captured client session from your own traffic ([guide](docs/mitm-capture.md)) |
|
|
346
|
+
| `WOG_DEVICE_ID` | No | generated | Device id sent to the API |
|
|
347
|
+
| `WOG_DB_PATH` | No | OS user data dir | Location of the per-user SQLite database |
|
|
348
|
+
| `WOG_API_BASE_URL` | No | `https://eu1.ultimate-disassembly.com/v/query2026.php` | Key API endpoint |
|
|
349
|
+
| `WOG_DATA_BASE_URL` | No | `https://data1eu.ultimate-disassembly.com/uni2018` | Asset download server |
|
|
350
|
+
| `WOG_GAME_VERSION` | No | `2.2.3t6` | Client version string validated by the server |
|
|
351
|
+
| `WOG_UNITY_VERSION` | No | `6000.0.84f1` | Unity version string |
|
|
352
|
+
| `WOG_LANG` | No | `en` | Language code sent with login queries |
|
|
353
|
+
| `WOG_LOCALE` | No | `en` | CLI message language (`ru` ships a catalog) |
|
|
354
|
+
| `WOG_NO_PROGRESS` | No | unset | Set to disable progress bars (same as `--no-progress`) |
|
|
355
|
+
| `WOG_BLENDER_PATH` | No | found on PATH | Blender binary for previews, videos and FBX |
|
|
356
|
+
| `WOG_API_REQUEST_DELAY` | No | `0.25` | Seconds between key-API requests (raise on 429) |
|
|
357
|
+
| `WOG_REQUEST_DELAY` | No | `0.1` | Seconds between asset downloads (raise on 429) |
|
|
358
|
+
| `WOG_MAX_THREADS` | No | `4` | Worker threads (1–16) |
|
|
359
|
+
| `WOG_LOG_LEVEL` | No | `INFO` | Log file verbosity (`DEBUG`/`INFO`/`WARNING`/`ERROR`) |
|
|
360
|
+
| `WOG_LOG_DIR` | No | next to the database | Log directory |
|
|
361
|
+
|
|
362
|
+
In-depth references:
|
|
363
|
+
|
|
364
|
+
- **[docs/configuration.md](docs/configuration.md)**: every environment variable, `.env` setup, rate limiting, resumable downloads
|
|
365
|
+
- **[docs/architecture.md](docs/architecture.md)**: how the modules fit together, the extraction pipeline
|
|
366
|
+
- **[docs/database.md](docs/database.md)**: where keys and credentials live, schema, migration from pre-2.4 files
|
|
367
|
+
- **[docs/mitm-capture.md](docs/mitm-capture.md)**: capturing keys and identity from your own game traffic
|
|
368
|
+
- **[docs/plugins.md](docs/plugins.md)**: writing third-party extractor plugins
|
|
369
|
+
- **[docs/research-disassembly-data.md](docs/research-disassembly-data.md)**: where the disassembly poses come from
|
|
370
|
+
- **[docs/benchmarks-download.md](docs/benchmarks-download.md)**: download transport benchmark and decisions
|
|
371
|
+
|
|
372
|
+
## Development
|
|
373
|
+
|
|
374
|
+
```bash
|
|
375
|
+
git clone https://github.com/InzGIBA/ReWOG
|
|
376
|
+
cd ReWOG
|
|
377
|
+
uv pip install -e ".[dev]" # or: pip install -e ".[dev]"
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
### Checks
|
|
381
|
+
|
|
382
|
+
```bash
|
|
383
|
+
pytest # all tests
|
|
384
|
+
pytest --cov=wog_dump # with coverage (gate: 85 percent, see .coveragerc)
|
|
385
|
+
pytest -m live # against the real servers (needs auth in .env)
|
|
386
|
+
|
|
387
|
+
black src/ tests/ # formatting
|
|
388
|
+
isort src/ tests/
|
|
389
|
+
mypy src/ # type checking
|
|
390
|
+
flake8 src/ tests/ # linting
|
|
391
|
+
mkdocs serve # docs site preview
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
### Project structure
|
|
395
|
+
|
|
396
|
+
<details>
|
|
397
|
+
<summary>Directory map</summary>
|
|
398
|
+
|
|
399
|
+
```text
|
|
400
|
+
ReWOG/
|
|
401
|
+
├── src/wog_dump/ # Main package (source layout)
|
|
402
|
+
│ ├── core/ # config, http, api, auth, database, keys, paths,
|
|
403
|
+
│ │ # download, decrypt, unpack, scene, scene_states,
|
|
404
|
+
│ │ # scene_steps, anim, transforms, glb, export, viewer,
|
|
405
|
+
│ │ # render, printprep, catalog, probe, key_import, webapp
|
|
406
|
+
│ ├── resources/ # Blender scripts, viewer runtime and templates
|
|
407
|
+
│ ├── utils/ # logging, normal maps, i18n, progress
|
|
408
|
+
│ └── cli/ # Click commands: download, decrypt, unpack, scene,
|
|
409
|
+
│ # render, print-export, catalog, pipeline, auth,
|
|
410
|
+
│ # cache, info, serve, convert
|
|
411
|
+
├── tests/ # unit/ + integration/ (CLI end-to-end, real bundles)
|
|
412
|
+
├── docs/ # guides, architecture, plugins, benchmarks, API reference
|
|
413
|
+
├── blender-addon/ # Blender 4.2+ extension over the CLI
|
|
414
|
+
├── examples/ # example extractor plugin
|
|
415
|
+
├── scripts/ # addon zip, locale compiler, benchmark and audit tools
|
|
416
|
+
└── pyproject.toml # PEP 621 packaging
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
</details>
|
|
420
|
+
|
|
421
|
+
## FAQ
|
|
422
|
+
|
|
423
|
+
### General
|
|
424
|
+
|
|
425
|
+
**Do I need to own the game?**
|
|
426
|
+
The tool downloads public asset files from the game's servers. Ownership is not required. We still recommend owning the game to support the developers.
|
|
427
|
+
|
|
428
|
+
**What formats does WOG Dump export?**
|
|
429
|
+
Blender-ready glTF 2.0 scenes (`build-scene`), OBJ models, PNG/TGA textures, converted normal maps, binary STL (plain or print-prepared), USD and USDZ packages, FBX through Blender, and self-contained HTML viewers.
|
|
430
|
+
|
|
431
|
+
**How do I get a disassembled weapon?**
|
|
432
|
+
Use a state: `wog-dump build-scene ak47 --state field-strip` places parts exactly where the game puts them after removal. `--state exploded` spreads parts along removal directions, `--state parts` lays everything out in a grid. `--assembly-steps 5 --animated` adds a step-by-step build and one placing animation.
|
|
433
|
+
|
|
434
|
+
**Can I show a scene to someone without Blender?**
|
|
435
|
+
Yes: `wog-dump build-scene ak47 --viewer` produces one `viewer.html` file. Open it in any browser, click parts to highlight them, read sizes in the annotation cards. Share the file directly, it needs no internet.
|
|
436
|
+
|
|
437
|
+
**Which operating systems are supported?**
|
|
438
|
+
Windows, macOS and Linux. The tool is pure Python (no C dependencies since v2).
|
|
439
|
+
|
|
440
|
+
**How much disk space do I need?**
|
|
441
|
+
Encrypted ~2–5 GB, decrypted ~2–5 GB, extracted ~3–8 GB. Plan for **10–20 GB** free.
|
|
442
|
+
|
|
443
|
+
### Troubleshooting
|
|
444
|
+
|
|
445
|
+
**Everything broke after a game update**
|
|
446
|
+
Run `wog-dump info --protocol-probe` first. It checks endpoint reachability, the anonymous query, the authenticated key query, the weapon list asset and your client version, and tells you whether the problem is local or the game protocol moved. Any FAIL exits with code 2, report drifts with the [protocol drift template](https://github.com/InzGIBA/ReWOG/issues/new?template=protocol_drift.md).
|
|
447
|
+
|
|
448
|
+
**`No game account configured` when fetching keys**
|
|
449
|
+
The key API needs authentication. Run `wog-dump register` (new account), `wog-dump login` (existing one), or put `WOG_ACCOUNT_EMAIL`/`WOG_ACCOUNT_PASSWORD`, or a captured `WOG_AUTH_ID`/`WOG_AUTH_SESSION`, into `.env` (see [docs/mitm-capture.md](docs/mitm-capture.md)). Check what is configured with `wog-dump cache`.
|
|
450
|
+
|
|
451
|
+
**`Authentication failed (result=100)`**
|
|
452
|
+
The API rejected the credentials. Verify the email/password pair in the game client itself, then `wog-dump login` again. A captured session expires sometimes. Capture a fresh one or switch to account login.
|
|
453
|
+
|
|
454
|
+
**`Session rejected (result=1000)`**
|
|
455
|
+
The stored session expired. WOG Dump re-logins automatically, if the error persists, run `wog-dump logout && wog-dump login`.
|
|
456
|
+
|
|
457
|
+
**`429` / rate-limit errors**
|
|
458
|
+
Requests are too frequent. Raise the throttles in `.env`: `WOG_API_REQUEST_DELAY=2.0` (key API) and `WOG_REQUEST_DELAY=0.5` (downloads).
|
|
459
|
+
|
|
460
|
+
**`No weapon list found. Run 'download-weapons' first.`**
|
|
461
|
+
Run `wog-dump download-weapons`. Coming from a pre-2.4 installation with `runtime/weapons.txt`? Import it once with `wog-dump cache --migrate`.
|
|
462
|
+
|
|
463
|
+
**`No decryption keys found. Use --update-keys to fetch them.`**
|
|
464
|
+
Run `wog-dump decrypt-assets --update-keys` (auth must be configured).
|
|
465
|
+
|
|
466
|
+
**Key API stopped working after a game update**
|
|
467
|
+
The client version strings are validated server-side. Update them in `.env` to match the current client (find the values in the game's installation or a fresh capture), e.g. `WOG_GAME_VERSION=2.2.3u9` and `WOG_UNITY_VERSION=6000.0.84f1`.
|
|
468
|
+
|
|
469
|
+
**Interrupted download: do I have to start over?**
|
|
470
|
+
No. Partial downloads are kept as `runtime/assets/*.tmp` and resumed via HTTP `Range` requests on the next run. If a `.tmp` file refuses to go away, delete the file to force a fresh download.
|
|
471
|
+
|
|
472
|
+
**The tool seems stuck or slow**
|
|
473
|
+
Check your internet connection, reduce the thread count (`wog-dump --max-threads 2 download-assets`), enable `--verbose` (or `--debug`), and remember that downloads are throttled by design (see `WOG_REQUEST_DELAY`).
|
|
474
|
+
|
|
475
|
+
**Previews or videos say "Blender not found"**
|
|
476
|
+
Install Blender, or point `WOG_BLENDER_PATH` in `.env` at the binary. Renders use CPU Cycles, so no GPU is required.
|
|
477
|
+
|
|
478
|
+
## Blender addon
|
|
479
|
+
|
|
480
|
+
A native Blender extension (4.2+) over the same CLI: browse the catalog in a sidebar panel, build missing scenes and import the GLB without a terminal. Install the zip from a release, enable it in preferences, set the runtime directory. See [blender-addon/README.md](blender-addon/README.md).
|
|
481
|
+
|
|
482
|
+
## Contributing
|
|
483
|
+
|
|
484
|
+
Issues and pull requests are welcome: bug fixes, features, documentation, tests, plugins and localization all help. For larger changes, open an issue first to discuss the approach.
|
|
485
|
+
|
|
486
|
+
1. Fork and clone the repository, then `uv pip install -e ".[dev]"`.
|
|
487
|
+
2. Create a feature branch and make a focused change.
|
|
488
|
+
3. Add or update relevant tests and docs, run `pytest`, `black src/ tests/` and `mkdocs build --strict`.
|
|
489
|
+
4. Open a pull request.
|
|
490
|
+
|
|
491
|
+
- [Contributing Guidelines](CONTRIBUTING.md): the detailed contribution process
|
|
492
|
+
- [Issue Tracker](https://github.com/InzGIBA/ReWOG/issues): bug reports and feature requests
|
|
493
|
+
- [Discussions](https://github.com/InzGIBA/ReWOG/discussions): questions and general help
|
|
494
|
+
- [Code of Conduct](CODE_OF_CONDUCT.md): community standards
|
|
495
|
+
|
|
496
|
+
## Support
|
|
497
|
+
|
|
498
|
+
Where to get help, in the order we recommend:
|
|
499
|
+
|
|
500
|
+
1. The [FAQ](#faq) above
|
|
501
|
+
2. **[SUPPORT.md](SUPPORT.md)**: diagnostics and common solutions
|
|
502
|
+
3. **[GitHub Issues](https://github.com/InzGIBA/ReWOG/issues)**: bug reports and feature requests (public, searchable)
|
|
503
|
+
4. **[GitHub Discussions](https://github.com/InzGIBA/ReWOG/discussions)**: questions and general help
|
|
504
|
+
|
|
505
|
+
Please use the public channels so answers remain useful to others. For security-sensitive reports only, email the maintainer directly: [inzgiba@gmail.com](mailto:inzgiba@gmail.com).
|
|
506
|
+
|
|
507
|
+
## License
|
|
508
|
+
|
|
509
|
+
Released under the MIT License, see [LICENSE](LICENSE).
|
|
510
|
+
|
|
511
|
+
**Legal disclaimer.** This tool is intended for educational and research purposes only. Extracted assets remain the intellectual property of Noble Empire Corp., ensure compliance with the game's Terms of Service, use extracted content only for personal, educational or research purposes, and do not redistribute game assets or use them commercially. The authors and contributors are not responsible for any misuse of this software or violation of terms of service. For questions about asset usage rights, contact Noble Empire Corp. directly.
|
|
512
|
+
|
|
513
|
+
## Acknowledgements
|
|
514
|
+
|
|
515
|
+
- [DeadZoneGarry](https://github.com/DeadZoneLuna): original decryption research
|
|
516
|
+
- [Noble Empire Corp.](https://noble-empire.com/news.php): the game and its assets
|
|
517
|
+
- [three.js](https://threejs.org) contributors: the viewer runtime (MIT, vendored)
|
|
518
|
+
- Contributors to the original WOG Dump project
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
wog_dump/__init__.py,sha256=1a4aZgR9jdXDTCRmwC-2hPDq6QY1Gi38Eg2R3cIb7uE,781
|
|
2
|
+
wog_dump/cli/__init__.py,sha256=bJtcNJltyvgvYYTd9bC7Wz5mU7fYO3vgdVy4M5LgnDk,43
|
|
3
|
+
wog_dump/cli/auth.py,sha256=Ha0Yb7VX9LC6CDnGtIES870YKXegnVtNGoGo1QUlH-Q,4110
|
|
4
|
+
wog_dump/cli/cache.py,sha256=su8V5dZ3D2FoW0J17HXH1247FPbMskOfn-fo_oClDes,4550
|
|
5
|
+
wog_dump/cli/catalog.py,sha256=FP3AIgdLeDCb-YTdCDuNgnFrqa6ntQ2YvPaM3F52SRo,4865
|
|
6
|
+
wog_dump/cli/convert.py,sha256=Jz3rU8H5Tcgie2k6qQqq2Zfjcb42TZi1PFFH-TqOE9g,2090
|
|
7
|
+
wog_dump/cli/decrypt.py,sha256=wgYOmfXvaoiPZ__CtOgWD7hG81Bg5eCrr_2uHri6p18,3950
|
|
8
|
+
wog_dump/cli/download.py,sha256=xWt71CfZPtrdca2EdaPDMR08MfX1qhK5TjZEm0mtDW0,8195
|
|
9
|
+
wog_dump/cli/errors.py,sha256=rRCo2W3qD740QUrLvOFwTSfrxrqh3bA3ygk38vzBwBk,2151
|
|
10
|
+
wog_dump/cli/info.py,sha256=yemsp_fc-NNSo03k1DmlOdjlhkQ1AS48VZRaFT7WUQ4,6579
|
|
11
|
+
wog_dump/cli/main.py,sha256=3jE90lSm4HMfKdAodQ2DADOOGSM6kLNOXoyOMckr3aM,8112
|
|
12
|
+
wog_dump/cli/pipeline.py,sha256=GoDldlCUFm11f3-rBDRr3sSyzXNMsWcg4r0em-Hwv68,5640
|
|
13
|
+
wog_dump/cli/print_export.py,sha256=ZEmrNqxvqyv4vRhNuN1DF1QG5IYfj0I5PdEFq6gGO78,3374
|
|
14
|
+
wog_dump/cli/render.py,sha256=X9Y1xTZrkl6EwDknQqNch5eI_gp0JD_p1ehe3lpzdus,5527
|
|
15
|
+
wog_dump/cli/scene.py,sha256=N-PglLToPjQXq3qNVnEIptCB5N5O211ZY19EmTLknig,7690
|
|
16
|
+
wog_dump/cli/serve.py,sha256=s2nfXTYgP-FAvWDNA0j2ljHwD0JygjR9lUh6fMoUnnA,1740
|
|
17
|
+
wog_dump/cli/unpack.py,sha256=K7LsUCmDZXt1daUyBtLlPN0e11zULGAsC7F9jH3GeYY,3605
|
|
18
|
+
wog_dump/core/__init__.py,sha256=7q7bKOOY6kFOoh6JiK7jnKkxNIPLe1HGa48mCYPs1ao,39
|
|
19
|
+
wog_dump/core/anim.py,sha256=4TVXYa8gI93H3vBkovYYbDHo9K6ruvR8uecveJfqHKw,3338
|
|
20
|
+
wog_dump/core/api.py,sha256=ztmgYVlrsWHptV8yyliUquOmchn7PjxGDG2g7fnBk6g,5378
|
|
21
|
+
wog_dump/core/auth.py,sha256=d25fUFOpKkAcibxJNbZyfHmMUrf0H6f2ifcU2LQidWE,18380
|
|
22
|
+
wog_dump/core/catalog.py,sha256=MEA4GoVC5kR8aeLMzxZxZp55gSp620N6kYsmPZ7dIag,3783
|
|
23
|
+
wog_dump/core/config.py,sha256=-4ywxrhWrM-2Z-y8pw4iwSCCIEUZ1-u2_25ogBaMn_g,12362
|
|
24
|
+
wog_dump/core/database.py,sha256=efKoDKCyII2wDNuzi8apt5fSrex3Ael0RG410t94QS4,14302
|
|
25
|
+
wog_dump/core/decrypt.py,sha256=H932uDdNPHg4C14elHBsbkm1n1QJ2_dyunRkTTu19bE,11457
|
|
26
|
+
wog_dump/core/download.py,sha256=4yzvUh_2_UVhRzYfyBA5-SYlS4k8rY9T0pIwNI3spPk,26678
|
|
27
|
+
wog_dump/core/export.py,sha256=96e5kX_dMI0ubRBzsXCw7DnS1iGbjwxHxdWVODPulmw,22724
|
|
28
|
+
wog_dump/core/glb.py,sha256=RT8QQiLtNiMD3n9xqlWA2yRxYFZYrbaMIRmGxu0fwAo,23191
|
|
29
|
+
wog_dump/core/http.py,sha256=4-GkvDBHS2V7DmjXPW5x1OeinGRo8oLUkiY_wSE-tZc,2295
|
|
30
|
+
wog_dump/core/key_import.py,sha256=b_JNbsIP62zdrRJMG0firexr7WRu_Mge9nyCCY8CLjo,17288
|
|
31
|
+
wog_dump/core/keys.py,sha256=1QeyumIwQEZdevDNE9nBOl5P3Y96zb2BXSIRMwkKDgs,10981
|
|
32
|
+
wog_dump/core/paths.py,sha256=OEnytNA1zCuughbIrKGAOpRafc-et8APIdyMw_tNY_8,2346
|
|
33
|
+
wog_dump/core/printprep.py,sha256=tzoXklZ8i7RQ1SJDKGw6kfJvpCt25W6i_bJnlSiO8To,8085
|
|
34
|
+
wog_dump/core/probe.py,sha256=k45LiJm90UWD8xdj35xwFp3TG31xybL_ELYAnTG6WI8,7042
|
|
35
|
+
wog_dump/core/render.py,sha256=um9yG8kmDjiOiUzzlTeAVdmczlzRxyaCvSgcpaBrK-k,11514
|
|
36
|
+
wog_dump/core/scene.py,sha256=R6-SD2nPtgUP8iUYAMsCzSfBDvckxNrNiScpFe2Znmw,52271
|
|
37
|
+
wog_dump/core/scene_states.py,sha256=NzmbWUBP6J0lkIUGMKcQDKriXjMSFWaLddBEPe8m0yw,15123
|
|
38
|
+
wog_dump/core/scene_steps.py,sha256=Mnh8832qwX4Mz490QfTkkxhsqyL7p6yWKaHE2wduLQo,2547
|
|
39
|
+
wog_dump/core/transforms.py,sha256=Rl-8Pt6hz8572wABqf1YOKXDjgFEO13XOQMbjpB-Ogw,5879
|
|
40
|
+
wog_dump/core/unpack.py,sha256=mEVzzruR6N1bEdZEZysuC8bxbb0VpxJ34jdDd0HqA04,30852
|
|
41
|
+
wog_dump/core/viewer.py,sha256=VUYf8bSqgLIEAabCnkhv6pokd-8CWJMs5sbsjV2Gx4w,4479
|
|
42
|
+
wog_dump/core/webapp/__init__.py,sha256=hTrsRlGqlEu68dhnoDNk1yBCPGhheh3quslkNchGAgs,47
|
|
43
|
+
wog_dump/core/webapp/app.py,sha256=ATBDSUCYNXb6HYelun7Oy0Ppq8nXzFJK6d3bMN7ceIk,7825
|
|
44
|
+
wog_dump/core/webapp/static/app.js,sha256=OfPJbgvOczJg3kZr29n3usvQYO62CfNz4GqvOhoUcFc,1958
|
|
45
|
+
wog_dump/core/webapp/static/index.html,sha256=0YCXIrGtwTRrI4lpSpjnowJyr6kS5rE-nHo_rzKekOI,932
|
|
46
|
+
wog_dump/core/webapp/static/weapon-view.js,sha256=1gXk4TXiZtIeSFf0Fh30zc844uMpoXrLL8yWIq20fKU,4115
|
|
47
|
+
wog_dump/core/webapp/static/weapon.html,sha256=ZXUSJYdSJLD0qUVhueMyU64ME_Jh3SPLpy30Um3Sjlo,1557
|
|
48
|
+
wog_dump/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
49
|
+
wog_dump/resources/blender_setup.py,sha256=qMgJYhUqAWGzFUDZP2ie4zsxEQ-A5dCRepowoSbKbjc,5928
|
|
50
|
+
wog_dump/resources/render_turntable.py,sha256=bL3C2Jmyo0SukhrozALG2LyxAGnltwhGKXUQAwXdXgc,3636
|
|
51
|
+
wog_dump/resources/render_video.py,sha256=jSRcC1-L2x4oR3n3Xa4ZT4H2RqjXSvvL9qTuE8BoyWs,4147
|
|
52
|
+
wog_dump/resources/locales/ru/LC_MESSAGES/wog_dump.po,sha256=G65Rlia-BOuT9MOY-xGyvW9xE6MhhjENpBH1Ub8crQA,1874
|
|
53
|
+
wog_dump/resources/viewer/template.html,sha256=gxj5y45BqtFHC_QaLI5hE3wt11caGuO1AhPRVVElq8E,2565
|
|
54
|
+
wog_dump/resources/viewer/viewer.js,sha256=IEReM6r4uvgn2cnlJ2PHFVhuOlwp47LSzdth7VO-7io,10309
|
|
55
|
+
wog_dump/resources/viewer/vendor/LICENSE,sha256=TECh72JFC4V8OyqvKUk2MEzVUtll-82dMtTFvPS6RFQ,1081
|
|
56
|
+
wog_dump/resources/viewer/vendor/PATCHES.md,sha256=u87vHCSlDC7OayLZdgHEO0t9BlW51zAYRis6-bJRT7Q,341
|
|
57
|
+
wog_dump/resources/viewer/vendor/three.module.min.js,sha256=CP11RdE9LH-2WraRUwqALa_v1jhZZQGFTyZ9D7E8Oec,691648
|
|
58
|
+
wog_dump/resources/viewer/vendor/addons/controls/OrbitControls.js,sha256=gO-q3qT4pjamX7C9CL_vYvPZOgu5Ti51APIxdsXAf04,32134
|
|
59
|
+
wog_dump/resources/viewer/vendor/addons/loaders/GLTFLoader.js,sha256=xlpn3k17--VgfmggrvIVE061FGWXd6uWh2uwXIMn854,110283
|
|
60
|
+
wog_dump/resources/viewer/vendor/addons/utils/BufferGeometryUtils.js,sha256=wlt5MOVw6exWFzzTuGbsjS4QAWYw2zk377Q52vHO2_Y,31768
|
|
61
|
+
wog_dump/utils/__init__.py,sha256=_TXdRCmm21A8nrpHR43hZ3Ps-WVRJr8l--q8lGUgf_A,38
|
|
62
|
+
wog_dump/utils/i18n.py,sha256=SyoBkCpSbz4yNk3BsM6uZuhb2-6hwA8GbHB-aG7cRlM,2481
|
|
63
|
+
wog_dump/utils/logging.py,sha256=hqHqR9jtlOWvire1_ogayN2RgmmjZPfZbUmjZrjS-8k,20046
|
|
64
|
+
wog_dump/utils/normal_map.py,sha256=F-k37iDPS4qGA0mJ8PgzjkGfe9slX2uY0FD3dDii898,12135
|
|
65
|
+
wog_dump/utils/progress.py,sha256=63GOnc2AacIU0LMhml1QQz3L_v4xMjku51yyog3cgn8,3009
|
|
66
|
+
rewog-3.0.0.dist-info/METADATA,sha256=YVmt_ys8x1P-juYSuBDZ7AyHJ3dueN-nB1fE9CjDQlw,28499
|
|
67
|
+
rewog-3.0.0.dist-info/WHEEL,sha256=2iZrJkDIkeDh0k9SikKMqFuRP-ua6mb4Ir1AsER4BEw,87
|
|
68
|
+
rewog-3.0.0.dist-info/entry_points.txt,sha256=VPyFfxaWRM6AIWX9n5kas14m6EY8MKL30GjQA8p1GLg,109
|
|
69
|
+
rewog-3.0.0.dist-info/licenses/LICENSE,sha256=ApViGy1oBKE28DGEzMMLLYVPScOJINuy8UyoalAEkMU,1063
|
|
70
|
+
rewog-3.0.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 InzGIBA
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
wog_dump/__init__.py
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"""WOG Dump - Enhanced tool for extracting 3D models from World of Guns: Gun Disassembly.
|
|
2
|
+
|
|
3
|
+
This package provides a complete pipeline for downloading, decrypting, and unpacking
|
|
4
|
+
3D gun models from World of Guns: Gun Disassembly with modern Python features,
|
|
5
|
+
comprehensive error handling, and performance monitoring.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
__version__ = "3.0.0"
|
|
11
|
+
__author__ = "hampta, inzgiba"
|
|
12
|
+
__email__ = "inzgiba@gmail.com"
|
|
13
|
+
__license__ = "MIT"
|
|
14
|
+
__description__ = (
|
|
15
|
+
"Enhanced tool for extracting 3D models from World of Guns: Gun Disassembly"
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
# Version info tuple for programmatic access
|
|
19
|
+
VERSION_INFO = tuple(int(x) for x in __version__.split("."))
|
|
20
|
+
|
|
21
|
+
__all__ = [
|
|
22
|
+
"__version__",
|
|
23
|
+
"__author__",
|
|
24
|
+
"__email__",
|
|
25
|
+
"__description__",
|
|
26
|
+
"VERSION_INFO",
|
|
27
|
+
]
|
wog_dump/cli/__init__.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Command-line interface for WOG Dump."""
|