Distribution Problems with PLSM2 That Occulis Would Like to Fix and Document

Purpose

The purpose of this page is to help a development team implement PLSM2 in their own runtime directory with their own media in a minimum amount of time.

As you can see in in the "A Sample Project" section below, we will not be running all of our demos and tools out of \dev\3rdparty\ogrenew\Samples\. This causes problems. Many parts of the PLSM2 setup expect files to run from a certain folder. Even worse, some of them seem to output files into specific folders. I have not documented or fixed all of these issues yet, but this page is a start.

Some of this has been posted to topic: http://www.ogre3d.org/phpBB2addons/viewtopic.php?t=1199

A Sample Project

My team is working on a game called Vitrius. We use a common base folder for everything. On my workstation, this is C:\dev. On another workstation, it is c:\vitrius\ and on yet another it is c:\documents and settings\superdave\projects\omfg

  • It is vital that all tools and configuration files use relative paths for this reason.
  • For all of these examples, let's assume c:\dev\ is where my sub-folders live. So I have:
    1. c:\dev\runtime\vitrius\bin\release - This is referred to as "the bin directory." You will find all necessary DLLs in this folder: Ogre, Novodex, OpenAL, PLSM2 and so on.
    2. c:\dev\runtime\vitrius\media\ - This is referred to as "the media directory." Under here you have all of the fonts, textures,
    3. c:\dev\vitrius\src - Sources (unrelated details omitted)
    4. c:\dev\vitrius\compile - Our scripts, such as solution and project files.
    5. c:\dev\vitrius\include - Headers and such
    6. c:\dev\3rdparty\ogrenew - The Ogre CVS head.
    7. c:\dev\3rdparty\ogreaddons - The Ogre Addons from CVS.

Projects

There are a few "PLSM" projects: PLSM, PLSM2, GOOFEditor.

Problem: Which MapEditor and PLSM2 project is "the right one", who is working on it, and where can contributors help out?
Solution: Use the PLSM2 to generate the correct DLLs. Use the GOOF Editor if you want to. Use the Tuan MapEditor (also known as the PLSM2) if you want to. Use MapSplitter to turn huge image maps into little tiles. There is no known use for PLSM; there is only PLSM2. (Tuan MapEditor is sort of good ancestor, but now dead.)

PLSM

  • PLSM: Original Ogre3D paging landscape scene manager.
  • Q: What are the deliverables? What does this project produce?
  • A: I do not know, because I haven't investigated PLSM1, only PLSM2.
  • Q: Does this project have a maintainer?
  • A: I do not know.
  • Q: Does anyone use this project? Can it be removed from ogrenew?
  • A: I do not know. I suggest it be removed if it has no maintainer.

PLSM2

PLSM2 is the current PLSM.

  • Q: What are the deliverables? What does this project produce?
  • A: Several things:
    • Plugin_PagingLandScapeSceneManager2.dll - for your programs to use
    • MapSplitter.exe - For turning a huge image into many tiled images.
    • Demo_PagingLandScape2.exe - A sample demo which lets you fly around your PLSM world.
    • MapEditor - A map editor. I haven't messed with this yet.
  • Q: Does this project have a maintainer?
  • A: Tuan is the maintainer of PLSM2. His site.
  • Q: What games or other projects are using PLSM2?
  • A: See the Ogre Addons PLSM2 thread
  • Q: Why are there two PLSM packages?
  • A: Different folder structure between OgreSDK and CVS
  • Q: Shouldn't someone remove PLSM if only PLSM2 is used?
  • A: That makes sense to me.
  • Q: Is the map editor at Tuan's page the same as the one in OgreAddons? The main page says, "plsm2 is in OgreAddons CVS", but the two distributions differ.
  • A: As far as I can tell, yes they're exactly the same. Sometimes they're out of synch, though. For instance, when SourceForge explodes or Tuan has released a zip file but not updated the CVS.

GOOFEditor

The GOOF Editor by Falagard:

  • Requires: Ogre 1.2
  • Requires: The PLSM2 DLL
  • Benefits from: MapSplitter
  • Provides output which can be used by: Demo_PagingLandScape2.exe

Contributors

  • Q: Are Falagard and Tuan working together on one project, multiple projects, or none at all?
  • A: Falagard is working on his own GOOFEditor. Tuan is working on PLSM2 and the PLSM2 map editor. The GOOFEditor uses PLSM2, but is a separate editor.(as PLSM2 gives many underlying terrain editing and terrain possibilities to Goof, Tuan help as much as possible Goof, implementing things Goof would need in plsm2.)


