Updated HTML docs

This commit is contained in:
Evennia docbuilder action 2022-09-17 23:44:19 +00:00
parent 937794ad0b
commit dcc4cbe66f
316 changed files with 34330 additions and 3279 deletions

View file

@ -17,8 +17,8 @@
<link rel="shortcut icon" href="../../../_static/favicon.ico"/>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="Planning the use of some useful contribs" href="Planning-Some-Useful-Contribs.html" />
<link rel="prev" title="Where do I begin?" href="Planning-Where-Do-I-Begin.html" />
<link rel="next" title="Planning our tutorial game" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html" />
<link rel="prev" title="Where do I begin?" href="Beginner-Tutorial-Planning-Where-Do-I-Begin.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
@ -30,10 +30,10 @@
<a href="../../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="Planning-Some-Useful-Contribs.html" title="Planning the use of some useful contribs"
<a href="Beginner-Tutorial-Planning-The-Tutorial-Game.html" title="Planning our tutorial game"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="Planning-Where-Do-I-Begin.html" title="Where do I begin?"
<a href="Beginner-Tutorial-Planning-Where-Do-I-Begin.html" title="Where do I begin?"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../../../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../../Howtos-Overview.html" >Tutorials and Howtos</a> &#187;</li>
@ -298,15 +298,15 @@ have made their dream game a reality!</p>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="Planning-Where-Do-I-Begin.html"
<p class="topless"><a href="Beginner-Tutorial-Planning-Where-Do-I-Begin.html"
title="previous chapter">Where do I begin?</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="Planning-Some-Useful-Contribs.html"
title="next chapter">Planning the use of some useful contribs</a></p>
<p class="topless"><a href="Beginner-Tutorial-Planning-The-Tutorial-Game.html"
title="next chapter">Planning our tutorial game</a></p>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../../../_sources/Howtos/Beginner-Tutorial/Part2/Game-Planning.md.txt"
<li><a href="../../../_sources/Howtos/Beginner-Tutorial/Part2/Beginner-Tutorial-Game-Planning.md.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div><h3>Links</h3>
@ -322,7 +322,7 @@ have made their dream game a reality!</p>
</ul>
<h3>Versions</h3>
<ul>
<li><a href="Game-Planning.html">1.0-dev (develop branch)</a></li>
<li><a href="Beginner-Tutorial-Game-Planning.html">1.0-dev (develop branch)</a></li>
<li><a href="../../../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
@ -340,10 +340,10 @@ have made their dream game a reality!</p>
<a href="../../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="Planning-Some-Useful-Contribs.html" title="Planning the use of some useful contribs"
<a href="Beginner-Tutorial-Planning-The-Tutorial-Game.html" title="Planning our tutorial game"
>next</a> |</li>
<li class="right" >
<a href="Planning-Where-Do-I-Begin.html" title="Where do I begin?"
<a href="Beginner-Tutorial-Planning-Where-Do-I-Begin.html" title="Where do I begin?"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../../../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../../Howtos-Overview.html" >Tutorials and Howtos</a> &#187;</li>

View file

