Полные примеры
Перенесено из репозитория формата — docs/spec/SPECIFICATION_RU.md, SYNX 3.7.4. Правки вносятся там.
4.1 Обычный файл (без !active)
Простой статичный конфиг. Никакой магии — просто данные.
synx
# Конфиг игры TotalWario (статичный)
app_name TotalWario
version 2.0.0
server
host 0.0.0.0
port 8080
ssl_enabled false
gameplay
base_hp 100
boss_hp 500
max_players 16
greeting Prepare to fight.
map_rotation
- Arena of Doom
- Crystal Caverns
- Wario Stadium
rules |
1. Не читерить.
2. Уважать Синдикат.
3. Весело проводить время!
credits
lead_dev KaiserBerg
studio APERTURESyndicate
year 2026Результат (Synx.parse()):
json
{
"app_name": "TotalWario",
"version": "2.0.0",
"server": {
"host": "0.0.0.0",
"port": 8080,
"ssl_enabled": false
},
"gameplay": {
"base_hp": 100,
"boss_hp": 500,
"max_players": 16,
"greeting": "Prepare to fight."
},
"map_rotation": [
"Arena of Doom",
"Crystal Caverns",
"Wario Stadium"
],
"rules": "1. Не читерить.\n2. Уважать Синдикат.\n3. Весело проводить время!",
"credits": {
"lead_dev": "KaiserBerg",
"studio": "APERTURESyndicate",
"year": 2026
}
}4.2 Файл с !active — живой конфиг
Тот же конфиг, но с динамическими функциями и валидацией.
synx
!active
# Живой конфиг проекта TotalWario
app_name[required, min:3, max:30] TotalWario
version[readonly] 2.0.0
server
// Порт из переменной окружения, если нет — 8080
port:env:default:8080 PORT
host 0.0.0.0
ssl_enabled false
gameplay
base_hp 100
// Движок сам посчитает: 100 * 5 = 500
boss_hp:calc base_hp * 5
max_players[type:int, min:2, max:64] 16
difficulty[enum:easy|normal|hard|nightmare] normal
// Каждый раз при парсинге — случайная фраза
greeting:random
- Welcome to the arena!
- Prepare to fight.
- Wario time!
// Взвешенный рандом: обычный дроп 70%, редкий 20%, легенда 10%
loot_tier:random 70 20 10
- common
- rare
- legendary
map_rotation
- Arena of Doom
- Crystal Caverns
- Wario Stadium
rules |
1. Не читерить.
2. Уважать Синдикат.
3. Весело проводить время!
// Подключить настройки БД из отдельного файла
database:include ./db.synx
// Секреты — не попадут в логи
api_key[required]:secret sk-live-abc123def456
credits
lead_dev KaiserBerg
studio APERTURESyndicate
year 2026
contact:alias lead_devРезультат одного из вызовов Synx.parse():
json
{
"app_name": "TotalWario",
"version": "2.0.0",
"server": {
"port": 8080,
"host": "0.0.0.0",
"ssl_enabled": false
},
"gameplay": {
"base_hp": 100,
"boss_hp": 500,
"max_players": 16,
"difficulty": "normal",
"greeting": "Wario time!",
"loot_tier": "common"
},
"map_rotation": [
"Arena of Doom",
"Crystal Caverns",
"Wario Stadium"
],
"rules": "1. Не читерить.\n2. Уважать Синдикат.\n3. Весело проводить время!",
"database": {
"host": "localhost",
"port": 5432,
"name": "mydb"
},
"api_key": "[SECRET]",
"credits": {
"lead_dev": "KaiserBerg",
"studio": "APERTURESyndicate",
"year": 2026,
"contact": "KaiserBerg"
}
}При следующем вызове
parse()поляgreetingиloot_tierбудут другими — в этом и смысл:random.