mirror of
https://github.com/evennia/evennia.git
synced 2026-03-18 13:56:30 +01:00
874 lines
No EOL
77 KiB
HTML
874 lines
No EOL
77 KiB
HTML
<!doctype html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta http-equiv="X-UA-Compatible" content="chrome=1">
|
||
<title>Evennia Devblog</title>
|
||
<link rel="shortcut icon" type="image/x-icon" href="../images/favicon.ico">
|
||
<link rel="stylesheet" href="../stylesheets/styles.css">
|
||
<link rel="stylesheet" href="../stylesheets/pygment_trac.css">
|
||
<link href='https://fonts.googleapis.com/css?family=Open Sans' rel='stylesheet'>
|
||
<link href='https://fonts.googleapis.com/css?family=Arvo' rel='stylesheet'>
|
||
<script src="../javascripts/scale.fix.js">
|
||
</script>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
|
||
<!--[if lt IE 9]>
|
||
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js">
|
||
</script>
|
||
<![endif]-->
|
||
</head>
|
||
<body>
|
||
<div class="wrapper">
|
||
<header>
|
||
<p>
|
||
<img class="logo" src="../images/evennia_logo.png" alt="Evennia logo">
|
||
</p>
|
||
<h1 class="header">Evennia</h1>
|
||
<p class="header header-text">The Python MU* Development Library</p>
|
||
<div class="linksection">
|
||
<ul>
|
||
<div class="buttonsection">
|
||
<li>
|
||
<a class="buttons" href="../index.html">Back to Evennia</a>
|
||
</li>
|
||
<li>
|
||
<a class="buttons devblog-calendar-tooltip"
|
||
href="https://github.com/evennia/evennia/discussions">Discuss (GitHub)</a>
|
||
</li>
|
||
</div>
|
||
</ul>
|
||
</div>
|
||
<div class="devblog-calendar">
|
||
<ul>
|
||
|
||
<li>
|
||
<a href="2023.html"> 2023 (1)
|
||
|
||
<ul class="devblog-calendar-closed">
|
||
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text"> Evennia 2.0.0 released today</span>
|
||
<a href="2023.html#2023-06-10-evennia-2.0.0-released-today"> Evennia 2.0.0 rel...
|
||
</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="2022.html"> 2022 (4)
|
||
|
||
<ul class="devblog-calendar-closed">
|
||
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text"> Evennia 1.0 released!</span>
|
||
<a href="2022.html#2022-12-03-evennia-1.0-released!"> Evennia 1.0 relea...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text"> Project plans and Splitting a Setting in two</span>
|
||
<a href="2022.html#2022-09-17-project-plans-and-splitting-a-setting-in-two"> Project plans and...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text"> Tutorial-writing and Attributes galore</span>
|
||
<a href="2022.html#2022-07-05-tutorial-writing-and-attributes-galore"> Tutorial-writing ...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text"> Into 2022 with thanks and plans</span>
|
||
<a href="2022.html#2022-01-06-into-2022-with-thanks-and-plans"> Into 2022 with th...
|
||
</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="2021.html"> 2021 (3)
|
||
|
||
<ul class="devblog-calendar-open">
|
||
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text"> The blog moved!</span>
|
||
<a href="2021.html#2021-11-18-the-blog-moved!"> The blog moved!
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text"> Where do I begin?</span>
|
||
<a href="2021.html#2021-03-21-where-do-i-begin?"> Where do I begin?
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text"> Happy New Years 2021!</span>
|
||
<a href="2021.html#2021-01-01-happy-new-years-2021!"> Happy New Years 2...
|
||
</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="2020.html"> 2020 (3)
|
||
|
||
<ul class="devblog-calendar-closed">
|
||
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Evennia 0.9.5 released</span>
|
||
<a href="2020.html#2020-11-14-evennia-0.9.5-released">Evennia 0.9.5 rele...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">On using Markdown with Sphinx</span>
|
||
<a href="2020.html#2020-10-20-on-using-markdown-with-sphinx">On using Markdown ...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Spring updates while trying to stay healthy</span>
|
||
<a href="2020.html#2020-04-14-spring-updates-while-trying-to-stay-healthy">Spring updates whi...
|
||
</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="2019.html"> 2019 (7)
|
||
|
||
<ul class="devblog-calendar-closed">
|
||
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Blackifying and fixing bugs</span>
|
||
<a href="2019.html#2019-09-30-blackifying-and-fixing-bugs">Blackifying and fi...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Evennia 0.9 released</span>
|
||
<a href="2019.html#2019-07-04-evennia-0.9-released">Evennia 0.9 released
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Creating Evscaperoom Part 2</span>
|
||
<a href="2019.html#2019-05-26-creating-evscaperoom-part-2">Creating Evscapero...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Creating Evscaperoom Part 1</span>
|
||
<a href="2019.html#2019-05-18-creating-evscaperoom-part-1">Creating Evscapero...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Podcast about Evennia</span>
|
||
<a href="2019.html#2019-05-09-podcast-about-evennia">Podcast about Even...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Steaming on Eating Jam</span>
|
||
<a href="2019.html#2019-04-25-steaming-on-eating-jam">Steaming on Eating...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Into 2019</span>
|
||
<a href="2019.html#2019-01-02-into-2019">Into 2019
|
||
</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="2018.html"> 2018 (4)
|
||
|
||
<ul class="devblog-calendar-closed">
|
||
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Evennia 0.8 released</span>
|
||
<a href="2018.html#2018-09-30-evennia-0.8-released">Evennia 0.8 released
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Inline building in upcoming Evennia 0.8</span>
|
||
<a href="2018.html#2018-08-18-inline-building-in-upcoming-evennia-0.8">Inline building in...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Kicking into gear from a distance</span>
|
||
<a href="2018.html#2018-01-27-kicking-into-gear-from-a-distance">Kicking into gear ...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text"> New year, new stuff</span>
|
||
<a href="2018.html#2018-01-05-new-year,-new-stuff"> New year, new stuff
|
||
</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="2017.html"> 2017 (6)
|
||
|
||
<ul class="devblog-calendar-closed">
|
||
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Getting a MUD RP scene going</span>
|
||
<a href="2017.html#2017-10-29-getting-a-mud-rp-scene-going">Getting a MUD RP s...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Evennia in Hacktobergest 2017</span>
|
||
<a href="2017.html#2017-10-01-evennia-in-hacktobergest-2017">Evennia in Hacktob...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Evennia 0.7 released</span>
|
||
<a href="2017.html#2017-09-20-evennia-0.7-released">Evennia 0.7 released
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text"> Renaming Django's Auth User and App</span>
|
||
<a href="2017.html#2017-08-25-renaming-django's-auth-user-and-app"> Renaming Django's...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">The luxury of a creative community</span>
|
||
<a href="2017.html#2017-04-23-the-luxury-of-a-creative-community">The luxury of a cr...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">News items from the new year</span>
|
||
<a href="2017.html#2017-02-05-news-items-from-the-new-year">News items from th...
|
||
</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="2016.html"> 2016 (7)
|
||
|
||
<ul class="devblog-calendar-closed">
|
||
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Birthday retrospective</span>
|
||
<a href="2016.html#2016-11-30-birthday-retrospective">Birthday retrospec...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Season of fixes</span>
|
||
<a href="2016.html#2016-10-13-season-of-fixes">Season of fixes
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">The art of sharing nicks and descriptions</span>
|
||
<a href="2016.html#2016-07-01-the-art-of-sharing-nicks-and-descriptions">The art of sharing...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Evennia in Pictures</span>
|
||
<a href="2016.html#2016-05-31-evennia-in-pictures">Evennia in Pictures
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text"> Evennia 0.6!</span>
|
||
<a href="2016.html#2016-05-22-evennia-0.6!"> Evennia 0.6!
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Technical stuff happening</span>
|
||
<a href="2016.html#2016-03-24-technical-stuff-happening">Technical stuff ha...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Climbing up Branches</span>
|
||
<a href="2016.html#2016-02-14-climbing-up-branches">Climbing up Branches
|
||
</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="2015.html"> 2015 (13)
|
||
|
||
<ul class="devblog-calendar-closed">
|
||
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">A summary of a year</span>
|
||
<a href="2015.html#2015-12-17-a-summary-of-a-year">A summary of a year
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text"> MIT uses Evennia!</span>
|
||
<a href="2015.html#2015-11-12-mit-uses-evennia!"> MIT uses Evennia!
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Illustrations and soaps</span>
|
||
<a href="2015.html#2015-10-11-illustrations-and-soaps">Illustrations and ...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Emoting System</span>
|
||
<a href="2015.html#2015-10-02-emoting-system">Emoting System
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text"> Evennia on `podcast.__init__`</span>
|
||
<a href="2015.html#2015-09-29-evennia-on-`podcast.__init__`"> Evennia on `podca...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Pushing through a straw</span>
|
||
<a href="2015.html#2015-09-24-pushing-through-a-straw">Pushing through a ...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">A wagon load of post summer updates</span>
|
||
<a href="2015.html#2015-08-27-a-wagon-load-of-post-summer-updates">A wagon load of po...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text"> Announcing the Evennia example-game project "Ainneve"</span>
|
||
<a href="2015.html#2015-06-22-announcing-the-evennia-example-game-project-"ainneve""> Announcing the Ev...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text"> Need your help!</span>
|
||
<a href="2015.html#2015-06-15-need-your-help!"> Need your help!
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text"> Dreaming big?</span>
|
||
<a href="2015.html#2015-05-30-dreaming-big?"> Dreaming big?
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Things goin on</span>
|
||
<a href="2015.html#2015-05-11-things-goin-on">Things goin on
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Documenting Python without Sphinx</span>
|
||
<a href="2015.html#2015-05-09-documenting-python-without-sphinx">Documenting Python...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Building Django proxies and MUD libraries</span>
|
||
<a href="2015.html#2015-01-19-building-django-proxies-and-mud-libraries">Building Django pr...
|
||
</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="2014.html"> 2014 (7)
|
||
|
||
<ul class="devblog-calendar-closed">
|
||
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Slowly moving through town</span>
|
||
<a href="2014.html#2014-10-02-slowly-moving-through-town">Slowly moving thro...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Dance my puppets</span>
|
||
<a href="2014.html#2014-08-04-dance-my-puppets">Dance my puppets
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Webby stuff</span>
|
||
<a href="2014.html#2014-06-30-webby-stuff">Webby stuff
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Bringing back Python memory</span>
|
||
<a href="2014.html#2014-06-15-bringing-back-python-memory">Bringing back Pyth...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text"> Imaginary Realities volume 6, issue 1</span>
|
||
<a href="2014.html#2014-05-16-imaginary-realities-volume-6,-issue-1"> Imaginary Realiti...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Moving from Google Code to Github</span>
|
||
<a href="2014.html#2014-02-08-moving-from-google-code-to-github">Moving from Google...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Looking forwards and backwards</span>
|
||
<a href="2014.html#2014-01-24-looking-forwards-and-backwards">Looking forwards a...
|
||
</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="2013.html"> 2013 (5)
|
||
|
||
<ul class="devblog-calendar-closed">
|
||
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Imaginary Realities is back</span>
|
||
<a href="2013.html#2013-12-16-imaginary-realities-is-back">Imaginary Realitie...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Out of band mergings</span>
|
||
<a href="2013.html#2013-11-28-out-of-band-mergings">Out of band mergings
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">A list of Evennia topics</span>
|
||
<a href="2013.html#2013-10-22-a-list-of-evennia-topics">A list of Evennia ...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">One to Many</span>
|
||
<a href="2013.html#2013-05-13-one-to-many">One to Many
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Churning behind the scenes</span>
|
||
<a href="2013.html#2013-01-29-churning-behind-the-scenes">Churning behind th...
|
||
</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="2012.html"> 2012 (13)
|
||
|
||
<ul class="devblog-calendar-closed">
|
||
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Evennia changes to BSD license</span>
|
||
<a href="2012.html#2012-10-28-evennia-changes-to-bsd-license">Evennia changes to...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Community interest</span>
|
||
<a href="2012.html#2012-10-05-community-interest">Community interest
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Combining Twisted and Django</span>
|
||
<a href="2012.html#2012-08-31-combining-twisted-and-django">Combining Twisted ...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Taking command</span>
|
||
<a href="2012.html#2012-08-16-taking-command">Taking command
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Extending time and details</span>
|
||
<a href="2012.html#2012-06-26-extending-time-and-details">Extending time and...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Coding from the inside</span>
|
||
<a href="2012.html#2012-06-11-coding-from-the-inside">Coding from the in...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text"> Dummies doing (even more) dummy things</span>
|
||
<a href="2012.html#2012-05-30-dummies-doing-(even-more)-dummy-things"> Dummies doing (ev...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Shortcuts to goodness</span>
|
||
<a href="2012.html#2012-03-26-shortcuts-to-goodness">Shortcuts to goodn...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Dummies doing dummy things</span>
|
||
<a href="2012.html#2012-02-22-dummies-doing-dummy-things">Dummies doing dumm...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">Commands and you</span>
|
||
<a href="2012.html#2012-02-17-commands-and-you">Commands and you
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text"> Such a small thing ...</span>
|
||
<a href="2012.html#2012-02-15-such-a-small-thing-..."> Such a small thin...
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text">About this dev blog</span>
|
||
<a href="2012.html#2012-02-05-about-this-dev-blog">About this dev blog
|
||
</a>
|
||
</li>
|
||
|
||
<li class="devblog-calendar-post devblog-calendar-tooltip">
|
||
<span class="devblog-calendar-tooltip-text"> Evennia's open bottlenecks</span>
|
||
<a href="2012.html#2012-02-05-evennia's-open-bottlenecks"> Evennia's open bo...
|
||
</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
</header>
|
||
<section>
|
||
<div class="devblog-rss">
|
||
<a href="feed.rss">
|
||
<img src="images/rss-icon.png" alt="RSS feed">
|
||
</a>
|
||
</div>
|
||
<h1>
|
||
<a name="evennia-mudmu-creation-system" class="anchor" href="#evennia-mudmu-creation-system">
|
||
<span class="octicon octicon-link">
|
||
</span>
|
||
</a>Evennia Dev Blog<div class="sponsor">
|
||
<div class="sponsor-column">
|
||
<a href="https://www.patreon.com/griatch">
|
||
<img class="patreon" src="../images/evennia_patreon_100x100.png" alt="Patreon">
|
||
</a>
|
||
<form action="https://www.paypal.com/donate" method="post" target="_top">
|
||
<input type="hidden" name="hosted_button_id" value="YQDKB8JT2GXLS" />
|
||
<input type="image" src="https://www.paypalobjects.com/en_US/SE/i/btn/btn_donateCC_LG.gif" border="0" name="submit" title="PayPal - The safer, easier way to pay online!" alt="Donate with PayPal button" />
|
||
<img alt="" border="0" src="https://www.paypal.com/en_SE/i/scr/pixel.gif" width="1" height="1" />
|
||
</form>
|
||
</div>
|
||
</h1>
|
||
|
||
<em>Various Evennia- and MUD-related musings by Griatch, the Evennia lead developer.</em>
|
||
|
||
|
||
|
||
<div class="blog_post">
|
||
<h1 id=2021-11-18-the-blog-moved!>
|
||
The blog moved!
|
||
<a class="devblog-headerlink" href="2021.html#2021-11-18-the-blog-moved!" title="Permalink to this blog post">¶</a>
|
||
<div class="devblog-title-date">- November 18, 2021</div>
|
||
</h1>
|
||
<p><img src="images/to_greener_pastures_by_griatch_art_smallview.jpg" alt="to greener pastures image by Griatch" /></p>
|
||
<p>If you are reading this, you may notice that this blog has moved from <a href="https://evennia.blogspot.com/">its old home</a> over on blogspot. I had no issues with blogspot except for the fact that writing the blog itself was done in a rather clunky editor with limited support for code.</p>
|
||
<p>Every other text in Evennia (docs, comments etc) is written in <a href="https://en.wikipedia.org/wiki/Markdown">markdown</a> and I figured it would be nice to be able to use that also for my dev blog.</p>
|
||
<p>So I put together my own little blog platform.</p>
|
||
<h2>Making a little blog platform</h2>
|
||
<p>I have rather small requirements - I don't publish a crazy amount of Evennia devblogs and I'm fine with making a git commit to do so.</p>
|
||
<p>I already use github pages for the <a href="https://www.evennia.com">Evennia homepage</a> and <a href="https://www.evennia.com/docs">documentation</a>. These are simply html pages located in a <code>gh-pages</code> branch of the main <code>evennia</code> repo. So I decided I would just post my blog posts in a folder and then run a markdown parser to turn it into publisheable HTML pages.</p>
|
||
<h3>The tools</h3>
|
||
<p>Markdown was originally made to be converted to HTML and there is a plethora of markdown parsers for Python. I also wanted an easy way to insert my text into HTML template; this is also a well-solved problem. So these are the tools I used:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/miyuchina/mistletoe">mistletoe</a> is a pure-Python markdown->HTML parser. I had never used it before but it was easy to use and very fast. It also supports the <code>CommonMark</code> Markdown spec (same as github). I could also easily have it use <a href="https://pygments.org/">pygments</a> to add code-highlighting to code snippets.</li>
|
||
<li><a href="https://jinja.palletsprojects.com/en/3.0.x/">jinja2</a> is a way to embed special tags in HTML "templates" that can then be programmatically filled with content. It's very similar to the Django templating language.</li>
|
||
</ul>
|
||
<h3>The posts</h3>
|
||
<p>I then decided that each blog post should be one markdown file with a file name <code>YYYY-MM-DD-The-post-name.md</code>. So this current devblog has a file name of <code>2021-11-18-The-blog-moved.md</code>.</p>
|
||
<p>In its simplest form, the date and name of the blog is just parsed from the filename (also makes it easy to find in the file system). But I also decided that each post could have a little optional meta-header for customizing things:</p>
|
||
<div class="highlight" style="background: #f8f8f8"><pre style="line-height: 125%;"><span></span>title<span style="color: #666666">:</span><span style="color: #bbbbbb"> </span>The<span style="color: #bbbbbb"> </span>blog<span style="color: #bbbbbb"> </span>moved<span style="color: #666666">!</span>
|
||
date<span style="color: #666666">:</span><span style="color: #bbbbbb"> </span><span style="color: #666666">2021-10-11</span>
|
||
copyrights<span style="color: #666666">:</span><span style="color: #bbbbbb"> </span>Image<span style="color: #666666">:</span><span style="color: #bbbbbb"> </span><span style="color: #666666">[</span><span style="border: 1px solid #FF0000">©</span>Griatch<span style="color: #666666">](</span>https<span style="color: #666666">://</span>deviantart<span style="color: #666666">.</span><span style="color: #687822">com</span><span style="color: #666666">/</span>griatch<span style="color: #666666">-</span>art<span style="color: #666666">)</span>
|
||
|
||
<span style="color: #666666">---</span>
|
||
|
||
Here<span style="color: #bbbbbb"> </span>the<span style="color: #bbbbbb"> </span>blog<span style="color: #bbbbbb"> </span>starts<span style="color: #666666">...</span>
|
||
</pre></div>
|
||
|
||
<p>The <code>title</code> is mainly to be able to add characters like <code>!</code> or <code>?</code> that I don't want to add to the file name. I've not used the <code>date</code> yet, but I guess one could use it to publish a text at a different date than the filename (not sure why one would want that ...). The <code>copyrights</code> is to properly credit any resources (mostly images) used.</p>
|
||
<p>I wrote my own <code>build_devblog.py</code> program that simple reads all <code>.md</code> files from a directory. It figures out the date and title (from file name or meta-header) and runs <code>mistletoe</code> on it. I create a dataclass with all the post-relevant properties on it. So far so good. Now we need to inject this into an HTML structure.</p>
|
||
<h3>The html</h3>
|
||
<p>Next I prepared a little <code>post.html</code> Jinja template:</p>
|
||
<div class="highlight" style="background: #f8f8f8"><pre style="line-height: 125%;"><span></span><h1 id=<span style="color: #9C6500">{{</span> <span style="color: #19177C">blogpost.anchor</span> <span style="color: #9C6500">}}</span>>
|
||
<span style="color: #9C6500">{{</span> <span style="color: #19177C">blogpost.title</span> <span style="color: #9C6500">}}</span>
|
||
<a class="devblog-headerlink" href="<span style="color: #9C6500">{{</span> <span style="color: #19177C">blogpost.permalink</span> <span style="color: #9C6500">}}</span>" title="Permalink to this blog post">¶</a>
|
||
<div class="devblog-title-date">- <span style="color: #9C6500">{{</span> <span style="color: #19177C">blogpost.date_pretty</span> <span style="color: #9C6500">}}</span></div>
|
||
</h1>
|
||
<span style="color: #9C6500">{{</span> <span style="color: #19177C">blogpost.html</span> <span style="color: #9C6500">}}</span>
|
||
<footer class="devblog-footer">
|
||
<span class="devblog-copyrights">
|
||
<span style="color: #9C6500">{{</span> <span style="color: #19177C">blogpost.image_copyrights</span> <span style="color: #9C6500">}}</span>
|
||
</span>
|
||
<a class="devblog-to-toplink" href="<span style="color: #9C6500">{{</span> <span style="color: #19177C">blogpost.permalink</span> <span style="color: #9C6500">}}</span>" title="Link to top of post">⇬(top)</a>
|
||
</footer>
|
||
</pre></div>
|
||
|
||
<p>Above, the <code>blogpost</code> is a dataclass made available to Jinja, from which it reads and inserts data into the HTML using the <code>{{ ... }}</code> templating fields.
|
||
I wanted each individual blog post to have a permalink, so that you could refer to it. I also decided that I would group all blog posts from a year into one HTML page, so <code>2021.html</code>, <code>2020.html</code> etc. Within each page, the blog post is just an anchor. So the link to this post is</p>
|
||
<div class="highlight" style="background: #f8f8f8"><pre style="line-height: 125%;"><span></span> https://www.evennia.com/devblog/2021.html#2021-11-18-The-blog-moved
|
||
</pre></div>
|
||
|
||
<p>which seems quite clear.</p>
|
||
<p>For the entire year of devblogs, I stole the template used by the main <code>evennia.com</code> page, and also used the same CSS file (it's all in the same repo after all). Jinja allows you to do simple <code>for</code> loops within the template so it's easy to add all posts into a page.</p>
|
||
<h3>The CSS</h3>
|
||
<p>The final bit was to clean up the CSS and make a little 'calendar' in the sidebar to make it easy to navigate to older devblogs. In the wide-page view you can hover over the blog dates to see their names for easy lookup.</p>
|
||
<h3>Converting the old blog</h3>
|
||
<p>Google (which owns blogspot (formar Blogger) has an export feature but the result of this is a very dense XML file. It's mainly intended to be imported by Wordpress or some other existing blog platform. In the end I gave up on trying to parse it.</p>
|
||
<p>Instead I went the dumb route and just copy&pasted each of my old blogs from the old blog into Obsidian, which I use for markdown editing. Luckily this worked very well - all layout was retained and converted automatically to markdown syntax, including links to images etc. I only needed to add some nicer markup for code strings (since that was not a thing on blogspot).</p>
|
||
<p>I don't know if I have Obsidian to thank for this or if blogspot uses some standardized format, but manually converti of all my devblogs since 2012 thus ended up being a lot less painful than I thought (for once).</p>
|
||
<h3>Things lost in move</h3>
|
||
<p>There are a few things that were possible on blogspot that my simple little custom platform cannot do.</p>
|
||
<ul>
|
||
<li>Online editing: I'm not posting things on the fly so I'm fine with making a commit. Writing in a proper text editor is more confortable anyway. And the posts are under version control too!</li>
|
||
<li>Comments: Few people every commented directly in the old blog though - and lately it has mostly been spam. To comment, people'll need to use our forums on github or the support channel.</li>
|
||
<li>Notifications: <del>I haven't added an RSS feed for this page and there is thus no automatic reporting of new posts in chat etc. I think the amount of posts I do is low enough that I can advertise them manually. I'll probably just make a dedicated announcement thread in Github discussions.</del>
|
||
<strong>Update</strong>: I added an RSS feed now, see the little <img src="images/rss-icon.png" alt="rss-feed" /> icon on the top-right of this page.</li>
|
||
</ul>
|
||
<h2>Onward</h2>
|
||
<p>So, with this new blog platform in place (this post is the first one I write using the new system), I won't update the old one anymore. The old one's not going anywhere though, and I will point here from it.</p>
|
||
<p>The new Evennia site ecosystem is getting a little more compact. These are services hosted on github/github pages:</p>
|
||
<ul>
|
||
<li>Homepage - <a href="https://www.evennia.com">https://www.evennia.com</a></li>
|
||
<li>Docs - <a href="https://www.evennia.com/docs">https://www.evennia.com/docs</a></li>
|
||
<li>Devblog - <a href="https://www.evennia.com/devblog">https://www.evennia.com/devblog</a></li>
|
||
<li>Forums - <a href="https://github.com/evennia/evennia/discussions">https://github.com/evennia/evennia/discussions</a></li>
|
||
<li>Code - [https://github.com/evennia/evennia](https://github.com/evennia/evennia</li>
|
||
</ul>
|
||
<p>At this point, the only things running elsewhere (and which will continue doing so) are:</p>
|
||
<ul>
|
||
<li><a href="https://games.evennia.com">https://games.evennia.com</a> - runs on Google App Engine</li>
|
||
<li><a href="https://demo.evennia.com">https://demo.evennia.com</a> - Digital Ocean droplet</li>
|
||
<li><a href="https://discord.gg/AJJpcRUhtF">https://discord.gg/AJJpcRUhtF</a> - Discord server (duh)</li>
|
||
</ul>
|
||
<p>There is also an old version of the docs on <code>ReadTheDocs</code>. This is out of date and should be removed ...</p>
|
||
<p>But overall, the Evennia ecosystem is getting more and more cleaned up as we (slowly) approach the release of Evennia 1.0 ...</p>
|
||
|
||
<footer class="devblog-footer">
|
||
<span class="devblog-copyrights">
|
||
<p>Images: <a href="https://deviantart.com/griatch-art">©Griatch</a></p>
|
||
|
||
</span>
|
||
<a class="devblog-to-toplink" href="2021.html#2021-11-18-the-blog-moved!" title="Link to top of post">⇬(top)</a>
|
||
</footer>
|
||
</div>
|
||
|
||
<hr>
|
||
<div class="blog_post">
|
||
<h1 id=2021-03-21-where-do-i-begin?>
|
||
Where do I begin?
|
||
<a class="devblog-headerlink" href="2021.html#2021-03-21-where-do-i-begin?" title="Permalink to this blog post">¶</a>
|
||
<div class="devblog-title-date">- March 21, 2021</div>
|
||
</h1>
|
||
<blockquote>
|
||
<p><em>This is a repost of an article I originally wrote for the Imaginary Realities e-zine, Volume 7, issue 3 back in 2015. It's not Evennia-specific but meant for a wider audience interested in making a text-based multiplayer game (MUD/MU*). Since IR is no longer active, I repost it here with only some minor cleanup.</em></p>
|
||
</blockquote>
|
||
<p>When a new user has everything installed and drops into Evennia’s IRC support chat or mailing list, there is one question that we regularly get in various variations:</p>
|
||
<p><img src="images/yellow_world_by_griatch_art-d7a6e5n.jpg" alt="painted image of the beginning of a road in autumn" /></p>
|
||
<p><em>“Where do I begin?”</em><br />
|
||
How to actually start down that long road towards your own game is an important question. Unfortunately it has no one-size-fits-all answer. So it usually leads to a series of counter-questions. In this article I will try to (without being Evennia-specific) pose those questions in a way that would not fit in a chat window.</p>
|
||
<div class="highlight" style="background: #f8f8f8"><pre style="line-height: 125%;"><span></span>
|
||
</pre></div>
|
||
|
||
<h2>What is your motivation for doing this?</h2>
|
||
<p>So you want to make a game. First you need to make a few things clear to yourself.</p>
|
||
<p>Making a multiplayer online game is a big undertaking. You will (if you are like most of us) be doing it as a hobby, without getting paid. And you’ll be doing it for a long time.</p>
|
||
<p>So the very first thing you should ask yourself (and your team, if you have any) is why am I doing this? Do some soul-searching here. Here are some possible answers:</p>
|
||
<ul>
|
||
<li>I want to earn recognition and fame from my online community and/or among my friends.</li>
|
||
<li>I want to build the game so I can play and enjoy it myself.</li>
|
||
<li>I want to build the same game I already play but without the bad people.</li>
|
||
<li>I want to create a game so that I can control it and be the head honcho.</li>
|
||
<li>A friend or online acquaintance talked me into working on it.</li>
|
||
<li>I work on this because I’m paid to (wow!)</li>
|
||
<li>I only build this for my own benefit or to see if I can pull it off.</li>
|
||
<li>I want to create something to give back to the community I love.</li>
|
||
<li>I want to use this project as a stepping-stone towards other projects (like a career in game design or programming).</li>
|
||
<li>I am interested in coding or server and network architectures, making a MUD just seems to be a good way to teach myself.</li>
|
||
<li>I want to build a commercial game and earn money.</li>
|
||
<li>I want to fulfill a life-long dream of game making.</li>
|
||
</ul>
|
||
<p>There are many other possibilities. How “solid” your answer is for a long-term development project is up to you. The important point is that you ask yourself the question.</p>
|
||
<p>Answering this question you may find that you should not start a new project - maybe it’s better to build on or help improve something that already exists. Maybe you find you are more of a game engine developer than a game designer. Some answers may also suggest that you are driven by emotions of revenge or disconcert - emotions that may have abated later when the project most needs your enthusiasm and motivation.</p>
|
||
<p>If your aim is to earn money your design goals may well be very different from those of a person who only builds for their own benefit.</p>
|
||
<p>Whichever your motivation, you should at least have it clear in your own mind. It’s worth to make sure your eventual team is on the same page too.</p>
|
||
<h2>What are your skills?</h2>
|
||
<p>Once you have your motivations straight you need to take stock of your own skills and the skills available in your team, if you have one.</p>
|
||
<p>Your game will have two principal components and you will need skills to cater for both:</p>
|
||
<ul>
|
||
<li>The game engine (“the code base”)</li>
|
||
<li>The assets created for using the game engine (“the game world”)</li>
|
||
</ul>
|
||
<h2>The game engine</h2>
|
||
<p>The game engine is maintained and modified by programmers (coders). It represents the infrastructure that runs the game - the network code, the protocol support, the handling of commands, scripting and data storage.</p>
|
||
<p>Creating your game engine from scratch can be a worthwhile and rewarding endeavour. It is however not a small one and if your main goal is to create a running game I would recommend building on an existing engine. It’s worth to take your time and do your research here. Searching the net and various MUD sites will bring you a slew of options. I will give some things to look for here.</p>
|
||
<p>Whereas some engines/code bases offer a lot of pre-existing coded systems, there is no denying that your team will always need someone who either already knows some basic programming or is willing to learn it.</p>
|
||
<p>When judging which engine you want to use, consider:</p>
|
||
<ul>
|
||
<li>The engine’s community - hang out in the community/forums/chat surrounding the respective engine. Expect to need to ask a lot of “stupid” questions as you start developing (hint: no question is stupid). Is this a community in which you would feel comfortable doing so?</li>
|
||
<li>Active development - is the code base actively maintained? If there are bugs in the engine, does it seem likely they will be fixed upstream or will you be patching bugs yourself? Or alternatively, are there many active users that can help you out with known quirks?</li>
|
||
<li>Other available documentation - does the engine come with a manual? Are there online tutorials or other help resources to read?</li>
|
||
<li>Which language is the engine coded in? What is it scripted in? Do you or your team already know this language or are you willing to learn it?</li>
|
||
<li>If you don’t know the language, do a few beginner tutorial so that you can at least vaguely recognize the syntax. Does the engine’s code seem easy to read and well documented? If the engine is poorly documented, the time of development may rise dramatically.</li>
|
||
<li>Something to remember here is that computers of today are very powerful. And while scaling may be interesting if your game really takes off, a text game is, for the most part, not very demanding. So I’d recommend you pick your language and engine not primarily based on performance but on what you feel comfortable and productive working with.</li>
|
||
<li>What is the engine’s license? This is mainly important if you plan to ever earn money with your game. Some common engines explicitly forbid commercial use.</li>
|
||
</ul>
|
||
<h2>Asset creation</h2>
|
||
<p>Compared to the level of work needed to produce professional graphics for an MMORPG, detailed text assets for a mud are cheap to create. This is one of the many reasons muds are so well suited for a small team.</p>
|
||
<p>This is not to say that making “professional” text content is easy though. Knowing how to write imaginative and grammatically correct prose is only the minimal starting requirement. A good asset-creator (traditionally called a “builder”) must also be able to utilize the tools of the game engine to its fullest in order to script events, make quests, triggers and interactive, interesting environments.</p>
|
||
<p>Some game engines will offer generic online building tools while others will depend on the coders to create tools specific for their game. What you go for may be influenced by just how technically savvy your builders are and what skills they are willing to pick up along the way.</p>
|
||
<p>Your team’s in-house builders will be the first ones to actually “use” your game framework and build tools. They will stumble on all the bugs. This means that you need people who are just not “artsy” or “good with words”. Assuming coders and builders are not the same people, builders need to be able to collaborate well and give clear and concise feedback.</p>
|
||
<h2>So, where <em>do</em> I begin?</h2>
|
||
<p>Right, after all this soul-searching and skill-inventory-checking, let’s go back to the original question. And maybe you’ll find that you have a better feeling for the answer yourself already:</p>
|
||
<ul>
|
||
<li>If you are learning a new programming language, you should follow basic tutorials so that you can read, understand and replicate example code without being completely in the dark.</li>
|
||
<li>If you have decided on your game engine you should dive into its manual and basic tutorials. Also make sure to introduce yourself to its community so you can get as much help as possible.</li>
|
||
<li>If the game engine offers tutorials on making some small example game, do that carefully. Even if the resulting demo game has nothing to do with what you aim to build. If there are no tutorials maybe you can instead find a full example code that you can examine in the same way. Not only will this give you a better understanding of how parts of the engine hangs together, it will also give you ideas for what you can do with it. If something is surprisingly easy to do, you might even be able to expand your plans!</li>
|
||
<li>If your game engine comes with pre-made game tools or building commands, the builders can start getting familiar with it. But keep in mind that these will not reflect the full capabilities of the game - your game is not yet built! So don’t set builders off to build large zone projects at this point. If they are building anything at all, it should be small test areas in order to agree on a homogenous form, mood and literary style.</li>
|
||
</ul>
|
||
<p>With a few tutorials and game examples under your belt you are ready to start some preliminary coding-tests of your own. You won’t be making a full game yet! Working without a step-by-step tutorial will give you an idea of just how easy or hard this stuff is to figure out in practice at your current skill level, chosen game engine and language. Make ample use of any manuals, help channels or other resources you can find - anything you will also have access to when you code the real thing. This allows you to judge the quality and usefulness of those resources at the same time.</p>
|
||
<p>You or any builders may also get some building exercise here, using the commands and objects you create for simple testing. Here is a list of things to try out (you should be able to do these in any game engine worth its salt):</p>
|
||
<ul>
|
||
<li>Change some phrasing in the output of an already existing command.</li>
|
||
<li>Make a new command and add it to the game engine. Make it just echo back whatever argument you give it.</li>
|
||
<li>Code an object that echoes “tick” to everyone at its location every 20 seconds.</li>
|
||
<li>Make a new command that creates new ticking objects where you are, but with a name given by you.</li>
|
||
<li>Make a room whose description changes every time you enter it.</li>
|
||
<li>Make an object that deletes itself when its “health” property is changed to zero.</li>
|
||
<li>Make an “attack” command that randomly reduces the “health” property of a target object until it deletes itself.</li>
|
||
<li>These are all simple things but it should give you an idea of what your chosen game engine is capable of and, most importantly, where to find help when you get stuck. If you can’t get past this step even with help you might need to go back and read up on the programming bit some more. Or maybe you should consider an easier game engine.</li>
|
||
</ul>
|
||
<h2>What is your scope?</h2>
|
||
<p>We are now past the “things to do first”. Welcome to the things you do later.</p>
|
||
<p>To reiterate, at this point you should have pondered why you are doing this and made an inventory of your available skills. You have gotten a first taste of the kind of coding work you will need to do and what that entails. You have built a few things to see how that works. Maybe you even changed game engine somewhere in the middle. Still ready to roll? Excellent.</p>
|
||
<p>You should now hopefully have enough information to be able to realistically set the scope of your game.</p>
|
||
<p>Everyone wants to make the best game ever. You want a whole world simulated in minute detail with next-generation artificial intelligence. You want instant action that puts Hollywood to shame and emergent storytelling worthy of Shakespeare.</p>
|
||
<p>It’s okay to dream big, but your first goal now is to get something out. Something that players can actually connect to and give feedback on. Having players enjoying an early version of your game is a great motivational boost in itself, you should try to reach that stage quickly. You are aiming for a first version, not the ultimate version. All online mmo:s keep improving the game after release, that’s the name of the game.</p>
|
||
<p>So keep your grand plans in mind but limit your scope for your first release. For a group of hobbyist developers (which is, frankly what almost all MU* development teams are) your motivational time is precious. You are likely not getting paid during development which means that it’s imperative that you set out to create something you are capable of finishing while still having fun. Adjust the scope to fit this time. If you run out of steam before this time you’ll know you went for too big a scope.</p>
|
||
<h2>How to continue from here?</h2>
|
||
<p>How to progress is depending on your preference. Some prefer to just jump straight into coding and figure out things as they go. It's not a bad idea to to sit down and plan a little first though - and remember that you want <em>a first version</em> of your game at this point, not the <em>final, ultimate</em> version.</p>
|
||
<p>This is beyond the first question asked in this article (which is long enough as it is) but I have written about this process in <a href="https://evennia.com/docs/latest/Game-Planning">Evennia’s game planning documentation</a>. This reiterates some aspects of this article while expanding on others.</p>
|
||
<p>… But in the end, remember that what kills a hobby game project will usually be <em>your own lack of motivation</em>. So do whatever you can to keep that motivation burning strong! Even if it means deviating from what you read in articles like this one. Just get that game out there, whichever way works best for you.</p>
|
||
|
||
<footer class="devblog-footer">
|
||
<span class="devblog-copyrights">
|
||
<p>Images: <a href="https://deviantart.com/griatch-art">©Griatch</a></p>
|
||
|
||
</span>
|
||
<a class="devblog-to-toplink" href="2021.html#2021-03-21-where-do-i-begin?" title="Link to top of post">⇬(top)</a>
|
||
</footer>
|
||
</div>
|
||
|
||
<hr>
|
||
<div class="blog_post">
|
||
<h1 id=2021-01-01-happy-new-years-2021!>
|
||
Happy New Years 2021!
|
||
<a class="devblog-headerlink" href="2021.html#2021-01-01-happy-new-years-2021!" title="Permalink to this blog post">¶</a>
|
||
<div class="devblog-title-date">- January 1, 2021</div>
|
||
</h1>
|
||
<p><a href="https://1.bp.blogspot.com/-QtfaDoIwzkA/X-8XYiPQ27I/AAAAAAAALm4/2-EHKh3IaYMNeoj6WykJvhPccJeJ1KD7QCLcBGAsYHQ/s2048/1a1-sydney_new_years_eve_2008.jpeg"><img src="https://1.bp.blogspot.com/-QtfaDoIwzkA/X-8XYiPQ27I/AAAAAAAALm4/2-EHKh3IaYMNeoj6WykJvhPccJeJ1KD7QCLcBGAsYHQ/s320/1a1-sydney_new_years_eve_2008.jpeg" alt="" /></a></p>
|
||
<p>Another year passed with Evennia, the Python MU* creation system. The past year saw a lot of bug fixing and more gradual additions and in September we released version 0.9.5. This was an intermediary version on our way to 1.0. Time to look forward to next year.</p>
|
||
<p>On my development horizon for 2021 are the main new features planned for v1.0. Some of these are rather big things I've wanted to get around to for a while. They are all happening in the <em>develop</em> branch of Evennia, which is currently <em>not</em> recommended for general use.</p>
|
||
<ul>
|
||
<li><strong>SessionDB:</strong> In the current Evennia, Sessions (the representation of a single client connection) is an in-memory entity. This is changing to be a database-backed entity instead. One will be able to typeclass Sessions like other entities for easier overriding. This change also means that there will be one single point of session-id (the django-session), alleviating some reported issues where the Portal- and Server-side sessions have drifted out of sync. It will also make it a lot easier to support auto-logins, also across server reboots. Db-backed Sessions will also simplify the Portal-Session interaction a lot.</li>
|
||
<li><strong>Script refactor:</strong> The Scripts will see some refactoring, mainly because they are used more as general-storage entities compared to the timers they were originally meant to be. These days Evennia also offers a range of other timer-mechanisms (tickers, delays, Events etc), so it's less important to rely on Scripts for this functionality. The most important change will be that the timer will required to be explicitly started (instead of always starting on script-creation). It will also be possible to stop the timer without the script getting deleted (so separating the timer from the Script's life-cycle).</li>
|
||
<li><strong>Channel refactor:</strong> The Channels will also see changes; notably to make it considerably easier to override and customize them per-caller. Today the Channel typeclass has a maze of different hooks being called, but it's harder for devs wanting users to customize their channel output. So one of the changes will be new hooks on the account/object level for allowing to format the channel output per-user. There will also be a cleanup of the existing hooks to make things clearer.</li>
|
||
<li><strong>New starting tutorial:</strong> As part of the new documentation, I'm writing a new starting-tutorial. This will consolidate many of the existing beginner tutorials in a consistent sequence and if following it to the end, the reader will have created a small beginner game with everything in place. I plan to make a few new contribs to support this.</li>
|
||
<li><strong>Contrib restructure:</strong> Our contrib/ folder is getting a little cluttered. I'm investigating organizing things a little differently by at least moving things into categorized folders. This will lead to people having to change their imports, but we'll see just how it goes.</li>
|
||
<li><strong>Documentation cleanup:</strong> There are a lot of small changes, cleanup and restructuring needed in the docs overall - many of the existing pages are auto-translated from the old wiki and need rewriting both in style and content. The whole idea of moving to the new doc-system is to be able to update the docs alongside the code changes. So hopefully the changes to Sessions, Scripts and Channels etc will all be covered properly from the onset rather than after release (as was the case with the wiki).</li>
|
||
<li><strong>Unittest coverage:</strong> Our current test coverate is 64%, we need to expand this. I hope to get to at least 70% before v1.0 but that is less of a strict goal.</li>
|
||
<li><strong>Evennia PYPI package:</strong> This will be one of the last things before the release of 1.0 - Evennia will be put onto PYPI so you can install with <strong>pip install evennia</strong>. Once we do it will simplify the install instructions dramatically for those not interested in contributing to Evennia proper.</li>
|
||
</ul>
|
||
<p>We also have some pull-requests in the making that will be interesting to have in the system, such as Volund's plugin system, making it easier to inject custom settings on the fly (good for contribs wanting to add their own database tables, for example).</p>
|
||
<p>A lot of work to do as usual!</p>
|
||
<p><strong>Thanks</strong> for the past year, everyone - thanks to all of you that contributed to Evennia with code or by reporting issues or coming with feedback. Thanks particularly to those of you willing (and able) to chip in with some financial support for Evennia development - that's very encouraging!</p>
|
||
<p>And finally, a big thanks to all of you taking part in community discussions, both you asking questions and you helping to answer them tirelessly and with good cheer - you make the Evennia community the friendly, inviting place it is!</p>
|
||
<p>May all our game development move forward and our hard drives stay healthy for another year.</p>
|
||
<p>Cheers and a Happy new year,</p>
|
||
<p>Griatch</p>
|
||
|
||
<footer class="devblog-footer">
|
||
<span class="devblog-copyrights">
|
||
|
||
</span>
|
||
<a class="devblog-to-toplink" href="2021.html#2021-01-01-happy-new-years-2021!" title="Link to top of post">⇬(top)</a>
|
||
</footer>
|
||
</div>
|
||
|
||
</section>
|
||
</body>
|
||
</html> |