Q: Who is Occulis and why is he writing this?
A: Occulis is an all-around nice guy. He is working on a game which uses PLSM2 and wants his artists to use a map editor to create PLSM2 terrains. He spent 8 hours simply trying to get the PLSM2 demo running, and would like to save future users of PLSM2 that time. He is also a documentation fiend.

  • Q: I have Ogre HEAD and it claims I have Eihort (v1.3.0). Why?
  • A: Ogre Head IS Eihort. if you want Ogre Dagon, you must get CVS with tag v1-2-X.

Distributions

  • Q: Why are there different distribution methods with different file sets?
  • A: OgreSDK, OgreSource and CVS distritbution doesn't have same folder structure.


For instance:

Method 1: ZIP From Tuan

  • Downloaded http://tuan.kuranes.free.fr/OgreSDK_PLSM2_source.zip
  • Extracted everything into C:\dev\3rdparty\compile\plsm
  • Projects were extracted into C:\dev\3rdparty\compile\plsm\Samples\PagingLandScape2\scripts
  • Loaded C:\dev\3rdparty\compile\plsm\plsm2.sln — It's missing Samples\MapEditor\scripts\MapEditor.vcproj
  • Actually, it's missing the whole Samples\MapEditor\ subdirectory. The only one it has is PagingLandScape2.
  • Ran diffs between unzipped files and the current ogreaddons cvs. Only diffs are that files and directories are missing.
  • (Note that this may be my own misunderstanding, because the zip is for 'OgreSDK' and I believe not necessarily for the CVS)

Method 2: OgreAddons CVS

  • Use cvs to check out ogreaddons
  • Notice relative include directories and link directories do not match the same ones used by other ogreaddon projects. (See below)

OgreAddons Issues

OgreAddon Projects and the default include paths. There doesn't seem to be any consistency here. Some addon projects them assume you have a directory setup like:

  c:\somedir\ogrenew
  c:\somedir\ogreaddons

while others assume:

  c:\somedir\ogrenew
  c:\somedir\ogrenew\ogreaddons

And I can't remember which, but I swear at one point I found an addon which, based on the relative paths in the vcproj files, seemed to expect the directory structure to be set up like:

  c:\somedir\ogrenew
  c:\somedir\ogrenew\Samples\Common\ogreaddons

Which is it? Are all of these project contributors just not talking to each other? Seems likely. Again, maybe I'm simply missing out on some information.

2006 May 14

Get Newest GOOF Map Editor

Compiling PLSM

  • Start at page http://www.ogre3d.org/wiki/index.php?title=Paging_Scene_Manager
  • First step it says is, "Get sample Maps from linkhere and extract into PLSM/media/paginglandscape2 directory". The link gets you datasrcs.zip.
  • I renamed datasrcs.zip to PLSM_media_paginglandscape2.zip, so hopefully I'll remember what the directory it's supposed to go into without re-reading the wiki.
  • Extracted and removed all CVS directories from the extract files, ("find ./ -type d -name CVS -exec rm -rf {} \;"). Note that I'm doing this under Windows by using Cygwin.
  • The wiki says, "Once you extracted them you can enable those terrains in paginglandscape2.cfg and maptools.cfg if needed (CVS at least need this.)", but paginglandscape2.cfg and maptools.cfg don't exist anywhere in the provided zip file.
  • Added comment to wiki page, cleaned up the wiki page itself a little.

  • Copied IPLSceneManager, paginglandscape and PagingLandScape2 from C:\dev\3rdparty\ogreaddons\paginglandscape\PlugIns to C:\dev\3rdparty\ogrenew\PlugIns
  • Copied C:\dev\3rdparty\ogreaddons\paginglandscape\Tools\MapSplitter to C:\dev\3rdparty\ogrenew\Tools\MapSplitter
  • There were some SVN conflicts so I did this from the /cygdrive/c/dev/3rdparty/ogreaddons/paginglandscape/Samples directory: find ./ -type d -name ".svn" -exec rm -rf {} \;
  • Loaded up c:\dev\3rdparty\ogrenew\Ogre.sln.
  • Did a Release build of OgreMain, just to make sure everything still works. :P
  • Added Plugin_PagingLandScapeSceneManager2.vcproj from C:\dev\3rdparty\ogrenew\PlugIns\PagingLandScape2\scripts to the solution
  • Did a release compile. I don't believe it! Plugin_PagingLandScapeSceneManager2 - 0 error(s), 0 warning(s).
  • Added Demo_PagingLandScape2 project from Samples\PagingLandScape2\scripts to Ogre solution. Built with no warns, no errs.
  • Added and built MapSplitter from Tools\MapSplitter\script and rebuilt.

