Welcome to Anthology. This plugin lets players author interactive stories and then share them for others to read.
Installation:
download the .zip file and extract into your plugins folder. If you are not familiar with lotro plugins, it is highly recommended that you install and use Lunarwater's Plugin Compendium to download and extract plugins and updates for plugins:
For Windows: http://www.lotrointerface.com/downloads/fileinfo.php?id=663
For Mac/Linux: http://www.lotrointerface.com/downloads/info689-LOTROPluginCompendiumMacLinux.html
Usage: load the "Anthology" plugin either using the Plugin Manager or by using the "/plugins load anthology" chat command. When first loaded, Anthology will ask if you want to automatically import and read the tutorial story. I suggest you do.
For prior Beta users, after updating the files, you can update your version of the tutorial by deleting the prior tutorial story in the Story Select dialog (in Author or Reader, choose a story to load and in the Story Select dialog, click the Tutorial and then click 'Delete'). Once the prior tutorial is deleted, return to the main menu, click on Import/Export, then in the Import/Export window, select the Tutorial story in the Import Lua section and click "Import Lua". Alternately, you can delete all of the stories from the Story Selection dialog, return to the main menu, unload Anthology and reload Anthology and you will again be asked if you want to load the tutorial automatically.
The Anthology Author includes a number of tools to help authors organize and illustrate their stories, including a Storyboard for graphically representing story flow and the Animation Studio for defining Animation content. Authors can choose to support EN, FR and/or DE clients - the Anthology plugin itself is fully translated for all three clients (although some of the technical terms and phrasing might need a bit of tweaking). Authors can include Text content, Image content (using static files or in-game resource images), Movie content (as jpg file series) and Animation content (using files and/or in-game images as sprites on a background). Each story consists of one or more chapters with each chapter having one or more objectives - basically the way the in-game quests work.
The Reader allows users to select the font face and size that is most comfortable for them and will automatically reformat controls and story text. The reader contains an Objective Tracker that can be displayed while the reader is minimized to help remind readers of their current goals within the story they are currently reading - note, only one story can be open in the reader at a time and only the objectives in the currently open story will advance.
Once you create a story, there are a couple of options for sharing it with others, you can choose to zip up the necessary files with instructions on where to unzip them or you can create a couple of additional files needed to publish your story as a plugin. Anthology can import stories provided either way (zipped files will require a little more work on the end-users part). The Tutorial that comes with Anthology has a section on Importing and Exporting that covers both methods for sharing files as well as templates for the files needed to create a plugin that can be imported by Anthology.
I hope you enjoy Anthology and I look forward to seeing what stories the community can make to add to the LotRO experience.
Version 1.0 introduces the latest (and probably final) type of content, Animations. Animations are very similar to the Movie type content that was added in Beta 0.5 - in fact, Movies are a limited sub-type of Animations. Animations allow authors to produce animated images to help present their stories. The tutorial includes a sample animation that shows how to re-create the CatQuest Movie as an Animation. The sample demonstrates how to use a background and multiple sprites to simulate a user interacting with the Author environment, as well as overlaying text. This kind of animation can be useful for stories that are walkthroughs or tutorials. Other uses for animations can include illustrating short interactions, flashback sequences, split scenes, etc. While Movies are fairly easy to define but are very bulky in terms of file size, Animations take a bit more work to create but can be very efficient on file size.
Beta .5 adds a new content type, "Movie". "Movies" are actually just a series of .jpg files that are displayed in a viewer with a fixed framerate to simulate a move. Still, they can add significantly to an author's ability to illustrate a story. Due to a number of constraints, especially bloating of the download files, I highly recommend limiting the size, quantity and quality of the .jpg files. This can be achieved a number of ways, first by converting any movies to smaller resolutions before exporting to a jpg series. Second by limiting the FPS to 30 or less. Lastly, depending on what utility you use (there are several available) set the .jpg quality lower. Controlling these factors will allow you to include a 40 second video in about 10-11 Meg of a zip file. So, including one or two short videos in a story line can be feasible. If you want better resolution or quality you will have to further limit duration - it's a balancing act but acceptable results can generally be achieved. I will post in the comments below the software and exact steps I used to create the sample video from an existing .mpg file (as noted, there are a lot of video editors out there, these just happen to be the tools I had handy for a quick and dirty sample).
In Beta .4, the tutorial fully supports the FR and DE clients. Additionally, support for language specific images was added as well as a number of bug fixes. This will likely be the last Beta release and should be considered a fully functional plugin. The actual release will likely only incorporate bug fixes for any issues discovered with this release.
Beta .3 adds multi-language support for FR and DE clients as well as additional objective types. Currently, other than some clean-up, translations and additional testing, Anthology should be fully functional. The Tutorial is only translated for the sample chapter (you can run it in any client and it will work since the sample chapter is the only one with language specific objectives) - I will be translating the FR version prior to release and will take a stab at a DE translation as well. My German is VERY poor, i.e. Google level at best so if anyone wants to volunteer a DE translation of string.lua and the tutorial text, that would be great.
VERSION HISTORY:
Ver 1.2
Fix for /loc changes in U27.2
Ver 1.1
Fixed bug reported by Rhondar with error updating Name for new Objectives
Fixed bug reported by Rhondar with error updating Text for new Objectives
Fixed bug reported by Rhondar with error deleting Objectives
Fixed error during validation of new stories with blank fields when saving
Fixed bug in migration which prevented beta stories from displaying correctly in the story selection list
Ver 1.0
Fixed bug preventing Movie Maintenance window from hiding when Esc/F12 keys pressed
Fixed bug preventing Chatper Maintenance window from hiding when F12 key pressed
Added Chat Log. The chat log is normally limited to 200 entries due to potential performance issues when dynamically resizing the window or font size.
There is a "lock" button on the top left corner of the Chat Log. When locked, the log will allow up to 1000 entries but will not resize or change fonts.
Note, unlocking the chat window when it already has more than 200 entries is not prohibited but may cause performance issues if you resize it or change fonts without first clearing the window.
Fixed bug where a number of features in Chapter Maintenance were not properly enabling Reset and Save options on Author Maintenance
Fixed bug where selecting an existing objective could corrupt the prior selected objective definition
Fixed bug where displaying Chapter Maintenance for a chapter with an existing multi-part transition defined would prematurely enable Reset and Save options on Author Maintenance
Fixed bug in FontMetric that returned height=0 for empty strings - an empty string still requires the same height as a single character
Changed Content pop-up menu copy command to use a sub-menu for language selection (prep to supporting more languages).
Fixed bug where StorySelect displayed the EN name for new stories created in Author window until the plugin was reloaded - the currently chosen language's name is now properly displayed
Fixed bug where version uppdating of existing stories would leave main window disabled after updates were complete
Miscellaneous data format changes to simplify multiple language support - story migration may take slightly longer in this update (a few more seconds).
Fixed bug in Chapter Copy - the new chapter was only named as a "copy" in the currently selected language, now the new chapter is marked as a copy in each supported language with an existing name
Fixed bug that prevented Equip Item objectives from completing in FR client
Fixed bug that failed to pause the objective controls in the Tracker window when Reader was paused and then minimized.
Fixed bug that failed to retain paused state for the Reader when minimized and restored if the Tracker is shown (related to bug above).
A long standing intermittent bug with Objective names getting out of sync between Storyboard and ChapterMaint has finally been isolated and squashed.
Fixed bug that caused movie player controls to erroneously display by default the second time a movie was played in the same session.
Fixed bug that allowed stories created in version 0.5 to have a blank data version. Also adjusted migration to account for this bug when updating to version 1.0
Added a dialog to choose between creating a copy of a story or a blank story when clicking Create New (prior functionality was to automatically create a copy - to get a blank story authors had to turn off the "Autoload Last Story" option in settings. Annoying to say the least
Fixed bug in Chapter Maintenance window that prevented renaming or setting objective strings for any newly created objectives (existing objectives were fully editable)
Fixed bug reported by Rhongar that prevented objective strings from updating when selected from the Known Effects list.
Added Animation type content. Movies (introduced in ver 0.5) were a subset of animations with a single sprite and limited capability and a huge space requirement due to file size. With Animations, authors can combine multiple sprites, controlling the image, size, position and zorder for each sprite allowing for complex animations.
Movies vs Animations
Movies are best when the entire image changes in every or nearly every frame. If a significant part of the image stays the same then use an animation and crop the source images to just the part that changes and define it as a sprite to minimize the size of the image and then use the rest of the image as a static background.
Animations are best when most or all of the image stays the same, such as in an animated tutorial. Sprite attributes are defined by formulas so the image can remain static while position changes or vice-versa (or any combination) which can significantly reduce the number of images needed. For instance, a couple dozen images can be used and repeated to define a bird with flapping wings or a horse running, sword swinging, etc.
Added the Animation Studio (the Animation maintenance window) where authors define animations - I have plans to allow animation definitions to be stored in a library and/or shared to make them reusable and easier to define.
Enabled Markup for text fields in Reader and Story Select. This applies to story description, content text and objective text (the part that gets displayed). Note, text will still display the markup language in Author so that it can be edited.
Fixed bug in Story Select that showed the wrong story descriptions after stories were deleted and new stories added.
Added "Depends On" for Objectives. Each objective can optionally depend on one other objective - in order to advance, the objective that it depends on must be completed first. So, if objective 1 depends on objective 2 then objective 2 must be completed before objective 1 will progress. This allows authors a bit more fine tuning for objective progression within a chapter.
Chapter Maintenance Objective Tab - the Capture Target Name tool will now automatically replace any "-" characters in the target name with "%-" to create a correct pattern string.
Fixed bug with Receive Chat messages not matching the "ALL" channels option.
Changed Receive Chat and Location type objectives to auto advance when completed
Fixed bug preventing Location type objectives from progressing in EN and DE clients.
As requested by Rhongar, if the Reader window is minimized when changing to a new chapter it is now automatically restored.
As requested by Rhongar, the Objectives Tracker window now also displays the active chapter name.
Fixed bug in DE/FR DataVersion detection due to number format
Fixed bug in "Location" capture that required the location to be captured in the same format that the reader was running - the location is now client neutral; any version of client can now be used to capture and/or read locations
Ver 0.5
Fixed bug in author, current client language was always checked in supported language when loading existing stories whether it was actually supported or not.
Fixed load error reported by Interitus.
Fixed load error in Reader caused when the Author window is used to delete a story currently being read and then the Reader window is loaded.
Fixed bug in Image Maintenance window size. This may reset the image maintenance size for users the first time it runs but should work correctly thereafter.
Fixed bug that failed to swap FR & DE content settings when moving a content block up or down
Added Movie type content - instead of still images, authors can now include movies (ok, very simplistic, compact movies, but given the restrictions on LotRO Lua, still neater than still images).
Fixed bug that was preventing the Setting DataVersion from being saved.
Implemented DataVersion for stories. Each story file will be tagged with the version of the data in it so that future updates can automatically process older formatted stories.
If an older version of Anthology tries to open a newer version story you will get an error message telling you to update Anthology.
Implemented automatic data version detection and migration for Anthology settings and existing stories.
The migrate feature automatically creates a backup of story files before updating them so if anything goes awry, let me know, your story should not be lost
Fixed bug that could cause Anthology to fail to load if a story had a nil name or description for the current client language
Implemented Copy EN/FR/DE options for the Content pop-up menu. Authors can now copy settings from just one content block of a different language version of the story (instead of the global copy that would overwrite ALL of the existing content for all chapters) - this helps a lot when updating an existing story with a new content block, particularly the new Movie type where the settings are typically identical.
Fixed import bug that didn't correctly identify duplicate stories as copies in FR and DE names.
Fixed bug that prevented sizing Author window along most of vertical sides.
Beta ver 0.4
This update is mostly bug fixes and an update to the tutorial for DE and FR support.
Fixed bug in DropDownList that set hidden list entryies to visible when changing font
Fixed bug in Author that displayed incorrect language options when no default story was loaded in FR and DE clients
Fixed bug in ReceivedChat objective event handlers for messages without linefeeds reported by Interitus
Fixed typo causing Received Chat bug reported by Interitus
Fixed Storyboard bug that showed chapter names in english when working in FR and DE
Fixed a bug in Chapter Maintenance that incorrectly sized text blocks when first loading a chapter in FR or DE
Initial French UI translation. Some terms may need tweaking.
Initial German UI translation. Will probably need a LOT of work since I have a severly limited knowlege of German.
Changed Image paths and filenames to be language specific.
Fixed bug in reader that displayed "Start" objective in client language instead of reader selected language.
Beta ver 0.3
GENERAL
This update focused mainly on implementing language support and additional objective types
Fixed bug in DropDownList HideEntry() and ShowEntry() that always showed the list when fonts were > 18 px high, (a sleeper bug from change to variable fonts).
Removed Trajan Pro 25 from FontSelect - if Turbine/SSG hasn't fixed it yet, they probably never will.
Finally changed Vindar patch to incorporate euroNormalize (numbers no longer need to be normalized manually after being loaded)
Fixed bug in SettingSaver that saved euro numbers without decimals (commas aren't allowed in command strings)
StorySelection window now has language columns for the supported language(s) of the stories
StorySelection Stories that do not support the current client language are highlighted in red since game related objectives can not advance (readers can still load them but may not be able to complete objectives)
StorySelection Story desctiptions are no longer in the selection list, they are shown by right clicking an entry (they took up too much space in the list and didn't show enough to be useful)
Added language and language filters to StorySelection
AUTHOR:
Implemented EN/DE/FR support for text/objective fields - you can now create language specific versions of stories. Select the language(s) you wish to support.
You can only edit one language at a time. Select the language you are editing, all other dialogs will now edit the language specific fields for that language.
The language specific fields are:
Story Name
Story Description
Chapter Names
Chapter Content text
Objective Text
Objective Strings - specifically Button Name, Target Name, Location, Item Name, etc. - anything that is a string stored in the custom type fields.
Added ability to copy all language specific fields from a specified language to the current language - they won't translate but do act as placeholders until you can translate them
Note, if you don't copy an existing language your chapter names will default to Chapter 1, Chapter 2, etc. (or Chapitre 1, Chapitre 2, etc. in french) numbered by display order - this behaviour is subject to change
Reordered objective detail fields in Chapter Maintenance window to make room for drop down lists for ObjectiveRecordCount.
ObjectiveRecordCount is used to hold the region number when the Type is "Location" and the channel number when the type is "ReceiveChat" or "SendChat".
ObjectiveString is used for the Button Name for type "Button", Target Name for type "Target", Item Name for types "AcquireX" and "Equip" and "Pattern" for types "ReceiveChat" and "SendChat" (not all types are implemented in Reader yet)
Added ChannelName table to strings.lua for translating the chat channel names for the Channel list. FR and DE names are not populated yet so it still defaults to EN names.
Implemented Target capture for current target in Chapter Maintenance, Objective tab.
Implemented Location capture for current location in Chapter Maintenance, Objective tab.
Implemented drop down lists for Channel selection and Region selection in Chapter Maintenance, Objective tab.
Implemented DragDrop for Items in Chapter Maintenance, Objective tab. drop an inventory item over the field when type is AcquireX or Equip and the field will populate with the item name.
Fixed bug in updateObjectiveName that prevented objective name changes from updating Objectives (2) list on the Transitions tab of the Chapter Maintenance window.
Fixed bug with the Chapter Maintenance window not saving size and location.
Added Font selection to lower right corner.
Added simple story validation when saving (blank name, description, missing objective/transitions).
Fixed missing "Story Saved" message after successfully saving a story.
Fixed erroneously hardcoded resource path in PopUpDialog.lua
READER:
Implemented AcquireX objectives.
Implemented DefeatX objectives.
Implemented RecieveChat objectives.
Implemented Location objectives.
Implemented Equip objectives.
Implemented Effect objectives.
Removed Emote objective type from list - for now this can be handled using the ReceiveChat type with Emote Text channel (some emotes also show in Unfiltered but not all, especially with text added)
Removed SendChat objective type from list - for now this can be handled using the ReceiveChat type (the message shows as "[to channel] whatever you said")
Implemented EN/DE/FR support. There are a couple very important notes.
The interface still displays in the game client language (the language used by the LotRO client, selected in the game launcher) but for each story you can choose any of the languages that the author indicated as supported for Text fields.
The game client language MUST be supported for objectives that require matching client generated strings such as AcquireX and DefeatX or they will not advance.
So, if you want to read a story that only supports the FR language, you MUST run the FR client.
If you want to read a story that supports both EN and FR languages, you can run either the EN or FR client and choose to read the text in the language you prefer, EN or FR.
Anthology will warn you if you try to load a story that does not support the current game client language (a future release will add a language column and filtering for the StorySelect dialog).
Added Font selection to lower right corner.
Fixed bug with panel Split not retaining position when reader reloaded.
Implemented Objective Tracker - when the reader is minimized, the objective panel will show seperately.
The Objective Tracker opacity can be set in Settings.
The Objective Tracker can be enabled/disabled in Settings.
If you temporarily close the Objective Tracker (if it is in the way for any reason), just restore the reader from the icon and minimize the reader again.
Beta ver 0.2
Added SettingsQueueCommand to significantly improve reset times
Project renamed to "Anthology"
Fixed bug in common file DropDownList.lua that erroneously set control height when using large fonts leading to the drop down list being cropped.
Fixed bug in common file DropDownList.lua that erroneously prevented existing individual rows in the list from properly resizing when setting font.
Added SettingsQueueCallback to common file Settings.lua to allow queueing a command without any load/save. This allows synchronizing a command for after all currently queued operations complete which is particularly necessar when loading a setting containing an unknown number of keys.
Updated the constructor in common file PopUpDialog.lua to include an optional parameter for Callback. This allows a function to be called by the popup after the user makes a choice, passing the enumerated value of the choice to the callback function. Previously, the calling routine would have to poll the status of the popup which was extremely inefficient.
Implemented MouseMask in all main windows to simulate modal dialogs.
Implemented RefreshLayout in all windows to allow dynamically reflowing the windows to account for font size. Note, there are some restrictions, such as skinnable buttons (Turbine.UI.Lotro.Button) have a maximum width of 256 pixels and a fixed height of 20 pixels.
Beta ver 0.1
blech. yep, BLECH. :P
The first time you run it, Anthology will offer to import and run the Tutorial story. I highly recommend that you do (not only because I spent lots of time on the blasted thing, but it does actually cover most of the important aspects). If you opt not to import the Tutorial automatically, you can import it manually through the Import/Export window under the Import as a Plugin section. Note, if you haven't actually created any stories (or if you delete them all) Anthology will still offer to import and run the Tutorial on the next startup.