@ -17,8 +17,8 @@
<link rel="shortcut icon" href="../../../_static/favicon.ico"/>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="Where do I begin?" href="Planning-Where-Do-I-Begin.html" />
<link rel="prev" title="12. Advanced searching - Django Database queries" href="../Part1/Django-queries.html" />
<link rel="next" title="Where do I begin?" href="Beginner-Tutorial-Planning-Where-Do-I-Begin.html" />
<link rel="prev" title="12. Advanced searching - Django Database queries" href="../Part1/Beginner-Tutorial-Django-queries.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
@ -30,10 +30,10 @@
<a href="../../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="Planning-Where-Do-I-Begin.html" title="Where do I begin?"
<a href="Beginner-Tutorial-Planning-Where-Do-I-Begin.html" title="Where do I begin?"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="../Part1/Django-queries.html" title="12. Advanced searching - Django Database queries"
<a href="../Part1/Beginner-Tutorial-Django-queries.html" title="12. Advanced searching - Django Database queries"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../../../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../../Howtos-Overview.html" >Tutorials and Howtos</a> &#187;</li>
@ -76,10 +76,9 @@ and “what to think about” when creating a multiplayer online text game.</p>
<h2>Lessons<a class="headerlink" href="#lessons" title="Permalink to this headline"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="Planning-Where-Do-I-Begin.html">Where do I begin?</a></li>
<li class="toctree-l1"><a class="reference internal" href="Game-Planning.html">On Planning a Game</a></li>
<li class="toctree-l1"><a class="reference internal" href="Planning-Some-Useful-Contribs.html">Planning the use of some useful contribs</a></li>
<li class="toctree-l1"><a class="reference internal" href="Planning-The-Tutorial-Game.html">Planning our tutorial game</a></li>
<li class="toctree-l1"><a class="reference internal" href="Beginner-Tutorial-Planning-Where-Do-I-Begin.html">Where do I begin?</a></li>
<li class="toctree-l1"><a class="reference internal" href="Beginner-Tutorial-Game-Planning.html">On Planning a Game</a></li>
<li class="toctree-l1"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html">Planning our tutorial game</a></li>
</ul>
</div>
</section>
@ -87,100 +86,89 @@ and “what to think about” when creating a multiplayer online text game.</p>
<h2>Table of Contents<a class="headerlink" href="#table-of-contents" title="Permalink to this headline"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="Planning-Where-Do-I-Begin.html">Where do I begin?</a><ul>
<li class="toctree-l2"><a class="reference internal" href="Planning-Where-Do-I-Begin.html#what-is-your-motivation-for-doing-this">What is your motivation for doing this?</a></li>
<li class="toctree-l2"><a class="reference internal" href="Planning-Where-Do-I-Begin.html#what-are-your-skills">What are your skills?</a><ul>
<li class="toctree-l3"><a class="reference internal" href="Planning-Where-Do-I-Begin.html#the-game-engine">The game engine</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-Where-Do-I-Begin.html#asset-creation">Asset creation</a></li>
<li class="toctree-l1"><a class="reference internal" href="Beginner-Tutorial-Planning-Where-Do-I-Begin.html">Where do I begin?</a><ul>
<li class="toctree-l2"><a class="reference internal" href="Beginner-Tutorial-Planning-Where-Do-I-Begin.html#what-is-your-motivation-for-doing-this">What is your motivation for doing this?</a></li>
<li class="toctree-l2"><a class="reference internal" href="Beginner-Tutorial-Planning-Where-Do-I-Begin.html#what-are-your-skills">What are your skills?</a><ul>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-Where-Do-I-Begin.html#the-game-engine">The game engine</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-Where-Do-I-Begin.html#asset-creation">Asset creation</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="Planning-Where-Do-I-Begin.html#so-where-do-i-begin-then">So, where do I begin, then?</a></li>
<li class="toctree-l2"><a class="reference internal" href="Planning-Where-Do-I-Begin.html#conclusions">Conclusions</a></li>
<li class="toctree-l2"><a class="reference internal" href="Beginner-Tutorial-Planning-Where-Do-I-Begin.html#so-where-do-i-begin-then">So, where do I begin, then?</a></li>
<li class="toctree-l2"><a class="reference internal" href="Beginner-Tutorial-Planning-Where-Do-I-Begin.html#conclusions">Conclusions</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="Game-Planning.html">On Planning a Game</a><ul>
<li class="toctree-l2"><a class="reference internal" href="Game-Planning.html#the-steps">The steps</a></li>
<li class="toctree-l2"><a class="reference internal" href="Game-Planning.html#planning">Planning</a><ul>
<li class="toctree-l3"><a class="reference internal" href="Game-Planning.html#administration">Administration</a></li>
<li class="toctree-l3"><a class="reference internal" href="Game-Planning.html#building">Building</a></li>
<li class="toctree-l3"><a class="reference internal" href="Game-Planning.html#systems">Systems</a></li>
<li class="toctree-l3"><a class="reference internal" href="Game-Planning.html#rooms">Rooms</a></li>
<li class="toctree-l3"><a class="reference internal" href="Game-Planning.html#objects-items">Objects / items</a></li>
<li class="toctree-l3"><a class="reference internal" href="Game-Planning.html#characters">Characters</a></li>
<li class="toctree-l1"><a class="reference internal" href="Beginner-Tutorial-Game-Planning.html">On Planning a Game</a><ul>
<li class="toctree-l2"><a class="reference internal" href="Beginner-Tutorial-Game-Planning.html#the-steps">The steps</a></li>
<li class="toctree-l2"><a class="reference internal" href="Beginner-Tutorial-Game-Planning.html#planning">Planning</a><ul>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Game-Planning.html#administration">Administration</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Game-Planning.html#building">Building</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Game-Planning.html#systems">Systems</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Game-Planning.html#rooms">Rooms</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Game-Planning.html#objects-items">Objects / items</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Game-Planning.html#characters">Characters</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="Game-Planning.html#coding-and-tech-demo">Coding and Tech demo</a></li>
<li class="toctree-l2"><a class="reference internal" href="Game-Planning.html#world-building">World Building</a></li>
<li class="toctree-l2"><a class="reference internal" href="Game-Planning.html#alpha-release">Alpha Release</a></li>
<li class="toctree-l2"><a class="reference internal" href="Game-Planning.html#beta-release-perpetual-beta">Beta Release/Perpetual Beta</a></li>
<li class="toctree-l2"><a class="reference internal" href="Game-Planning.html#congratulate-yourself">Congratulate yourself!</a></li>
<li class="toctree-l2"><a class="reference internal" href="Game-Planning.html#planning-our-tutorial-game">Planning our tutorial game</a></li>
<li class="toctree-l2"><a class="reference internal" href="Beginner-Tutorial-Game-Planning.html#coding-and-tech-demo">Coding and Tech demo</a></li>
<li class="toctree-l2"><a class="reference internal" href="Beginner-Tutorial-Game-Planning.html#world-building">World Building</a></li>
<li class="toctree-l2"><a class="reference internal" href="Beginner-Tutorial-Game-Planning.html#alpha-release">Alpha Release</a></li>
<li class="toctree-l2"><a class="reference internal" href="Beginner-Tutorial-Game-Planning.html#beta-release-perpetual-beta">Beta Release/Perpetual Beta</a></li>
<li class="toctree-l2"><a class="reference internal" href="Beginner-Tutorial-Game-Planning.html#congratulate-yourself">Congratulate yourself!</a></li>
<li class="toctree-l2"><a class="reference internal" href="Beginner-Tutorial-Game-Planning.html#planning-our-tutorial-game">Planning our tutorial game</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="Planning-Some-Useful-Contribs.html">Planning the use of some useful contribs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="Planning-Some-Useful-Contribs.html#barter-contrib">Barter contrib</a></li>
<li class="toctree-l2"><a class="reference internal" href="Planning-Some-Useful-Contribs.html#clothing-contrib">Clothing contrib</a></li>
<li class="toctree-l2"><a class="reference internal" href="Planning-Some-Useful-Contribs.html#dice-contrib">Dice contrib</a></li>
<li class="toctree-l2"><a class="reference internal" href="Planning-Some-Useful-Contribs.html#extended-room-contrib">Extended room contrib</a></li>
<li class="toctree-l2"><a class="reference internal" href="Planning-Some-Useful-Contribs.html#rp-system-contrib">RP-System contrib</a></li>
<li class="toctree-l2"><a class="reference internal" href="Planning-Some-Useful-Contribs.html#talking-npc-contrib">Talking NPC contrib</a></li>
<li class="toctree-l2"><a class="reference internal" href="Planning-Some-Useful-Contribs.html#traits-contrib">Traits contrib</a></li>
<li class="toctree-l2"><a class="reference internal" href="Planning-Some-Useful-Contribs.html#turnbattle-contrib">Turnbattle contrib</a></li>
<li class="toctree-l2"><a class="reference internal" href="Planning-Some-Useful-Contribs.html#conclusions">Conclusions</a></li>
<li class="toctree-l1"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html">Planning our tutorial game</a><ul>
<li class="toctree-l2"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#game-concept">Game concept</a></li>
<li class="toctree-l2"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#administration">Administration</a><ul>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#should-your-game-rules-be-enforced-by-coded-systems-by-human-game-masters">Should your game rules be enforced by coded systems by human game masters?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#what-is-the-staff-hierarchy-in-your-game-is-vanilla-evennia-roles-enough-or-do-you-need-something-else">What is the staff hierarchy in your game? Is vanilla Evennia roles enough or do you need something else?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#should-players-be-able-to-post-out-of-characters-on-channels-and-via-other-means-like-bulletin-boards">Should players be able to post out-of-characters on channels and via other means like bulletin-boards?</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="Planning-The-Tutorial-Game.html">Planning our tutorial game</a><ul>
<li class="toctree-l2"><a class="reference internal" href="Planning-The-Tutorial-Game.html#administration">Administration</a><ul>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#should-your-game-rules-be-enforced-by-coded-systems-by-human-game-masters">Should your game rules be enforced by coded systems by human game masters?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#what-is-the-staff-hierarchy-in-your-game-is-vanilla-evennia-roles-enough-or-do-you-need-something-else">What is the staff hierarchy in your game? Is vanilla Evennia roles enough or do you need something else?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#should-players-be-able-to-post-out-of-characters-on-channels-and-via-other-means-like-bulletin-boards">Should players be able to post out-of-characters on channels and via other means like bulletin-boards?</a></li>
<li class="toctree-l2"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#building">Building</a><ul>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#how-will-the-world-be-built">How will the world be built?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#can-only-privileged-builders-create-things-or-should-regular-players-also-have-limited-build-capability">Can only privileged Builders create things or should regular players also have limited build-capability?</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="Planning-The-Tutorial-Game.html#building">Building</a><ul>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#how-will-the-world-be-built">How will the world be built?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#can-only-privileged-builders-create-things-or-should-regular-players-also-have-limited-build-capability">Can only privileged Builders create things or should regular players also have limited build-capability?</a></li>
<li class="toctree-l2"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#systems">Systems</a><ul>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#do-you-base-your-game-off-an-existing-rpg-system-or-make-up-your-own">Do you base your game off an existing RPG system or make up your own?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#what-are-the-game-mechanics-how-do-you-decide-if-an-action-succeeds-or-fails">What are the game mechanics? How do you decide if an action succeeds or fails?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#does-the-flow-of-time-matter-in-your-game-does-night-and-day-change-what-about-seasons">Does the flow of time matter in your game - does night and day change? What about seasons?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#do-you-want-changing-global-weather-or-should-weather-just-be-set-manually-in-roleplay">Do you want changing, global weather or should weather just be set manually in roleplay?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#do-you-want-a-coded-world-economy-or-just-a-simple-barter-system-or-no-formal-economy-at-all">Do you want a coded world-economy or just a simple barter system? Or no formal economy at all?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#do-you-have-concepts-like-reputation-and-influence">Do you have concepts like reputation and influence?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#will-your-characters-be-known-by-their-name-or-only-by-their-physical-appearance">Will your characters be known by their name or only by their physical appearance?</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="Planning-The-Tutorial-Game.html#systems">Systems</a><ul>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#do-you-base-your-game-off-an-existing-rpg-system-or-make-up-your-own">Do you base your game off an existing RPG system or make up your own?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#what-are-the-game-mechanics-how-do-you-decide-if-an-action-succeeds-or-fails">What are the game mechanics? How do you decide if an action succeeds or fails?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#does-the-flow-of-time-matter-in-your-game-does-night-and-day-change-what-about-seasons">Does the flow of time matter in your game - does night and day change? What about seasons?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#do-you-want-changing-global-weather-or-should-weather-just-be-set-manually-in-roleplay">Do you want changing, global weather or should weather just be set manually in roleplay?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#do-you-want-a-coded-world-economy-or-just-a-simple-barter-system-or-no-formal-economy-at-all">Do you want a coded world-economy or just a simple barter system? Or no formal economy at all?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#do-you-have-concepts-like-reputation-and-influence">Do you have concepts like reputation and influence?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#will-your-characters-be-known-by-their-name-or-only-by-their-physical-appearance">Will your characters be known by their name or only by their physical appearance?</a></li>
<li class="toctree-l2"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#rooms">Rooms</a><ul>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#is-a-simple-room-description-enough-or-should-the-description-be-able-to-change">Is a simple room description enough or should the description be able to change?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#should-the-room-have-different-statuses">Should the room have different statuses?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#can-objects-be-hidden-in-the-room-can-a-person-hide-in-the-room">Can objects be hidden in the room? Can a person hide in the room?</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="Planning-The-Tutorial-Game.html#rooms">Rooms</a><ul>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#is-a-simple-room-description-enough-or-should-the-description-be-able-to-change">Is a simple room description enough or should the description be able to change?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#should-the-room-have-different-statuses">Should the room have different statuses?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#can-objects-be-hidden-in-the-room-can-a-person-hide-in-the-room">Can objects be hidden in the room? Can a person hide in the room?</a></li>
<li class="toctree-l2"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#objects">Objects</a><ul>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#how-numerous-are-your-objects-do-you-want-large-loot-lists-or-are-objects-just-role-playing-props">How numerous are your objects? Do you want large loot-lists or are objects just role playing props?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#is-each-coin-a-separate-object-or-do-you-just-store-a-bank-account-value">Is each coin a separate object or do you just store a bank account value?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#do-multiple-similar-objects-form-stack-and-how-are-those-stacks-handled-in-that-case">Do multiple similar objects form stack and how are those stacks handled in that case?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#does-an-object-have-weight-or-volume-so-you-cannot-carry-an-infinite-amount-of-them">Does an object have weight or volume (so you cannot carry an infinite amount of them)?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#can-objects-be-broken-can-they-be-repaired">Can objects be broken? Can they be repaired?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#can-you-fight-with-a-chair-or-a-flower-or-must-you-use-a-special-weapon-kind-of-thing">Can you fight with a chair or a flower or must you use a special weapon kind of thing?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#will-characters-be-able-to-craft-new-objects">Will characters be able to craft new objects?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#should-mobs-npcs-have-some-sort-of-ai">Should mobs/NPCs have some sort of AI?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#are-npcs-and-mobs-different-entities-how-do-they-differ">Are NPCs and mobs different entities? How do they differ?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#should-there-be-npcs-giving-quests-if-so-how-do-you-track-quest-status">_Should there be NPCs giving quests? If so, how do you track Quest status?</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="Planning-The-Tutorial-Game.html#objects">Objects</a><ul>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#how-numerous-are-your-objects-do-you-want-large-loot-lists-or-are-objects-just-role-playing-props">How numerous are your objects? Do you want large loot-lists or are objects just role playing props?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#is-each-coin-a-separate-object-or-do-you-just-store-a-bank-account-value">Is each coin a separate object or do you just store a bank account value?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#do-multiple-similar-objects-form-stacks-and-how-are-those-stacks-handled-in-that-case">Do multiple similar objects form stacks and how are those stacks handled in that case?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#does-an-object-have-weight-or-volume-so-you-cannot-carry-an-infinite-amount-of-them">Does an object have weight or volume (so you cannot carry an infinite amount of them)?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#can-objects-be-broken-can-they-be-repaired">Can objects be broken? Can they be repaired?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#can-you-fight-with-a-chair-or-a-flower-or-must-you-use-a-special-weapon-kind-of-thing">Can you fight with a chair or a flower or must you use a special weapon kind of thing?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#will-characters-be-able-to-craft-new-objects">Will characters be able to craft new objects?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#should-mobs-npcs-have-some-sort-of-ai">Should mobs/NPCs have some sort of AI?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#are-npcs-and-mobs-different-entities-how-do-they-differ">Are NPCs and mobs different entities? How do they differ?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#should-there-be-npcs-giving-quests-if-so-how-do-you-track-quest-status">_Should there be NPCs giving quests? If so, how do you track Quest status?</a></li>
<li class="toctree-l2"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#characters">Characters</a><ul>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#can-players-have-more-than-one-character-active-at-a-time-or-are-they-allowed-to-multi-play">Can players have more than one Character active at a time or are they allowed to multi-play?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#how-does-the-character-generation-work">How does the character-generation work?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#how-do-you-implement-different-classes-or-races">How do you implement different “classes” or “races”?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#if-a-character-can-hide-in-a-room-what-skill-will-decide-if-they-are-detected">If a Character can hide in a room, what skill will decide if they are detected?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#what-does-the-skill-tree-look-like-can-a-character-gain-experience-to-improve-by-killing-enemies-solving-quests-by-roleplaying">What does the skill tree look like? Can a Character gain experience to improve? By killing enemies? Solving quests? By roleplaying?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#may-player-characters-attack-each-other-pvp">May player-characters attack each other (PvP)?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#what-are-the-penalties-of-defeat-permanent-death-quick-respawn-time-in-prison">What are the penalties of defeat? Permanent death? Quick respawn? Time in prison?</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="Planning-The-Tutorial-Game.html#characters">Characters</a><ul>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#can-players-have-more-than-one-character-active-at-a-time-or-are-they-allowed-to-multi-play">Can players have more than one Character active at a time or are they allowed to multi-play?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#how-does-the-character-generation-work">How does the character-generation work?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#how-do-you-implement-different-classes-or-races">How do you implement different “classes” or “races”?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#if-a-character-can-hide-in-a-room-what-skill-will-decide-if-they-are-detected">If a Character can hide in a room, what skill will decide if they are detected?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#what-does-the-skill-tree-look-like-can-a-character-gain-experience-to-improve-by-killing-enemies-solving-quests-by-roleplaying">What does the skill tree look like? Can a Character gain experience to improve? By killing enemies? Solving quests? By roleplaying?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#may-player-characters-attack-each-other-pvp">May player-characters attack each other (PvP)?</a></li>
<li class="toctree-l3"><a class="reference internal" href="Planning-The-Tutorial-Game.html#what-are-the-penalties-of-defeat-permanent-death-quick-respawn-time-in-prison">What are the penalties of defeat? Permanent death? Quick respawn? Time in prison?</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="Planning-The-Tutorial-Game.html#conclusions">Conclusions</a></li>
<li class="toctree-l2"><a class="reference internal" href="Beginner-Tutorial-Planning-The-Tutorial-Game.html#conclusions">Conclusions</a></li>
</ul>
</li>
</ul>
@ -218,10 +206,10 @@ and “what to think about” when creating a multiplayer online text game.</p>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="../Part1/Django-queries.html"
<p class="topless"><a href="../Part1/Beginner-Tutorial-Django-queries.html"
title="previous chapter"><span class="section-number">12. </span>Advanced searching - Django Database queries</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="Planning-Where-Do-I-Begin.html"
<p class="topless"><a href="Beginner-Tutorial-Planning-Where-Do-I-Begin.html"
title="next chapter">Where do I begin?</a></p>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
@ -260,10 +248,10 @@ and “what to think about” when creating a multiplayer online text game.</p>
<a href="../../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="Planning-Where-Do-I-Begin.html" title="Where do I begin?"
<a href="Beginner-Tutorial-Planning-Where-Do-I-Begin.html" title="Where do I begin?"
>next</a> |</li>
<li class="right" >
<a href="../Part1/Django-queries.html" title="12. Advanced searching - Django Database queries"
<a href="../Part1/Beginner-Tutorial-Django-queries.html" title="12. Advanced searching - Django Database queries"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../../../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../../Howtos-Overview.html" >Tutorials and Howtos</a> &#187;</li>

View file