Copying Files

Next, we copy all the files over.

  • Copied Demo_PagingLandScape2.exe from C:\dev\3rdparty\ogrenew\Samples\PagingLandScape2\bin\Release to C:\dev\runtime\vitrius\bin\release
  • Copied Plugin_PagingLandScapeSceneManager2.dll from C:\dev\3rdparty\ogrenew\PlugIns\PagingLandScape2\bin\Release to C:\dev\runtime\vitrius\bin\release
  • Copied folders paginglandscape2 and paginglandscape from C:\dev\3rdparty\ogrenew\Samples\Media to C:\dev\runtime\vitrius\media
  • copy "C:\dev\3rdparty\ogrenew\Tools\MapSplitter\maptool.cfg" "C:\dev\runtime\vitrius\bin\release\maptool.cfg"
  • Added these lines to "C:\dev\runtime\vitrius\bin\release\resources.cfg":

[PLSM2]
  FileSystem=../../Media/paginglandscape2
  
  FileSystem=../../Media/paginglandscape2/gui
  FileSystem=../../Media/paginglandscape2/models
  FileSystem=../../Media/paginglandscape2/overlays
  FileSystem=../../Media/paginglandscape2/materials
  FileSystem=../../Media/paginglandscape2/materials/scripts
  FileSystem=../../Media/paginglandscape2/materials/textures
  FileSystem=../../Media/paginglandscape2/materials/programs
  
  FileSystem=../../Media/paginglandscape2/datasrcs
  FileSystem=../../Media/paginglandscape2/terrains
  FileSystem=../../Media/paginglandscape2/terrains/alpes
  FileSystem=../../Media/paginglandscape2/terrains/hf129_3
  FileSystem=../../Media/paginglandscape2/terrains/TsmTerrain
  FileSystem=../../Media/paginglandscape2/terrains/ps_height_1k
  FileSystem=../../Media/paginglandscape2/terrains/terragen16bits
  FileSystem=../../Media/paginglandscape2/terrains/gcanyon_height_4k2k

  • I tried running mapsplitter, but it fails with:
20:56:54: Added resource location '../../Media/paginglandscape2/terrains/gcanyon_height_4k2k' of type 'FileSystem' to resource group 'PLSM2'
  20:56:54: An exception has been thrown!

  -----------------------------------
  Details:
  -----------------------------------
  Error #: 8
  Function: ResourceGroupManager::openResource
  Description: Cannot locate resource ps_height_1k.png in resource group PLSM2 or any other group.. 
  File: \dev\3rdparty\ogrenew\OgreMain\src\OgreResourceGroupManager.cpp
  Line: 583
  Stack unwinding: <<beginning of stack>>

  • Copied C:\dev\3rdparty\ogrenew\Tools\MapSplitter\Tool_MapSplitterFontEnd.exe to C:\dev\runtime\vitrius\bin\release
  • Tried setting up some useful parameters and running it. Clicking run produced no output or warning boxes. It was as useless as a Hello World button in a visual basic tutorial. Giving up on this tool for now. It provides no feedback as to whether or not an operation succeeded.

2006 May 15

  • MapSplitter fails with:
  Cannot locate resource ps_height_1k.png in resource group PLSM2 or any other group
  • Searched C:\dev\runtime\vitrius\media for it. Non-existant.
  • Same for c:\dev\ogrenew
  • Looks like I didn't extract Tuan's "datasrcs.zip" file properly.
  • Extracted it into C:\dev\runtime\vitrius\media\paginglandscape2\datasrcs and mapsplitter ran fine.
  • Now when I run the Demo_PagingLandscape2.exe it (correctly) fails with:

  Description: Cannot open requested directory ../../../Media/paginglandscape2/terrains/hf129_3. 
  • Media is in ../../Media not ../../../Media and I don't know where it got that path.
  • Just as a test, I try changing the line in resources.cfg from this:
  FileSystem=../../Media/paginglandscape2/terrains/hf129_3

To this:

  FileSystem=../Media/paginglandscape2/terrains/hf129_3
  • But that throws a correct exception, because the dir doesn't exist at all.
  • Now, let's try something even more dumb and just copy ../../Media to ../../../Media
  • It works! Just kidding.
  • Now it's failing because BlueHighway is missing. This is from DebugOverlay.overlay.
  • Created C:\dev\runtime\vitrius\media\gui\fonts\bluehighway.font with this:

