|
|
@@ -1,2 +1,104 @@
|
|
|
# Vinora Engine
|
|
|
-*In progress...*
|
|
|
+
|
|
|
+Vinora Engine is a visual novels engine with focus on *simplicity* and
|
|
|
+*portability*.
|
|
|
+It doesn't use any script language (like Python in Ren'Py),
|
|
|
+but instead it use Markdown dialect called Vinora Screenplay.
|
|
|
+
|
|
|
+It's on early stage of development, so it has no use if you an
|
|
|
+average user.
|
|
|
+But if you are a programmer -- you are welcome to
|
|
|
+[contribute](CONTRIBUTING.md).
|
|
|
+
|
|
|
+
|
|
|
+## General design
|
|
|
+
|
|
|
+### Game structure
|
|
|
+Visual novel on Vinora Engine looks like this:
|
|
|
+
|
|
|
+```
|
|
|
+example
|
|
|
+├── engine
|
|
|
+│ ├── vinora_lin
|
|
|
+│ ├── vinora_mac.bin
|
|
|
+│ └── vinora_win.exe
|
|
|
+├── game
|
|
|
+│ ├── bg
|
|
|
+│ │ ├── school_day.png
|
|
|
+│ │ └── school_night.png
|
|
|
+│ ├── cg
|
|
|
+│ │ └── debate.png
|
|
|
+│ ├── conf
|
|
|
+│ │ ├── main.ini
|
|
|
+│ │ └── options.ini
|
|
|
+│ ├── music
|
|
|
+│ │ ├── day.mp3
|
|
|
+│ │ ├── home.mp3
|
|
|
+│ │ ├── night.mp3
|
|
|
+│ │ └── school.mp3
|
|
|
+│ ├── sounds
|
|
|
+│ │ ├── door.ogg
|
|
|
+│ │ ├── exit.ogg
|
|
|
+│ │ ├── play.ogg
|
|
|
+│ │ └── stop.ogg
|
|
|
+│ ├── sprite
|
|
|
+│ │ ├── alice
|
|
|
+│ │ │ ├── happy.png
|
|
|
+│ │ │ └── sad.png
|
|
|
+│ │ └── bob
|
|
|
+│ │ ├── happy.png
|
|
|
+│ │ └── sad.png
|
|
|
+│ ├── ui
|
|
|
+│ │ └── main_menu.png
|
|
|
+│ ├── video
|
|
|
+│ │ ├── ending.mp4
|
|
|
+│ │ └── opening.mp4
|
|
|
+│ ├── Chapter1.vnrs
|
|
|
+│ ├── Chapter2.vnrs
|
|
|
+│ └── Chapter3.vnrs
|
|
|
+├── mods
|
|
|
+├── translations
|
|
|
+└── run_game.bat
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+A little bit overwhelming, but it's actually really simple. Let's start
|
|
|
+with root directory:
|
|
|
+
|
|
|
+```
|
|
|
+example
|
|
|
+├── engine
|
|
|
+├── game
|
|
|
+├── mods
|
|
|
+├── translations
|
|
|
+└── run_game.bat
|
|
|
+```
|
|
|
+`run_game.bat` is cross-platform (Bash/Batch-compatible) script, which will
|
|
|
+run a right engine binary from `engine/` depending from which OS it was
|
|
|
+executed.
|
|
|
+
|
|
|
+Than this binary will look at `game/` and start reading game script. If user
|
|
|
+in-game would choose to play `mods/` or switch to one of the
|
|
|
+`translations/`, it will overwrite any information from `mods/` in RAM.
|
|
|
+(For example, if I switch to Russian, `translations/ru/intro.vnrs`
|
|
|
+would be displayed instead of `game/intro.vnrs`. Same with mods.)
|
|
|
+
|
|
|
+**game/** directory has a bunch of Vinora Screenplay (.vnrs) files and
|
|
|
+assets directories (bg, cg, conf, video, etc).
|
|
|
+Obvious question is *why we didn't make general `audio/` and `video/`
|
|
|
+directories?*
|
|
|
+
|
|
|
+Well, in Vinora Screenplay to put image on a screen you write something
|
|
|
+like this:
|
|
|
+
|
|
|
+`[](music/home.mp3)`
|
|
|
+
|
|
|
+So, difference between music and sound is that music is played on loop. You
|
|
|
+can change by appending {loop} or {!loop}, but still, this is *default*
|
|
|
+behaviour.
|
|
|
+
|
|
|
+And the only way how Vinora can distinguish `music` from `sound` or `sprite`
|
|
|
+from `bg` is by parsing their directory name.
|
|
|
+
|
|
|
+
|
|
|
+### Vinora Script overview
|