@ -18,7 +18,7 @@
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="Part 3: How we get there" href="../Part3/Beginner-Tutorial-Part3-Intro.html" />
<link rel="prev" title="Planning the use of some useful contribs" href="Planning-Some-Useful-Contribs.html" />
<link rel="prev" title="On Planning a Game" href="Beginner-Tutorial-Game-Planning.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
@ -33,7 +33,7 @@
<a href="../Part3/Beginner-Tutorial-Part3-Intro.html" title="Part 3: How we get there"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="Planning-Some-Useful-Contribs.html" title="Planning the use of some useful contribs"
<a href="Beginner-Tutorial-Game-Planning.html" title="On Planning a Game"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../../../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../../Howtos-Overview.html" >Tutorials and Howtos</a> &#187;</li>
@ -51,46 +51,45 @@
<section class="tex2jax_ignore mathjax_ignore" id="planning-our-tutorial-game">
<h1>Planning our tutorial game<a class="headerlink" href="#planning-our-tutorial-game" title="Permalink to this headline"></a></h1>
<p>Using the general plan from last lesson well now establish what kind of game we want to create for this tutorial.
Remembering that we need to keep the scope down, lets establish some parameters.
Note that for your own
game you dont <em>need</em> to agree/adopt any of these. Many game-types need more or much less than this.
But this makes for good, instructive examples.</p>
<p>Using the general plan from last lesson well now establish what kind of game we want to create for this tutorial. Well call it … <em>EvAdventure</em>.
Remembering that we need to keep the scope down, lets establish some parameters.</p>
<ul class="simple">
<li><p>To have something to refer to rather than just saying “our tutorial game” over and over, well
name it … <em>EvAdventure</em>.</p></li>
<li><p>We want EvAdventure be a small game we can play ourselves for fun, but which could in principle be expanded
to something more later.</p></li>
<li><p>We want EvAdventure be a small game we can play ourselves for fun, but which could in principle be expanded to something more later.</p></li>
<li><p>We want to have a clear game-loop, with clear goals.</p></li>
<li><p>Lets go with a fantasy theme, its well understood.</p></li>
<li><p>Well use some existing, simple RPG system.</p></li>
<li><p>We will use a small, existing tabletop RPG rule set (<a class="reference external" href="https://www.drivethrurpg.com/product/250888/Knave">Knave</a>, more info later)</p></li>
<li><p>We want to be able to create and customize a character of our own.</p></li>
<li><p>We want the tools to roleplay with other players.</p></li>
<li><p>We dont want to have to rely on a Game master to resolve things, but will rely on code for skill resolution
and combat.</p></li>
<li><p>While not roleplay-focused, it should still be possible to socialize and to collaborate.</p></li>
<li><p>We dont want to have to rely on a Game master to resolve things, but will rely on code for skill resolution and combat.</p></li>
<li><p>We want monsters to fight and NPCs we can talk to. So some sort of AI.</p></li>
<li><p>We want to be able to buy and sell stuff, both with NPCs and other players.</p></li>
<li><p>We want some sort of crafting system.</p></li>
<li><p>We want some sort of quest system.</p></li>
<li><p>We want some sort of quest system and merchants to buy stuff from.</p></li>
</ul>
<p>Lets answer the questions from the previous lesson and discuss some of the possibilities.</p>
<section id="game-concept">
<h2>Game concept<a class="headerlink" href="#game-concept" title="Permalink to this headline"></a></h2>
<p>With these points in mind, heres a quick blurb for our game:</p>
<p><em>Recently, the nearby village discovered that the old abandoned well contained a dark secret. The bottom of the well led to a previously undiscovered dungeon of ever shifting passages. No one knew why it was there or what its purpose was, but local rumors abound. The first adventurer that went down didnt come back. The second … brought back a handful of glittering riches.</em></p>
<p><em>Now the rush is on - theres a dungeon to explore and coin to earn. Knaves, cutthroats, adventurers and maybe even a hero or two are coming from all over the realm to challenge whatever lurks at the bottom of that well.</em></p>
<p><em>Local merchants and opportunists have seen a chance for profit. A camp of tents has sprung up around the old well, providing food and drink, equipment, entertainment and rumors for a price. Its a festival to enjoy before paying the entrance fee for dropping down the well to find your fate among the shadows below …</em></p>
<p>Our game will consist of two main game modes - above ground and below. The player starts above ground and is expected to do expeditions into the dark. The design goal is for them to be forced back up again when their health, equipment and luck is about to run out.</p>
<ul class="simple">
<li><p>Above, in the “dungeon festival”, the player can restock and heal up, buy things and do a small set of quests. Its the only place where the characters can sleep and fully heal. They also need to spend coin here to gain XP and levels. This is a place for players to socialize and RP. There is no combat above ground except for an optional spot for non-lethal PvP.</p></li>
<li><p>Below is the mysterious dungeon. This is a procedurally generated set of rooms. Players can collaborate if they go down the well together, they will not be able to run into each other otherwise (so this works as an instance). Each room generally presents some challenge (normally a battle). Pushing deeper is more dangerous but can grant greater rewards. While the rooms could in theory go on forever, there should be a boss encounter once a player reaches deep enough.</p></li>
</ul>
<p>Heres an overview of the topside camp for inspiration (quickly thrown together in the free version of <a class="reference external" href="https://inkarnate.com/">Inkarnate</a>). Well explore how to break this up into “rooms” (locations) when we get to creating the game world later.</p>
<p><img alt="Last Step Camp" src="../../../_images/Dungeon_Merchant_Camp.jpg" /></p>
<p>For the rest of this lesson well answer and reason around the specific questions posed in the previous <a class="reference internal" href="Beginner-Tutorial-Game-Planning.html"><span class="doc std std-doc">Game Planning</span></a> lesson.</p>
</section>
<section id="administration">
<h2>Administration<a class="headerlink" href="#administration" title="Permalink to this headline"></a></h2>
<section id="should-your-game-rules-be-enforced-by-coded-systems-by-human-game-masters">
<h3>Should your game rules be enforced by coded systems by human game masters?<a class="headerlink" href="#should-your-game-rules-be-enforced-by-coded-systems-by-human-game-masters" title="Permalink to this headline"></a></h3>
<p>Generally, the more work you expect human staffers/GMs to do, the less your code needs to work. To
support GMs youd need to design commands to support GM-specific actions and the type of game-mastering
you want them to do. You may need to expand communication channels so you can easily
talk to groups people in private and split off gaming groups from each other. RPG rules could be as simple
<p>Generally, the more work you expect human staffers/GMs to do, the less your code needs to work. To support GMs youd need to design commands to support GM-specific actions and the type of game-mastering you want them to do. You may need to expand communication channels so you can easily talk to groups people in private and split off gaming groups from each other. RPG rules could be as simple
as the GM sitting with the rule books and using a dice-roller for visibility.</p>
<p>GM:ing is work-intensive however, and even the most skilled and enthusiastic GM cant be awake all hours
of the day to serve an international player base. The computer never needs sleep, so having the ability for
players to “self-serve” their RP itch when no GMs are around is a good idea even for the most GM-heavy games.</p>
<p>On the other side of the spectrum are games with no GMs at all; all gameplay are driven either by the computer
or by the interactions between players. Such games still need an active staff, but nowhere as much active
involvement. Allowing for solo-play with the computer also allows players to have fun when the number of active
<p>GM:ing is work-intensive however, and even the most skilled and enthusiastic GM cant be awake all hours of the day to serve an international player base. The computer never needs sleep, so having the ability for players to “self-serve” their RP itch when no GMs are around is a good idea even for the most GM-heavy games.</p>
<p>On the other side of the spectrum are games with no GMs at all; all gameplay are driven either by the computer or by the interactions between players. Such games still need an active staff, but nowhere as much active involvement. Allowing for solo-play with the computer also allows players to have fun when the number of active
players is low.</p>
<p>We want EvAdventure to work entirely without depending on human GMs. That said, thered be nothing
stopping a GM from stepping in and run an adventure for some players should they want to.</p>
<p><strong>EvAdventure Answer:</strong></p>
<p>We want EvAdventure to work entirely without depending on human GMs. That said, thered be nothing stopping a GM from stepping in and run an adventure for some players should they want to.</p>
</section>
<section id="what-is-the-staff-hierarchy-in-your-game-is-vanilla-evennia-roles-enough-or-do-you-need-something-else">
<h3>What is the staff hierarchy in your game? Is vanilla Evennia roles enough or do you need something else?<a class="headerlink" href="#what-is-the-staff-hierarchy-in-your-game-is-vanilla-evennia-roles-enough-or-do-you-need-something-else" title="Permalink to this headline"></a></h3>
@ -104,30 +103,27 @@ stopping a GM from stepping in and run an adventure for some players should they
</ul>
<p>There is also the <em>superuser</em>, the “owner” of the game you create when you first set up your database. This user
goes outside the regular hierarchy and should usually only.</p>
<p>We are okay with keeping this structure for our game.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>We are okay with keeping the default permission structure for our game.</p>
</section>
<section id="should-players-be-able-to-post-out-of-characters-on-channels-and-via-other-means-like-bulletin-boards">
<h3>Should players be able to post out-of-characters on channels and via other means like bulletin-boards?<a class="headerlink" href="#should-players-be-able-to-post-out-of-characters-on-channels-and-via-other-means-like-bulletin-boards" title="Permalink to this headline"></a></h3>
<p>Evennias <em>Channels</em> are by default only available between <em>Accounts</em>. That is, for players to communicate with each
other. By default, the <code class="docutils literal notranslate"><span class="pre">public</span></code> channel is created for general discourse.
Channels are logged to a file and when you are coming back to the game you can view the history of a channel
in case you missed something.</p>
Channels are logged to a file and when you are coming back to the game you can view the history of a channel in case you missed something.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>&gt; public Hello world!
[Public] MyName: Hello world!
</pre></div>
</div>
<p>But Channels can also be set up to work between Characters instead of Accounts. This would mean the channels
would have an in-game meaning:</p>
<p>But Channels can also be set up to work between Characters instead of Accounts. This would mean the channels would have an in-game meaning:</p>
<ul class="simple">
<li><p>Members of a guild could be linked telepathically.</p></li>
<li><p>Survivors of the apocalypse can communicate over walkie-talkies.</p></li>
<li><p>Radio stations you can tune into or have to discover.</p></li>
</ul>
<p><em>Bulletin boards</em> are a sort of in-game forum where posts are made publicly or privately. Contrary to a channel,
the messages are usually stored and are grouped into topics with replies. Evennia has no default bulletin-board
system.</p>
<p>In EvAdventure we will just use the default inter-account channels. We will also not be implementing any
bulletin boards.</p>
<p><em>Bulletin boards</em> are a sort of in-game forum where posts are made publicly or privately. Contrary to a channel, the messages are usually stored and are grouped into topics with replies. Evennia has no default bulletin-board system.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>In EvAdventure we will just use the default inter-account channels. We will also not be implementing any bulletin boards; instead the merchant NPCs will act as quest givers.</p>
</section>
</section>
<section id="building">
@ -136,122 +132,116 @@ bulletin boards.</p>
<h3>How will the world be built?<a class="headerlink" href="#how-will-the-world-be-built" title="Permalink to this headline"></a></h3>
<p>There are two main ways to handle this:</p>
<ul class="simple">
<li><p>Traditionally, from in-game with build-commands: This means builders creating content in their game
client. This has the advantage of not requiring Python skills nor server access. This can often be a quite
intuitive way to build since you are sort-of walking around in your creation as you build it. However, the
developer (you) must make sure to provide build-commands that are flexible enough for builders to be able to
create the content you want for your game.</p></li>
<li><p>Externally (by batchcmds): Evennias <code class="docutils literal notranslate"><span class="pre">batchcmd</span></code> takes a text file with Evennia Commands and executes them
in sequence. This allows the build process to be repeated and applied quickly to a new database during development.
It also allows builders to use proper text-editing tools rather than writing things line-by-line in their clients.
The drawback is that for their changes to go live they either need server access or they need to send their
batchcode to the game administrator so they can apply the changes. Or use version control.</p></li>
<li><p>Externally (with batchcode or custom code): This is the “professional game development” approach. This gives the
builders maximum power by creating the content in Python using Evennia primitives. The <code class="docutils literal notranslate"><span class="pre">batchcode</span></code> processor
allows Evennia to apply and re-apply build-scripts that are raw Python modules. Again, this would require the
builder to have server access or to use version control to share their work with the rest of the development team.</p></li>
<li><p>Traditionally, from in-game with build-commands: This means builders creating content in their game client. This has the advantage of not requiring Python skills nor server access. This can often be a quite intuitive way to build since you are sort-of walking around in your creation as you build it. However, the developer (you) must make sure to provide build-commands that are flexible enough for builders to be able to create the content you want for your game.</p></li>
<li><p>Externally (by batchcmds): Evennias <code class="docutils literal notranslate"><span class="pre">batchcmd</span></code> takes a text file with Evennia Commands and executes them in sequence. This allows the build process to be repeated and applied quickly to a new database during development.
It also allows builders to use proper text-editing tools rather than writing things line-by-line in their clients. The drawback is that for their changes to go live they either need server access or they need to send their batchcode to the game administrator so they can apply the changes. Or use version control.</p></li>
<li><p>Externally (with batchcode or custom code): This is the “professional game development” approach. This gives the builders maximum power by creating the content in Python using Evennia primitives. The <code class="docutils literal notranslate"><span class="pre">batchcode</span></code> processor
allows Evennia to apply and re-apply build-scripts that are raw Python modules. Again, this would require the builder to have server access or to use version control to share their work with the rest of the development team.</p></li>
</ul>
<p>In this tutorial, we will show examples of all these ways, but since we dont have a team of builders well
build the brunt of things using Evennias Batchcode system.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>For EvAdventure, we will build the above-ground part of the game world using batch-scripts. The world below-ground we will build procedurally, using raw code.</p>
</section>
<section id="can-only-privileged-builders-create-things-or-should-regular-players-also-have-limited-build-capability">
<h3>Can only privileged Builders create things or should regular players also have limited build-capability?<a class="headerlink" href="#can-only-privileged-builders-create-things-or-should-regular-players-also-have-limited-build-capability" title="Permalink to this headline"></a></h3>
<p>In some game styles, players have the ability to create objects and even script them. While giving regular users
the ability to create objects with in-built commands is easy and safe, actual code-creation (aka <em>softcode</em> ) is
not something Evennia supports natively. Regular, untrusted users should never be allowed to execute raw Python
<p>In some game styles, players have the ability to create objects and even script them. While giving regular users the ability to create objects with in-built commands is easy and safe, actual code-creation (aka <em>softcode</em> ) is not something Evennia supports natively.</p>
<p>Regular, untrusted users should never be allowed to execute raw Python
code (such as what you can do with the <code class="docutils literal notranslate"><span class="pre">py</span></code> command). You can
<a class="reference internal" href="../../../Concepts/Soft-Code.html"><span class="doc std std-doc">read more about Evennias stance on softcode here</span></a>. If you want users to do limited scripting,
its suggested that this is accomplished by adding more powerful build-commands for them to use.</p>
<p>For our tutorial-game, we will only allow privileged builders to modify the world. The exception is crafting,
which we will limit to repairing broken items by combining them with other repair-related items.</p>
<a class="reference internal" href="../../../Concepts/Soft-Code.html"><span class="doc std std-doc">read more about Evennias stance on softcode here</span></a>. If you want users to do limited scripting, its suggested that this is accomplished by adding more powerful build-commands for them to use.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>For our tutorial-game, we will only allow privileged builders and admins to modify the world.</p>
</section>
</section>
<section id="systems">
<h2>Systems<a class="headerlink" href="#systems" title="Permalink to this headline"></a></h2>
<section id="do-you-base-your-game-off-an-existing-rpg-system-or-make-up-your-own">
<h3>Do you base your game off an existing RPG system or make up your own?<a class="headerlink" href="#do-you-base-your-game-off-an-existing-rpg-system-or-make-up-your-own" title="Permalink to this headline"></a></h3>
<p>We will make use of <a class="reference external" href="http://www.geekguild.com/openadventure/">Open Adventure</a>, a simple old school RPG-system
that is available for free under the Creative Commons license. Well only use a subset of the rules from
the blue “basic” book. For the sake of keeping down the length of this tutorial we will limit what features
we will include:</p>
<ul class="simple">
<li><p>Only two archetypes (classes) - Arcanist (wizard) and Warrior, these are examples of two different play
styles.</p></li>
<li><p>Two races only (dwarves and elves), to show off how to implement races and race bonuses.</p></li>
<li><p>No extra features of the races/archetypes such as foci and special feats. While these are good for fleshing
out a character, these will work the same as other bonuses and are thus not that instructive.</p></li>
<li><p>We will add only a small number of items/weapons from the Open Adventure rulebook to show how its done.</p></li>
</ul>
<p>There is a plethora of options out there, and what you choose depends on the game you want. It can be tempting to grab a short free-form ruleset, but remember that the computer does not have any intuitiion or common sense to interpret the rules like a human GM could. Conversely, if you pick a very crunchy game system, with detailed simulation of the real world, remember that youll need to actually <em>code</em> all those exceptions and tables yourself.</p>
<p>For speediest development, what you want is a game with a <em>consolidated</em> resolution mechanic - one you can code once and then use in a lot of situations. But you still want enough rules to help telling the computer how various situations should be resolved (combat is the most common system that needs such structure).</p>
<p><strong>EvAdventure Answer</strong></p>
<p>For this tutorial, we will make use of <a class="reference external" href="https://www.drivethrurpg.com/product/250888/Knave">Knave</a>, a very light <a class="reference external" href="https://en.wikipedia.org/wiki/Old_School_Renaissance">OSR</a> ruleset by Ben Milton. Its only a few pages long but highly compatible with old-school D&amp;D games. Its consolidates all rules around a few opposed d20 rolls and includes clear rules for combat, inventory, equipment and so on. Since <em>Knave</em> is a tabletop RPG, we will have to do some minor changes here and there to fit it to the computer medium.</p>
<p><em>Knave</em> is available under a Creative Commons Attributions 4.0 License, meaning it can be used for derivative work (even commercially). The above link allows you to purchase the PDF and supporting the author. Alternatively you can find unofficial fan releases of the rules <a class="reference external" href="https://dungeonsandpossums.com/2020/04/some-great-knave-rpg-resources/">on this page</a>.</p>
</section>
<section id="what-are-the-game-mechanics-how-do-you-decide-if-an-action-succeeds-or-fails">
<h3>What are the game mechanics? How do you decide if an action succeeds or fails?<a class="headerlink" href="#what-are-the-game-mechanics-how-do-you-decide-if-an-action-succeeds-or-fails" title="Permalink to this headline"></a></h3>
<p>Open Adventures conflict resolution is based on adding a trait (such as Strength) with a random number in
order to beat a target. We will emulate this in code.</p>
<p>Having a “skill” means getting a bonus to that roll for a more narrow action.
Since the computer will need to know exactly what those skills are, we will add them more explicitly than
in the rules, but we will only add the minimum to show off the functionality we need.</p>
<p>This follows from the RPG system decided upon in the previous question.</p>
<p><strong>EvAdventure Answer</strong></p>
<p><em>Knave</em> gives every character a set of six traditional stats: Strength, Intelligence, Dexterity, Constitution, Intelligence, Wisdom and Charisma. Each has a value from +1 to +10. To find its “Defense” value, you add 10.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>You have Strength +1. Your Strength-Defense is 10 + 1 = 11
</pre></div>
</div>
<p>To make a check, say an arm-wrestling challenge you roll a twenty-sided die (d20) and add your stat. You have to roll higher than the opponents defense for that stat.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>I have Strength +1, my opponent has a Strength of +2. To beat them in arm wrestling I must roll d20 + 1 and hope to get higher than 12, which is their Strength defense (10 + 2).
</pre></div>
</div>
<p>If you attack someone you do the same, except you roll against their <code class="docutils literal notranslate"><span class="pre">Armor</span></code> defense. If you rolled higher, you roll for how much damage you do (depends on your weapon).
You can have <em>advantage</em> or <em>disadvantage</em> on a roll. This means rolling 2d20 and picking highest or lowest value.</p>
<p>In Knave, combat is turn-based. In our implementation well also play turn-based, but well resolve everything <em>simultaneously</em>. This changes <em>Knave</em>s feel quite a bit, but is a case where the computer can do things not practical to do when playing around a table.</p>
<p>There are also a few tables well need to implement. For example, if you lose all health, theres a one-in-six chance youll die outright. Well keep this perma-death aspect, but make it very easy to start a new character and jump back in.</p>
<blockquote>
<div><p>In this tutorial we will not add opportunities to make use of all of the character stats, making some, like strength, intelligence and dexterity more useful than others. In a full game, one would want to expand so a user can utilize all of their characters strengths.</p>
</div></blockquote>
</section>
<section id="does-the-flow-of-time-matter-in-your-game-does-night-and-day-change-what-about-seasons">
<h3>Does the flow of time matter in your game - does night and day change? What about seasons?<a class="headerlink" href="#does-the-flow-of-time-matter-in-your-game-does-night-and-day-change-what-about-seasons" title="Permalink to this headline"></a></h3>
<p>Most commonly, game-time runs faster than real-world time. There are
a few advantages with this:</p>
<ul class="simple">
<li><p>Unlike in a single-player game, you cant fast-forward time in a multiplayer game if you are waiting for
something, like NPC shops opening.</p></li>
<li><p>Unlike in a single-player game, you cant fast-forward time in a multiplayer game if you are waiting for something, like NPC shops opening.</p></li>
<li><p>Healing and other things that we know takes time will go faster while still being reasonably realistic.</p></li>
</ul>
<p>The main drawback is for games with slower roleplay pace. While you are having a thoughtful roleplaying scene
over dinner, the game world reports that two days have passed. Having a slower game time than real-time is
a less common, but possible solution for such games.</p>
<p>It is however <em>not</em> recommended to let game-time exactly equal the speed of real time. The reason for this
is that people will join your game from all around the world, and they will often only be able to play at
particular times of their day. With a game-time drifting relative real-time, everyone will eventually be
able to experience both day and night in the game.</p>
<p>For this tutorial-game we will go with Evennias default, which is that the game-time runs two times faster
than real time.</p>
<p>The main drawback is for games with slower roleplay pace. While you are having a thoughtful roleplaying scene over dinner, the game world reports that two days have passed. Having a slower game time than real-time is a less common, but possible solution for such games.</p>
<p>It is however <em>not</em> recommended to let game-time exactly equal the speed of real time. The reason for this is that people will join your game from all around the world, and they will often only be able to play at particular times of their day. With a game-time drifting relative real-time, everyone will eventually be able to experience both day and night in the game.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>The passage of time will have no impact on our particular game example, so well go with Evennias default, which is that the game-time runs two times faster than real time.</p>
</section>
<section id="do-you-want-changing-global-weather-or-should-weather-just-be-set-manually-in-roleplay">
<h3>Do you want changing, global weather or should weather just be set manually in roleplay?<a class="headerlink" href="#do-you-want-changing-global-weather-or-should-weather-just-be-set-manually-in-roleplay" title="Permalink to this headline"></a></h3>
<p>A weather system is a good example of a game-global system that affects a subset of game entities
(outdoor rooms). We will not be doing any advanced weather simulation, but well show how to do
random weather changes happening across the game world.</p>
<p>A weather system is a good example of a game-global system that affects a subset of game entities (outdoor rooms).</p>
<p><strong>EvAdventure Answer</strong></p>
<p>Well not change the weather, but will add some random messages to echo through
the game world at random intervals just to show the principle.</p>
</section>
<section id="do-you-want-a-coded-world-economy-or-just-a-simple-barter-system-or-no-formal-economy-at-all">
<h3>Do you want a coded world-economy or just a simple barter system? Or no formal economy at all?<a class="headerlink" href="#do-you-want-a-coded-world-economy-or-just-a-simple-barter-system-or-no-formal-economy-at-all" title="Permalink to this headline"></a></h3>
<p>We will allow for money and barter/trade between NPCs/Players and Player/Player, but will not care about
inflation. A real economic simulation could do things like modify shop prices based on supply and demand.
We will not go down that rabbit hole.</p>
<p>This is a big question and depends on how deep and interconnected the virtual transactions are that are happening in the game. Shop prices could rice and drop due to supply and demand, supply chains could involve crafting and production. One also could consider adding money sinks and manipulate the in-game market to combat inflation.</p>
<p>The <a class="reference internal" href="../../../Contribs/Contrib-Barter.html"><span class="doc std std-doc">Barter</span></a> contrib provides a full interface for trading with another player in a safe way.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>We will not deal with any of this complexity. We will allow for players to buy from npc sellers and players will be able to trade using the normal <code class="docutils literal notranslate"><span class="pre">give</span></code> command.</p>
</section>
<section id="do-you-have-concepts-like-reputation-and-influence">
<h3>Do you have concepts like reputation and influence?<a class="headerlink" href="#do-you-have-concepts-like-reputation-and-influence" title="Permalink to this headline"></a></h3>
<p>These are useful things for a more social-interaction heavy game. We will not include them for this
tutorial however.</p>
<p>These are useful things for a more social-interaction heavy game.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>We will not include them for this tutorial. Adding the Barter contrib is simple though.</p>
</section>
<section id="will-your-characters-be-known-by-their-name-or-only-by-their-physical-appearance">
<h3>Will your characters be known by their name or only by their physical appearance?<a class="headerlink" href="#will-your-characters-be-known-by-their-name-or-only-by-their-physical-appearance" title="Permalink to this headline"></a></h3>
<p>This is a common thing in RP-heavy games. Others will only see you as “The tall woman” until you
introduce yourself and they recognize you with a name. Linked to this is the concept of more complex
emoting and posing.</p>
<p>Adding such a system from scratch is complex and way beyond the scope of this tutorial. However,
there is an existing Evennia contrib that adds all of this functionality and more, so we will
include that and explain briefly how it works.</p>
<p>This is a common thing in RP-heavy games. Others will only see you as “The tall woman” until you introduce yourself and they recognize you with a name. Linked to this is the concept of more complex emoting and posing.</p>
<p>Implementing such a system is not trivial, but the <a class="reference internal" href="../../../Contribs/Contrib-RPSystem.html"><span class="doc std std-doc">RPsystem</span></a> Evennia contrib offers a ready system with everything needed for free emoting, recognizing people by their appearance and more.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>We will not use any special RP systems for this tutorial. Adding the RPSystem contrib is a good extra expansion though!</p>
</section>
</section>
<section id="rooms">
<h2>Rooms<a class="headerlink" href="#rooms" title="Permalink to this headline"></a></h2>
<section id="is-a-simple-room-description-enough-or-should-the-description-be-able-to-change">
<h3>Is a simple room description enough or should the description be able to change?<a class="headerlink" href="#is-a-simple-room-description-enough-or-should-the-description-be-able-to-change" title="Permalink to this headline"></a></h3>
<p>Changing room descriptions for day and night, winder and summer is actually quite easy to do, but looks
very impressive. We happen to know there is also a contrib that helps with this, so well show how to
include that.</p>
<p>Changing room descriptions for day and night, winder and summer is actually quite easy to do, but looks very impressive. We happen to know there is also a contrib that helps with this, so well show how to include that.</p>
<p>There is an <a class="reference internal" href="../../../Contribs/Contrib-Extended-Room.html"><span class="doc std std-doc">Extended Room</span></a> contrib that adds a Room type that is aware of the time-of-day as well as seasonal variations.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>We will stick to a normal room in this tutorial and let the world be in a perpetual daylight. Making Rooms into ExtendedRooms is not hard though.</p>
</section>
<section id="should-the-room-have-different-statuses">
<h3>Should the room have different statuses?<a class="headerlink" href="#should-the-room-have-different-statuses" title="Permalink to this headline"></a></h3>
<p>We will have different weather in outdoor rooms, but this will not have any gameplay effect - bow strings
will not get wet and fireballs will not fizzle if it rains.</p>
<p>One could picture weather making outdoor rooms wet, cold or burnt. In rain, bow strings could get wet and fireballs fizz out. In a hot room, characters could require drinking more water, or even take damage if not finding shelter.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>For the above-ground we need to be able to disable combat all rooms except for the PvP location. We also need to consider how to auto-generate the rooms under ground. So we probably will need some statuses to control that.</p>
<p>Since each room under ground should present some sort of challenge, we may need a few different room types different from the above-ground Rooms.</p>
</section>
<section id="can-objects-be-hidden-in-the-room-can-a-person-hide-in-the-room">
<h3>Can objects be hidden in the room? Can a person hide in the room?<a class="headerlink" href="#can-objects-be-hidden-in-the-room-can-a-person-hide-in-the-room" title="Permalink to this headline"></a></h3>
<p>This ties into if you have hide/stealth mechanics. Maybe you could evesdrop or attack out of hiding.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>We will not model hiding and stealth. This will be a game of honorable face-to-face conflict.</p>
</section>
</section>
@ -259,80 +249,74 @@ will not get wet and fireballs will not fizzle if it rains.</p>
<h2>Objects<a class="headerlink" href="#objects" title="Permalink to this headline"></a></h2>
<section id="how-numerous-are-your-objects-do-you-want-large-loot-lists-or-are-objects-just-role-playing-props">
<h3>How numerous are your objects? Do you want large loot-lists or are objects just role playing props?<a class="headerlink" href="#how-numerous-are-your-objects-do-you-want-large-loot-lists-or-are-objects-just-role-playing-props" title="Permalink to this headline"></a></h3>
<p>Since we are not going for a pure freeform RPG here, we will want objects with properties, like weapons
and potions and such. Monsters should drop loot even though our list of objects will not be huge.</p>
<p>This also depends on the type of game. In a pure freeform RPG, most objects may be imaginary and just appearing in fiction. If the game is more coded, you want objects with properties that the computer can measure, track and calculate. In many roleplaying-heavy games, you find a mixture of the two, with players imagining items for roleplaying scenes, but only using real objects to resolve conflicts.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>We will want objects with properties, like weapons and potions and such. Monsters should drop loot even though our list of objects will not be huge in this example game.</p>
</section>
<section id="is-each-coin-a-separate-object-or-do-you-just-store-a-bank-account-value">
<h3>Is each coin a separate object or do you just store a bank account value?<a class="headerlink" href="#is-each-coin-a-separate-object-or-do-you-just-store-a-bank-account-value" title="Permalink to this headline"></a></h3>
<p>Since we will use bartering, placing coin objects on one side of the barter makes for a simple way to
handle payments. So we will use coins as-objects.</p>
<p>The advantage of having multiple items is that it can be more immersive. The drawback is that its also very fiddly to deal with individual coins, especially if you have to deal with different currencies.</p>
<p><strong>EvAdventure Answer</strong></p>
<p><em>Knave</em> uses the “copper” as the base coin and so will we. Knave considers the weight of coin and one inventory “slot” can hold 100 coins. So well implement a “coin item” to represent many coins.</p>
</section>
<section id="do-multiple-similar-objects-form-stacks-and-how-are-those-stacks-handled-in-that-case">
<h3>Do multiple similar objects form stacks and how are those stacks handled in that case?<a class="headerlink" href="#do-multiple-similar-objects-form-stacks-and-how-are-those-stacks-handled-in-that-case" title="Permalink to this headline"></a></h3>
<p>Since well use coins, its practical to have them and other items stack together. While Evennia does not
do this natively, we will make use of a contrib for this.</p>
<section id="do-multiple-similar-objects-form-stack-and-how-are-those-stacks-handled-in-that-case">
<h3>Do multiple similar objects form stack and how are those stacks handled in that case?<a class="headerlink" href="#do-multiple-similar-objects-form-stack-and-how-are-those-stacks-handled-in-that-case" title="Permalink to this headline"></a></h3>
<p>If you drop two identical apples on the ground, Evennia will default to show this in the room as “two apples”, but this is just a visual effect - there are still two apple-objects in the room. One could picture instead merging the two into a single object “X nr of apples” when you drop the apples.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>We will keep Evennias default.</p>
</section>
<section id="does-an-object-have-weight-or-volume-so-you-cannot-carry-an-infinite-amount-of-them">
<h3>Does an object have weight or volume (so you cannot carry an infinite amount of them)?<a class="headerlink" href="#does-an-object-have-weight-or-volume-so-you-cannot-carry-an-infinite-amount-of-them" title="Permalink to this headline"></a></h3>
<p>Limiting carrying weight is one way to stop players from hoarding. It also makes it more important
for players to pick only the equipment they need. Carrying limits can easily come across as
annoying to players though, so one needs to be careful with it.</p>
<p>Open Adventure rules include weight limits, so we will include them.</p>
<p>Limiting carrying weight is one way to stop players from hoarding. It also makes it more important for players to pick only the equipment they need. Carrying limits can easily come across as annoying to players though, so one needs to be careful with it.</p>
<p><strong>EvAdventure Answer</strong></p>
<p><em>Knave</em> limits your inventory to <code class="docutils literal notranslate"><span class="pre">Constitution</span> <span class="pre">+</span> <span class="pre">10</span></code> “slots”, where most items take up one slot and some large things, like armor, uses two. Small items (like rings) can fit 2-10 per slot and you can fit 100 coins in a slot. This is an important game mechanic to limit players from hoarding. Especially since you need coin to level up.</p>
</section>
<section id="can-objects-be-broken-can-they-be-repaired">
<h3>Can objects be broken? Can they be repaired?<a class="headerlink" href="#can-objects-be-broken-can-they-be-repaired" title="Permalink to this headline"></a></h3>
<p>Item breakage is very useful for a game economy; breaking weapons adds tactical considerations (if its not
too common, then it becomes annoying) and repairing things gives work for crafting players.</p>
<p>We wanted a crafting system, so this is what we will limit it to - repairing items using some sort
of raw materials.</p>
<p>Item breakage is very useful for a game economy; breaking weapons adds tactical considerations (if its not too common, then it becomes annoying) and repairing things gives work for crafting players.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>In <em>Knave</em>, items will break if you make a critical failure on using them (rolls a native 1 on d20). This means they lose a level of <code class="docutils literal notranslate"><span class="pre">quality</span></code> and once at 0, its unusable. We will not allow players to repair, but we could allow merchants to repair items for a fee.</p>
</section>
<section id="can-you-fight-with-a-chair-or-a-flower-or-must-you-use-a-special-weapon-kind-of-thing">
<h3>Can you fight with a chair or a flower or must you use a special weapon kind of thing?<a class="headerlink" href="#can-you-fight-with-a-chair-or-a-flower-or-must-you-use-a-special-weapon-kind-of-thing" title="Permalink to this headline"></a></h3>
<p>Traditionally, only weapons could be used to fight with. In the past this was a useful
simplification, but with Python classes and inheritance, its not actually more work to just
let all items in game work as a weapon in a pinch.</p>
<p>So for our game we will let a character use any item they want as a weapon. The difference will
be that non-weapon items will do less damage and also break and become unusable much quicker.</p>
simplification, but with Python classes and inheritance, its not actually more work to just let all items in game work as a weapon in a pinch.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>Since <em>Knave</em> deals with weapon lists and positions where items can be wielded, we will have a separate “Weapon” class for everything you can use for fighting. So, you wont be able to fight with a chair (unless we make it a weapon-inherited chair).</p>
</section>
<section id="will-characters-be-able-to-craft-new-objects">
<h3>Will characters be able to craft new objects?<a class="headerlink" href="#will-characters-be-able-to-craft-new-objects" title="Permalink to this headline"></a></h3>
<p>Crafting is a common feature in multiplayer games. In code it usually means using a skill-check
to combine base ingredients from a fixed recipe in order to create a new item. The classic
example is to combine <em>leather straps</em>, a <em>hilt</em>, a <em>pommel</em> and a <em>blade</em> to make a new <em>sword</em>.
A full-fledged crafting system could require multiple levels of crafting, including having to mine
for ore or cut down trees for wood.</p>
<p>In our case we will limit our crafting to repairing broken items. To show how its done, we will require
extra items (a recipe) in order to facilitate the repairs.</p>
<p>Crafting is a common feature in multiplayer games. In code it usually means using a skill-check to combine base ingredients from a fixed recipe in order to create a new item. The classic example is to combine <em>leather straps</em>, a <em>hilt</em>, a <em>pommel</em> and a <em>blade</em> to make a new <em>sword</em>.</p>
<p>A full-fledged crafting system could require multiple levels of crafting, including having to mine for ore or cut down trees for wood.</p>
<p>Evennias <a class="reference internal" href="../../../Contribs/Contrib-Crafting.html"><span class="doc std std-doc">Crafting</span></a> contrib adds a full crafting system to any game. Its based on <a class="reference internal" href="../../../Components/Tags.html"><span class="doc std std-doc">Tags</span></a>, meaning that pretty much any object can be made usable for crafting, even used in an unexpected way.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>In our case we will not add any crafting in order to limit the scope of our game. Maybe NPCs will be able to repair items - for a cost?</p>
</section>
<section id="should-mobs-npcs-have-some-sort-of-ai">
<h3>Should mobs/NPCs have some sort of AI?<a class="headerlink" href="#should-mobs-npcs-have-some-sort-of-ai" title="Permalink to this headline"></a></h3>
<p>A rule of adding Artificial Intelligence is that with todays technology you should not hope to fool
anyone with it anytime soon. Unless you have a side-gig as an AI researcher, users will likely
not notice any practical difference between a simple state-machine and you spending a lot of time learning
<p>As a rule, you should not hope to fool anyone into thinking your AI is actually intelligent. The best you will be able to do is to give interesting results and unless you have a side-gig as an AI researcher, users will likely not notice any practical difference between a simple state-machine and you spending a lot of time learning
how to train a neural net.</p>
<p>For this tutorial, we will show how to add a simple state-machine for monsters. NPCs will only be
shop-keepers and quest-gives so they wont need any real AI to speak of.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>For this tutorial, we will show how to add a simple state-machine AI for monsters. NPCs will only be shop-keepers and quest-gives so they wont need any real AI to speak of.</p>
</section>
<section id="are-npcs-and-mobs-different-entities-how-do-they-differ">
<h3>Are NPCs and mobs different entities? How do they differ?<a class="headerlink" href="#are-npcs-and-mobs-different-entities-how-do-they-differ" title="Permalink to this headline"></a></h3>
<p>“Mobs” or “mobiles” are things that move around. This is traditionally monsters you can fight with, but could
also be city guards or the baker going to chat with the neighbor. Back in the day, they were often fundamentally
different these days its often easier to just make NPCs and mobs essentially the same thing.</p>
<p>In EvAdventure, both Monsters and NPCs will be the same type of thing; A monster could give you a quest
and an NPC might fight you as a mob as well as trade with you.</p>
<p>“Mobs” or “mobiles” are things that move around. This is traditionally monsters you can fight with, but could also be city guards or the baker going to chat with the neighbor. Back in the day, they were often fundamentally different these days its often easier to just make NPCs and mobs essentially the same thing.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>In EvAdventure, Monsters and NPCs do very different things, so they will be different classes, sharing some code where possible.</p>
</section>
<section id="should-there-be-npcs-giving-quests-if-so-how-do-you-track-quest-status">
<h3>_Should there be NPCs giving quests? If so, how do you track Quest status?<a class="headerlink" href="#should-there-be-npcs-giving-quests-if-so-how-do-you-track-quest-status" title="Permalink to this headline"></a></h3>
<p>We will design a simple quest system to track the status of ongoing quests.</p>
<p>Quests are a staple of many classic RPGs.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>We will design a simple quest system with some simple conditions for success, like carrying the right item or items back to the quest giver.</p>
</section>
</section>
<section id="characters">
<h2>Characters<a class="headerlink" href="#characters" title="Permalink to this headline"></a></h2>
<section id="can-players-have-more-than-one-character-active-at-a-time-or-are-they-allowed-to-multi-play">
<h3>Can players have more than one Character active at a time or are they allowed to multi-play?<a class="headerlink" href="#can-players-have-more-than-one-character-active-at-a-time-or-are-they-allowed-to-multi-play" title="Permalink to this headline"></a></h3>
<p>Since Evennia differentiates between <code class="docutils literal notranslate"><span class="pre">Sessions</span></code> (the client-connection to the game), <code class="docutils literal notranslate"><span class="pre">Accounts</span></code>
and <code class="docutils literal notranslate"><span class="pre">Character</span></code>s, it natively supports multi-play. This is controlled by the <code class="docutils literal notranslate"><span class="pre">MULTISESSION_MODE</span></code>
setting, which has a value from <code class="docutils literal notranslate"><span class="pre">0</span></code> (default) to <code class="docutils literal notranslate"><span class="pre">3</span></code>.</p>
<p>Since Evennia differentiates between <code class="docutils literal notranslate"><span class="pre">Sessions</span></code> (the client-connection to the game), <code class="docutils literal notranslate"><span class="pre">Accounts</span></code> and <code class="docutils literal notranslate"><span class="pre">Character</span></code>s, it natively supports multi-play. This is controlled by the <code class="docutils literal notranslate"><span class="pre">MULTISESSION_MODE</span></code> setting, which has a value from <code class="docutils literal notranslate"><span class="pre">0</span></code> (default) to <code class="docutils literal notranslate"><span class="pre">3</span></code>.</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">0</span></code>- One Character per Account and one Session per Account. This means that if you login to the same
account from another client youll be disconnected from the first. When creating a new account, a Character
@ -347,31 +331,28 @@ open, but only one client per Character.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">3</span></code> - Multiple Characters per Account, Multiple Sessions per Character. This is like mode 2, except players
can control each Character from multiple clients, seeing the same output from each Character.</p></li>
</ul>
<p>We will go with a multi-role game, so we will use <code class="docutils literal notranslate"><span class="pre">MULTISESSION_MODE=3</span></code> for this tutorial.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>Due to the nature of <em>Knave</em>, characters are squishy and probably short-lived. So it makes little sense to keep a stable of them. Well use use mode 0 or 1.</p>
</section>
<section id="how-does-the-character-generation-work">
<h3>How does the character-generation work?<a class="headerlink" href="#how-does-the-character-generation-work" title="Permalink to this headline"></a></h3>
<p>There are a few common ways to do character generation:</p>
<ul class="simple">
<li><p>Rooms. This is the traditional way. Each rooms description tells you what command to use to modify
your character. When you are done you move to the next room. Only use this if you have another reason for
using a room, like having a training dummy to test skills on, for example.</p></li>
<li><p>A Menu. The Evennia <em>EvMenu</em> system allows you to code very flexible in-game menus without needing to walk
between rooms. You can both have a step-by-step menu (a wizard) or allow the user to jump between the
<li><p>Rooms. This is the traditional way. Each rooms description tells you what command to use to modify your character. When you are done you move to the next room. Only use this if you have another reason for using a room, like having a training dummy to test skills on, for example.</p></li>
<li><p>A Menu. The Evennia <em>EvMenu</em> system allows you to code very flexible in-game menus without needing to walk between rooms. You can both have a step-by-step menu (a wizard) or allow the user to jump between the
steps as they please. This tends to be a lot easier for newcomers to understand since it doesnt require
using custom commands they will likely never use again after this.</p></li>
<li><p>Questions. A fun way to build a character is to answer a series of questions. This is usually implemented
with a sequential menu.</p></li>
<li><p>Questions. A fun way to build a character is to answer a series of questions. This is usually implemented with a sequential menu.</p></li>
</ul>
<p>For the tutorial we will use a menu to let the user modify each section of their character sheet in any order
until they are happy.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>Knave randomizes almost aspects of the Character generation. Well use a menu to let the player add their name and sex as well as do the minor re-assignment of stats allowed by the rules.</p>
</section>
<section id="how-do-you-implement-different-classes-or-races">
<h3>How do you implement different “classes” or “races”?<a class="headerlink" href="#how-do-you-implement-different-classes-or-races" title="Permalink to this headline"></a></h3>
<p>The way classes and races work in most RPGs (as well as in OpenAdventure) is that they act as static templates
that inform which bonuses and special abilities you have. This means that all we need to store on the
Character is <em>which</em> class and <em>which</em> race they have; the actual logic can sit in Python code and just
be looked up when we need it.</p>
<p>The way classes and races work in most RPGs is that they act as static templates that inform which bonuses and special abilities you have. Much of this only comes into play during character generation or when leveling up.</p>
<p>Often all we need to store on the Character is <em>which</em> class and <em>which</em> race they have; the actual logic can sit in Python code and just be looked up when we need it.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>There are no races and no classes in <em>Knave</em>. Every character is a human.</p>
</section>
<section id="if-a-character-can-hide-in-a-room-what-skill-will-decide-if-they-are-detected">
<h3>If a Character can hide in a room, what skill will decide if they are detected?<a class="headerlink" href="#if-a-character-can-hide-in-a-room-what-skill-will-decide-if-they-are-detected" title="Permalink to this headline"></a></h3>
@ -384,15 +365,15 @@ or <code class="docutils literal notranslate"><span class="pre">look</span> <spa
find the person (probably based on skill checks).</p></li>
<li><p>The room will also need to be involved, maybe with some modifier as to how easy it is to hide in the room.</p></li>
</ul>
<p>We will <em>not</em> be including a hide-mechanic in EvAdventure though.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>We will not be including a hide-mechanic in EvAdventure.</p>
</section>
<section id="what-does-the-skill-tree-look-like-can-a-character-gain-experience-to-improve-by-killing-enemies-solving-quests-by-roleplaying">
<h3>What does the skill tree look like? Can a Character gain experience to improve? By killing enemies? Solving quests? By roleplaying?<a class="headerlink" href="#what-does-the-skill-tree-look-like-can-a-character-gain-experience-to-improve-by-killing-enemies-solving-quests-by-roleplaying" title="Permalink to this headline"></a></h3>
<p>Gaining experience points (XP) and improving ones character is a staple of roleplaying games. There are many
ways to implement this:</p>
<ul class="simple">
<li><p>Gaining XP from kills is very common; its easy to let a monster be worth a certain number of XP and its
easy to tell when you should gain it.</p></li>
<li><p>Gaining XP from kills is very common; its easy to let a monster be worth a certain number of XP and its easy to tell when you should gain it.</p></li>
<li><p>Gaining XP from quests is the same - each quest is worth XP and you get them when completing the test.</p></li>
<li><p>Gaining XP from roleplay is harder to define. Different games have tried a lot of different ways to do this:</p>
<ul>
@ -407,19 +388,16 @@ you gain XP only for running when you run, XP for your axe skill when you fight
</ul>
</li>
</ul>
<p>For EvAdventure we will use Open Adventures rules for XP, which will be driven by kills and quest successes.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>We will use an alternative rule in <em>Knave</em>, where Characters gain XP by spending coins they carry back from their adventures. The above-ground merchants will allow you to spend your coins and exchange them for XP 1:1. Each level costs 1000 coins. Every level you have <code class="docutils literal notranslate"><span class="pre">1d8</span>&#160; <span class="pre">*</span> <span class="pre">new</span> <span class="pre">level</span></code> (minimum what you had before + 1) HP, and can raise 3 different ability scores by 1 (max +10). There are no skills in <em>Knave</em>, but the principle of increasing them would be the same.</p>
</section>
<section id="may-player-characters-attack-each-other-pvp">
<h3>May player-characters attack each other (PvP)?<a class="headerlink" href="#may-player-characters-attack-each-other-pvp" title="Permalink to this headline"></a></h3>
<p>Deciding this affects the style of your entire game. PvP makes for exciting gameplay but it opens a whole new
can of worms when it comes to “fairness”. Players will usually accept dying to an overpowered NPC dragon. They
will not be as accepting if they perceive another player is perceived as being overpowered. PvP means that you
have to be very careful to balance the game - all characters does not have to be exactly equal but they should
all be viable to play a fun game with. PvP does not only mean combat though. Players can compete in all sorts of ways, including gaining influence in
a political game or gaining market share when selling their crafted merchandise.</p>
<p>For the EvAdventure we will support both Player-vs-environment combat and turn-based PvP. We will allow players
to barter with each other (so potentially scam others?) but thats the extent of it. We will focus on showing
off techniques and will not focus on making a balanced game.</p>
<p>Deciding this affects the style of your entire game. PvP makes for exciting gameplay but it opens a whole new can of worms when it comes to “fairness”. Players will usually accept dying to an overpowered NPC dragon. They will not be as accepting if they perceive another player as being overpowered. PvP means that you
have to be very careful to balance the game - all characters does not have to be exactly equal but they should all be viable to play a fun game with.</p>
<p>PvP does not only mean combat though. Players can compete in all sorts of ways, including gaining influence in a political game or gaining market share when selling their crafted merchandise.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>We will allow PvP only in one place - a special Dueling location where players can play-fight each other for training and prestige, but not actually get killed. Otherwise no PvP will be allowed. Note that without a full Barter system in place (just regular <code class="docutils literal notranslate"><span class="pre">give</span></code>, it makes it theoretically easier for players to scam one another.</p>
</section>
<section id="what-are-the-penalties-of-defeat-permanent-death-quick-respawn-time-in-prison">
<h3>What are the penalties of defeat? Permanent death? Quick respawn? Time in prison?<a class="headerlink" href="#what-are-the-penalties-of-defeat-permanent-death-quick-respawn-time-in-prison" title="Permalink to this headline"></a></h3>
@ -436,36 +414,34 @@ up for newcomers.</p></li>
</ul>
<p>Perma-death comes with some severe disadvantages however.</p>
<ul class="simple">
<li><p>Its impopular. Many players will just not play a game where they risk losing their beloved character
just like that.</p></li>
<li><p>Many players say they like the <em>idea</em> of permadeath except when it could happen to them.</p></li>
<li><p>It can limit roleplaying freedom and make people refuse to take any risks.</p></li>
<li><p>Some players refuse to take any risks if death is permanent.</p></li>
<li><p>It may make players even more reluctant to play conflict-driving bad guys.</p></li>
<li><p>Game balance is much, much more important when results are “final”. This escalates the severity of unfairness
a hundred-fold. Things like bugs or exploits can also lead to much more server effects.</p></li>
<li><p>Balancing PvP becomes very hard. Fairness and avoiding exploits becomes critical when the outcome
is permanent.</p></li>
</ul>
<p>For these reasons, its very common to do hybrid systems. Some tried variations:</p>
<ul class="simple">
<li><p>NPCs cannot kill you, only other players can.</p></li>
<li><p>Death is permanent, but its difficult to actually die - you are much more likely to end up being severely
hurt/incapacitated.</p></li>
<li><p>Death is permanent, but its difficult to actually die - you are much more likely to end up being severely hurt/incapacitated.</p></li>
<li><p>You can pre-pay insurance to magically/technologically avoid actually dying. Only if dont have insurance will
you die permanently.</p></li>
<li><p>Death just means harsh penalties, not actual death.</p></li>
<li><p>When you die you can fight your way back to life from some sort of afterlife.</p></li>
<li><p>Youll only die permanently if you as a player explicitly allows it.</p></li>
</ul>
<p>For our tutorial-game we will not be messing with perma-death; instead your defeat will mean you will re-spawn
back at your home location with a fraction of your health.</p>
<p><strong>EvAdventure Answer</strong></p>
<p>In <em>Knave</em>, when you hit 0 HP, you roll on a death table, with a 1/8 chance of immediate death (otherwise you lose
points in a random stat). We will offer an “Insurance” that allows you to resurrect if you carry enough coin on you when
you die. If not, you are perma-dead and have to create a new character (which is easy and quick since its mostly
randomized).</p>
</section>
</section>
<section id="conclusions">
<h2>Conclusions<a class="headerlink" href="#conclusions" title="Permalink to this headline"></a></h2>
<p>Going through the questions has helped us get a little bit more of a feel for the game we want to do. There are
many other things we could ask ourselves, but if we can cover these points we will be a good way towards a complete,
<p>Going through the questions has helped us get a little bit more of a feel for the game we want to do. There are many, many other things we could ask ourselves, but if we can cover these points we will be a good way towards a complete,
playable game!</p>
<p>Before starting to code in earnest a good coder should always do an inventory of all the stuff they <em>dont</em> need
to code themselves. So in the next lesson we will check out what help we have from Evennias <em>contribs</em>.</p>
<p>In the last of these planning lessons well sketch out how these ideas will map to Evennia.</p>
</section>
</section>
@ -492,6 +468,7 @@ to code themselves. So in the next lesson we will check out what help we have fr
<p><h3><a href="../../../index.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Planning our tutorial game</a><ul>
<li><a class="reference internal" href="#game-concept">Game concept</a></li>
<li><a class="reference internal" href="#administration">Administration</a><ul>
<li><a class="reference internal" href="#should-your-game-rules-be-enforced-by-coded-systems-by-human-game-masters">Should your game rules be enforced by coded systems by human game masters?</a></li>
<li><a class="reference internal" href="#what-is-the-staff-hierarchy-in-your-game-is-vanilla-evennia-roles-enough-or-do-you-need-something-else">What is the staff hierarchy in your game? Is vanilla Evennia roles enough or do you need something else?</a></li>
@ -522,7 +499,7 @@ to code themselves. So in the next lesson we will check out what help we have fr
<li><a class="reference internal" href="#objects">Objects</a><ul>
<li><a class="reference internal" href="#how-numerous-are-your-objects-do-you-want-large-loot-lists-or-are-objects-just-role-playing-props">How numerous are your objects? Do you want large loot-lists or are objects just role playing props?</a></li>
<li><a class="reference internal" href="#is-each-coin-a-separate-object-or-do-you-just-store-a-bank-account-value">Is each coin a separate object or do you just store a bank account value?</a></li>
<li><a class="reference internal" href="#do-multiple-similar-objects-form-stacks-and-how-are-those-stacks-handled-in-that-case">Do multiple similar objects form stacks and how are those stacks handled in that case?</a></li>
<li><a class="reference internal" href="#do-multiple-similar-objects-form-stack-and-how-are-those-stacks-handled-in-that-case">Do multiple similar objects form stack and how are those stacks handled in that case?</a></li>
<li><a class="reference internal" href="#does-an-object-have-weight-or-volume-so-you-cannot-carry-an-infinite-amount-of-them">Does an object have weight or volume (so you cannot carry an infinite amount of them)?</a></li>
<li><a class="reference internal" href="#can-objects-be-broken-can-they-be-repaired">Can objects be broken? Can they be repaired?</a></li>
<li><a class="reference internal" href="#can-you-fight-with-a-chair-or-a-flower-or-must-you-use-a-special-weapon-kind-of-thing">Can you fight with a chair or a flower or must you use a special weapon kind of thing?</a></li>
@ -548,15 +525,15 @@ to code themselves. So in the next lesson we will check out what help we have fr
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="Planning-Some-Useful-Contribs.html"
title="previous chapter">Planning the use of some useful contribs</a></p>
<p class="topless"><a href="Beginner-Tutorial-Game-Planning.html"
title="previous chapter">On Planning a Game</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="../Part3/Beginner-Tutorial-Part3-Intro.html"
title="next chapter">Part 3: How we get there</a></p>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../../../_sources/Howtos/Beginner-Tutorial/Part2/Planning-The-Tutorial-Game.md.txt"
<li><a href="../../../_sources/Howtos/Beginner-Tutorial/Part2/Beginner-Tutorial-Planning-The-Tutorial-Game.md.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div><h3>Links</h3>
@ -572,7 +549,7 @@ to code themselves. So in the next lesson we will check out what help we have fr
</ul>
<h3>Versions</h3>
<ul>
<li><a href="Planning-The-Tutorial-Game.html">1.0-dev (develop branch)</a></li>
<li><a href="Beginner-Tutorial-Planning-The-Tutorial-Game.html">1.0-dev (develop branch)</a></li>
<li><a href="../../../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
@ -593,7 +570,7 @@ to code themselves. So in the next lesson we will check out what help we have fr
<a href="../Part3/Beginner-Tutorial-Part3-Intro.html" title="Part 3: How we get there"
>next</a> |</li>
<li class="right" >
<a href="Planning-Some-Useful-Contribs.html" title="Planning the use of some useful contribs"
<a href="Beginner-Tutorial-Game-Planning.html" title="On Planning a Game"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../../../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../../Howtos-Overview.html" >Tutorials and Howtos</a> &#187;</li>

View file

@ -17,7 +17,7 @@
<link rel="shortcut icon" href="../../../_static/favicon.ico"/>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="On Planning a Game" href="Game-Planning.html" />
<link rel="next" title="On Planning a Game" href="Beginner-Tutorial-Game-Planning.html" />
<link rel="prev" title="Part 2: What we want" href="Beginner-Tutorial-Part2-Intro.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
@ -30,7 +30,7 @@
<a href="../../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="Game-Planning.html" title="On Planning a Game"
<a href="Beginner-Tutorial-Game-Planning.html" title="On Planning a Game"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="Beginner-Tutorial-Part2-Intro.html" title="Part 2: What we want"
@ -225,12 +225,12 @@ then try to answer those questions for the sake of creating our little tutorial
<p class="topless"><a href="Beginner-Tutorial-Part2-Intro.html"
title="previous chapter">Part 2: What we want</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="Game-Planning.html"
<p class="topless"><a href="Beginner-Tutorial-Game-Planning.html"
title="next chapter">On Planning a Game</a></p>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../../../_sources/Howtos/Beginner-Tutorial/Part2/Planning-Where-Do-I-Begin.md.txt"
<li><a href="../../../_sources/Howtos/Beginner-Tutorial/Part2/Beginner-Tutorial-Planning-Where-Do-I-Begin.md.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div><h3>Links</h3>
@ -246,7 +246,7 @@ then try to answer those questions for the sake of creating our little tutorial
</ul>
<h3>Versions</h3>
<ul>
<li><a href="Planning-Where-Do-I-Begin.html">1.0-dev (develop branch)</a></li>
<li><a href="Beginner-Tutorial-Planning-Where-Do-I-Begin.html">1.0-dev (develop branch)</a></li>
<li><a href="../../../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
@ -264,7 +264,7 @@ then try to answer those questions for the sake of creating our little tutorial
<a href="../../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="Game-Planning.html" title="On Planning a Game"
<a href="Beginner-Tutorial-Game-Planning.html" title="On Planning a Game"
>next</a> |</li>
<li class="right" >
<a href="Beginner-Tutorial-Part2-Intro.html" title="Part 2: What we want"

View file

@ -1,370 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Planning the use of some useful contribs &#8212; Evennia 1.0-dev documentation</title>
<link rel="stylesheet" href="../../../_static/nature.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/language_data.js"></script>
<link rel="shortcut icon" href="../../../_static/favicon.ico"/>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="Planning our tutorial game" href="Planning-The-Tutorial-Game.html" />
<link rel="prev" title="On Planning a Game" href="Game-Planning.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="Planning-The-Tutorial-Game.html" title="Planning our tutorial game"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="Game-Planning.html" title="On Planning a Game"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../../../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../../Howtos-Overview.html" >Tutorials and Howtos</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="../Beginner-Tutorial-Intro.html" >Beginner Tutorial</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="Beginner-Tutorial-Part2-Intro.html" accesskey="U">Part 2: What we want</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Planning the use of some useful contribs</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section class="tex2jax_ignore mathjax_ignore" id="planning-the-use-of-some-useful-contribs">
<h1>Planning the use of some useful contribs<a class="headerlink" href="#planning-the-use-of-some-useful-contribs" title="Permalink to this headline"></a></h1>
<p>Evennia is deliberately bare-bones out of the box. The idea is that you should be as unrestricted as possible
in designing your game. This is why you can easily replace the few defaults we have and why we dont try to
prescribe any major game systems on you.</p>
<p>That said, Evennia <em>does</em> offer some more game-opinionated <em>optional</em> stuff. These are referred to as <em>Contribs</em>
and is an ever-growing treasure trove of code snippets, concepts and even full systems you can pick and choose
from to use, tweak or take inspiration from when you make your game.</p>
<p>The <a class="reference internal" href="../../../Contribs/Contribs-Overview.html"><span class="doc std std-doc">Contrib overview</span></a> page gives the full list of the current roster of contributions. On
this page we will review a few contribs we will make use of for our game. We will do the actual installation
of them when we start coding in the next part of this tutorial series. While we will introduce them here, you
are wise to read their doc-strings yourself for the details.</p>
<p>This is the things we know we need:</p>
<ul class="simple">
<li><p>A barter system</p></li>
<li><p>Character generation</p></li>
<li><p>Some concept of wearing armor</p></li>
<li><p>The ability to roll dice</p></li>
<li><p>Rooms with awareness of day, night and season</p></li>
<li><p>Roleplaying with short-descs, poses and emotes</p></li>
<li><p>Quests</p></li>
<li><p>Combat (with players and against monsters)</p></li>
</ul>
<section id="barter-contrib">
<h2>Barter contrib<a class="headerlink" href="#barter-contrib" title="Permalink to this headline"></a></h2>
<p><a class="reference internal" href="../../../api/evennia.contrib.game_systems.barter.html"><span class="doc std std-doc">source</span></a></p>
<p>Reviewing this contrib suggests that it allows for safe trading between two parties. The basic principle
is that the parties puts up the stuff they want to sell and the system will guarantee that these systems are
exactly what is being offered. Both sides can modify their offers (bartering) until both mark themselves happy
with the deal. Only then the deal is sealed and the objects are exchanged automatically. Interestingly, this
works just fine for money too - just put coin objects on one side of the transaction.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>Sue &gt; trade Tom: Hi, I have a necklace to sell; wanna trade for a healing potion?
Tom &gt; trade Sue: Hm, I could use a necklace ...
&lt;both accepted trade. Start trade&gt;
Sue &gt; offer necklace: This necklace is really worth it.
Tom &gt; evaluate necklace:
&lt;Tom sees necklace stats&gt;
Tom &gt; offer ration: I don&#39;t have a healing potion, but I&#39;ll trade you an iron ration!
Sue &gt; Hey, this is a nice necklace, I need more than a ration for it...
Tom &gt; offer ration, 10gold: Ok, a ration and 10 gold as well.
Sue &gt; accept: Ok, that sounds fair!
Tom &gt; accept: Good! Nice doing business with you.
&lt;goods change hands automatically. Trade ends&gt;
</pre></div>
</div>
<p>Arguably, in a small game you are just fine to just talk to people and use <code class="docutils literal notranslate"><span class="pre">give</span></code> to do the exchange. The
barter system guarantees trading safety if you dont trust your counterpart to try to give you the wrong thing or
to run away with your money.</p>
<p>We will use the barter contrib as an optional feature for player-player bartering. More importantly we can
add it for NPC shopkeepers and expand it with a little AI, which allows them to potentially trade in other
things than boring gold coin.</p>
</section>
<section id="clothing-contrib">
<h2>Clothing contrib<a class="headerlink" href="#clothing-contrib" title="Permalink to this headline"></a></h2>
<p><a class="reference internal" href="../../../api/evennia.contrib.game_systems.clothing.html"><span class="doc std std-doc">source</span></a></p>
<p>This contrib provides a full system primarily aimed at wearing clothes, but it could also work for armor. You wear
an object in a particular location and this will then be reflected in your characters description. You can
also add roleplaying flavor:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>&gt; wear helmet slightly askew on her head
look self
Username is wearing a helmet slightly askew on her head.
</pre></div>
</div>
<p>By default there are no body locations in this contrib, we will need to expand on it a little to make it useful
for things like armor. Its a good contrib to build from though, so thats what well do.</p>
</section>
<section id="dice-contrib">
<h2>Dice contrib<a class="headerlink" href="#dice-contrib" title="Permalink to this headline"></a></h2>
<p><a class="reference internal" href="../../../api/evennia.contrib.rpg.dice.html"><span class="doc std std-doc">source</span></a></p>
<p>The dice contrib presents a general dice roller to use in game.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>&gt; roll 2d6
Roll(s): 2 and 5. Total result is 7.
&gt; roll 1d100 + 2
Roll(s): 43. Total result is 47
&gt; roll 1d20 &gt; 12
Roll(s): 7. Total result is 7. This is a failure (by 5)
&gt; roll/hidden 1d20 &gt; 12
Roll(s): 18. Total result is 17. This is a success (by 6). (not echoed)
</pre></div>
</div>
<p>The contrib also has a python function for producing these results in-code. However, while
we will emulate rolls for our rule system, well do this as simply as possible with Pythons <code class="docutils literal notranslate"><span class="pre">random</span></code>
module.</p>
<p>So while this contrib is fun to have around for GMs or for players who want to get a random result
or play a game, we will not need it for the core of our game.</p>
</section>
<section id="extended-room-contrib">
<h2>Extended room contrib<a class="headerlink" href="#extended-room-contrib" title="Permalink to this headline"></a></h2>
<p><a class="reference internal" href="../../../api/evennia.contrib.grid.extended_room.html"><span class="doc std std-doc">source</span></a></p>
<p>This is a custom Room typeclass that changes its description based on time of day and season.</p>
<p>For example, at night, in wintertime you could show the room as being dark and frost-covered while in daylight
at summer it could describe a flowering meadow. The description can also contain special markers, so
<code class="docutils literal notranslate"><span class="pre">&lt;morning&gt;</span> <span class="pre">...</span> <span class="pre">&lt;/morning&gt;</span></code> would include text only visible at morning.</p>
<p>The extended room also supports <em>details</em>, which are things to “look at” in the room without there having
to be a separate database object created for it. For example, a player in a church may do <code class="docutils literal notranslate"><span class="pre">look</span> <span class="pre">window</span></code> and
get a description of the windows without there needing to be an actual <code class="docutils literal notranslate"><span class="pre">window</span></code> object in the room.</p>
<p>Adding all those extra descriptions can be a lot of work, so they are optional; if not given the room works
like a normal room.</p>
<p>The contrib is simple to add and provides a lot of optional flexibility, so well add it to our
game, why not!</p>
</section>
<section id="rp-system-contrib">
<h2>RP-System contrib<a class="headerlink" href="#rp-system-contrib" title="Permalink to this headline"></a></h2>
<p><a class="reference internal" href="../../../api/evennia.contrib.rpg.rpsystem.html"><span class="doc std std-doc">source</span></a></p>
<p>This contrib adds a full roleplaying subsystem to your game. It gives every character a “short-description”
(sdesc) that is what people will see when first meeting them. Lets say Tom has an sdesc “A tall man” and
Sue has the sdesc “A muscular, blonde woman”</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>Tom &gt; look
Tom: &lt;room desc&gt; ... You see: A muscular, blonde woman
Tom &gt; emote /me smiles to /muscular.
Tom: Tom smiles to A muscular, blonde woman.
Sue: A tall man smiles to Sue.
Tom &gt; emote Leaning forward, /me says, &quot;Well hello, what&#39;s yer name?&quot;
Tom: Leaning forward, Tom says, &quot;Well hello...&quot;
Sue: Leaning forward, A tall man says, &quot;Well hello, what&#39;s yer name?&quot;
Sue &gt; emote /me grins. &quot;I&#39;m Angelica&quot;, she says.
Sue: Sue grins. &quot;I&#39;m Angelica&quot;, she says.
Tom: A muscular, blonde woman grins. &quot;I&#39;m Angelica&quot;, she says.
Tom &gt; recog muscular Angelica
Tom &gt; emote /me nods to /angelica: &quot;I have a message for you ...&quot;
Tom: Tom nods to Angelica: &quot;I have a message for you ...&quot;
Sue: A tall man nods to Sue: &quot;I have a message for you ...&quot;
</pre></div>
</div>
<p>Above, Sue introduces herself as “Angelica” and Tom uses this info to <code class="docutils literal notranslate"><span class="pre">recoc</span></code> her as “Angelica” hereafter. He
could have <code class="docutils literal notranslate"><span class="pre">recoc</span></code>-ed her with whatever name he liked - its only for his own benefit. There is no separate
<code class="docutils literal notranslate"><span class="pre">say</span></code>, the spoken words are embedded in the emotes in quotes <code class="docutils literal notranslate"><span class="pre">&quot;...&quot;</span></code>.</p>
<p>The RPSystem module also includes options for <code class="docutils literal notranslate"><span class="pre">poses</span></code>, which help to establish your position in the room
when others look at you.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>Tom &gt; pose stands by the bar, looking bored.
Sue &gt; look
Sue: &lt;room desc&gt; ... A tall man stands by the bar, looking bored.
</pre></div>
</div>
<p>You can also wear a mask to hide your identity; your sdesc will then be changed to the sdesc of the mask,
like <code class="docutils literal notranslate"><span class="pre">a</span> <span class="pre">person</span> <span class="pre">with</span> <span class="pre">a</span> <span class="pre">mask</span></code>.</p>
<p>The RPSystem gives a lot of roleplaying power out of the box, so we will add it. There is also a separate
<a class="reference internal" href="../../../api/evennia.contrib.rpg.rpsystem.html"><span class="doc std std-doc">rplanguage</span></a> module that integrates with the spoken words in your emotes and garbles them if you dont understand
the language spoken. In order to restrict the scope we will not include languages for the tutorial game.</p>
</section>
<section id="talking-npc-contrib">
<h2>Talking NPC contrib<a class="headerlink" href="#talking-npc-contrib" title="Permalink to this headline"></a></h2>
<p><a class="reference internal" href="../../../api/evennia.contrib.tutorials.talking_npc.html"><span class="doc std std-doc">source</span></a></p>
<p>This exemplifies an NPC with a menu-driven dialogue tree. We will not use this contrib explicitly, but its
good as inspiration for how well do quest-givers later.</p>
</section>
<section id="traits-contrib">
<h2>Traits contrib<a class="headerlink" href="#traits-contrib" title="Permalink to this headline"></a></h2>
<p><a class="reference internal" href="../../../api/evennia.contrib.rpg.traits.html"><span class="doc std std-doc">source</span></a></p>
<p>An issue with dealing with roleplaying attributes like strength, dexterity, or skills like hunting, sword etc
is how to keep track of the values in the moment. Your strength may temporarily be buffed by a strength-potion.
Your swordmanship may be worse because you are encumbered. And when you drink your health potion you must make
sure that those +20 health does not bring your health higher than its maximum. All this adds complexity.</p>
<p>The <em>Traits</em> contrib consists of several types of objects to help track and manage values like this. When
installed, the traits are accessed on a new handler <code class="docutils literal notranslate"><span class="pre">.traits</span></code>, for example</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>&gt; py self.traits.hp.value
100
&gt; py self.traits.hp -= 20 # getting hurt
&gt; py self.traits.hp.value
80
&gt; py self.traits.hp.reset() # drink a potion
&gt; py self.traits.hp.value
100
</pre></div>
</div>
<p>A Trait is persistent (it uses an Attribute under the hood) and tracks changes, min/max and other things
automatically. They can also be added together in various mathematical operations.</p>
<p>The contrib introduces three main Trait-classes</p>
<ul class="simple">
<li><p><em>Static</em> traits for single values like str, dex, things that at most gets a modifier.</p></li>
<li><p><em>Counters</em> is a value that never moves outside a given range, even with modifiers. For example a skill
that can at most get a maximum amount of buff. Counters can also easily be <em>timed</em> so that they decrease
or increase with a certain rate per second. This could be good for a time-limited curse for example.</p></li>
<li><p><em>Gauge</em> is like a fuel-gauge; it starts at a max value and then empties gradually. This is perfect for
things like health, stamina and the like. Gauges can also change with a rate, which works well for the
effects of slow poisons and healing both.</p></li>
</ul>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&gt;</span> <span class="n">py</span> <span class="bp">self</span><span class="o">.</span><span class="n">traits</span><span class="o">.</span><span class="n">hp</span><span class="o">.</span><span class="n">value</span>
<span class="mi">100</span>
<span class="o">&gt;</span> <span class="n">py</span> <span class="bp">self</span><span class="o">.</span><span class="n">traits</span><span class="o">.</span><span class="n">hp</span><span class="o">.</span><span class="n">rate</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> <span class="c1"># poisoned!</span>
<span class="o">&gt;</span> <span class="n">py</span> <span class="bp">self</span><span class="o">.</span><span class="n">traits</span><span class="o">.</span><span class="n">hp</span><span class="o">.</span><span class="n">ratetarget</span> <span class="o">=</span> <span class="mi">50</span> <span class="c1"># stop at 50 hp</span>
<span class="c1"># Wait 30s</span>
<span class="o">&gt;</span> <span class="n">py</span> <span class="bp">self</span><span class="o">.</span><span class="n">traits</span><span class="o">.</span><span class="n">hp</span><span class="o">.</span><span class="n">value</span>
<span class="mi">70</span>
<span class="c1"># Wait another 30s</span>
<span class="o">&gt;</span> <span class="n">py</span> <span class="bp">self</span><span class="o">.</span><span class="n">traits</span><span class="o">.</span><span class="n">hp</span><span class="o">.</span><span class="n">value</span>
<span class="mi">50</span> <span class="c1"># stopped at 50</span>
<span class="o">&gt;</span> <span class="n">py</span> <span class="bp">self</span><span class="o">.</span><span class="n">traits</span><span class="o">.</span><span class="n">hp</span><span class="o">.</span><span class="n">rate</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># no more poison</span>
<span class="o">&gt;</span> <span class="n">py</span> <span class="bp">self</span><span class="o">.</span><span class="n">traits</span><span class="o">.</span><span class="n">hp</span><span class="o">.</span><span class="n">rate</span> <span class="o">=</span> <span class="mi">5</span> <span class="c1"># healing magic!</span>
<span class="c1"># wait 5s</span>
<span class="o">&gt;</span> <span class="n">pyself</span><span class="o">.</span><span class="n">traits</span><span class="o">.</span><span class="n">hp</span><span class="o">.</span><span class="n">value</span>
<span class="mi">75</span>
</pre></div>
</div>
<p>Traits will be very practical to use for our character sheets.</p>
</section>
<section id="turnbattle-contrib">
<h2>Turnbattle contrib<a class="headerlink" href="#turnbattle-contrib" title="Permalink to this headline"></a></h2>
<p><a class="reference internal" href="../../../api/evennia.contrib.game_systems.turnbattle.html"><span class="doc std std-doc">source</span></a></p>
<p>This contrib consists of several implementations of a turn-based combat system, divivided into complexity:</p>
<ul class="simple">
<li><p>basic - initiative and turn order, attacks against defense values, damage.</p></li>
<li><p>equip - considers weapons and armor, wielding and weapon accuracy.</p></li>
<li><p>items - adds usable items with conditions and status effects</p></li>
<li><p>magic - adds spellcasting system using MP.</p></li>
<li><p>range - adds abstract positioning and 1D movement to differentiate between melee and ranged attacks.</p></li>
</ul>
<p>The turnbattle system is comprehensive, but its meant as a base to start from rather than offer
a complete system. Its also not built with <em>Traits</em> in mind, so we will need to adjust it for that.</p>
</section>
<section id="conclusions">
<h2>Conclusions<a class="headerlink" href="#conclusions" title="Permalink to this headline"></a></h2>
<p>With some contribs selected, we have pieces to build from and dont have to write everything from scratch.
We will need Quests and will likely need to do a bunch of work on Combat to adapt the combat contrib
to our needs.</p>
<p>We will now move into actually starting to implement our tutorial game
in the next part of this tutorial series. When doing this for yourself, remember to refer
back to your planning and adjust it as you learn what works and what does not.</p>
</section>
</section>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../../../index.html">
<img class="logo" src="../../../_static/evennia_logo.png" alt="Logo"/>
</a></p>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
<p><h3><a href="../../../index.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Planning the use of some useful contribs</a><ul>
<li><a class="reference internal" href="#barter-contrib">Barter contrib</a></li>
<li><a class="reference internal" href="#clothing-contrib">Clothing contrib</a></li>
<li><a class="reference internal" href="#dice-contrib">Dice contrib</a></li>
<li><a class="reference internal" href="#extended-room-contrib">Extended room contrib</a></li>
<li><a class="reference internal" href="#rp-system-contrib">RP-System contrib</a></li>
<li><a class="reference internal" href="#talking-npc-contrib">Talking NPC contrib</a></li>
<li><a class="reference internal" href="#traits-contrib">Traits contrib</a></li>
<li><a class="reference internal" href="#turnbattle-contrib">Turnbattle contrib</a></li>
<li><a class="reference internal" href="#conclusions">Conclusions</a></li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="Game-Planning.html"
title="previous chapter">On Planning a Game</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="Planning-The-Tutorial-Game.html"
title="next chapter">Planning our tutorial game</a></p>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../../../_sources/Howtos/Beginner-Tutorial/Part2/Planning-Some-Useful-Contribs.md.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div><h3>Links</h3>
<ul>
<li><a href="https://www.evennia.com">Home page</a> </li>
<li><a href="https://github.com/evennia/evennia">Evennia Github</a> </li>
<li><a href="http://games.evennia.com">Game Index</a> </li>
<li>
<a href="https://discord.gg/AJJpcRUhtF">Discord</a> -
<a href="https://github.com/evennia/evennia/discussions">Discussions</a> -
<a href="https://evennia.blogspot.com/">Blog</a>
</li>
</ul>
<h3>Versions</h3>
<ul>
<li><a href="Planning-Some-Useful-Contribs.html">1.0-dev (develop branch)</a></li>
<li><a href="../../../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="Planning-The-Tutorial-Game.html" title="Planning our tutorial game"
>next</a> |</li>
<li class="right" >
<a href="Game-Planning.html" title="On Planning a Game"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../../../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../../Howtos-Overview.html" >Tutorials and Howtos</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="../Beginner-Tutorial-Intro.html" >Beginner Tutorial</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="Beginner-Tutorial-Part2-Intro.html" >Part 2: What we want</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Planning the use of some useful contribs</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>