@@ @@ STORY WRITING EXPLAINED @@ ----------------------- @@ @@ By reading this file you will be able to write your own Stories. @@ Consider sending them to me (fa-ml@ariis.it) when finished! @@ @@ @@ Lines starting with @@ are comments and thus ignored by the @@ interpreter. @@ Comments *cannot* appear inside rooms, just between them. @@ @@ @@ @@ Story files have `.vns` extension and use a UTF-8 encoding. @@ Your editor is probably already doing the Right Thing®. @@ If problems arise, you can easily check/convert (e.g. on notepad++ @@ the encoding is shown on bottom-right corner and you can change @@ it with "Format > Encode in UTF-8"). @@ @@ @@ At the beginning of each Story file you will find three global @@ arguments: story_name, room_size, start_room. @@ Each argument follows this syntax: @@ @@ argument_name: value @@ @@ `room_size` is the mandatory size (rows by columns) of each Room. @@ Tip: have your text editor display trailing whitespace! @@ story_name: Story editor room_size: 24 48 start_room: Editor one @@ @@ Each room is composed by: @@ - a title (starting with "# "); @@ - the level itself (expressed in plain characters); @@ - and exits (starting with ">>> "). @@ @@ so the levelmap is sandwiched between the title and the exits. Note @@ that you can have multiple exits by simply stacking them, like e.g. @@ @@ >>> N -> Big room @@ >>> S -> Beach @@ >>> E -> Prison cell @@ # Editor one : : : @ ®Want to write your® : --- ® own levels? ® : : : : : : b : ------------------------ : : : : : ----------------|--------- : | : | : ®Open stories/z_editor.vns with® | : ®a text editor for instructions® | : ® and examples. ® | : | ®-->® : | :wwwwwwwwwwwwwwww- | :wwwwwwwwwwwwwwww::::::::::::::::::::::::::::::: :wwwwwwwwwwwwwwww:::::::::::::::::®Square room®: >>> E -> Editor two @@ @@ Whenever '@' reached the edge of the room map, the game will try to find @@ the appropriate exit listed beneath the level data. If such room does @@ exist, you will get a crash with an error! @@ @@ @@ VALID LEVEL TILES: @@ @@ - solid platform. @@ @@ : another kind of solid platform. @@ @@ = yet another kind of solid platform. @@ @@ i invisible solid platform. @@ @@ . background tile (non-solid). @@ @@ % (where % is any of R Y G B P C), color dot (`.`). Colours are @@ Red, Yellow, Green, Blue, Purple, Cerulean @@ @@ * Stars, collectible, used to unlock Lock platforms. @@ @@ # (where # is any digit from 1 to 9), Lock platform: will behave @@ like a solid platform and dissolve when player collects at least @@ # stars. @@ @@ @ spawn point. Character will restart here after dying. @@ @@ | ladder tile (can be climbed). @@ @@ w water tile, hazardous @@ @@ A spike tile, hazardous @@ @@ x transparent, non-solid tile. The parser will check for rooms with @@ mismatched dimensions. This is quite useful, but how to draw a room @@ with an unoccupied, empty space on the right then? @@ Here is where 'x' is useful: add one to the bottom-right of your @@ room to state "this is not an error, I am fine with this room @@ design" to the game. @@ Since the tile is not otherwise useful, use it only when the @@ parser complains about your map. @@ @@ prop chars: any character sandwiched between '®'s loses any function @@ and becomes a non-solid, background tile. @@ Useful when you want to write something in the room and @@ not having it treated as a real tile. @@ @@ d or f: dumb enemy (falls off ledges). 'd' moves West, 'b' @@ moves East. @@ @@ f or j: smart version of 'd', 'f' moves West, 'j' moves East. @@ @@ v Flying animal, drops pellets which kill the player. @@ @@ o falling projectile. @@ @@ k or y: blade-throwing Krampus, 'k' moves East, 'y' moves West. @@ @@ , Stinging nettle (a poisonus plant), cycles between states ('.', @@ ';' and 'A'), hazardous when fully grown (green `A`). @@ @@ X Longana (a water witch), hunts the player, flying. She is not @@ stopped by walls or any solid tile. @@ @@ S (experimental -- will be displayed in game as '.') permanently slows @@ the player down for this Story. # Editor two ® A ® ® / \ ® ® / \ A ® ® / \ / \ Happy writing! ® ® | / \ : ® ®,_*.| / \ .:. ® ® \_ | c ,:, ® ® \| cSs ,:, ® ® \_ s|s .:. ® ® \*__|___|___ ® : ® \ ® :: :: :: + :: ::: -|----------------::: | ::: | ::: | ** ::: | ** ::: | ::: :::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::®Glimpse of forest®: >>> W -> Editor one @@ @@ For obvious reasons, do not use tabs while writing Story files. @@ Of course you can use your ASCII-art editor of choice too, and @@ paste he result in the relevant section of your Story file. @@ Find the ASCII editor I used for "The Orcolat" here: @@ @@ http://www.ariis.it/static/articles/venzone/ascii-mapper/index.html @@ @@ @@ A useful tool to develop stories is `watch mode`. @@ Open your editor on the story you are modifying and start venzone @@ like this: @@ @@ venzone --watch path/to/story.vns @@ @@ Watch mode automatically reloads the map every time the .vns file @@ is saved. Now just edit the story on the left, see the game automatically @@ update on the right, play test immediately! @@ Tip: change `start_room` to play test different parts of the game. @@ You can exit this loop by using Ctrl-C. @@ @@ @@ If you find a bug or feel need new features, contact me at @@ @@ fa-ml@ariis.it. @@ @@ Happy writing! @@