<?xml version="1.0" ?>
  <Font Name="BlueHighway" Filename="../../media/fonts/bluehigh.ttf" Type="Dynamic" Size="12" NativeHorzRes="800" NativeVertRes="600" AutoScaled="true"/>

  • But that's completely useless.
  • Tried changing all the references from font "BlueHighway" to "Tahoma-12" in C:\dev\runtime\vitrius\media\paginglandscape2\overlays\DebugOverlay.overlay
  • It's reading from C:\dev\runtime\vitrius\media\paginglandscape2\overlays and not C:\dev\runtime\media\paginglandscape2\overlays
  • Note that when the ogre.log says:
  17:56:21: Parsing script Ogre.fontdef
  • It is referring to the Ogre.fontdef stored in a zip file as referenced in the Bootstrap group in resources.cfg. In this case:
  Zip=../../Media/core/VitriusCore.zip
  • Checked that file. It only references TrebuchetMSBold
  • Changed all overlay files (PagingLandScape2.overlay, PagingLandScape.overlay and DebugOverlay.overlay) in both media directories to refer to TrebuchetMSBold instead of BlueHighway.
  • Cool! Now it gets past that part. Fails with
  18:00:50: PLSM2 : Cannot find map named hf129_3.0.0.png
  • This file exists nowhere on my PC.
  • Moved OgreCore.zip out of runtime/vitrius/media/core. If everything runs fine without it (as they all should), since VitriusCore.zip does the same thing, I'll remove OgreCore.zip from the repository too.
  • Oh, guess what! MapSplitter put the files in C:\dev\Samples\Media\paginglandscape2\terrains. Why? No clue.
  • Copied all of them over, and now the Demo_PagingLandScape2.exe works with the grand canyon map.
  • Video is at http://www.vitrius.net/downloads/videos/PLSM_2006-05-15.wmv


Please note that, as verbose as this journal / document is, there is still a lot of detail missing. I did not document, for instance, how I got map splitter working and my surprise to find it storing files nowhere in any of my resource directories, but rather in ..\..\..\..\ogrenew\Samples\ (or somewhere like that). I'll get to all of that in time.

<HR>
Creative Commons Copyright -- Some rights reserved.


THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.

BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.

1. Definitions

  • "Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License.
  • "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License.
  • "Licensor" means the individual or entity that offers the Work under the terms of this License.
  • "Original Author" means the individual or entity who created the Work.
  • "Work" means the copyrightable work of authorship offered under the terms of this License.
  • "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.
  • "License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike.

2. Fair Use Rights

Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws.

3. License Grant

Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:

  • to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works;
  • to create and reproduce Derivative Works;
  • to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works;
  • to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works.
  • For the avoidance of doubt, where the work is a musical composition:
    • Performance Royalties Under Blanket Licenses. Licensor waives the exclusive right to collect, whether individually or via a performance rights society (e.g. ASCAP, BMI, SESAC), royalties for the public performance or public digital performance (e.g. webcast) of the Work.
    • Mechanical Rights and Statutory Royalties. Licensor waives the exclusive right to collect, whether individually or via a music rights society or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions).
    • Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor waives the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions).


The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved.

4. Restrictions

The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:

  • You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any credit as required by clause 4(c), as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any credit as required by clause 4(c), as requested.
  • You may distribute, publicly display, publicly perform, or publicly digitally perform a Derivative Work only under the terms of this License, a later version of this License with the same License Elements as this License, or a Creative Commons iCommons license that contains the same License Elements as this License (e.g. Attribution-ShareAlike 2.5 Japan). You must include a copy of, or the Uniform Resource Identifier for, this License or other license specified in the previous sentence with every copy or phonorecord of each Derivative Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Derivative Works that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder, and You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Derivative Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Derivative Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Derivative Work itself to be made subject to the terms of this License.
  • If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or (ii) if the Original Author and/or Licensor designate another party or parties (e.g. a sponsor institute, publishing entity, journal) for attribution in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; the title of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit.

5. Representations, Warranties and Disclaimer

UNLESS OTHERWISE AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE MATERIALS, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.

6. Limitation on Liability.

EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

7. Termination

  • This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works or Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
  • Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.

8. Miscellaneous

  • Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.
  • Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.
  • If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
  • No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
  • This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.