mirror of
https://github.com/evennia/evennia.git
synced 2026-03-18 05:46:31 +01:00
335 lines
No EOL
22 KiB
HTML
335 lines
No EOL
22 KiB
HTML
|
||
<!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>Game Planning — Evennia 0.9.5 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>
|
||
<script async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||
<script type="text/x-mathjax-config">MathJax.Hub.Config({"tex2jax": {"processClass": "tex2jax_process|mathjax_process|math|output_area"}})</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" />
|
||
</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="nav-item nav-item-0"><a href="index.html">Evennia 0.9.5</a> »</li>
|
||
<li class="nav-item nav-item-this"><a href="">Game Planning</a></li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="document">
|
||
<div class="documentwrapper">
|
||
<div class="bodywrapper">
|
||
<div class="body" role="main">
|
||
|
||
<section class="tex2jax_ignore mathjax_ignore" id="game-planning">
|
||
<h1>Game Planning<a class="headerlink" href="#game-planning" title="Permalink to this headline">¶</a></h1>
|
||
<p>So you have Evennia up and running. You have a great game idea in mind. Now it’s time to start
|
||
cracking! But where to start? Here are some ideas for a workflow. Note that the suggestions on this
|
||
page are just that - suggestions. Also, they are primarily aimed at a lone hobby designer or a small
|
||
team developing a game in their free time.</p>
|
||
<p>Below are some minimal steps for getting the first version of a new game world going with players.
|
||
It’s worth to at least make the attempt to do these steps in order even if you are itching to jump
|
||
ahead in the development cycle. On the other hand, you should also make sure to keep your work fun
|
||
for you, or motivation will falter. Making a full game is a lot of work as it is, you’ll need all
|
||
your motivation to make it a reality.</p>
|
||
<p>Remember that <em>99.99999% of all great game ideas never lead to a game</em>. Especially not to an online
|
||
game that people can actually play and enjoy. So our first all overshadowing goal is to beat those
|
||
odds and get <em>something</em> out the door! Even if it’s a scaled-down version of your dream game,
|
||
lacking many “must-have” features! It’s better to get it out there and expand on it later than to
|
||
code in isolation forever until you burn out, lose interest or your hard drive crashes.</p>
|
||
<p>Like is common with online games, getting a game out the door does not mean you are going to be
|
||
“finished” with the game - most MUDs add features gradually over the course of years - it’s often
|
||
part of the fun!</p>
|
||
<section id="planning-step-1">
|
||
<h2>Planning (step 1)<a class="headerlink" href="#planning-step-1" title="Permalink to this headline">¶</a></h2>
|
||
<p>This is what you do before having coded a single line or built a single room. Many prospective game
|
||
developers are very good at <em>parts</em> of this process, namely in defining what their world is “about”:
|
||
The theme, the world concept, cool monsters and so on. It is by all means very important to define
|
||
what is the unique appeal of your game. But it’s unfortunately not enough to make your game a
|
||
reality. To do that you must also have an idea of how to actually map those great ideas onto
|
||
Evennia.</p>
|
||
<p>A good start is to begin by planning out the basic primitives of the game and what they need to be
|
||
able to do. Below are a far-from-complete list of examples (and for your first version you should
|
||
definitely try for a much shorter list):</p>
|
||
<section id="systems">
|
||
<h3>Systems<a class="headerlink" href="#systems" title="Permalink to this headline">¶</a></h3>
|
||
<p>These are the behind-the-scenes features that exist in your game, often without being represented by
|
||
a specific in-game object.</p>
|
||
<ul class="simple">
|
||
<li><p>Should your game rules be enforced by coded systems or are you planning for human game masters to
|
||
run and arbitrate rules?</p></li>
|
||
<li><p>What are the actual mechanical game rules? How do you decide if an action succeeds or fails? What
|
||
“rolls” does the game need to be able to do? Do you base your game off an existing system or make up
|
||
your own?</p></li>
|
||
<li><p>Does the flow of time matter in your game - does night and day change? What about seasons? Maybe
|
||
your magic system is affected by the phase of the moon?</p></li>
|
||
<li><p>Do you want changing, global weather? This might need to operate in tandem over a large number of
|
||
rooms.</p></li>
|
||
<li><p>Do you want a game-wide economy or just a simple barter system? Or no formal economy at all?</p></li>
|
||
<li><p>Should characters be able to send mail to each other in-game?</p></li>
|
||
<li><p>Should players be able to post on Bulletin boards?</p></li>
|
||
<li><p>What is the staff hierarchy in your game? What powers do you want your staff to have?</p></li>
|
||
<li><p>What should a Builder be able to build and what commands do they need in order to do that?</p></li>
|
||
<li><p>etc.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="rooms">
|
||
<h3>Rooms<a class="headerlink" href="#rooms" title="Permalink to this headline">¶</a></h3>
|
||
<p>Consider the most basic room in your game.</p>
|
||
<ul class="simple">
|
||
<li><p>Is a simple description enough or should the description be able to change (such as with time, by
|
||
light conditions, weather or season)?</p></li>
|
||
<li><p>Should the room have different statuses? Can it have smells, sounds? Can it be affected by
|
||
dramatic weather, fire or magical effects? If so, how would this affect things in the room? Or are
|
||
these things something admins/game masters should handle manually?</p></li>
|
||
<li><p>Can objects be hidden in the room? Can a person hide in the room? How does the room display this?</p></li>
|
||
<li><p>etc.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="objects">
|
||
<h3>Objects<a class="headerlink" href="#objects" title="Permalink to this headline">¶</a></h3>
|
||
<p>Consider the most basic (non-player-controlled) object in your game.</p>
|
||
<ul class="simple">
|
||
<li><p>How numerous are your objects? Do you want large loot-lists or are objects just role playing props
|
||
created on demand?</p></li>
|
||
<li><p>Does the game use money? If so, is each coin a separate object or do you just store a bank account
|
||
value?</p></li>
|
||
<li><p>What about multiple identical objects? Do they form stacks and how are those stacks handled in
|
||
that case?</p></li>
|
||
<li><p>Does an object have weight or volume (so you cannot carry an infinite amount of them)?</p></li>
|
||
<li><p>Can objects be broken? If so, does it have a health value? Is burning it causing the same damage
|
||
as smashing it? Can it be repaired?</p></li>
|
||
<li><p>Is a weapon a specific type of object or are you supposed to be able to fight with a chair too?
|
||
Can you fight with a flower or piece of paper as well?</p></li>
|
||
<li><p>NPCs/mobs are also objects. Should they just stand around or should they have some sort of AI?</p></li>
|
||
<li><p>Are NPCs/mobs differet entities? How is an Orc different from a Kobold, in code - are they the
|
||
same object with different names or completely different types of objects, with custom code?</p></li>
|
||
<li><p>Should there be NPCs giving quests? If so, how would you track quest status and what happens when
|
||
multiple players try to do the same quest? Do you use instances or some other mechanism?</p></li>
|
||
<li><p>etc.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="characters">
|
||
<h3>Characters<a class="headerlink" href="#characters" title="Permalink to this headline">¶</a></h3>
|
||
<p>These are the objects controlled directly by Players.</p>
|
||
<ul class="simple">
|
||
<li><p>Can players have more than one Character active at a time or are they allowed to multi-play?</p></li>
|
||
<li><p>How does a Player create their Character? A Character-creation screen? Answering questions?
|
||
Filling in a form?</p></li>
|
||
<li><p>Do you want to use classes (like “Thief”, “Warrior” etc) or some other system, like Skill-based?</p></li>
|
||
<li><p>How do you implement different “classes” or “races”? Are they separate types of objects or do you
|
||
simply load different stats on a basic object depending on what the Player wants?</p></li>
|
||
<li><p>If a Character can hide in a room, what skill will decide if they are detected?</p></li>
|
||
<li><p>What skill allows a Character to wield a weapon and hit? Do they need a special skill to wield a
|
||
chair rather than a sword?</p></li>
|
||
<li><p>Does a Character need a Strength attribute to tell how much they can carry or which objects they
|
||
can smash?</p></li>
|
||
<li><p>What does the skill tree look like? Can a Character gain experience to improve? By killing
|
||
enemies? Solving quests? By roleplaying?</p></li>
|
||
<li><p>etc.</p></li>
|
||
</ul>
|
||
<p>A MUD’s a lot more involved than you would think and these things hang together in a complex web. It
|
||
can easily become overwhelming and it’s tempting to want <em>all</em> functionality right out of the door.
|
||
Try to identify the basic things that “make” your game and focus <em>only</em> on them for your first
|
||
release. Make a list. Keep future expansions in mind but limit yourself.</p>
|
||
</section>
|
||
</section>
|
||
<section id="coding-step-2">
|
||
<h2>Coding (step 2)<a class="headerlink" href="#coding-step-2" title="Permalink to this headline">¶</a></h2>
|
||
<p>This is the actual work of creating the “game” part of your game. Many “game-designer” types tend to
|
||
gloss over this bit and jump directly to <strong>World Building</strong>. Vice versa, many “game-coder” types
|
||
tend to jump directly to this part without doing the <strong>Planning</strong> first. Neither way is good and
|
||
<em>will</em> lead to you having to redo all your hard work at least once, probably more.</p>
|
||
<p>Evennia’s <a class="reference internal" href="Developer-Central.html"><span class="doc std std-doc">Developer Central</span></a> tries to help you with this bit of development. We
|
||
also have a slew of <a class="reference internal" href="Tutorials.html"><span class="doc std std-doc">Tutorials</span></a> with worked examples. Evennia tries hard to make this
|
||
part easier for you, but there is no way around the fact that if you want anything but a very basic
|
||
Talker-type game you <em>will</em> have to bite the bullet and code your game (or find a coder willing to
|
||
do it for you).</p>
|
||
<p>Even if you won’t code anything yourself, as a designer you need to at least understand the basic
|
||
paradigms of Evennia, such as <a class="reference internal" href="Objects.html"><span class="doc std std-doc">Objects</span></a>, <a class="reference internal" href="Commands.html"><span class="doc std std-doc">Commands</span></a> and <a class="reference internal" href="Scripts.html"><span class="doc std std-doc">Scripts</span></a> and
|
||
how they hang together. We recommend you go through the [Tutorial World](Tutorial-World-
|
||
Introduction) in detail (as well as glancing at its code) to get at least a feel for what is
|
||
involved behind the scenes. You could also look through the tutorial for <a class="reference internal" href="Tutorial-for-basic-MUSH-like-game.html"><span class="doc std std-doc">building a game from
|
||
scratch</span></a>.</p>
|
||
<p>During Coding you look back at the things you wanted during the <strong>Planning</strong> phase and try to
|
||
implement them. Don’t be shy to update your plans if you find things easier/harder than you thought.
|
||
The earlier you revise problems, the easier they will be to fix.</p>
|
||
<p>A good idea is to host your code online (publicly or privately) using version control. Not only will
|
||
this make it easy for multiple coders to collaborate (and have a bug-tracker etc), it also means
|
||
your work is backed up at all times. The <a class="reference internal" href="Version-Control.html"><span class="doc std std-doc">Version Control</span></a> tutorial has
|
||
instructions for setting up a sane developer environment with proper version control.</p>
|
||
<section id="tech-demo-building">
|
||
<h3>“Tech Demo” Building<a class="headerlink" href="#tech-demo-building" title="Permalink to this headline">¶</a></h3>
|
||
<p>This is an integral part of your Coding. It might seem obvious to experienced coders, but it cannot
|
||
be emphasized enough that you should <em>test things on a small scale</em> before putting your untested
|
||
code into a large game-world. The earlier you test, the easier and cheaper it will be to fix bugs
|
||
and even rework things that didn’t work out the way you thought they would. You might even have to
|
||
go back to the <strong>Planning</strong> phase if your ideas can’t handle their meet with reality.</p>
|
||
<p>This means building singular in-game examples. Make one room and one object of each important type
|
||
and test so they work correctly in isolation. Then add more if they are supposed to interact with
|
||
each other in some way. Build a small series of rooms to test how mobs move around … and so on. In
|
||
short, a test-bed for your growing code. It should be done gradually until you have a fully
|
||
functioning (if not guaranteed bug-free) miniature tech demo that shows <em>all</em> the features you want
|
||
in the first release of your game. There does not need to be any game play or even a theme to your
|
||
tests, this is only for you and your co-coders to see. The more testing you do on this small scale,
|
||
the less headaches you will have in the next phase.</p>
|
||
</section>
|
||
</section>
|
||
<section id="world-building-step-3">
|
||
<h2>World Building (step 3)<a class="headerlink" href="#world-building-step-3" title="Permalink to this headline">¶</a></h2>
|
||
<p>Up until this point we’ve only had a few tech-demo objects in the database. This step is the act of
|
||
populating the database with a larger, thematic world. Too many would-be developers jump to this
|
||
stage too soon (skipping the <strong>Coding</strong> or even <strong>Planning</strong> stages). What if the rooms you build
|
||
now doesn’t include all the nice weather messages the code grows to support? Or the way you store
|
||
data changes under the hood? Your building work would at best require some rework and at worst you
|
||
would have to redo the whole thing. And whereas Evennia’s typeclass system does allow you to edit
|
||
the properties of existing objects, some hooks are only called at object creation … Suffice to
|
||
say you are in for a <em>lot</em> of unnecessary work if you build stuff en masse without having the
|
||
underlying code systems in some reasonable shape first.</p>
|
||
<p>So before starting to build, the “game” bit (<strong>Coding</strong> + <strong>Testing</strong>) should be more or less
|
||
<strong>complete</strong>, <em>at least to the level of your initial release</em>.</p>
|
||
<p>Before starting to build, you should also plan ahead again. Make sure it is clear to yourself and
|
||
your eventual builders just which parts of the world you want for your initial release. Establish
|
||
for everyone which style, quality and level of detail you expect. Your goal should <em>not</em> be to
|
||
complete your entire world in one go. You want just enough to make the game’s “feel” come across.
|
||
You want a minimal but functioning world where the intended game play can be tested and roughly
|
||
balanced. You can always add new areas later.</p>
|
||
<p>During building you get free and extensive testing of whatever custom build commands and systems you
|
||
have made at this point. Since Building often involves different people than those Coding, you also
|
||
get a chance to hear if some things are hard to understand or non-intuitive. Make sure to respond
|
||
to this feedback.</p>
|
||
</section>
|
||
<section id="alpha-release">
|
||
<h2>Alpha Release<a class="headerlink" href="#alpha-release" title="Permalink to this headline">¶</a></h2>
|
||
<p>As mentioned, don’t hold onto your world more than necessary. <em>Get it out there</em> with a huge <em>Alpha</em>
|
||
flag and let people try it! Call upon your alpha-players to try everything - they <em>will</em> find ways
|
||
to break your game in ways that you never could have imagined. In Alpha you might be best off to
|
||
focus on inviting friends and maybe other MUD developers, people who you can pester to give proper
|
||
feedback and bug reports (there <em>will</em> be bugs, there is no way around it). Follow the quick
|
||
instructions for <a class="reference internal" href="Online-Setup.html"><span class="doc std std-doc">Online Setup</span></a> to make your game visible online. If you hadn’t
|
||
already, make sure to put up your game on the <a class="reference external" href="http://games.evennia.com/">Evennia game index</a> so
|
||
people know it’s in the works (actually, even pre-alpha games are allowed in the index so don’t be
|
||
shy)!</p>
|
||
</section>
|
||
<section id="beta-release-perpetual-beta">
|
||
<h2>Beta Release/Perpetual Beta<a class="headerlink" href="#beta-release-perpetual-beta" title="Permalink to this headline">¶</a></h2>
|
||
<p>Once things stabilize in Alpha you can move to <em>Beta</em> and let more people in. Many MUDs are in
|
||
<a class="reference external" href="http://en.wikipedia.org/wiki/Perpetual_beta">perpetual beta</a>, meaning they are never considered
|
||
“finished”, but just repeat the cycle of Planning, Coding, Testing and Building over and over as new
|
||
features get implemented or Players come with suggestions. As the game designer it is now up to you
|
||
to gradually perfect your vision.</p>
|
||
</section>
|
||
<section id="congratulate-yourself">
|
||
<h2>Congratulate yourself!<a class="headerlink" href="#congratulate-yourself" title="Permalink to this headline">¶</a></h2>
|
||
<p>You are worthy of a celebration since at this point you have joined the small, exclusive crowd who
|
||
have made their dream game a reality!</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="#">Game Planning</a><ul>
|
||
<li><a class="reference internal" href="#planning-step-1">Planning (step 1)</a><ul>
|
||
<li><a class="reference internal" href="#systems">Systems</a></li>
|
||
<li><a class="reference internal" href="#rooms">Rooms</a></li>
|
||
<li><a class="reference internal" href="#objects">Objects</a></li>
|
||
<li><a class="reference internal" href="#characters">Characters</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#coding-step-2">Coding (step 2)</a><ul>
|
||
<li><a class="reference internal" href="#tech-demo-building">“Tech Demo” Building</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#world-building-step-3">World Building (step 3)</a></li>
|
||
<li><a class="reference internal" href="#alpha-release">Alpha Release</a></li>
|
||
<li><a class="reference internal" href="#beta-release-perpetual-beta">Beta Release/Perpetual Beta</a></li>
|
||
<li><a class="reference internal" href="#congratulate-yourself">Congratulate yourself!</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
<div role="note" aria-label="source link">
|
||
<!--h3>This Page</h3-->
|
||
<ul class="this-page-menu">
|
||
<li><a href="_sources/Game-Planning.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="http://webchat.freenode.net/?channels=evennia&uio=MT1mYWxzZSY5PXRydWUmMTE9MTk1JjEyPXRydWUbb">IRC</a> -
|
||
<a href="https://discord.gg/NecFePw">Discord</a> -
|
||
<a href="https://groups.google.com/forum/#%21forum/evennia">Forums</a>
|
||
</li>
|
||
<li><a href="http://evennia.blogspot.com/">Evennia Dev blog</a> </li>
|
||
</ul>
|
||
<h3>Versions</h3>
|
||
<ul>
|
||
<li><a href="../1.0-dev/index.html">1.0-dev (develop branch)</a></li>
|
||
<li><a href="Game-Planning.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="nav-item nav-item-0"><a href="index.html">Evennia 0.9.5</a> »</li>
|
||
<li class="nav-item nav-item-this"><a href="">Game Planning</a></li>
|
||
</ul>
|
||
</div>
|
||
<div class="footer" role="contentinfo">
|
||
© Copyright 2020, The Evennia developer community.
|
||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
|
||
</div>
|
||
</body>
|
||
</html> |