Hikaye Nasıl Yazılır?
DriftNov editörü — Form, Script ve Blueprint modlarına tam rehber
Bu rehber, DriftNov'un dallanmalı hikaye editörünü kullanarak kendi interaktif hikayenizi
nasıl yazacağınızı anlatır. Yeni bir hikaye oluşturduğunuzda üç farklı çalışma modundan
birini seçebilirsiniz; hepsi aynı veriyi düzenler, sadece arayüzleri farklıdır.
1. Genel Bakış — 3 Mod
Editör aynı hikayeyi üç farklı şekilde göstermenize izin verir. İstediğiniz zaman
aralarında geçiş yapabilirsiniz — hiçbiri "daha doğru" değildir, sadece farklı işler için
daha uygundur.
Blueprint — yeni başlayanlar için en basiti
Hikayeyi görsel bir harita olarak görürsünüz; her kutu bir sahnedir, oklar
bağlantılardır. Bir sahneye çift tıklayınca o sahneyi baştan sona
düzenleyebileceğiniz güzel bir pop-up açılır — script sözdizimi yazmadan, bağlantıları
gözünüzün önünde görerek hikaye kurarsınız. Kod bilmeyen biri için en sezgisel yoldur.
Form — hızlı, küçük değişiklikler için
Sahneleri sade bir liste + alan düzeninde düzenlersiniz. Tek bir sahnede küçük bir
metin veya bağlantı değişikliği yapacaksanız en hızlı yoldur; ama Blueprint'teki görsel
bağlam burada yoktur.
Script — uygulama dışında yazmak veya AI'a yazdırmak için
Hikayeyi düz metin olarak, kendi sözdiziminizle yazarsınız. Uygulamayı hiç açmadan
bir metin editöründe hikayenizi baştan yazıp editöre yapıştırmak, ya da bir yapay zekaya
bu formatta bir hikaye ürettirmek istediğinizde kullanılır (bkz. sayfanın en altındaki
AI Promptu).
Pratik yaklaşım: Kod yazmaya alışkın değilseniz tamamen Blueprint içinde
kalıp her sahneyi pop-up'tan düzenleyin. Script yazmaya alışkınsanız veya hikayeyi bir AI'a
yazdırdıysanız Script ile toplu olarak yapıştırın, sonra Form
veya Blueprint ile ince ayar yapın.
Önemli: Blueprint modu yalnızca geniş ekranlarda (bilgisayarda web
sitesi üzerinden, veya tabletin geniş görünümünde) çalışır. Telefon uygulamasında veya dar
bir pencerede editörü açtığınızda Blueprint sekmesi görünmez, otomatik olarak Form'a
döner. Blueprint'i kullanabilmek için web sitesini bir bilgisayardan
açmanız gerekir.
2. Form Editörü
Form modunda ekran ikiye bölünür: solda sahne listesi, sağda seçili sahnenin tüm alanları.
Sol panel — Sahne listesi
- Sahneler bölümlere göre gruplanır (Bölüm 1, Bölüm 2, …).
- "+ Bölüm Ekle" yeni bir bölüm başlığı açar.
- "+ Bu bölüme sahne ekle" o bölümün altına yeni bir sahne ekler.
- Yukarı/aşağı ok ikonlarıyla sahnelerin sırasını değiştirebilirsiniz.
- Her sahnenin yanındaki renkli nokta durumunu gösterir:
yeşil = sorun yok, sarı = uyarı (ör. kısa metin),
kırmızı = hata (ör. kırık bağlantı).
Sağ panel — Sahne alanları
- Sahne ID: Benzersiz, küçük harf ve alt çizgi kullanılan bir kimlik
(ör.
b1_s1). Başka sahneler bu ID'ye bağlanarak ona ulaşır.
- Tip: INTRO / MAIN / INTERLUDE / WEEK_SUMMARY / ROUTER / ENDING / CREDITS
arasından seçilir (bkz. Sahne Tipleri).
- Başlık: Sahnenin okuyucuya gösterilebilecek kısa adı (isteğe bağlı).
- Anlatı / diyalog metni: Sahnenin ana içeriği. Karakter konuşmaları için
satırın başına karakterin adını büyük harfle yazıp iki nokta koyarsınız.
- Seçenekler: MAIN sahnelerde her seçenek için metin, hedef sahne ve
isteğe bağlı stat/onay etkisi ile koşul tanımlarsınız. Formda bunlar ayrı giriş kutularıdır
— script'teki
{ } ve [ ] sözdizimini elle yazmanıza gerek kalmaz.
- Sonraki sahne: INTERLUDE / WEEK_SUMMARY gibi seçimsiz sahnelerde,
hikayenin otomatik olarak hangi sahneye geçeceğini seçersiniz.
- Router koşulları: ROUTER sahnelerinde seçenek yerine sıralı koşul
satırları görürsünüz; her biri bir hedefe bağlanır.
Form modunun avantajı: her alan doğrulanır, hatalı bir bağlantı veya eksik seçenek anında
kırmızı işaretlenir. Script yazmayı bilmeseniz de hikayenizi baştan sona bu modda
tamamlayabilirsiniz.
3. Script Editörü
Script modunda hikayenin tamamını düz metin olarak görür ve düzenlersiniz. Bu, deneyimli
yazarlar için en hızlı yöntemdir — özellikle uzun hikayeleri sıfırdan yazarken. Script
modundaki değişiklikler otomatik uygulanmaz; bitirdiğinizde "Forma Uygula"
butonuna basarsınız, editör metni ayrıştırıp sahnelere dönüştürür.
3.1 Sahne Formatı
Her sahne aşağıdaki kalıpla başlar ve --- ile biter:
# sahneId | TİP | bölüm | Başlık
Anlatı metni burada. Ortam, atmosfer, karakterin eylemleri.
KARAKTER: Diyalog satırı.
PLAYER: Oyuncunun söylediği şey.
> Seçenek metni -> hedefSahneId
> Seçenek metni (koşul) -> hedefSahneId
-> otomatikHedefSahneId
---
bölüm alanı tam sayıdır. Giriş sahnesi (INTRO) için 0, sonrasında
1, 2, 3… şeklinde devam eder. Editör bu numarayı
sahneyi hangi bölüme ait göstereceğini anlamak için kullanır.
Eğer hikaye stat sistemi kullanıyorsa, script'in en üstüne (herhangi bir
# sahnesinden önce) stat tanımları eklenir:
@stat: cesaret | Cesaret | 10
@stat: empati | Empati | 15
| Alan | Açıklama |
key | Script içinde efekt/koşulda kullanılır: {cesaret+5}, [stat:cesaret>=30] |
| Etiket | Oyuncuya gösterilen isim |
| Başlangıç değeri | Oyun başındaki değer, genellikle 0-100 arası |
Stat kullanmayan hikayelerde bu satırlar tamamen atlanır.
3.2 Sahne Tipleri
| Tip | Kullanım |
INTRO | İlk sahne. Sadece 1 tane olur. -> ilkSahne ile biter. |
MAIN | Seçim sahnesi. 2-4 arası > seçeneği zorunludur. |
INTERLUDE | Seçimsiz geçiş/atmosfer sahnesi. -> sonrakiSahne ile biter. |
WEEK_SUMMARY | Bölüm sonu özeti. Seçim yok, bir sonraki bölümün ilk sahnesine bağlanır. |
ROUTER | İçeriksiz dallanma noktası. Onay puanı veya stat/bayrağa göre yönlendirir. |
ENDING | Son sahne. Seçim yok. -> credits ile biter. |
CREDITS | Tek credits sahnesi. Her ending buraya bağlanır. |
Kesin kural: Sahnede > seçeneği varsa tip MAIN
olmalıdır; yoksa INTERLUDE olmalıdır. Bu kuralın istisnası yoktur — aksi halde
editör hata verir.
Sahne ID kuralları (öneri):
- Küçük harf ve alt çizgi kullanın:
b1_s1, b2_ara_a
b{bölüm}_s{sıra} → MAIN sahneler
b{bölüm}_ara_{harf} → INTERLUDE sahneler
b{bölüm}_summary → WEEK_SUMMARY
b{bölüm}_router → ROUTER
ending_a, ending_b, ending_c… → Sonlar
credits → sabit, tek
3.3 Diyalog Kuralları
# Karakter konuşması — büyük harf, iki nokta
DEFNE: Bugün çok yorgunum.
MERT: Yok canım, sen her zaman böylesin.
# Oyuncu konuşması
PLAYER: Anlıyorum. Devam et.
# Anlatı — prefix yok, düz metin
Sınıf yavaş yavaş boşalıyor. Sen pencereye bakıyorsun.
# Oyuncu adı kullanımı
MERT: Ey, {playerName}! Buradasın demek.
3.4 Seçenekler ve Efektler
# Temel seçenek
> Seçenek metni -> hedefSahneId
# Seçenek + onay etkisi
> Seçenek metni -> hedefSahneId {onay+10}
# Seçenek + stat etkisi
> Seçenek metni -> hedefSahneId {cesaret+5, empati+3}
# Seçenek + bayrak (flag) etkisi
> Seçenek metni -> hedefSahneId {flag:grupDefne=true}
# Seçenek + koşul (koşul karşılanmazsa seçenek kilitli görünür)
> Seçenek metni [stat:empati>=40] -> hedefSahneId {onay+15}
| Efekt sözdizimi | Açıklama |
{onay+10} | onay puanı +10 |
{onay-5} | onay puanı -5 |
{statAdı+3} | o stat +3 |
{flag:grupDefne=true} | bayrağı true yap |
{onay+10, empati+2, flag:mertPlan=true} | birden fazla efekt virgülle |
3.5 Koşullar
| Sözdizimi | Açıklama |
[stat:statAdı>=40] | o stat en az 40 olmalı |
[flag:grupDefne=true] | bayrak true olmalı |
[onay:60-100] | onay puanı 60-100 arasında olmalı |
Koşulu karşılanmayan seçenekler oyuncuya kilitli görünür, tıklanamaz.
3.6 Router Sahnesi
ROUTER sahnesi seçim veya anlatı içermez; yalnızca ? ile başlayan sıralı
koşul satırları taşır. Motor bu satırları yukarıdan aşağı kontrol eder, ilk eşleşen
koşulun hedefine gider.
# b2_router | ROUTER | 2 | Yol Ayrımı
? flag:grupDefne=true -> b2_s1_grup
? flag:grupDefne=false -> b2_s1_kutuphane
---
# b4_router | ROUTER | 4 | Son Karar Yolu
? onay:70-100 -> b4_s4_high
? onay:40-69 -> b4_s4_mid
? onay:0-39 -> b4_s4_low
Karmaşık koşulları aşamalı değerlendirmek için bir ROUTER başka bir ROUTER'a
bağlanabilir — örneğin önce bir bayrağı kontrol edip sonra onay puanına göre ayrım
yapabilirsiniz.
3.7 Statlar ve Onay Sistemi
Onay: Tek bir genel ilişki/onay puanıdır (0-100), ROUTER'da
onay:X-Y ile kullanılır. Her hikayede otomatik mevcuttur.
Statlar: Hikayeye özel, birden fazla değer olabilir (ör. bir polisiyede
zeka, gözlem, ikna; bir macerada güç,
cesaret, sezgi). Script'in en üstünde @stat:
satırlarıyla tanımlanır ve bölüm özeti ekranında bar olarak gösterilir.
Tanımsız (gizli) statlar: @stat: bildirimi olmadan sadece
efekt/koşul olarak kullanılan dahili sayaçlardır — oyuncuya görsel bar olarak
gösterilmez. Örneğin "kaç ipucu topladı" gibi gizli bir takip için kullanılabilir:
> Seçenek B -> b1_s2 {ipucu+15}
> Seçenek C [stat:ipucu>=30] -> b1_ara_ozel
3.8 Tam Örnek
@stat: empati | Empati | 10
# intro | INTRO | 0 | Başlangıç
-> b1_s1
---
# b1_s1 | MAIN | 1 | İlk Gün
Eylül. Yeni bir şehir, yeni bir iş. Ofise ilk adımını atıyorsun.
Masaların arasında biri sana bakıyor: Ayşe.
AYŞE: Sen yeni işe başlayan mısın?
PLAYER: Evet, bugün ilk gün.
> "Kaybolmak kötü değil, keşfetmek için geldim." -> b1_ara_a {onay+10, empati+5}
> "Yardım edersen daha kolay olur." -> b1_ara_b {onay+5}
> Sadece gülümse, otur, konuşma. -> b1_ara_b {onay-5}
---
# b1_ara_a | INTERLUDE | 1 | Öğle Arası
Öğle molası. Sen pencere kenarına çekilmişsin, kahveni tutuyorsun.
-> b1_s2
---
# b1_ara_b | INTERLUDE | 1 | Mola Farkı
Öğle molasında koridorda Ayşe'ye rastlıyorsun.
AYŞE: İş nasıl gidiyor şimdiye kadar?
-> b1_s2
3.9 Sık Yapılan Hatalar
- En kritik hata:
MAIN yazıp > seçeneği
koymamak, veya INTERLUDE yazıp > koymak — editör hata
verir. Kural basit: seçenek varsa MAIN, yoksa INTERLUDE.
- ROUTER sahnesine anlatı metni yazmak — sadece
? satırları olmalı.
- Sahne ID'lerini tutarsız yazmak — bağlantılar kırılır.
credits sahnesini eklemeyi unutmak.
- Ending sahnelerinde
-> credits bağlantısını eksik bırakmak.
- Tüm seçenekleri aynı hedefe bağlamak — gerçek bir dallanma oluşturmaz, okuyucu için
fark yaratmaz.
@stat: satırlarını sahnelerin içine yazmak — bunlar yalnızca dosyanın en
başında olmalı.
4. Blueprint Modu
Blueprint, hikayenizin akışını görsel bir harita olarak gösterir. Her kutu (node) bir
sahneyi temsil eder; oklar sahneler arasındaki bağlantıları gösterir. Sadece haritaya
bakmak için değil, hikayenin tamamını burada yazabilmek için tasarlanmıştır.
4.1 Harita üzerinde gezinme
- Node rengi sahne tipini gösterir (MAIN mavi, INTERLUDE yeşil, ROUTER sarı, ENDING
kırmızı vb.).
- Node'un kenarındaki küçük daireler (portlar) her seçeneğin/dalın çıkış noktasıdır;
bir porttan sürükleyip başka bir node'a bırakarak yeni bir bağlantı kurabilirsiniz.
- Kırmızı çerçeveli node'lar yetim (orphan) sahnelerdir — hiçbir yerden
bu sahneye bağlantı yoktur, oyuncu asla oraya ulaşamaz.
- Sürükle (boş alanda) → haritayı kaydırır (pan).
- Kaydırma tekerleği / pinch → yakınlaştırır/uzaklaştırır.
- Sağ alttaki + / - butonları → adım adım zoom.
- Kare ikonu → varsayılan görünüme döner.
- Yenile ikonu → node yerleşimini (layout) sıfırlar.
4.2 Bir sahneyi düzenlemek — çift tıkla, pop-up aç
Herhangi bir node'a çift tıkladığınızda, o sahnenin tüm alanlarını
gösteren geniş bir pop-up açılır. Bu pop-up üç sütuna ayrılmıştır:
- Sütun 1 — Sahne Bilgisi: Sahne ID'si, sahne tipi (renkli çip
butonlarla tek tıkla değiştirilir — yanındaki bilgi ikonu her tipin ne işe yaradığını
açıklar), başlık ve bağlı olduğu bölüm numarası.
- Sütun 2 — Diyaloglar: Sahnenin anlatı/diyalog satırları; her satırı
tek tek ekleyip silebilir, sırasını yukarı/aşağı okla değiştirebilirsiniz.
- Sütun 3 — Bağlantılar: Sahne tipine göre değişir —
INTERLUDE/WEEK_SUMMARY'de tek bir "Sonraki Sahne" alanı, MAIN'de seçenek listesi (her
seçenek için metin + hedef sahne + stat/onay etkisi), ROUTER'da sıralı yönlendirme
dalları görürsünüz.
Yani Blueprint'te tek bir yerden çıkmadan: haritaya bakıp hangi sahnenin eksik olduğunu
görür, çift tıklayıp o sahneyi tamamen yazar, kapatır ve bir sonraki node'a geçebilirsiniz.
Değişiklik yapıp pop-up'ı kapatmaya çalıştığınızda kaydedilmemiş değişiklik varsa
uygulama sizi uyarır.
Blueprint özellikle şu durumlarda faydalıdır: kırık bir bağlantıyı (yetim sahneyi) görsel
olarak bulmak, bir bölümde gerçekten iki farklı yol açık mı diye kontrol etmek, tüm
seçeneklerin yanlışlıkla aynı sahneye yönlendirilip yönlendirilmediğini görmek — ve
script sözdizimi hiç bilmeden sıfırdan bir hikaye kurmak.
5. Sık Sorulan Sorular
Hangi modda başlamalıyım?
Kod yazmaya alışkın değilseniz Form ile başlayın. Metin yazmaya alışkınsanız Script çok
daha hızlıdır.
Script'te yaptığım değişiklik neden görünmüyor?
Script modundaki değişiklikler otomatik kaydedilmez — "Forma Uygula" butonuna basmanız
gerekir.
Kaç bölüm veya sahne yazmalıyım?
Sınır yoktur; tek bölümlük kısa bir hikaye de yazabilirsiniz, çok bölümlü uzun bir roman da.
Önemli olan her MAIN sahnede seçeneklerin gerçekten farklı bir sonraki içeriğe götürmesidir.
Onay ile stat arasındaki fark nedir?
Onay tek, genel bir ilişki puanıdır ve her hikayede hazır gelir. Statlar ise hikayeye özel,
birden fazla olabilen, sizin tanımladığınız değerlerdir.
AI Promptu
Script Üretmek İçin AI Promptu
Bir yapay zeka sohbet aracına (ChatGPT, Claude vb.) hikayenizin konusuyla birlikte
aşağıdaki metni olduğu gibi kopyalayıp yapıştırın. Bu, sizin hikayenize
özel bir talimat değildir — sadece DriftNov editörünün script formatını tanımlayan genel
kurallardır. Konu kısmını kendi hikayenizle değiştirmeniz yeterli.
Sen bir interaktif/dallanmalı hikaye script yazarısın. Aşağıdaki formatı KESİNLİKLE
ihlal etmeden, verdiğim konuya göre tam bir hikaye scripti üreteceksin.
GENEL YAPI
- Her sahne "# sahneId | TİP | bölüm | Başlık" satırıyla başlar ve "---" ile biter.
- "bölüm" alanı tam sayıdır: giriş sahnesi için 0, sonra 1, 2, 3, ...
- Hikaye stat (istatistik) kullanıyorsa, dosyanın en başına (ilk "#" sahnesinden önce)
şu satırları ekle:
@stat: key | Etiket | başlangıç_değeri
Stat kullanmıyorsan bu satırları hiç yazma.
SAHNE TİPLERİ (sadece bu yedi tip vardır, başka tip icat etme)
- INTRO : Tek bir tane, bölüm=0. Seçenek yok. Sadece "-> ilkSahneId" ile biter.
- MAIN : 2-4 arası "> ..." seçeneği ZORUNLUDUR. Seçeneksiz MAIN yazma.
- INTERLUDE : Seçenek YOKTUR. Sadece "-> sonrakiSahneId" ile biter.
- WEEK_SUMMARY : Bölüm özeti. Seçenek yok, bir sonraki bölümün ilk sahnesine bağlanır.
- ROUTER : Anlatı/diyalog İÇERMEZ. Sadece "? koşul -> hedef" satırları olur.
Motor satırları yukarıdan aşağı kontrol eder, ilk eşleşen koşulun
hedefine gider.
- ENDING : Seçenek yok. Sadece "-> credits" ile biter.
- CREDITS : Tek bir tane, script'in en sonunda. Bağlantısı yoktur.
KESİN KURAL: Sahnede ">" seçeneği varsa tip mutlaka MAIN olmalı; yoksa mutlaka
INTERLUDE olmalı. Bu kuralın istisnası yoktur.
DİYALOG YAZIMI
KARAKTER: Büyük harfle karakter adı, iki nokta, ardından diyalog satırı.
PLAYER: Oyuncunun söylediği şey.
Prefix (önek) olmayan satırlar anlatı/betimleme metnidir.
SEÇENEKLER VE EFEKTLER (sadece MAIN sahnelerde)
> Seçenek metni -> hedefSahneId
> Seçenek metni -> hedefSahneId {onay+10}
> Seçenek metni -> hedefSahneId {statAdi+5, flag:bayrakAdi=true}
> Seçenek metni [stat:statAdi>=40] -> hedefSahneId
> Seçenek metni [flag:bayrakAdi=true] -> hedefSahneId
> Seçenek metni [onay:60-100] -> hedefSahneId
ROUTER KOŞUL SATIRLARI (sadece ROUTER sahnelerde)
? flag:bayrakAdi=true -> hedefSahneId
? stat:statAdi>=50 -> hedefSahneId
? onay:60-100 -> hedefSahneId
UYULMASI ZORUNLU KURALLAR
1. Sahne ID'leri küçük harf ve alt çizgi kullanır (ör. b1_s1, b1_ara_a) ve benzersizdir.
2. Her MAIN sahnedeki seçenekler en az 2 farklı hedef ID'ye gitmelidir. Tüm
seçenekler aynı sahneye gidiyorsa bu geçersizdir — yeniden yaz.
3. Her ENDING sahnesi mutlaka "-> credits" ile bitmelidir.
4. Script'te tam olarak bir tane CREDITS sahnesi olmalıdır.
5. "@stat:" satırları SADECE dosyanın en başında olur; hiçbir sahnenin içinde
yazılamaz.
6. ROUTER sahnesinde anlatı metni veya diyalog OLAMAZ, sadece "?" satırları olur.
7. Script içindeki her "->" hedefi ve her seçenek hedefi, script'te tanımlı
gerçek bir sahne ID'sine işaret etmelidir — kırık bağlantı bırakma.
ÇIKTI FORMATI
Yukarıdaki kurallara birebir uyan, tam ve oynanabilir bir script üret. Script
dışında açıklama, yorum veya markdown code fence ekleme — sadece script metnini
yaz.
Şimdi şu konu için bir hikaye yaz:
[KONUNUZU / KARAKTERLERİNİZİ / TEMANIZI BURAYA YAZIN]
↑ Başa dön
How to Write a Story
DriftNov editor — a complete guide to Form, Script, and Blueprint mode
This guide explains how to write your own interactive story using DriftNov's branching
story editor. When you create a new story, you can choose between three different working
modes; all of them edit the same underlying data, they just present it differently.
1. Overview — 3 Modes
The editor lets you view and edit the same story in three different ways. You can switch
between them at any time — none is "more correct" than the others, each simply suits a
different task.
Blueprint — the simplest for beginners
See your story as a visual map — each box is a scene, arrows are connections.
Double-click any scene to open a nicely laid-out popup where you can
write the entire scene — no script syntax to type, and you build the story while
literally seeing the connections in front of you. The most intuitive way in if you
don't know any code.
Form — fast, small edits
Edit scenes through a plain list + fields layout. The quickest way to make a
small text or link change on one scene, though you lose Blueprint's visual context.
Script — writing outside the app, or having an AI write it
Write the story as plain text using its own syntax. Use this when you want to
draft the story in a plain text editor without ever opening the app, or have an AI
generate a story in this format for you (see the
AI Prompt at the bottom of this page).
A practical workflow: if you're not used to writing code-like syntax, stay entirely in
Blueprint and edit every scene through its popup. If you're comfortable
writing script, or had an AI generate one, paste it in bulk via Script,
then fine-tune with Form or Blueprint.
Important: Blueprint mode only works on wide screens (on the website from
a computer, or a tablet in a wide layout). Opening the editor on the phone app or in a
narrow window hides the Blueprint tab entirely and falls back to Form automatically. To
use Blueprint you need to open the website from a computer.
2. Form Editor
In Form mode the screen is split in two: the scene list on the left, and all the fields
of the selected scene on the right.
Left panel — Scene list
- Scenes are grouped by part (Part 1, Part 2, …).
- "+ Add Part" opens a new part heading.
- "+ Add scene to this part" adds a new scene under that part.
- The up/down arrow icons reorder scenes.
- The colored dot next to each scene shows its status:
green = fine, yellow = warning (e.g. short text),
red = error (e.g. a broken link).
Right panel — Scene fields
- Scene ID: A unique identifier using lowercase letters and
underscores (e.g.
b1_s1). Other scenes link to it by this ID.
- Type: Choose from INTRO / MAIN / INTERLUDE / WEEK_SUMMARY / ROUTER /
ENDING / CREDITS (see Scene Types).
- Title: A short, optional name shown to the reader.
- Narrative / dialogue text: The scene's main content. For a
character's line, start the line with the character's name in uppercase followed by a
colon.
- Choices: For MAIN scenes, you define text, target scene, and any
optional stat/approval effect and condition for each choice. In the form these are
separate input fields — you never need to hand-type the script's
{ } and
[ ] syntax.
- Next scene: For choice-less scenes (INTERLUDE, WEEK_SUMMARY), you
pick which scene the story automatically advances to.
- Router conditions: In ROUTER scenes you see an ordered list of
condition rows instead of choices; each one links to a target.
The advantage of Form mode: every field is validated, and a broken link or missing choice
is flagged red immediately. You can complete an entire story here without ever writing raw
script.
3. Script Editor
In Script mode you see and edit the whole story as plain text. This is the fastest method
for experienced writers — especially when drafting a long story from scratch. Script
changes are not applied automatically; when you're done, press
"Apply to Form" and the editor parses the text into scenes.
3.1 Scene Format
Every scene starts with the following pattern and ends with ---:
# sceneId | TYPE | part | Title
Narrative text here. Setting, atmosphere, character actions.
CHARACTER: A line of dialogue.
PLAYER: What the player says.
> Choice text -> targetSceneId
> Choice text (condition) -> targetSceneId
-> autoTargetSceneId
---
The part field is an integer. The intro scene uses 0, followed
by 1, 2, 3… The editor uses this number to know
which part a scene belongs to.
If your story uses a stat system, add stat declarations at the very top
of the script (before any # scene):
@stat: courage | Courage | 10
@stat: empathy | Empathy | 15
| Field | Description |
key | Used in effects/conditions: {courage+5}, [stat:courage>=30] |
| Label | The name shown to the player |
| Starting value | Value at the start of the game, usually 0-100 |
Stories that don't use stats simply skip these lines entirely.
3.2 Scene Types
| Type | Usage |
INTRO | The first scene. Only one exists. Ends with -> firstScene. |
MAIN | Choice scene. 2-4 > choices are required. |
INTERLUDE | A choice-less transition/atmosphere scene. Ends with -> nextScene. |
WEEK_SUMMARY | End-of-part recap. No choices, links to the next part's first scene. |
ROUTER | A content-free branching point. Routes based on the approval score or a stat/flag. |
ENDING | A final scene. No choices. Ends with -> credits. |
CREDITS | A single credits scene. Every ending links here. |
Strict rule: if a scene has any > choices its type must
be MAIN; otherwise it must be INTERLUDE. There is no exception —
otherwise the editor raises an error.
Scene ID conventions (recommended):
- Use lowercase letters and underscores:
b1_s1, b2_int_a
b{part}_s{order} → MAIN scenes
b{part}_int_{letter} → INTERLUDE scenes
b{part}_summary → WEEK_SUMMARY
b{part}_router → ROUTER
ending_a, ending_b, ending_c… → Endings
credits → fixed, single scene
3.3 Dialogue Rules
# Character dialogue — uppercase name, colon
LEA: I'm so tired today.
MARK: Nah, you're always like that.
# Player dialogue
PLAYER: I get it. Go on.
# Narration — no prefix, plain text
The classroom slowly empties out. You look toward the window.
# Using the player's name
MARK: Hey, {playerName}! So you're here.
3.4 Choices and Effects
# Basic choice
> Choice text -> targetSceneId
# Choice + approval effect
> Choice text -> targetSceneId {approval+10}
# Choice + stat effect
> Choice text -> targetSceneId {courage+5, empathy+3}
# Choice + flag effect
> Choice text -> targetSceneId {flag:joinedGroup=true}
# Choice + condition (locked in the UI if not met)
> Choice text [stat:empathy>=40] -> targetSceneId {approval+15}
| Effect syntax | Description |
{approval+10} | approval score +10 |
{approval-5} | approval score -5 |
{statName+3} | that stat +3 |
{flag:joinedGroup=true} | set the flag to true |
{approval+10, empathy+2, flag:planReady=true} | multiple effects, comma-separated |
3.5 Conditions
| Syntax | Description |
[stat:statName>=40] | that stat must be at least 40 |
[flag:joinedGroup=true] | the flag must be true |
[approval:60-100] | approval score must be between 60-100 |
Choices whose condition isn't met appear locked to the player and can't be selected.
3.6 Router Scene
A ROUTER scene has no choices or narrative — only an ordered list of lines starting with
?. The engine checks them top to bottom and jumps to the target of the first
matching condition.
# b2_router | ROUTER | 2 | Fork in the Road
? flag:joinedGroup=true -> b2_s1_group
? flag:joinedGroup=false -> b2_s1_library
---
# b4_router | ROUTER | 4 | Final Decision Path
? approval:70-100 -> b4_s4_high
? approval:40-69 -> b4_s4_mid
? approval:0-39 -> b4_s4_low
One ROUTER can chain into another to evaluate complex conditions in stages — for example,
check a flag first, then branch on approval score.
3.7 Stats and the Approval System
Approval: A single, general relationship/approval score (0-100), used in
ROUTER as approval:X-Y. Available automatically in every story.
Stats: Story-specific values, and you can have several (e.g. a mystery
might use intellect, observation, persuasion; an
adventure might use strength, courage, instinct).
Declared at the top of the script with @stat: lines and shown as a bar on the
part-summary screen.
Undeclared (hidden) stats: Internal counters used only in effects/
conditions without an @stat: declaration — they are never shown to the player
as a bar. Useful for hidden tracking, e.g. "how many clues collected":
> Choice B -> b1_s2 {clue+15}
> Choice C [stat:clue>=30] -> b1_int_special
3.8 Full Example
@stat: empathy | Empathy | 10
# intro | INTRO | 0 | Beginning
-> b1_s1
---
# b1_s1 | MAIN | 1 | Day One
September. A new city, a new job. You step into the office for the first time.
Someone is watching you from across the desks: Ava.
AVA: Are you the new hire?
PLAYER: Yeah, first day today.
> "Getting lost isn't bad — that's why I came to explore." -> b1_int_a {approval+10, empathy+5}
> "It'd be easier if you helped me out." -> b1_int_b {approval+5}
> Just smile, sit down, say nothing. -> b1_int_b {approval-5}
---
# b1_int_a | INTERLUDE | 1 | Lunch Break
Lunch break. You've drifted to the window, holding your coffee.
-> b1_s2
---
# b1_int_b | INTERLUDE | 1 | A Different Break
You run into Ava in the hallway during lunch.
AVA: So, how's the job treating you so far?
-> b1_s2
3.9 Common Mistakes
- The most critical mistake: writing
MAIN without a
> choice, or writing INTERLUDE with one — the editor will
raise an error. The rule is simple: choices present → MAIN, none → INTERLUDE.
- Writing narrative text inside a ROUTER scene — it should only contain
? lines.
- Using inconsistent scene IDs — this breaks links.
- Forgetting to add the
credits scene.
- Leaving out the
-> credits link on an ending scene.
- Linking every choice to the same target — this creates no real branching and makes no
difference to the reader.
- Writing
@stat: lines inside scenes — they must only appear at the very
top of the file.
4. Blueprint Mode
Blueprint shows your story's flow as a visual map. Each box (node) represents a scene;
arrows show the connections between scenes. It's built not just to view your structure,
but to write the entire story right here.
4.1 Navigating the map
- Node color indicates scene type (MAIN blue, INTERLUDE green, ROUTER yellow, ENDING
red, etc.).
- The small circles (ports) on a node's edge are the exit point for each choice/branch —
drag from a port and drop it on another node to create a new connection.
- Nodes with a red border are orphan scenes — nothing links to them, so
the player can never reach them.
- Drag (on empty space) → pans the map.
- Scroll wheel / pinch → zooms in/out.
- The + / - buttons (bottom right) → step zoom.
- The square icon → resets to the default view.
- The refresh icon → resets node layout.
4.2 Editing a scene — double-click to open a popup
Double-clicking any node opens a wide popup with every field for that
scene. It's split into three columns:
- Column 1 — Scene Info: Scene ID, scene type (switch it with one tap
on a colored chip — the info icon next to it explains what each type does), title, and
the part number it belongs to.
- Column 2 — Dialogue: The scene's narrative/dialogue lines; add,
remove, and reorder each line with the up/down arrows.
- Column 3 — Connections: Changes based on scene type — a single "Next
Scene" field for INTERLUDE/WEEK_SUMMARY, a list of choices for MAIN (text + target scene
+ stat/approval effect for each), or an ordered list of routing branches for ROUTER.
So without ever leaving Blueprint: look at the map to see which scene is missing, double-
click it to write it completely, close the popup, and move to the next node. If you try to
close the popup with unsaved changes, the app warns you first.
Blueprint is especially useful for: visually locating a broken link (an orphan scene),
checking whether a part truly has two open paths, spotting whether every choice
accidentally routes to the same scene — and building an entire story from scratch without
ever learning the script syntax.
5. Frequently Asked Questions
Which mode should I start with?
If you're not used to writing code-like syntax, start with Form. If you're comfortable
writing plain text, Script is much faster.
Why don't my Script changes show up?
Script changes aren't saved automatically — you need to press "Apply to Form".
How many parts or scenes should I write?
There's no limit; you can write a short single-part story or a long, multi-part one. What
matters is that every MAIN scene's choices genuinely lead to different upcoming content.
What's the difference between approval and stats?
Approval is a single, general relationship score built into every story. Stats are
story-specific values you define yourself, and you can have several of them.
AI Prompt
AI Prompt for Generating a Script
Paste the text below as-is into an AI chat tool (ChatGPT, Claude, etc.)
together with your story's premise. This isn't a prompt tailored to any specific story —
it's just the general rules that define the DriftNov editor's script format. Simply
replace the topic placeholder with your own premise.
You are an interactive/branching story script writer. Following the format below
WITHOUT ANY EXCEPTION, write a complete story script based on the premise I give you.
GENERAL STRUCTURE
- Every scene starts with "# sceneId | TYPE | part | Title" and ends with "---".
- The "part" field is an integer: 0 for the intro scene, then 1, 2, 3, ...
- If the story uses stats, add declarations at the very top of the file (before any
"#" scene):
@stat: key | Label | starting_value
If the story doesn't use stats, skip these lines entirely.
SCENE TYPES (only these seven types exist, do not invent new ones)
- INTRO : Exactly one, part=0. No choices. Ends only with "-> firstSceneId".
- MAIN : 2-4 "> ..." choices are REQUIRED. Never write MAIN without choices.
- INTERLUDE : Has NO choices. Ends only with "-> nextSceneId".
- WEEK_SUMMARY : End-of-part recap. No choices, links to the next part's first scene.
- ROUTER : Contains NO narrative or dialogue. Only "? condition -> target" lines.
The engine checks them top to bottom and jumps to the target of the
first matching condition.
- ENDING : No choices. Ends only with "-> credits".
- CREDITS : Exactly one, at the very end of the script. Has no outgoing link.
STRICT RULE: if a scene has any ">" choice its type MUST be MAIN; otherwise it MUST
be INTERLUDE. There is no exception to this rule.
WRITING DIALOGUE
CHARACTER: Character name in uppercase, a colon, then the dialogue line.
PLAYER: What the player says.
Lines with no prefix are narration/description text.
CHOICES AND EFFECTS (only inside MAIN scenes)
> Choice text -> targetSceneId
> Choice text -> targetSceneId {approval+10}
> Choice text -> targetSceneId {statName+5, flag:flagName=true}
> Choice text [stat:statName>=40] -> targetSceneId
> Choice text [flag:flagName=true] -> targetSceneId
> Choice text [approval:60-100] -> targetSceneId
ROUTER CONDITION LINES (only inside ROUTER scenes)
? flag:flagName=true -> targetSceneId
? stat:statName>=50 -> targetSceneId
? approval:60-100 -> targetSceneId
MANDATORY RULES
1. Scene IDs use lowercase letters and underscores (e.g. b1_s1, b1_int_a) and must
be unique.
2. Every MAIN scene's choices must lead to at least 2 different target IDs. If all
choices lead to the same scene, that's invalid — rewrite it.
3. Every ENDING scene must end with "-> credits".
4. The script must contain exactly one CREDITS scene.
5. "@stat:" lines appear ONLY at the very top of the file; never inside a scene.
6. A ROUTER scene must NOT contain narrative text or dialogue, only "?" lines.
7. Every "->" target and every choice target must point to a real scene ID that
exists in the script — never leave a broken link.
OUTPUT FORMAT
Produce a complete, playable script that strictly follows the rules above. Do not
add any explanation, commentary, or markdown code fences outside the script —
output only the script text itself.
Now write a story for the following premise:
[WRITE YOUR TOPIC / CHARACTERS / THEME HERE]
↑ Back to top
Как написать историю
Редактор DriftNov — полное руководство по режимам Form, Script и Blueprint
Это руководство объясняет, как написать собственную интерактивную историю с помощью
разветвлённого редактора DriftNov. При создании новой истории вы можете выбрать один из
трёх режимов работы; все они редактируют одни и те же данные, просто по-разному их
представляют.
1. Обзор — 3 режима
Редактор позволяет просматривать и редактировать одну и ту же историю тремя разными
способами. Вы можете переключаться между ними в любой момент — ни один из них не
«правильнее» других, каждый просто подходит для своей задачи.
Blueprint — самый простой для новичков
Вы видите историю как визуальную карту — каждый блок это сцена, стрелки это
связи. Двойной клик по любой сцене открывает удобное всплывающее окно,
где можно полностью написать сцену — без синтаксиса скрипта, видя связи прямо перед
глазами. Самый интуитивный способ для тех, кто не пишет код.
Form — быстро, для мелких правок
Редактирование сцен через простой список + поля. Самый быстрый способ внести
небольшое изменение текста или связи в одной сцене, хотя визуального контекста
Blueprint здесь нет.
Script — для написания вне приложения или с помощью ИИ
Написание истории обычным текстом с собственным синтаксисом. Используется, когда
вы хотите набросать историю в текстовом редакторе, ни разу не открывая приложение, или
попросить ИИ сгенерировать историю в этом формате (см.
промпт для ИИ внизу страницы).
Практичный подход: если вы не привыкли писать код-подобный синтаксис, оставайтесь
полностью в Blueprint и редактируйте каждую сцену через всплывающее окно.
Если вам удобно писать скрипт, или его сгенерировал ИИ, вставьте его целиком через
Script, затем доработайте через Form или
Blueprint.
Важно: режим Blueprint работает только на широких экранах (на сайте с
компьютера, или на планшете в широком режиме). Открыв редактор в мобильном приложении или
в узком окне, вы не увидите вкладку Blueprint вообще — произойдёт автоматический возврат
к Form. Чтобы использовать Blueprint, откройте сайт с компьютера.
2. Редактор Form
В режиме Form экран разделён на две части: список сцен слева и все поля выбранной сцены
справа.
Левая панель — список сцен
- Сцены группируются по разделам (Раздел 1, Раздел 2, …).
- «+ Добавить раздел» открывает новый раздел.
- «+ Добавить сцену в раздел» добавляет новую сцену в этот раздел.
- Стрелки вверх/вниз изменяют порядок сцен.
- Цветная точка рядом с каждой сценой показывает её статус:
зелёная = всё в порядке, жёлтая = предупреждение
(например, короткий текст), красная = ошибка (например, разорванная
связь).
Правая панель — поля сцены
- ID сцены: уникальный идентификатор из строчных букв и подчёркиваний
(например,
b1_s1). Другие сцены ссылаются на этот ID.
- Тип: выбирается из INTRO / MAIN / INTERLUDE / WEEK_SUMMARY / ROUTER /
ENDING / CREDITS (см. Типы сцен).
- Заголовок: короткое, необязательное название, видимое читателю.
- Текст повествования/диалога: основное содержание сцены. Для реплики
персонажа начните строку с его имени заглавными буквами, затем двоеточие.
- Выборы: для сцен MAIN вы задаёте текст, целевую сцену и, по желанию,
эффект стата/одобрения и условие для каждого выбора. В форме это отдельные поля ввода —
вручную писать синтаксис
{ } и [ ] не нужно.
- Следующая сцена: для сцен без выбора (INTERLUDE, WEEK_SUMMARY) вы
выбираете, к какой сцене история перейдёт автоматически.
- Условия Router: в сценах ROUTER вместо выборов вы видите
упорядоченный список условий; каждое ведёт к своей цели.
Преимущество режима Form: каждое поле проверяется, разорванная связь или отсутствующий
выбор сразу помечаются красным. Всю историю можно завершить здесь, ни разу не написав
сырой скрипт.
3. Редактор Script
В режиме Script вы видите и редактируете всю историю как обычный текст. Это самый быстрый
метод для опытных авторов — особенно при написании длинной истории с нуля. Изменения в
Script не применяются автоматически; закончив, нажмите «Применить к форме»,
и редактор разберёт текст в сцены.
3.1 Формат сцены
Каждая сцена начинается со следующей строки и заканчивается ---:
# sceneId | ТИП | раздел | Заголовок
Текст повествования. Обстановка, атмосфера, действия персонажей.
ПЕРСОНАЖ: Реплика диалога.
PLAYER: Что говорит игрок.
> Текст выбора -> целеваяСценаId
> Текст выбора (условие) -> целеваяСценаId
-> автоЦелеваяСценаId
---
Поле раздел — целое число. Для вступительной сцены используется
0, далее 1, 2, 3… Редактор
использует этот номер, чтобы понять, к какому разделу относится сцена.
Если история использует систему статов, добавьте объявления статов в
самом начале скрипта (перед любой сценой #):
@stat: смелость | Смелость | 10
@stat: эмпатия | Эмпатия | 15
| Поле | Описание |
key | Используется в эффектах/условиях: {смелость+5}, [stat:смелость>=30] |
| Метка | Название, видимое игроку |
| Начальное значение | Значение в начале игры, обычно от 0 до 100 |
Истории без статов просто полностью пропускают эти строки.
3.2 Типы сцен
| Тип | Использование |
INTRO | Первая сцена. Существует только одна. Заканчивается -> перваяСцена. |
MAIN | Сцена выбора. Обязательны 2-4 варианта >. |
INTERLUDE | Переходная/атмосферная сцена без выбора. Заканчивается -> следующаяСцена. |
WEEK_SUMMARY | Итог раздела. Без выбора, ведёт к первой сцене следующего раздела. |
ROUTER | Точка ветвления без содержимого. Направляет по очкам одобрения или стату/флагу. |
ENDING | Финальная сцена. Без выбора. Заканчивается -> credits. |
CREDITS | Единственная сцена титров. Каждая концовка ведёт сюда. |
Строгое правило: если в сцене есть хотя бы один выбор >,
её тип должен быть MAIN; иначе — INTERLUDE. Исключений нет —
иначе редактор выдаст ошибку.
Соглашения по ID сцен (рекомендуется):
- Используйте строчные буквы и подчёркивания:
b1_s1, b2_int_a
b{раздел}_s{номер} → сцены MAIN
b{раздел}_int_{буква} → сцены INTERLUDE
b{раздел}_summary → WEEK_SUMMARY
b{раздел}_router → ROUTER
ending_a, ending_b, ending_c… → концовки
credits → фиксированная, единственная сцена
3.3 Правила диалогов
# Реплика персонажа — имя заглавными буквами, двоеточие
ЛЕА: Я сегодня так устала.
МАРК: Да ладно, ты всегда такая.
# Реплика игрока
PLAYER: Понимаю. Продолжай.
# Повествование — без префикса, обычный текст
Класс постепенно пустеет. Ты смотришь в сторону окна.
# Использование имени игрока
МАРК: Эй, {playerName}! Так ты здесь.
3.4 Выборы и эффекты
# Базовый выбор
> Текст выбора -> целеваяСценаId
# Выбор + эффект одобрения
> Текст выбора -> целеваяСценаId {одобрение+10}
# Выбор + эффект стата
> Текст выбора -> целеваяСценаId {смелость+5, эмпатия+3}
# Выбор + эффект флага
> Текст выбора -> целеваяСценаId {flag:вГруппе=true}
# Выбор + условие (в интерфейсе заблокирован, если не выполнено)
> Текст выбора [stat:эмпатия>=40] -> целеваяСценаId {одобрение+15}
| Синтаксис эффекта | Описание |
{одобрение+10} | очки одобрения +10 |
{одобрение-5} | очки одобрения -5 |
{статИмя+3} | этот стат +3 |
{flag:вГруппе=true} | установить флаг в true |
{одобрение+10, эмпатия+2, flag:планГотов=true} | несколько эффектов через запятую |
3.5 Условия
| Синтаксис | Описание |
[stat:статИмя>=40] | этот стат должен быть не менее 40 |
[flag:вГруппе=true] | флаг должен быть true |
[одобрение:60-100] | очки одобрения должны быть между 60-100 |
Выборы с невыполненным условием отображаются заблокированными и недоступны для нажатия.
3.6 Сцена Router
Сцена ROUTER не содержит выборов или повествования — только упорядоченный список строк,
начинающихся с ?. Движок проверяет их сверху вниз и переходит к цели первого
совпавшего условия.
# b2_router | ROUTER | 2 | Развилка
? flag:вГруппе=true -> b2_s1_группа
? flag:вГруппе=false -> b2_s1_библиотека
---
# b4_router | ROUTER | 4 | Путь финального решения
? одобрение:70-100 -> b4_s4_высокий
? одобрение:40-69 -> b4_s4_средний
? одобрение:0-39 -> b4_s4_низкий
Один ROUTER может вести к другому ROUTER для поэтапной оценки сложных условий — например,
сначала проверить флаг, а затем разветвиться по очкам одобрения.
3.7 Статы и система одобрения
Одобрение: единый общий показатель отношений/одобрения (0-100),
используется в ROUTER как одобрение:X-Y. Доступен автоматически в каждой
истории.
Статы: значения, специфичные для истории, их может быть несколько
(например, в детективе — интеллект, наблюдательность,
убеждение; в приключении — сила, смелость,
интуиция). Объявляются в начале скрипта строками @stat: и
отображаются в виде полосы на экране итогов раздела.
Необъявленные (скрытые) статы: внутренние счётчики, используемые только
в эффектах/условиях без объявления @stat: — никогда не показываются игроку
в виде полосы. Полезны для скрытого отслеживания, например «сколько улик собрано»:
> Выбор Б -> b1_s2 {улика+15}
> Выбор В [stat:улика>=30] -> b1_int_особая
3.8 Полный пример
@stat: эмпатия | Эмпатия | 10
# intro | INTRO | 0 | Начало
-> b1_s1
---
# b1_s1 | MAIN | 1 | Первый день
Сентябрь. Новый город, новая работа. Ты впервые заходишь в офис.
Кто-то смотрит на тебя со стороны столов: Ава.
АВА: Ты новенький?
PLAYER: Да, сегодня первый день.
> «Заблудиться — не страшно, я как раз за этим и пришёл.» -> b1_int_a {одобрение+10, эмпатия+5}
> «Было бы проще, если бы ты помогла.» -> b1_int_b {одобрение+5}
> Просто улыбнись, сядь, промолчи. -> b1_int_b {одобрение-5}
---
# b1_int_a | INTERLUDE | 1 | Обеденный перерыв
Обеденный перерыв. Ты стоишь у окна с чашкой кофе.
-> b1_s2
---
# b1_int_b | INTERLUDE | 1 | Другой перерыв
Ты встречаешь Аву в коридоре во время обеда.
АВА: Ну как, нравится работа?
-> b1_s2
3.9 Частые ошибки
- Самая критичная ошибка: написать
MAIN без выбора
>, или написать INTERLUDE с выбором — редактор выдаст
ошибку. Правило простое: есть выборы → MAIN, нет → INTERLUDE.
- Писать текст повествования в сцене ROUTER — там должны быть только строки
?.
- Непоследовательные ID сцен — это разрывает связи.
- Забыть добавить сцену
credits.
- Оставить концовку без связи
-> credits.
- Связывать все выборы с одной и той же целью — это не создаёт настоящего ветвления и
не имеет значения для читателя.
- Писать строки
@stat: внутри сцен — они должны быть только в самом
начале файла.
4. Режим Blueprint
Blueprint показывает поток вашей истории в виде визуальной карты. Каждый блок (узел)
представляет сцену; стрелки показывают связи между сценами. Он создан не только для
просмотра структуры, но и для того, чтобы писать всю историю прямо здесь.
4.1 Навигация по карте
- Цвет узла показывает тип сцены (MAIN — синий, INTERLUDE — зелёный, ROUTER — жёлтый,
ENDING — красный и т.д.).
- Маленькие кружки (порты) на краю узла — это точка выхода для каждого выбора/ветки;
перетащите от порта и отпустите на другом узле, чтобы создать новую связь.
- Узлы с красной рамкой — это сироты (orphan): на них никто не
ссылается, поэтому игрок никогда не сможет туда попасть.
- Перетаскивание (по пустому месту) → перемещает карту (панорамирование).
- Колесо мыши / pinch → приближает/отдаляет.
- Кнопки + / - (справа внизу) → шаговое масштабирование.
- Иконка квадрата → сбрасывает вид по умолчанию.
- Иконка обновления → сбрасывает раскладку узлов.
4.2 Редактирование сцены — двойной клик открывает окно
Двойной клик по любому узлу открывает широкое всплывающее окно со всеми
полями этой сцены. Оно разделено на три колонки:
- Колонка 1 — Информация о сцене: ID сцены, тип сцены (переключается
одним нажатием на цветной чип — иконка информации рядом объясняет назначение каждого
типа), заголовок и номер раздела, к которому она принадлежит.
- Колонка 2 — Диалоги: строки повествования/диалога сцены; добавляйте,
удаляйте и меняйте порядок строк стрелками вверх/вниз.
- Колонка 3 — Связи: меняется в зависимости от типа сцены — одно поле
«Следующая сцена» для INTERLUDE/WEEK_SUMMARY, список выборов для MAIN (текст + целевая
сцена + эффект стата/одобрения для каждого), или упорядоченный список веток
маршрутизации для ROUTER.
Таким образом, не выходя из Blueprint: смотрите на карту, чтобы увидеть, какой сцены не
хватает, дважды кликните, чтобы полностью её написать, закройте окно и переходите к
следующему узлу. Если вы попытаетесь закрыть окно с несохранёнными изменениями, приложение
сначала предупредит вас.
Blueprint особенно полезен для: визуального поиска разорванной связи (сцены-сироты),
проверки того, действительно ли в разделе открыты два разных пути, обнаружения, что все
выборы случайно ведут в одну и ту же сцену — и создания всей истории с нуля, ни разу не
изучая синтаксис скрипта.
5. Часто задаваемые вопросы
С какого режима начать?
Если вы не привыкли писать код-подобный синтаксис, начните с Form. Если вам удобно писать
обычный текст, Script будет намного быстрее.
Почему мои изменения в Script не отображаются?
Изменения в Script не сохраняются автоматически — нужно нажать «Применить к форме».
Сколько разделов или сцен нужно писать?
Ограничений нет; можно написать короткую историю из одного раздела или длинную,
многораздельную. Важно, чтобы выборы в каждой сцене MAIN действительно вели к разному
последующему содержанию.
В чём разница между одобрением и статами?
Одобрение — единый общий показатель отношений, встроенный в каждую историю. Статы —
значения, специфичные для конкретной истории, которые вы определяете сами, и их может
быть несколько.
Промпт для ИИ
Промпт для ИИ для генерации скрипта
Вставьте текст ниже как есть в чат с ИИ (ChatGPT, Claude и т.д.) вместе
с идеей вашей истории. Это не промпт под конкретную историю — это общие правила,
описывающие формат скрипта редактора DriftNov. Просто замените плейсхолдер темы на
свою собственную идею.
Ты — автор сценариев для интерактивных/разветвлённых историй. Строго следуя
формату ниже, БЕЗ ИСКЛЮЧЕНИЙ, напиши полный сценарий истории по теме, которую я
дам.
ОБЩАЯ СТРУКТУРА
- Каждая сцена начинается со строки "# sceneId | ТИП | раздел | Заголовок" и
заканчивается "---".
- Поле "раздел" — целое число: 0 для вступительной сцены, далее 1, 2, 3, ...
- Если история использует статы, добавь объявления в самом начале файла (перед
любой сценой "#"):
@stat: key | Метка | начальное_значение
Если статы не используются, полностью пропусти эти строки.
ТИПЫ СЦЕН (существует только эти семь типов, не придумывай новые)
- INTRO : Ровно одна, раздел=0. Без выбора. Заканчивается только
"-> перваяСценаId".
- MAIN : ОБЯЗАТЕЛЬНЫ 2-4 варианта "> ...". Никогда не пиши MAIN без
выборов.
- INTERLUDE : НЕ содержит выборов. Заканчивается только "-> следующаяСценаId".
- WEEK_SUMMARY : Итог раздела. Без выбора, ведёт к первой сцене следующего
раздела.
- ROUTER : НЕ содержит повествования или диалога. Только строки
"? условие -> цель". Движок проверяет их сверху вниз и
переходит к цели первого совпавшего условия.
- ENDING : Без выбора. Заканчивается только "-> credits".
- CREDITS : Ровно одна, в самом конце сценария. Не имеет исходящей связи.
СТРОГОЕ ПРАВИЛО: если в сцене есть хотя бы один выбор ">", её тип ОБЯЗАТЕЛЬНО
должен быть MAIN; иначе — ОБЯЗАТЕЛЬНО INTERLUDE. Исключений из этого правила нет.
НАПИСАНИЕ ДИАЛОГОВ
ПЕРСОНАЖ: Имя персонажа заглавными буквами, двоеточие, затем реплика.
PLAYER: Что говорит игрок.
Строки без префикса — это повествование/описание.
ВЫБОРЫ И ЭФФЕКТЫ (только внутри сцен MAIN)
> Текст выбора -> целеваяСценаId
> Текст выбора -> целеваяСценаId {одобрение+10}
> Текст выбора -> целеваяСценаId {статИмя+5, flag:флагИмя=true}
> Текст выбора [stat:статИмя>=40] -> целеваяСценаId
> Текст выбора [flag:флагИмя=true] -> целеваяСценаId
> Текст выбора [одобрение:60-100] -> целеваяСценаId
СТРОКИ УСЛОВИЙ ROUTER (только внутри сцен ROUTER)
? flag:флагИмя=true -> целеваяСценаId
? stat:статИмя>=50 -> целеваяСценаId
? одобрение:60-100 -> целеваяСценаId
ОБЯЗАТЕЛЬНЫЕ ПРАВИЛА
1. ID сцен используют строчные буквы и подчёркивания (например, b1_s1,
b1_int_a) и должны быть уникальными.
2. Выборы в каждой сцене MAIN должны вести как минимум к 2 разным ID целей.
Если все выборы ведут в одну и ту же сцену, это недопустимо — перепиши.
3. Каждая сцена ENDING должна заканчиваться "-> credits".
4. В сценарии должна быть ровно одна сцена CREDITS.
5. Строки "@stat:" находятся ТОЛЬКО в самом начале файла; никогда внутри сцены.
6. Сцена ROUTER НЕ должна содержать текст повествования или диалог, только
строки "?".
7. Каждая цель "->" и каждая цель выбора должны указывать на реально
существующий в сценарии ID сцены — никогда не оставляй разорванных связей.
ФОРМАТ ВЫВОДА
Создай полный, играбельный сценарий, строго соблюдающий правила выше. Не
добавляй никаких пояснений, комментариев или markdown-блоков кода вне сценария —
выведи только текст самого сценария.
Теперь напиши историю на следующую тему:
[НАПИШИТЕ ЗДЕСЬ ВАШУ ТЕМУ / ПЕРСОНАЖЕЙ / ИДЕЮ]
↑ Наверх