ChangeLog
Version History & Software Backward Compatibility
The next deadline is set for 2026-04-15.
- Clickteam Forum Thread : ASTER :: Released
ASTER rev.1.0.8 :: ⚠ Cancelled
Currently implementing GPU/iGPU‑accelerated text rendering using SDF|MSDF|MTSDF techniques. Still considering which one to adopt, will probably be MTSDF.
■ About SDF / MSDF
SDF (Single Distance Field)
Chris Green (Valve, SIGGRAPH 2007):
MSDF (Multi-channel Signed Distance Field)
Author: Viktor Chlumský
Both techniques use distance fields to reconstruct edges on the shader side, and the appropriate technique is chosen depending on the use case.
- SDF: Lightweight and easy to handle; suitable for small to medium text sizes
- MSDF: High-quality and strong against magnification; supports small to large text sizes
MSDF is generally regarded as a high‑quality evolution of SDF, addressing weaknesses such as thin strokes and rounded edges during scaling.
Both formats impose low CPU load, with the primary difference being GPU shader complexity.
MSDF uses three channels (RGB), increasing shader cost, but offers a major advantage for CJK environments by allowing more glyphs to fit into a single atlas.
■ MSDF Implementation Status in ASTER
The current development phase focuses on MSDF, which has a higher implementation cost.
The MSDF implementation in ASTER is designed for UI rendering, using DirectX 11, DirectComposition, and an overlay layer.
It operates as an independent overlay layer, separate from the game rendering
(CF25’s DirectX 9 or DLC’s DX11/DX12).
Due to DComp specifications:
- Supported: Window Mode / Borderless Fullscreen
- Not supported: Exclusive Fullscreen
Text rendering is designed with JSON integration in mind.
The DX11 + DComp + Overlay foundation, UI shader templates, and quad‑vertex rendering pipeline are already implemented.
Because the current state is not ready for release, ASTER rev.1.0.8 has been cancelled,
and development continues with the goal of delivering results in rev.1.0.9.
DX11 + DComp + Overlay System Requirements
- Windows 11 required (DirectComposition is a built‑in OS feature)
- Supported GPUs: NVIDIA / AMD (Intel not supported)
- Debug Mode includes environment detection and JSON‑formatted reporting
{
"timestamp": "2025-12-31T19:47:33.219Z",
"os_version": {
"major": 10,
"minor": 0,
"build": 26100
},
"simd": {
"sse": true,
"sse2": true,
"sse3": true,
"ssse3": true,
"sse4_1": true,
"sse4_2": true,
"avx": true,
"avx2": true
},
"CreateFactory": { "status": "success", "hr": "0x00000000" },
"adapter_info": {
"description": "AMD Radeon(TM) Graphics",
"vendorId": "0x1002",
"deviceId": "0x1638",
"subSysId": "0x16361002",
"revision": 201,
"dedicatedVideoMemoryMB": 495,
"dedicatedSystemMemoryMB": 0,
"sharedSystemMemoryMB": 3600,
"adapterLuid": { "high": 0, "low": 51649 },
"flags": 0
},
"driver_info": {
"raw_version": "31.0.21923.11000",
"provider": "Advanced Micro Devices, Inc.",
"date": "7-1-2025",
"inf_file": "oem37.inf"
},
"wddm_version": {
"raw": 3100,
"value": "WDDM_3_1"
},
"PickFirstHardwareAdapter": { "status": "success", "hr": "0x00000000" },
"CreateDevice(D3D11)": { "status": "success", "hr": "0x00000000" },
"CreateSwapChain": { "status": "success", "hr": "0x00000000" },
"CreateRenderTarget": { "status": "success", "hr": "0x00000000" },
"CreateDComposition": { "status": "success", "hr": "0x00000000" },
"feature_level": "11.x",
}■ SDF / MSDF について
SDF (Single Distance Field):
Chris Green (Valve, SIGGRAPH 2007):
MSDF (Multi-channel Signed Distance Field):
Author: Viktor Chlumský
どちらも「距離場 (Distance Field)」を利用して Shader 側でエッジを再構築するフォント技術で、用途に応じて適切な手法が選択される。
- SDF: 軽量で扱いやすく、小〜中サイズの文字に向く
- MSDF: 高品質で拡大に強く、小〜大サイズまで対応
一般的には SDF の弱点(細線・拡大時の丸まり)を改善した高品質版が MSDF という位置づけです。
どちらも CPU 負荷は低く、主に GPU Shader の複雑さが異なります。
MSDF は RGB の 3 channnels を使うため Shader 負荷は増えますが、 特に CJK 言語では 1 枚のアトラスに収まる文字数が増えるため大きなメリットがあります。
■ ASTER における MSDF 実装状況
現在、実装コストの高い MSDF の先行実装を進めています。
ASTER の MSDF 実装は DirectX 11 + DirectComposition + Overlay を用いた UI 向け構成で、
ゲーム描画(CF25 の DirectX 9 または DLC の DX11/DX12)とは独立したオーバーレイレイヤーとして動作します。
DComp の仕様上:
- 対応:Window Mode / Borderless Fullscreen
- 非対応:Exclusive Fullscreen
文字描画は JSON 連携を前提に設計され、DX11 + DComp + Overlay の基盤、
UI Shader Template、Quad Vertex など描画の基本機能は実装済みです。
ただし現時点では公開には不十分なため、ASTER rev.1.0.8 の公開はキャンセル、
次回 rev.1.0.9 で成果を出せるよう作業を継続しています。
DX11 + DComp + Overlay の動作環境
- Windows 11 が必須(DirectComposition は OS 標準機能)
- 対応 GPU:NVIDIA / AMD(Intel は非対応)
- Debug Mode では動作環境の取得と JSON 形式の以下レポート機能を含む
省略
■ À propos de SDF / MSDF
SDF (Single Distance Field)
Chris Green (Valve, SIGGRAPH 2007) :
MSDF (Multi-channel Signed Distance Field)
Auteur : Viktor Chlumský
Les deux techniques utilisent un champ de distance pour reconstruire les contours dans le shader, et la méthode appropriée est choisie en fonction de l’usage prévu.
- SDF : Léger et simple à utiliser ; adapté aux tailles de texte petites à moyennes
- MSDF : Haute qualité et excellente tenue lors du zoom ; adapté aux petites comme aux grandes tailles
Le MSDF est généralement considéré comme une évolution de haute qualité du SDF, corrigeant ses faiblesses (traits fins, arrondissements lors du zoom).
Les deux formats imposent une faible charge CPU ; la différence principale réside dans la complexité du shader GPU.
Le MSDF utilise trois canaux (RGB), ce qui augmente la charge de calcul du shader, mais offre un avantage majeur pour les langues CJK en permettant de stocker davantage de glyphes dans une seule atlas.
■ État d’avancement de l’implémentation MSDF dans ASTER
La phase actuelle de développement se concentre sur le MSDF, en raison de son coût d’implémentation plus élevé.
L’implémentation MSDF d’ASTER est conçue pour le rendu UI, en utilisant DirectX 11, DirectComposition et une couche d’overlay.
Elle fonctionne comme une couche d’overlay indépendante, séparée du rendu du jeu (DirectX 9 de CF25 ou DX11/DX12 du DLC).
En raison des spécifications de DComp :
- Pris en charge : Mode Fenêtré / Plein écran sans bordure
- Non pris en charge : Plein écran exclusif
Le rendu de texte est conçu pour s’intégrer avec JSON.
La base DX11 + DComp + Overlay, les modèles de shaders UI et le pipeline de rendu en quad sont déjà opérationnels.
L’état actuel n’étant pas encore prêt pour une publication, la sortie d’ASTER rev.1.0.8 a été annulée,
et l’objectif est de fournir une version exploitable pour rev.1.0.9.
Configuration requise pour DX11 + DComp + Overlay
- Windows 11 requis (DirectComposition est une fonctionnalité native du système)
- GPU compatibles : NVIDIA / AMD (Intel non pris en charge)
- Le mode Debug inclut la détection de l’environnement et un rapport au format JSON
la suite est omise
ASTER rev.1.0.7 :: New features
-
Batch assigning alterable values, strings, and flags to multiple user‑specified Active Object instances, based on their respective JSON object values.
-
Loading and generating encoded strings of binary data (reference vectors).
https://www.prester.org/cf2.5/aster/download/index.html
ASTER rev.1.0.7
(2025-12-15) ::
The specification has been changed:
Alt + F10is now assigned as the global hotkey to restore a window only when minimized.
- The default setting is Off; turn it On to use.
An immediate execution condition called “Detect when Restored from Minimized” has been implemented to detect the exact moment when a window is restored from a minimized state.
| update | description |
|---|---|
| Add | ✔ Action :: JSON :: Open file at regex-based search match in VS Code |
| Add | ✔ Action :: JSON Pointer :: Targeted :: is_array :: is_obj :: Batch Assignment :: Oi Alt V. S. & F. |
| Add | ✔ Action :: JSON Pointer :: Targeted :: is_array :: Regex-based replacement for JSON Array |
| Add | ✔ Action :: Align :: Load w/ mvt.RefVec ( B64E, BitPack ) |
| Add | ✔ Action :: Object Control :: Load mvt.RefVec from BitPack-compressed, Base64 string |
| Add | ✔ Expression :: Object Control :: Produce a Base64 string of the BitPack-compressed mvt.RefVec |
| Add | ✔ Action :: hWnd :: Global Hotkey (Restore from Minimized) - On / Off |
| Add | ✔ Condition :: hWnd :: Evaluates to True: restored from minimized |
| Add | New example 22_JSON_REGEX-Based_replacement_for_JSON_Array |
| Add | New example 39_Motion_Orbital_TargetXY_GrowRad |
| Add | New example 2_HWND_detect_restored_wnd_min |
| Add | New example 23_JSON_Batch_Assign_Oi_Alt_V_S_F |
| Add | New example 07_Align_LOAD_mvt.RefVec_B64E_BitPack |
| Add | New example 08_Align_LOAD_mvt.RefVec_B64E_BitPack |
| Add | New example 63_oCtrl_Mvtwd_Rebuild_RefVec_B64E_BitPack |
| Revise | The MFA examples : ‘Rev.16’, Revise MFA docs: fix inaccuracies, clarify descriptions. |
| Bug fixed | Action :: JSON :: Save: B64E MsgPack Zlib : Fixed path handling for non-ASCII characters |
| Bug fixed | Action :: JSON :: Save: B64E MsgPack LZ4 : Fixed path handling for non-ASCII characters |
| HTML | Condition :: Motion :: EvD: mvU.: mvTwrd Begin : Completely revised the inaccurate content. |
| HTML | Condition :: Motion :: EvD: mvU.: mvTwrd End : Completely revised the inaccurate content. |
| HTML | Expression :: Motion :: EvD: GetNum MvU. AnimDir : Completely revised the inaccurate content. |
| HTML | EvD: GetNum MvU. AnimDir » Identified incorrect identifier: ExNumuid » Correct one is: ExNumMvDir |
| évaluer | evaluetes (non‑existent form / typo) → evaluate = evalu- + -ate: -ate » Latin‑based verb-forming suffix |
ASTER rev.1.0.6
Usage Notice
(2025-10-15) Since rev.1.0.6, the software system requirements now include AVX2-compatible CPUs. Older CPUs that do not support AVX2 are supported only up to rev.1.0.5. If your hardware meets the requirements for Windows OS 11, your CPU is also AVX2-compatible.
Some internal optimizations have been applied in rev.1.0.6 to features implemented up to rev.1.0.5. Specifically, SIMD (small-scale parallel processing) is used, so if the CPU is not compatible, the program will crash. Detection of unsupported CPUs is not implemented at this time.
Reference URL: Intel® Intrinsics Guide: AVX2
AVX2 is not strictly required for practical use. If requested in the future, dynamic dispatch will be used to switch to standard scalar functions for non-compatible CPUs.
-
String search (replace) processing uses SIMD instructions and
std::boyer_moore_horspool (BMH), or a hybrid approach. -
Base64 Encode|Decode processing utilizes SIMD instructions. Benchmarks confirm a performance improvement of approximately 1.5 to 2 times compared to traditional scalar processing.
SIMD-based Base64 logic incorporates insights from Muła & Lemire (arXiv:1704.00605) and aklomp/base64 (GitHub). Code and structure from Turbo-Base64 were not directly referenced or reused, due to its GPL-3.0 license.
- Improved behavior of JSON Dump and FlattenDump. Fixed improper value copying (
const auto j = *lp_json;) by switching to reference (const auto& j = *lp_json;).
Avis d’utilisation
(2025-10-15) Depuis la version rev.1.0.6, les exigences système du logiciel incluent désormais les processeurs compatibles AVX2. Les anciens processeurs ne prenant pas en charge AVX2 sont pris en charge uniquement jusqu’à la version rev.1.0.5. Si votre matériel répond aux exigences de Windows OS 11, votre processeur est également compatible AVX2.
Des optimisations internes ont été appliquées dans la version rev.1.0.6 aux fonctionnalités déjà implémentées jusqu’à rev.1.0.5. En particulier, des instructions SIMD (traitement parallèle à petite échelle) sont utilisées, donc si le processeur n’est pas compatible, le programme plantera. La détection des processeurs non compatibles n’est pas encore implémentée.
URL de référence : Intel® Intrinsics Guide: AVX2
AVX2 n’est pas strictement requis pour une utilisation pratique. Si une demande est formulée à l’avenir, un dispatch dynamique sera utilisé pour basculer vers des fonctions scalaires standard sur les processeurs non compatibles.
-
Le traitement de recherche (remplacement) de chaînes utilise les instructions SIMD et
std::boyer_moore_horspool (BMH), ou une approche hybride. -
Le traitement Base64 Encode|Decode utilise les instructions SIMD. Les benchmarks confirment une amélioration des performances d’environ 1,5 à 2 fois par rapport au traitement scalaire traditionnel.
La logique Base64 basée sur SIMD s’inspire de Muła & Lemire (arXiv:1704.00605) et de aklomp/base64 (GitHub). Le code et la structure de Turbo-Base64 n’ont pas été directement référencés ni réutilisés, en raison de sa licence GPL-3.0.
- Amélioration du comportement de JSON Dump et FlattenDump. La copie de valeur incorrecte (
const auto j = *lp_json;) a été remplacée par une référence (const auto& j = *lp_json;).
Usage Notice
(2025-10-15) rev.1.0.6 以降、ソフトウェアのシステム要件に AVX2 対応 CPU が追加されました。AVX2 に対応しない古い CPU の利用について、rev.1.0.5 までの対応とさせていただきます。ハードウェアが Windows OS 11 の動作要件を満たす場合、CPU も AVX2 には対応しています。
rev.1.0.5 までに実装された機能について rev.1.0.6 では一部内部処理の最適化が施されています。具体的には SIMD (小規模な並列処理) を利用しているため、CPU が対応しない場合はプログラムがクラッシュします。 非対応 CPU の検出は現時点で実装されていません。
参考 URL : Intel® Intrinsics Guide: AVX2
実用上 AVX2 は必須でも無いので、今後もしも要望があったら非対応 CPU 向けには動的ディスパッチを使って、スカラ処理を利用した通常の関数へ切り替えを行うようにします。
-
文字列の検索 (置換) 処理に SIMD 命令 と
std::boyer_moore_horspool (BMH)を利用、もしくはハイブリッド化した処理。 -
Base64 Encode|Decode 処理に SIMD 命令を活用。従来のスカラ処理よりも実測で 1.5 ~ 2 倍程度、処理速度の向上をベンチマークにて確認済み。
Base64 処理を SIMD 化する際に Faster Base64 Encoding and Decoding Using AVX2 Instructions(Muła & Lemire 論文)arXiv:1704.00605 及び aklomp/base64 (GitHub) を参考にしています。
Turbo-Base64 はライセンスが GPL-3.0 なので、Turbo-Base64 のコードや構造を直接参照・流用していません。
- JSON Dump および FlattenDump の動作を改善。本来参照すべき箇所で値コピー(
const auto j = *lp_json;)していたため、参照(const auto& j = *lp_json;)に修正。
ASTER Rev.1.0.5
(2025-06-15) :: MessagePack-related features have been added. MessagePack is a format designed to handle JSON, which is typically stored as text-based data, in a binary form, allowing for more efficient processing and storage.
MessagePack is an open-source data format designed to handle text-based JSON in binary form. As for JSON’s binary format, CBOR was standardized by IETF RFC 8949 in 2020, while an official ISO standard has not yet been established.
Functions include converting JSON data being edited in ASTER into MessagePack, compressing the binary, encoding the compressed data in Base64 for storage, decoding Base64, and loading MessagePack. Users can choose between Zlib and LZ4 for compression. A Python script for verifying stored data is also included.
MessagePack をファイルから直接ロードする機能は nlohmann/json ではなく、msgpack-c を利用する予定。ただし ASTER は現時点で MessagePack のみを扱っていますが、本命として CBOR 対応と libcbor の導入が検討されています。libcbor へ対応したら msgpack-c には対応しません。最終的にどちらかに絞ります。
| update | description |
|---|---|
| Add | A new example: ‘_62_oCtrl_Mvtwd_ReCyclic_tracking’ |
| Add | A new example: ‘_61_oCtrl_Mvtwd_ReCyclic_grid’ |
| Add | A new example: ‘_60_oCtrl_Mvtwd_ReCyclic_triangle’ |
| Revise | .mfx example: ‘41_oCtrl_MvUtil_pickout_Tgt_&_MvSwap’ |
| New Fnc | Action :: MotionControl :: Create Reference Vector: Current coords of obj instances |
| New Fnc | Action :: MotionControl :: Create New Motion Group: MoveTowards Re.:Cyclic |
| New Fnc | Expression :: MotionControl :: EvD.: Get moving dirs converted to CF25 Animation Dir |
| New Fnc | Condition :: MotionControl :: EvD.: Begin Moving Towards |
| New Fnc | Condition :: MotionControl :: EvD.: End Moving Towards |
| Specification Change | The parameter specifications of MoveTowards have been partially modified. Parameters from rev.1.0.4 and earlier will not work in rev.1.0.5. |
| New | Base64-Encoding (B64E) & Decoding (B64D) for MessagePack (JSON) |
| New | Zlib & LZ4, Compression & decompression for MessagePack (JSON) |
| New Fnc | Action :: JSON :: Save to a file: B64E: Zlib compressed MessagePack |
| New Fnc | Action :: JSON :: Save to a file: B64E: LZ4 compressed MessagePack |
| New Fnc | Action :: JSON :: Rebuild B64D to JSON: Zlib compressed MessagePack |
| New Fnc | Action :: JSON :: Rebuild B64D to JSON: LZ4 compressed MessagePack |
| New Fnc | Expression :: JSON :: Generate B64E: Zlib compressed MessagePack |
| New Fnc | Expression :: JSON :: Generate B64E: LZ4 compressed MessagePack |
| Add | A new example: ‘58_JSON_Rebuild_B64D_msgPack_Zlib’ |
| Add | A new example: ‘59_JSON_Rebuild_B64D_msgPack_LZ4’ |
| Add | python3 script: For stored data verification (Zlib Compressed, B64E) |
| Add | python3 script: For stored data verification (LZ4 Compressed, B64E) |
| Fatal Incident | Spell miss: Inplimentation » Implementation |
ASTER Rev.1.0.4
(2025-05-15) :: Usage Notice
Includes specification changes for the JSON Data Sharing Option and Batch Selection. Some related commands have been deprecated, and older operation samples are not compatible with ASTER Rev.1.0.4.
(2025-05-15) :: Avis d’utilisation
Comprend des modifications de spécification pour l’option de partage de données JSON et la sélection par lot. Certaines commandes associées ont été supprimées, et les anciens exemples de fonctionnement ne sont pas compatibles avec ASTER Rev.1.0.4.
(2025-05-15) :: Usage Notice
JSON Data Sharing Option と Batch Selection の仕様変更を含みます。関連する命令が一部廃止され、古い動作サンプルは ASTER Rev.1.0.4 と動作互換性がありません。
| update | description |
|---|---|
| Specification Change | Condition: True while the JSON Data Option is disabled |
| Specification Change | MvtUtil: Batch toggle mvt.Pursuer selection state |
| Add | A new example: 57_oCtrl_MvtUtil_Batch_toggle_mvt_Pursuer |
| update | Due to specification changes in the JSON Data Sharing Option, the following features have been deprecated. |
| obsolete | Clear : Sharing JSON Data |
| obsolete | Clear : JSON Data |
| Fatal Incident | Spell miss: Algorythm » Algorithm |
ASTER Rev.1.0.3
ASTER Rev.1.0.2
ASTER Rev.1.0.1
ASTER Rev.1.0.0
ASTER Public Preview Version 0.9.23
