Finish blog system

This commit is contained in:
Griatch 2021-11-18 22:44:56 +01:00
parent 69701c2271
commit 029e90b737
17 changed files with 712 additions and 505 deletions

View file

@ -9,6 +9,8 @@
<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">
<meta name="description" content="Evennia is a modern Python library and server for creating text-based multi-player games and virtual worlds (also known as MUD, MUSH, MU, MUX, MUCK, etc). While Evennia handles all the necessary things every online game needs, like database and networking, you create the game of your dreams by writing normal Python modules.">
<!--[if lt IE 9]>
@ -41,12 +43,17 @@
<ul>
<li>
<a href="2021.html"> 2021 (2)
<div class="devblog-calendar-yearlist">
<a href="2021.html"> 2021 (3)
<ul class="devblog-calendar-closed">
<li class="devblog-calendar-post devblog-calendar-tooltip">
<a href="2021.html#2021-11-18-the-blog-moved!">Nov 18
<span class="devblog-calendar-tooltip-text"> The blog moved!</span>
</a>
</li>
<li class="devblog-calendar-post devblog-calendar-tooltip">
<a href="2021.html#2021-03-21-where-do-i-begin?">Mar 21
<span class="devblog-calendar-tooltip-text"> Where do I begin?</span>
@ -60,13 +67,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2020.html"> 2020 (3)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -90,13 +95,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2019.html"> 2019 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -144,13 +147,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2018.html"> 2018 (4)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -180,13 +181,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2017.html"> 2017 (6)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -228,13 +227,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2016.html"> 2016 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -282,13 +279,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2015.html"> 2015 (13)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -372,13 +367,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2014.html"> 2014 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -426,13 +419,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2013.html"> 2013 (5)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -468,13 +459,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2012.html"> 2012 (13)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-open">
@ -558,7 +547,6 @@
</li>
</ul>
</div>
</a>
</li>
@ -597,10 +585,11 @@
<p>... And let's be honest, it's not like I would have come hunting down anyone not complying fully with the Artistic license's terms. Changing to the much simpler and more well-known BSD license better clarifies the actual licensing situation.</p>
<p>After all, far too many older MUD-code bases are weighted by a legacy of licensing issues. Anything we can do to avoid this is better in the long run. Indeed we hope this change in licensing will remove eventual licensing doubts for new adopters and have more people join and contribute to the project.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2012.html#2012-10-28-evennia-changes-to-bsd-license" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -622,10 +611,11 @@
<p>It seems that most Evennia users want to offer some sort of roleplaying environment, or at least a &quot;roleplay-friendly&quot; one. Currently we have at least two MUCK admins who aim to convert their existing, running games to Evennia. Whereas the initial idea was to implement parsers for MUCK's MUF language, it seems the conclusion has now shifted to it being faster and easier to just rewrite the MUF-coded functionality in Python (and maybe use something like <a href="http://evennia.blogspot.se/2012/06/coding-from-inside.html">Evlang</a> for player scripting instead). Several people have announced their interest in creating &quot;RPI&quot;-style games (<em>Armageddon</em> seems to be a big inspiration here), but there was also a MOO admin and even a writer of Interactive Fiction who dropped into the mailing list to see if Evennia could be used for their style of game.</p>
<p>How many of these projects actually reach a point of maturity remains to be seen. But that people are wanting to use the system and is really putting it through its paces is encouraging and very helpful for general Evennia development.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2012.html#2012-10-05-community-interest" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -672,11 +662,12 @@
<h3>Django + MUD?</h3>
<p>It's interesting that whereas Twisted is a pretty natural fit for a Python MUD (I have learned that Twisted was in fact first intended for mudding, long ago), many tend to be intrigued and/or surprised about our use of Django. In the end these are only behind-the-scenes details though. The actual game designer using Evennia don't really see any of this. They don't really <em>need</em> to know neither Django nor Twisted to code their own dream MUD. It's possible the combination fits less for some projects than for others. But at least in our case it has just helped us to offer more features faster and with less headaches.</p>
<footer>
<p>
<small><em><p><em>Image: Franco Nero as the twisted gunslinger Django</em></p>
</em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
<p><em>Image: Franco Nero as the twisted gunslinger Django</em></p>
</span>
<a class="devblog-to-toplink" href="2012.html#2012-08-31-combining-twisted-and-django" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -737,10 +728,11 @@
<h3>Final words</h3>
<p>The combination of <em>commands-as-classes</em> and <em>command sets</em> has proved to very flexible. It's not as easy to conceptualize as is the simple functions in a list, but so far it seems people are not having too much trouble. I also think it makes it pretty easy to both create and, importantly, expand a game with interesting new forms of gameplay <em>without</em> drastically rewriting old systems.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2012.html#2012-08-16-taking-command" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -770,10 +762,11 @@
</ul>
<p>Installing and testing the snippet is simple - just add the new commands to the default cmdset (they will dynamically replace the same-named default ones), dig a few rooms of the new typeclass and play around! Especially the details do make building interesting rooms a lot more fun (I got hung up playing with them way too long last night).</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2012.html#2012-06-26-extending-time-and-details" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -804,10 +797,11 @@
<p>So is Evlang &quot;safe&quot; to use by untrusted evil Players? Well, suffice to say I'm putting it up with a huge EXPERIMENTAL flag, with plenty of warnings and mentions of &quot;on your own risk&quot;. Running Evennia in a chroot jail and with minimum permissions is probably to recommend for the security paranoid. Hopefully Evennia coders will try all sorts of nasty stuff with it in the future and report their finding in our Issue tracker!</p>
<p>But implementation details aside, I must admit it's cool to be able to add custom code like this - the creative possibilities really do open up. And Python - even a stunted version of it - is really very nice to work with, also from inside the game.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2012.html#2012-06-11-coding-from-the-inside" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -833,10 +827,11 @@
<p>In the end the database holds 1000 players (which also means there are 1000 Character objects), about as many rooms and about twice as many attributes.  The &quot;idmapper cache&quot; is the mapper that makes sure all Django model instances retain their references between accesses (as opposed to normal Django were you can never be sure of this). &quot;Attribute cache&quot; is a cache storing the attribute objects themselves on the Objects, to avoid an extra database lookup. All in all we see that keeping the entire database in memory takes about 450MB.</p>
<p>Evennia's caching is on-demand (so e.g. a room would not be loaded/cached until someone actually accessed it somehow). One could in principle run a script to clean all cached regularly if one was short on RAM - time will tell if this is something any user needs to worry about on modern hardware.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2012.html#2012-05-30-dummies-doing-(even-more)-dummy-things" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -856,10 +851,11 @@
<p>Not only should it be easier to find things (and less boilerplate code to write) but I like that one can also easier explore Evennia interactively this way.  Using a Python interpreter (I recommend ipython) you can just import ev and easily inspect all the important object classes, tab to their properties, helper functions and read their extensive doc strings.</p>
<p>Creating this API, i.e. going through and identifying all the useful entry points a developer will need, was also interesting in that it shows how small the API really is. Most of the ev interface is really various search functions and convenient options to inspect the database in various ways. The MUD-specific parts of the API is really lean, as befits a barebones MUD server/creation system.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2012.html#2012-03-26-shortcuts-to-goodness" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -942,10 +938,11 @@
<p>On the other hand these tests were run with a vanilla Evennia install - a full game might introduce more expensive commands and subsystems. Human players may also introduce random spikes of usage. So take this for what it is - a most subjective, un-scientific and back-of-the-envelope measure.</p>
<p>All in all though, I would say that few MUDs these days see 30 concurrent online users, even less 100 ...</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2012.html#2012-02-22-dummies-doing-dummy-things" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -985,10 +982,11 @@
</blockquote>
<p>Evennia does not use this functionality in its default command set, but it offers some very powerful possibilities for MUD creators to design clever parsing schemes.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2012.html#2012-02-17-commands-and-you" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -1052,10 +1050,11 @@
<p>This latter problem is not something I've been able to solve. The only way around it seems to use a temporary variable, assign properly, then save it back, as suggested earlier. I'm thinking this is a fundamental limitation in the way cPython is implemented, but maybe I'm missing some clever hack here (so anyone reading who has a better solution)?</p>
<p>Either way, the <em>db</em> functionality makes for easy coding when saving things to the database, so despite it not working <em>quite</em> like normal Python, I think it's pretty useful.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2012.html#2012-02-15-such-a-small-thing-..." title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -1072,10 +1071,11 @@
<p>Of the Evennia modules, a lot of time is spent in getting properties off objects - this is hard to avoid, it a side effect of Evennia's typeclass system - and this is cached very aggressively already. What also stands out as taking a considerable time is the command system - the merging of command sets in particular does a lot of comparing operations. This happens every time a command is called, so there are things to be done there. The same goes for the help system; it needs to collect all the currently active command sets for the calling player. Maybe this could be cached somehow.</p>
<p>More work on this is needed, but as usual optimization is a double-edged sword. Evennia is written to have a very readable code. Optimization is usually the opposite of readable, so one needs to thread carefully.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2012.html#2012-02-05-evennia's-open-bottlenecks" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -1092,10 +1092,11 @@
<p>Since the server is based on the <a href="http://twistedmatrix.com/trac/">Twisted</a> and <a href="https://www.djangoproject.com/">Django</a> technologies we can offer many modern features out of the box. Evennia is for example its own web server and comes with both its own website and an &quot;comet&quot;-style browser mud client. But before this turns into even more of a sales pitch, I'll just just direct you to the evennia website if you want to know more. :)</p>
<p>I, Griatch, took over the development of Evennia from the original author, Greg Taylor, in 2010.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2012.html#2012-02-05-about-this-dev-blog" title="Link to top of post">⇬(top)</a>
</footer>
</div>

View file

@ -9,6 +9,8 @@
<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">
<meta name="description" content="Evennia is a modern Python library and server for creating text-based multi-player games and virtual worlds (also known as MUD, MUSH, MU, MUX, MUCK, etc). While Evennia handles all the necessary things every online game needs, like database and networking, you create the game of your dreams by writing normal Python modules.">
<!--[if lt IE 9]>
@ -41,12 +43,17 @@
<ul>
<li>
<a href="2021.html"> 2021 (2)
<div class="devblog-calendar-yearlist">
<a href="2021.html"> 2021 (3)
<ul class="devblog-calendar-closed">
<li class="devblog-calendar-post devblog-calendar-tooltip">
<a href="2021.html#2021-11-18-the-blog-moved!">Nov 18
<span class="devblog-calendar-tooltip-text"> The blog moved!</span>
</a>
</li>
<li class="devblog-calendar-post devblog-calendar-tooltip">
<a href="2021.html#2021-03-21-where-do-i-begin?">Mar 21
<span class="devblog-calendar-tooltip-text"> Where do I begin?</span>
@ -60,13 +67,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2020.html"> 2020 (3)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -90,13 +95,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2019.html"> 2019 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -144,13 +147,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2018.html"> 2018 (4)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -180,13 +181,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2017.html"> 2017 (6)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -228,13 +227,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2016.html"> 2016 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -282,13 +279,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2015.html"> 2015 (13)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -372,13 +367,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2014.html"> 2014 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -426,13 +419,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2013.html"> 2013 (5)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-open">
@ -468,13 +459,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2012.html"> 2012 (13)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -558,7 +547,6 @@
</li>
</ul>
</div>
</a>
</li>
@ -627,10 +615,11 @@
<p>This is actually one thing which I do miss with this first Imaginary Realities issue - a way for readers to comment on the articles. This would likely mean a much higher level of complexity and work though, so I can certainly see why it's not there - using the existing MUD forums is probably enough for now.</p>
<p>Anyway, I'm happy to see this thing getting off on a good start. I'm already looking forward to the next issue!</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2013.html#2013-12-16-imaginary-realities-is-back" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -664,10 +653,11 @@
<h4>Imaginary Realities update</h4>
<p>Apparently the reboot of <em>Imaginary Realities</em> (to which I contribute two articles) has been <a href="http://posted-stuff.blogspot.se/2013/11/imaginary-realities-update_15.html">pushed forward a week or two</a>. Reason being, apparently, to finalize the actual presentation of the content. I already signed off on the last editorial fixes way before deadline, so I guess it's just to wait and see what comes of it!</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2013.html#2013-11-28-out-of-band-mergings" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -694,10 +684,11 @@
<h2>Imaginary Realities</h2>
<p>The deadline for entering articles for the <em>Imaginary Realities</em> web zine <a href="http://posted-stuff.blogspot.se/2013/10/imaginary-realities-update.html">reboot</a> has passed. It's a good initiative to bring this back - the <a href="http://en.wikipedia.org/wiki/Imaginary_Realities">original (archived) webzine</a> remains a useful mud-creation resource to this day. I entered two articles, one about Evennia and another about general mud-roleplaying. It will be fun to see how it comes out, apparently the first issue will appear Nov 13</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2013.html#2013-10-22-a-list-of-evennia-topics" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -718,10 +709,11 @@
<p>So if you are an Evennia game developer you should peek at the more detailed mailing list  <a href="https://groups.google.com/forum/#%21topic/evennia/EjAW8S2N86I">announcement</a> on what has changed. The wiki is not updated yet, that will come soon.</p>
<p>Now onward to the next feature!</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2013.html#2013-05-13-one-to-many" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -746,10 +738,11 @@
<p>This has been &quot;brewing&quot; for quite some time, I've been strangely unmotivated to finalize it. Out of band communication means the MUD client can send and receive data to/from the server directly, without the player having to necessesarily enter an active command or see any immediate effect. This could be things like updating a health bar in a client-side GUI, redirect text to a specific client window but also potentially more advanced stuff. I created the Evennia-side oob-handler over Christmas; it allows for client sessions to &quot;sign up&quot; for &quot;listening&quot; to attribute updates, do scheduled checks and so on. It's already in the codebase but is not activated nor tested yet.</p>
<p>On the protocol side (for serializing data to the client) I have a MSDP implementation ready for telnet subnegotiation, it should be simple to add also GMCP once everything is tested. A JSON-based side channel for the webclient is already in place since a long time if I remember correctly, it just need to be connected to the server-side oob-handler once that's finished.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2013.html#2013-01-29-churning-behind-the-scenes" title="Link to top of post">⇬(top)</a>
</footer>
</div>

View file

@ -9,6 +9,8 @@
<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">
<meta name="description" content="Evennia is a modern Python library and server for creating text-based multi-player games and virtual worlds (also known as MUD, MUSH, MU, MUX, MUCK, etc). While Evennia handles all the necessary things every online game needs, like database and networking, you create the game of your dreams by writing normal Python modules.">
<!--[if lt IE 9]>
@ -41,12 +43,17 @@
<ul>
<li>
<a href="2021.html"> 2021 (2)
<div class="devblog-calendar-yearlist">
<a href="2021.html"> 2021 (3)
<ul class="devblog-calendar-closed">
<li class="devblog-calendar-post devblog-calendar-tooltip">
<a href="2021.html#2021-11-18-the-blog-moved!">Nov 18
<span class="devblog-calendar-tooltip-text"> The blog moved!</span>
</a>
</li>
<li class="devblog-calendar-post devblog-calendar-tooltip">
<a href="2021.html#2021-03-21-where-do-i-begin?">Mar 21
<span class="devblog-calendar-tooltip-text"> Where do I begin?</span>
@ -60,13 +67,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2020.html"> 2020 (3)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -90,13 +95,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2019.html"> 2019 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -144,13 +147,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2018.html"> 2018 (4)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -180,13 +181,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2017.html"> 2017 (6)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -228,13 +227,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2016.html"> 2016 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -282,13 +279,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2015.html"> 2015 (13)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -372,13 +367,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2014.html"> 2014 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-open">
@ -426,13 +419,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2013.html"> 2013 (5)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -468,13 +459,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2012.html"> 2012 (13)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -558,7 +547,6 @@
</li>
</ul>
</div>
</a>
</li>
@ -625,10 +613,11 @@
<p>In the contrib are also some example utility commands for setting one's movement speed and to abort movement if you change your mind before the timeout has passed.</p>
<p>This simple start can easily be expanded as befits each individual game. One can imagine introducing anything from stamina costs to make travel time be dynamically calculated based on terrain or other factors.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2014.html#2014-10-02-slowly-moving-through-town" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -659,10 +648,11 @@
<p>This mode allows gamers not only to play multiple Characters on the same Player account (as in mode 2) but to also connect <em>multiple Sessions to each Character.</em> This is a multi-character version of Mode 1, where players can control the same Character via Player logins from several different clients on different machines in any combination.</p>
<p>It's interesting that some of these modes may seem silly or superfluous to people used to a certain type of MU* yet are killer features for other communities. It goes to show how different the needs are for users of different game styles.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2014.html#2014-08-04-dance-my-puppets" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -681,10 +671,11 @@
<p>Evennia's webclient was an ajax-based one using a long polling (&quot;comet&quot;) paradigm to work. These days all modern browsers support <a href="http://en.wikipedia.org/wiki/WebSocket">websockets</a> though, a protocol that allows asynchronous server-client communication without the cludgery of long polling. So Evennia's new webclient will now use websockets if the browser supports it and fall back to the old comet client if it does not.</p>
<p>The new client also has full support for OOB (Out-of-band) communication. The client uses JSON for straight forward OOB messaging with the server. As part of this, I had an excuse to go back to clean up and make the OOB backbone of Evennia more complete. The server-side oob commands are borrowed from <a href="http://tintin.sourceforge.net/msdp/">MSDP</a> but the server side is of course independent of communication protocol (so webclient and telnet extensions can call the same server-side callbacks). I've not yet finalized the documentation for how to use the OOB yet, that will come soon-ish.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2014.html#2014-06-30-webby-stuff" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -710,10 +701,11 @@
<p>An curious aspect of Python memory handling is that (C-)Python does <em>not</em> actually release the memory back to operating system when flushing the idmapper cache. Rather Python makes it internally available so that it does not need to request any more. The result is that if you look at Evennia with the <em>top</em> command, its memory requirement (for example while continuously creating new objects) will not actually <em>drop</em> on a idmapper flush, it will just <em>stop rising</em>.  This is discussed at length in <a href="http://effbot.org/pyfaq/why-doesnt-python-release-the-memory-when-i-delete-a-large-object.htm">this blog</a>, it was good to learn it was not something I did at least.</p>
<p>Apart from the memory stuff, there is work ongoing with fixing the latest batch of user issue reports. Another dev is working on cleaning up the web-related code, it should make it a lot cleaner to overload web functionality with custom code. One of those days I'll also try to sit down and finally convert our web client from long-polling to use web sockets now that Evennia suppports web sockets natively. Time, time ...</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2014.html#2014-06-15-bringing-back-python-memory" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -752,10 +744,11 @@
</ul>
<p>Deadline for the next issue is <a href="http://posted-stuff.blogspot.se/2014/04/write-article-for-imaginary-realities.html">announced to be May 31 2014</a> so don't be shy to contribute your own article. Richard Tew hints at in his introduction, finding people to write articles is the tricky part still.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2014.html#2014-05-16-imaginary-realities-volume-6,-issue-1" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -878,10 +871,11 @@
<p>Most things also takes so much spaaace. Overall GitHub seems designed for people with big monitors. I have those, but most of the time I prefer working on my laptop. I'm sure it's a matter of habit, but Google Code is very compact by comparison. It gave a lot better overview of things. On GitHub I have to scroll everywhere and this is true both in the repo view, wiki and issues.</p>
<p>These small quips nonwithstanding, I think this move will serve us well. There is a good wibe of development and continuing improvement going on at GitHub. There's plenty of help and tutorials all over. Since so many people are using GitHub, problems are more likely to have been answered before. And of course we hope this will in effect help more people find Evennia and join the fun.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2014.html#2014-02-08-moving-from-google-code-to-github" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -900,10 +894,11 @@
<p>Anyway, 2014 promises continued (and hopefully more continuous and gradual) development of Evennia. The closest upcoming upheaval is our move from Google Code to GitHub in a few days (I'll probably do a blog about that once it's done). Apart from that we are currently in a fixing state, cleaning up and fixing remnant issues from the big mergers.</p>
<p>Another Issue of the MUD e-zine <a href="http://journal.imaginary-realities.com/volume-05/issue-01/index.html">Imaginary Realities</a> is coming too. I just contributed with an Evennia-related article. If anyone reading this blog has anything MUD-related to write about, do consider <a href="http://posted-stuff.blogspot.se/2013/12/write-article-for-imaginary-realities.html">contributing</a> before January 31, they need more articles! I don't think you need to be too advanced, anything from a mud-development anecdote to retells of good MUD gaming memories might be interesting I would think.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2014.html#2014-01-24-looking-forwards-and-backwards" title="Link to top of post">⇬(top)</a>
</footer>
</div>

View file

@ -9,6 +9,8 @@
<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">
<meta name="description" content="Evennia is a modern Python library and server for creating text-based multi-player games and virtual worlds (also known as MUD, MUSH, MU, MUX, MUCK, etc). While Evennia handles all the necessary things every online game needs, like database and networking, you create the game of your dreams by writing normal Python modules.">
<!--[if lt IE 9]>
@ -41,12 +43,17 @@
<ul>
<li>
<a href="2021.html"> 2021 (2)
<div class="devblog-calendar-yearlist">
<a href="2021.html"> 2021 (3)
<ul class="devblog-calendar-closed">
<li class="devblog-calendar-post devblog-calendar-tooltip">
<a href="2021.html#2021-11-18-the-blog-moved!">Nov 18
<span class="devblog-calendar-tooltip-text"> The blog moved!</span>
</a>
</li>
<li class="devblog-calendar-post devblog-calendar-tooltip">
<a href="2021.html#2021-03-21-where-do-i-begin?">Mar 21
<span class="devblog-calendar-tooltip-text"> Where do I begin?</span>
@ -60,13 +67,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2020.html"> 2020 (3)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -90,13 +95,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2019.html"> 2019 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -144,13 +147,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2018.html"> 2018 (4)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -180,13 +181,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2017.html"> 2017 (6)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -228,13 +227,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2016.html"> 2016 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -282,13 +279,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2015.html"> 2015 (13)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-open">
@ -372,13 +367,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2014.html"> 2014 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -426,13 +419,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2013.html"> 2013 (5)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -468,13 +459,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2012.html"> 2012 (13)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -558,7 +547,6 @@
</li>
</ul>
</div>
</a>
</li>
@ -681,10 +669,11 @@
<p>I'll also try to get an Evennia Wikipedia.org page together, if you want to look at how it's progressing and help editing it, see the Evennia mailing list for the link.</p>
<p>... And a lot more I don't know yet, no doubt! On towards a new year!</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2015.html#2015-12-17-a-summary-of-a-year" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -719,11 +708,12 @@
<p>So from the perspective of the researchers this seems to be a success. Even so, this reinforces the fact that quite some way to go before an AI can <em>actually</em> play a real MUD successfully. Using MUDs for this type of research is a good idea though, and I do hope they expand and continue this line work in the future.</p>
<p>Who knows, maybe the AI will even find that ancient tomb eventually!</p>
<footer>
<p>
<small><em><p>Image: MIT news</p>
</em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
<p>Image: MIT news</p>
</span>
<a class="devblog-to-toplink" href="2015.html#2015-11-12-mit-uses-evennia!" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -742,10 +732,11 @@
<p>There is no denying that compared to a softcode-coded game, a player-level contributor to an Evennia game needs some extra tools to create and contribute code over version control. The admin also needs to check such contributions for malicious code before merging it into their running game. Now, these are differences I actually consider <em>advantages</em> from a code-quality perspective. And for finding help, people on average are more likely to know Python than a custom softcode language. But here opinions differ and in a given game community those language adoption numbers can be severely skewed.</p>
<p>So far, the MUSHers that have adopted Evennia seems to have done so very much to <em>get away</em> from softcode. It will be interesting to see if things like Kelketek's in-development <a href="https://github.com/evennia/evennia/pull/711">Group building Evennia contrib</a> will be stirring some interest from those on the fence, or if coding their entire game in softcode is indeed an irreplaceable source of their gaming fun.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2015.html#2015-10-11-illustrations-and-soaps" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -786,10 +777,11 @@
</ul>
<p>The emoting contrib comes as two files in evennia/contrib/: rpsystem.py and rplanguage.py. To use them fully, make your Characters and Rooms inherit from the supplied classes and/or add the new commands to the Character command set. Enjoy!</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2015.html#2015-10-02-emoting-system" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -819,11 +811,12 @@
</li>
</ul>
<footer>
<p>
<small><em><p>Logo ©<code>Podcast.__init__</code></p>
</em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
<p>Logo ©<code>Podcast.__init__</code></p>
</span>
<a class="devblog-to-toplink" href="2015.html#2015-09-29-evennia-on-`podcast.__init__`" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -854,10 +847,11 @@
<p>Instead I ended up going with an even simpler solution: Every command that comes in ups a counter. If I want a command rate limit of 100 commands/second, I wait until that counter reaches 100. At that point I check when the time difference between now and when the counter was last reset. If this value is below 1, well then our command rate is higher than 100/second and I can kick in whatever queuing or limiter is needed. The drawback is that until you have 100 commands you won't know the rate. In practice though, once the rate is high enough to be of interest, this simple solution leads to an automatic check with minimal overhead.</p>
<p>In the end I actually removed the batch-sending component completely and instead added command DoS protection higher up on the Portal side. The Command-input is now rate limited using the same count-until-limit mechanism. Seems to work fine. People have no artificial slowdowns anymore and the DoS limiter will only kick in at loads that are actually relevant. And so all was again well in Evennia world.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2015.html#2015-09-24-pushing-through-a-straw" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -902,10 +896,11 @@
<h3>Evennia Web client</h3>
<p>In the pipeline I have some updates to Evennia's websocket/JSON MUD-web client component. These are changes that are intended to make the webclient easier to customize and hook into Evennia output using only HTML/CSS. More details on this will be forthcoming when I have more solid stuff to show.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2015.html#2015-08-27-a-wagon-load-of-post-summer-updates" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -926,11 +921,12 @@
<p>George and whitenoise have already made it clear that they aim to not only make Ainneve a good example Evennia game for others to learn from and build on, but to make the development itself a possibility for people of all skill levels to get involved. So get in touch with them if you are at all interested in Python, Evennia and mud development!</p>
<p>So thanks to George and whitenoise for taking this on, looking forward to see where it leads!</p>
<footer>
<p>
<small><em><p><em>Image from <a href="http://loveintoblender.blogspot.se/p/blog-page_21.html">loveintoblender</a>.</em></p>
</em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
<p><em>Image from <a href="http://loveintoblender.blogspot.se/p/blog-page_21.html">loveintoblender</a>.</em></p>
</span>
<a class="devblog-to-toplink" href="2015.html#2015-06-22-announcing-the-evennia-example-game-project-"ainneve"" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -996,10 +992,11 @@
<p>Reply to <a href="https://groups.google.com/forum/#%21msg/evennia/48PMDirb7go/w_hZ1mWhH8AJ">this thread</a> if you are willing to participate <strong><em>at any level</em></strong> to the project, including chipping in with code from your already ongoing development. I don't know if there'd be any &quot;competition&quot; over the lead-dev position but if multiple really enthusiastic and willing devs step forward we'll handle that then.</p>
<p>So get in touch!</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2015.html#2015-06-15-need-your-help!" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -1015,10 +1012,11 @@
<p>There were 10 entries to the competition and as the <a href="http://optionalrealities.com/forums/index.php?topic=101.0">results are now in</a> (including very elaborate judge feedback!), I encourage you to go read all the entries. The focus was on originality and fresh ideas and maybe these short pitches represent a cross-section of the current trends or a whiff of where the wind is blowing for future games. Or maybe it will help inspire you to make a sales pitch of your own.</p>
<p>You can find all the entries <a href="http://optionalrealities.com/forums/index.php?topic=100.0">linked from the second post of this thread.</a> Enjoy!</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2015.html#2015-05-30-dreaming-big?" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -1037,11 +1035,12 @@
<p>The above mentioned Optional Realities website is so far picking up pace with quite good discussion in its forums (the similarity of name with Imaginary Realities is unfortunate, apparently they were not aware of the former when choosing it).  While targeted at discussions of RPI-style games (a sort of sub-genre of roleplay-enforced MUDs with perma-death), it already hosts several invited articles on game design and general game development that can be interesting for any MU* dev.</p>
<p>People should know by now that I like to support MUD community efforts when possible, and Evennia is thus  listed as an official &quot;affiliate&quot; to Optional Realities (which admittedly means little more than us linking to each other but still). The team behind OR is however also using Evennia for their own &quot;Project Redshift&quot; Sci-fi mud, so we hope to get plenty of good feedback as their project matures.</p>
<footer>
<p>
<small><em><p><em>Image: Truss from Gems NFX</em></p>
</em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
<p><em>Image: Truss from Gems NFX</em></p>
</span>
<a class="devblog-to-toplink" href="2015.html#2015-05-11-things-goin-on" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -1092,11 +1091,12 @@
<p>So far very few of Evennia's docstrings are actually updated for the Google style syntax (or any type of formatting, really) so the result is often not too useful. We hope that many people will help us with the doc strings in the future - it's a great and easy way to get to know Evennia while helping out.</p>
<p>But where the sources <em>are</em> updated, <a href="https://github.com/evennia/evennia/wiki/evennia.utils.evtable">the auto-generated wiki page looks pretty neat</a>.</p>
<footer>
<p>
<small><em><p>(Image from <a href="http://en.wikipedia.org/wiki/File:La_Granja_de_San_Ildefonso_Sfinx01.jpg">Wikimedia commons</a>)</p>
</em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
<p>(Image from <a href="http://en.wikipedia.org/wiki/File:La_Granja_de_San_Ildefonso_Sfinx01.jpg">Wikimedia commons</a>)</p>
</span>
<a class="devblog-to-toplink" href="2015.html#2015-05-09-documenting-python-without-sphinx" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -1136,11 +1136,12 @@ evennia start
<p>The main translation work for existing developers lies in copying over their code from the old game/ directory to the new dynamically created game folder. They need to do a search-and-replace so that they import from evennia rather than from src or ev. There may possibly be some other minor things. But so far testers have not found it too cumbersome or time consuming to do. And all agree that the new structure is worth it.</p>
<p>So, onward into 2015!</p>
<footer>
<p>
<small><em><p>Image: &quot;Bibliothek St. Florian&quot; by Original uploader was Stephan Brunker at de.wikipedia Later versions were uploaded by Luestling at de.wikipedia. - Originally from de.wikipedia; description page is/was here.. Licensed under CC BY-SA 3.0 via Wikimedia Commons - <a href="http://commons.wikimedia.org/wiki/File:Bibliothek_St._Florian.jpg#mediaviewer/File:Bibliothek_St._Florian.jpg">link</a></p>
</em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
<p>Image: &quot;Bibliothek St. Florian&quot; by Original uploader was Stephan Brunker at de.wikipedia Later versions were uploaded by Luestling at de.wikipedia. - Originally from de.wikipedia; description page is/was here.. Licensed under CC BY-SA 3.0 via Wikimedia Commons - <a href="http://commons.wikimedia.org/wiki/File:Bibliothek_St._Florian.jpg#mediaviewer/File:Bibliothek_St._Florian.jpg">link</a></p>
</span>
<a class="devblog-to-toplink" href="2015.html#2015-01-19-building-django-proxies-and-mud-libraries" title="Link to top of post">⇬(top)</a>
</footer>
</div>

View file

@ -9,6 +9,8 @@
<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">
<meta name="description" content="Evennia is a modern Python library and server for creating text-based multi-player games and virtual worlds (also known as MUD, MUSH, MU, MUX, MUCK, etc). While Evennia handles all the necessary things every online game needs, like database and networking, you create the game of your dreams by writing normal Python modules.">
<!--[if lt IE 9]>
@ -41,12 +43,17 @@
<ul>
<li>
<a href="2021.html"> 2021 (2)
<div class="devblog-calendar-yearlist">
<a href="2021.html"> 2021 (3)
<ul class="devblog-calendar-closed">
<li class="devblog-calendar-post devblog-calendar-tooltip">
<a href="2021.html#2021-11-18-the-blog-moved!">Nov 18
<span class="devblog-calendar-tooltip-text"> The blog moved!</span>
</a>
</li>
<li class="devblog-calendar-post devblog-calendar-tooltip">
<a href="2021.html#2021-03-21-where-do-i-begin?">Mar 21
<span class="devblog-calendar-tooltip-text"> Where do I begin?</span>
@ -60,13 +67,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2020.html"> 2020 (3)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -90,13 +95,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2019.html"> 2019 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -144,13 +147,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2018.html"> 2018 (4)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -180,13 +181,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2017.html"> 2017 (6)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -228,13 +227,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2016.html"> 2016 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-open">
@ -282,13 +279,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2015.html"> 2015 (13)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -372,13 +367,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2014.html"> 2014 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -426,13 +419,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2013.html"> 2013 (5)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -468,13 +459,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2012.html"> 2012 (13)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -558,7 +547,6 @@
</li>
</ul>
</div>
</a>
</li>
@ -609,10 +597,11 @@
<p>The first active &quot;game&quot; may have been an Evennia game/chat supporting the Russian version of 4chan... The community driven Evennia demo-game <a href="http://ainneve.evennia.com/">Ainneve</a> is also progressing, recently adding combat for testing. This is aimed at offering an example of more game-specific code people can build from (the way Diku does). There are similar projects meant for helping people create RPI (RolePlay Intensive) and MUSH-style games. That said, the Evennia-game <a href="http://games.evennia.com/game/arx">Arx, After the Reckoning</a> is progressing through beta at a good clip and is showing all signs of becoming the first full-fledged released Evennia game.</p>
<p>So cheers, Evennia for turning 10. That's enough of the introspection and history. I'll get back to more technical aspects in the next post.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2016.html#2016-11-30-birthday-retrospective" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -660,10 +649,11 @@
</ul>
<p>The fixing and tightening of the nuts and bolts will likely continue the remainder of the year. I'm currently working on a refactoring of the way command sets are merged together (see the end of my <a href="http://evennia.blogspot.se/2016/05/evennia-in-pictures.html">blog post on Evennia in pictures</a> for a brief summary of the command system). But with so much new blood in the community, who can tell where things will turn from here!</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2016.html#2016-10-13-season-of-fixes" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -710,11 +700,12 @@
<p>... There's also plenty of bug fixes, documentation work and other minor things or course.</p>
<p>Anyway, summer is now upon us here in the northern hemisphere so things will calm down for a bit, at least from my end. Have a good 'un!</p>
<footer>
<p>
<small><em><p>Image by <a href="https://www.flickr.com/photos/ryanr/142455033">ryancr</a> (released under <a href="https://creativecommons.org/licenses/by-nc/2.0/">Creative Commons</a>)</p>
</em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
<p>Image by <a href="https://www.flickr.com/photos/ryanr/142455033">ryancr</a> (released under <a href="https://creativecommons.org/licenses/by-nc/2.0/">Creative Commons</a>)</p>
</span>
<a class="devblog-to-toplink" href="2016.html#2016-07-01-the-art-of-sharing-nicks-and-descriptions" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -776,10 +767,11 @@
<p>Any number of Command Sets can be merged on the fly. This allows you to implement multiple overlapping states (like combat in a darkened room while intoxicated) without needing huge if statements for every possible combination. The merger is non-destructive, so you can remove cmdsets to get back previous states as needed.</p>
<p>… And thats how many illustrations I have the stamina to draw at this time. Hopefully this quick illustrated dive into Evennia helps to clarify some of the basic features of the system!</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2016.html#2016-05-31-evennia-in-pictures" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -806,10 +798,11 @@
</ul>
<p>There are a truckload of more updates and features that are covered <a href="https://groups.google.com/forum/#%21category-topic/evennia/evennia-news/Ik8hi7ajZlI">on the mailing list</a>.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2016.html#2016-05-22-evennia-0.6!" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -855,10 +848,11 @@
<h2>Happening Next</h2>
<p>The next steps involves making use of these new utilities to implement the basic OOB commands recommended by the MSDP and GMCP protocols along with some recommended functionality. We'll see how long that takes, but progress is being made. And if you are a web guy, do consider <a href="https://github.com/evennia/evennia/issues/924">helping out.</a></p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2016.html#2016-03-24-technical-stuff-happening" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -874,10 +868,11 @@
<p>It also reworks the javascript client into a library that should be a lot easier to expand on and customize. The actual client GUI is still pretty rudimentary though, so I hope a user with more web development experience can take upon themselves to look it over for best practices.</p>
<p>A much more detailed description of what is currently going on (including how to check out the latest for yourself) is found in this <a href="https://groups.google.com/forum/#%21category-topic/evennia/evennia-news/xWQu_YVm14k">mailing list post</a>. Enjoy!</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2016.html#2016-02-14-climbing-up-branches" title="Link to top of post">⇬(top)</a>
</footer>
</div>

View file

@ -9,6 +9,8 @@
<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">
<meta name="description" content="Evennia is a modern Python library and server for creating text-based multi-player games and virtual worlds (also known as MUD, MUSH, MU, MUX, MUCK, etc). While Evennia handles all the necessary things every online game needs, like database and networking, you create the game of your dreams by writing normal Python modules.">
<!--[if lt IE 9]>
@ -41,12 +43,17 @@
<ul>
<li>
<a href="2021.html"> 2021 (2)
<div class="devblog-calendar-yearlist">
<a href="2021.html"> 2021 (3)
<ul class="devblog-calendar-closed">
<li class="devblog-calendar-post devblog-calendar-tooltip">
<a href="2021.html#2021-11-18-the-blog-moved!">Nov 18
<span class="devblog-calendar-tooltip-text"> The blog moved!</span>
</a>
</li>
<li class="devblog-calendar-post devblog-calendar-tooltip">
<a href="2021.html#2021-03-21-where-do-i-begin?">Mar 21
<span class="devblog-calendar-tooltip-text"> Where do I begin?</span>
@ -60,13 +67,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2020.html"> 2020 (3)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -90,13 +95,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2019.html"> 2019 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -144,13 +147,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2018.html"> 2018 (4)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -180,13 +181,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2017.html"> 2017 (6)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-open">
@ -228,13 +227,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2016.html"> 2016 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -282,13 +279,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2015.html"> 2015 (13)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -372,13 +367,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2014.html"> 2014 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -426,13 +419,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2013.html"> 2013 (5)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -468,13 +459,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2012.html"> 2012 (13)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -558,7 +547,6 @@
</li>
</ul>
</div>
</a>
</li>
@ -669,10 +657,11 @@
<h3>The Newbie</h3>
<p>The classic newbie entrance involves walking into a room and saying &quot;Hello&quot; to no one in particular. Bonus points if this is done while ignoring the fact that the room's on fire and the PCs within are all involved in mortal combat. Luckily this entrance trope screams newbie so clearly that players may be urged to pity and lenience. It may in fact be the trigger for getting a more experienced player to take the newbie under their wing and explain a thing or two.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2017.html#2017-10-29-getting-a-mud-rp-scene-going" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -688,10 +677,11 @@
<p>The help Evennia out and get your T-Shirt, look at our <a href="https://github.com/evennia/evennia/issues">Issue Tracker</a>. I have marked some issues with &quot;Hacktoberfest&quot; but you could take on any issue you want. Take a look in particular at the <a href="https://github.com/evennia/evennia/issues/1458">Unit test issue</a> if you are looking to get into contributing on a smaller scale while helping us tremendously.</p>
<p>If you have any questions on contributing (or it's your first time making a Pull Request), don't be shy to drop into #evennia on irc.freenode.net or ask in our <a href="https://groups.google.com/forum/#%21forum/evennia">forum/mailing list</a>. Have fun!</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2017.html#2017-10-01-evennia-in-hacktobergest-2017" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -792,10 +782,11 @@
</li>
</ul>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2017.html#2017-09-20-evennia-0.7-released" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -953,10 +944,11 @@
<h3>Conclusions</h3>
<p>And that's it. It's a bit more involved for the end user than I would have liked, and took me much longer than expected to figure out. But it's possible to reproduce and you only need to do it once - and only if you have a database to convert. Whereas this is necessarily specified for Evennia, I hope this might give a hint for other django users aiming to do something like this!</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2017.html#2017-08-25-renaming-django's-auth-user-and-app" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -1016,11 +1008,12 @@
<p>So while PRs are popping up left and right in master I've been working in the <strong>devel</strong> branch towards what will be the Evennia 0.7 release. The branch is not ready for public consumption and testing yet But tentatively it's about halfway there as I am slowly <a href="https://github.com/evennia/evennia/projects/6">progressing through the tickets</a>. Most of the upcoming features were covered in the previous blog post so I'll leave it at that.</p>
<p>I just want to end by saying that it's a very luxurious (and awesome) feeling for me to see master-branch Evennia expand with lots of new stuff &quot;without me&quot; so to speak. The power of Open Source indeed!</p>
<footer>
<p>
<small><em><p>Image from http://maxpixel.freegreatpicture.com, released as public domain.</p>
</em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
<p>Image from http://maxpixel.freegreatpicture.com, released as public domain.</p>
</span>
<a class="devblog-to-toplink" href="2017.html#2017-04-23-the-luxury-of-a-creative-community" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -1050,10 +1043,11 @@
<p>There was a whole slew of contributions waiting for me when returning from Chistmas break, and this has not slowed since. Github makes it easy to contribute and I think we are really starting to see this effect (Google Code back in the day was not as simple in this regard). The best thing with many of these PRs is that they address common things that people need to do but which could be made simpler or more flexible. It's hard to plan for all possibilities, so many people using the system is the best way to find such solutions.</p>
<p>Apart from the map-creation contribs from last year we also have a new Wildnerness system by mewser/titeuf87. This implements wilderness according to an old idea I had on the mailing list - instead of making a room per location, players get a single room.  The room tracks its coordinate in the wildnerness and updates its description and exits dynamically every time you move. This way you could in principle have an infinite wilderness without it taking any space. It's great to see the idea turned into a practical implementation and that it seems to work so well. Will be fun to see what people can do with it in the future!</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2017.html#2017-02-05-news-items-from-the-new-year" title="Link to top of post">⇬(top)</a>
</footer>
</div>

View file

@ -9,6 +9,8 @@
<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">
<meta name="description" content="Evennia is a modern Python library and server for creating text-based multi-player games and virtual worlds (also known as MUD, MUSH, MU, MUX, MUCK, etc). While Evennia handles all the necessary things every online game needs, like database and networking, you create the game of your dreams by writing normal Python modules.">
<!--[if lt IE 9]>
@ -41,12 +43,17 @@
<ul>
<li>
<a href="2021.html"> 2021 (2)
<div class="devblog-calendar-yearlist">
<a href="2021.html"> 2021 (3)
<ul class="devblog-calendar-closed">
<li class="devblog-calendar-post devblog-calendar-tooltip">
<a href="2021.html#2021-11-18-the-blog-moved!">Nov 18
<span class="devblog-calendar-tooltip-text"> The blog moved!</span>
</a>
</li>
<li class="devblog-calendar-post devblog-calendar-tooltip">
<a href="2021.html#2021-03-21-where-do-i-begin?">Mar 21
<span class="devblog-calendar-tooltip-text"> Where do I begin?</span>
@ -60,13 +67,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2020.html"> 2020 (3)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -90,13 +95,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2019.html"> 2019 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -144,13 +147,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2018.html"> 2018 (4)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-open">
@ -180,13 +181,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2017.html"> 2017 (6)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -228,13 +227,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2016.html"> 2016 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -282,13 +279,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2015.html"> 2015 (13)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -372,13 +367,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2014.html"> 2014 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -426,13 +419,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2013.html"> 2013 (5)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -468,13 +459,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2012.html"> 2012 (13)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -558,7 +547,6 @@
</li>
</ul>
</div>
</a>
</li>
@ -607,10 +595,11 @@
<p>In the immediate future, we'll focus on resolving any bugs that may have slipped through the cracks and also resolve some other issues in the pipeline.</p>
<p>But beyond that, work on Evennia 0.9 will begin. And before you ask - yes Evennia 0.9 is the version where we'll move fully to Python3. Our dependencies have now reached a point where this is possible and there will be no intermediary Python2/3 version. There is no timeline for the 0.9 release but it should hopefully not be too tricky for the community to make the jump when the time comes.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2018.html#2018-09-30-evennia-0.8-released" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -668,10 +657,11 @@
<p>The OLC is currently in the develop branch of Evennia - what will soon(ish) merge to become Evennia 0.8.</p>
<p>It's a pretty big piece of code and as such it's still a bit unstable and there are edge cases and display issues to fix. But it would be great with more people trying it out and reporting errors so the childhood issues can be ironed out before release!</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2018.html#2018-08-18-inline-building-in-upcoming-evennia-0.8" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -729,10 +719,11 @@
<p>The launcher is now only a client connecting to a port, so one difference with this setup is that there is no more 'interactive' mode - that is the Server/Portal will always run as daemons rather than giving log messages directly in the terminal/console. For that reason the Launcher instead has an in-built log-tailing mechanism now. With this the launcher will combine the server/portal logs and print them in real time to easily see errors etc during development.</p>
<p>The merger of the develop branch is still a good bit off, but anyone may try it out already here: https://github.com/evennia/evennia/tree/develop . Report problems to the issue tracker as usual.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2018.html#2018-01-27-kicking-into-gear-from-a-distance" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -753,10 +744,11 @@
<p>At any rate, this coming year will probably be dominated by catching up on issues and edge cases that are lining our <a href="https://github.com/evennia/evennia/issues">Issue tracker</a>. One side effect of more newcomers is more eyes on the code and finding the creaky-bits. At least for me, most of my Evennia-time will be spent resolving bugs and issues. The fun thing is that unlike previous years this is not only up to me anymore - hopefully others will keep helping to resolve issues/bugs to broaden our bandwidth when it comes to keeping Evennia stable. The faster we can handle the backlog of issues the faster we can focus on new shiny features after all.</p>
<p>Finally, a continued great thank you to those of you contributing to the <a href="https://www.patreon.com/griatch">Patreon</a>. Even small donations have a great encouraging value when working on something as niche as a Python MU* game server in 2018 - thanks a lot!</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2018.html#2018-01-05-new-year,-new-stuff" title="Link to top of post">⇬(top)</a>
</footer>
</div>

View file

@ -9,6 +9,8 @@
<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">
<meta name="description" content="Evennia is a modern Python library and server for creating text-based multi-player games and virtual worlds (also known as MUD, MUSH, MU, MUX, MUCK, etc). While Evennia handles all the necessary things every online game needs, like database and networking, you create the game of your dreams by writing normal Python modules.">
<!--[if lt IE 9]>
@ -41,12 +43,17 @@
<ul>
<li>
<a href="2021.html"> 2021 (2)
<div class="devblog-calendar-yearlist">
<a href="2021.html"> 2021 (3)
<ul class="devblog-calendar-closed">
<li class="devblog-calendar-post devblog-calendar-tooltip">
<a href="2021.html#2021-11-18-the-blog-moved!">Nov 18
<span class="devblog-calendar-tooltip-text"> The blog moved!</span>
</a>
</li>
<li class="devblog-calendar-post devblog-calendar-tooltip">
<a href="2021.html#2021-03-21-where-do-i-begin?">Mar 21
<span class="devblog-calendar-tooltip-text"> Where do I begin?</span>
@ -60,13 +67,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2020.html"> 2020 (3)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -90,13 +95,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2019.html"> 2019 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-open">
@ -144,13 +147,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2018.html"> 2018 (4)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -180,13 +181,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2017.html"> 2017 (6)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -228,13 +227,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2016.html"> 2016 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -282,13 +279,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2015.html"> 2015 (13)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -372,13 +367,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2014.html"> 2014 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -426,13 +419,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2013.html"> 2013 (5)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -468,13 +459,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2012.html"> 2012 (13)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -558,7 +547,6 @@
</li>
</ul>
</div>
</a>
</li>
@ -619,11 +607,12 @@
<p>Apart from bug fixing and cleaning up the API in several places, I plan to make use of the feedback received over the years to make Evennia a little more accessible for a new user. This means I'll also try reworking and consolidating the tutorials so one can follow them with a more coherent &quot;red thread&quot;, as well as improving the documentation in various other ways to help newcomers with the common questions we hear a lot.</p>
<p>The current project plan (subject to change) is <a href="https://github.com/evennia/evennia/projects/9">found here</a>. Lots of things to do!</p>
<footer>
<p>
<small><em><p>Beetle image: https://goodfreephotos.com (public domain)</p>
</em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
<p>Beetle image: https://goodfreephotos.com (public domain)</p>
</span>
<a class="devblog-to-toplink" href="2019.html#2019-09-30-blackifying-and-fixing-bugs" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -647,10 +636,11 @@
<p>Eventually work will then commence (in the <strong>develop</strong> branch) on version 1.0 of Evennia. For this next release I think I'll step back from new features a bit and focus on refactoring and cleanup of the API as well as other things around the library's distribution, documentation and presentation.</p>
<p>But for now, onward to summer vacations.</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2019.html#2019-07-04-evennia-0.9-released" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -861,10 +851,11 @@ MUG_DESC <span style="color: #666666">=</span> <span style="color: #BA2121">&quo
<p>In the future I will most likely break out the 'engine' and tools of the Evscaperoom into an Evennia contrib so that others can make similar games with it easily.</p>
<p>Looking forward to future game jams now!</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2019.html#2019-05-26-creating-evscaperoom-part-2" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -982,10 +973,11 @@ MUG_DESC <span style="color: #666666">=</span> <span style="color: #BA2121">&quo
<p>So for the first three days of the jam I used Evennia to build the custom game logic needed to provide the evscaperoom style of game play. I also made the tools I needed to quickly create the game content (which then took me the rest of the jam to make).</p>
<p>In part 2 of this blog post I will cover the technical details of the Evscaperoom I built. I'll also go through some issues I ran into and conclusions I drew. I'll link to that from here when it's available!</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2019.html#2019-05-18-creating-evscaperoom-part-1" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -1001,10 +993,11 @@ MUG_DESC <span style="color: #666666">=</span> <span style="color: #BA2121">&quo
<p>In the interview, which are run by people from the <a href="https://mudcoders.com/">MUD Coder's Guild</a> (a great initiative!), I talk a bit about the history of Evennia, the text-based multiplayer game engine I'm working on, and go into some various technical aspects of the engine as well. Check it out and support the podcast!</p>
<p><a href="https://www.titansoftext.com/4">https://www.titansoftext.com/4</a></p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2019.html#2019-05-09-podcast-about-evennia" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -1033,11 +1026,12 @@ MUG_DESC <span style="color: #666666">=</span> <span style="color: #BA2121">&quo
<p>There will no doubt be some iteration, but I hope to spend the rest of the jam time on content and gameplay. I have some RL things happening in the coming weeks (including work on Evennia proper) but if I can get the time to tie my jam entry together, I'll likely make one or two blog posts about how it was developed and my reasons for making the choices i did. Most likely the code will appear as an Evennia contribution in case people want to do something similar for their own projects.</p>
<p>So, busy days.</p>
<footer>
<p>
<small><em><p>Image credit: The Smithsonian</p>
</em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
<p>Image credit: The Smithsonian</p>
</span>
<a class="devblog-to-toplink" href="2019.html#2019-04-25-steaming-on-eating-jam" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -1062,10 +1056,11 @@ MUG_DESC <span style="color: #666666">=</span> <span style="color: #BA2121">&quo
<p>There are a slew of other things planned for Evennia 0.9 and you can <a href="https://github.com/evennia/evennia/projects/8">follow the progress from our project page</a>. If you want to help out you are of course also very welcome. If you are new and are interested in getting your feet wet in helping out with Open-source development, we have <a href="https://github.com/evennia/evennia/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22">a list of good first issues you could jump into</a>.</p>
<p>Onward into the new year!</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2019.html#2019-01-02-into-2019" title="Link to top of post">⇬(top)</a>
</footer>
</div>

View file

@ -9,6 +9,8 @@
<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">
<meta name="description" content="Evennia is a modern Python library and server for creating text-based multi-player games and virtual worlds (also known as MUD, MUSH, MU, MUX, MUCK, etc). While Evennia handles all the necessary things every online game needs, like database and networking, you create the game of your dreams by writing normal Python modules.">
<!--[if lt IE 9]>
@ -41,12 +43,17 @@
<ul>
<li>
<a href="2021.html"> 2021 (2)
<div class="devblog-calendar-yearlist">
<a href="2021.html"> 2021 (3)
<ul class="devblog-calendar-closed">
<li class="devblog-calendar-post devblog-calendar-tooltip">
<a href="2021.html#2021-11-18-the-blog-moved!">Nov 18
<span class="devblog-calendar-tooltip-text"> The blog moved!</span>
</a>
</li>
<li class="devblog-calendar-post devblog-calendar-tooltip">
<a href="2021.html#2021-03-21-where-do-i-begin?">Mar 21
<span class="devblog-calendar-tooltip-text"> Where do I begin?</span>
@ -60,13 +67,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2020.html"> 2020 (3)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-open">
@ -90,13 +95,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2019.html"> 2019 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -144,13 +147,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2018.html"> 2018 (4)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -180,13 +181,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2017.html"> 2017 (6)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -228,13 +227,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2016.html"> 2016 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -282,13 +279,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2015.html"> 2015 (13)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -372,13 +367,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2014.html"> 2014 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -426,13 +419,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2013.html"> 2013 (5)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -468,13 +459,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2012.html"> 2012 (13)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -558,7 +547,6 @@
</li>
</ul>
</div>
</a>
</li>
@ -691,10 +679,11 @@
<p>New updates and documentation features will primarily be happening in the 1.0-dev version of the documentation. This will include refactoring all pages as well as a new intro-tutorial and many other things.</p>
<p>But that's for future blogs ...</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2020.html#2020-11-14-evennia-0.9.5-released" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -766,10 +755,11 @@
<h4>Conclusions</h4>
<p>Evennia 0.9.5 has a lot of features, but the biggest things are 'meta' changes in the project itself. After it is out, it's onward towards 1.0 again!</p>
<footer>
<p>
<small><em></em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
</span>
<a class="devblog-to-toplink" href="2020.html#2020-10-20-on-using-markdown-with-sphinx" title="Link to top of post">⇬(top)</a>
</footer>
</div>
@ -827,11 +817,12 @@
<p>There's a truckload of stuff already available in master branch, but with the latest contributions of bigger code changes, we have started to use the Evennia develop branch again in earnest again. For a summary of the changes so far, check out the <a href="https://github.com/evennia/evennia/blob/develop/CHANGELOG.md">Changelog</a>.</p>
<p>However, unless you want to contribute to Evennia itself (or really, really want to be on the bleeding edge), you are still recommended to use the master branch for now. A lot of work still to do, as said.</p>
<footer>
<p>
<small><em><p>Image: ©George Hodan, released under CC0 Public Domain</p>
</em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
<p>Image: ©George Hodan, released under CC0 Public Domain</p>
</span>
<a class="devblog-to-toplink" href="2020.html#2020-04-14-spring-updates-while-trying-to-stay-healthy" title="Link to top of post">⇬(top)</a>
</footer>
</div>

View file

@ -9,6 +9,8 @@
<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">
<meta name="description" content="Evennia is a modern Python library and server for creating text-based multi-player games and virtual worlds (also known as MUD, MUSH, MU, MUX, MUCK, etc). While Evennia handles all the necessary things every online game needs, like database and networking, you create the game of your dreams by writing normal Python modules.">
<!--[if lt IE 9]>
@ -41,12 +43,17 @@
<ul>
<li>
<a href="2021.html"> 2021 (2)
<div class="devblog-calendar-yearlist">
<a href="2021.html"> 2021 (3)
<ul class="devblog-calendar-open">
<li class="devblog-calendar-post devblog-calendar-tooltip">
<a href="2021.html#2021-11-18-the-blog-moved!">Nov 18
<span class="devblog-calendar-tooltip-text"> The blog moved!</span>
</a>
</li>
<li class="devblog-calendar-post devblog-calendar-tooltip">
<a href="2021.html#2021-03-21-where-do-i-begin?">Mar 21
<span class="devblog-calendar-tooltip-text"> Where do I begin?</span>
@ -60,13 +67,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2020.html"> 2020 (3)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -90,13 +95,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2019.html"> 2019 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -144,13 +147,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2018.html"> 2018 (4)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -180,13 +181,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2017.html"> 2017 (6)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -228,13 +227,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2016.html"> 2016 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -282,13 +279,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2015.html"> 2015 (13)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -372,13 +367,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2014.html"> 2014 (7)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -426,13 +419,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2013.html"> 2013 (5)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -468,13 +459,11 @@
</li>
</ul>
</div>
</a>
</li>
<li>
<a href="2012.html"> 2012 (13)
<div class="devblog-calendar-yearlist">
<ul class="devblog-calendar-closed">
@ -558,7 +547,6 @@
</li>
</ul>
</div>
</a>
</li>
@ -586,6 +574,147 @@
<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 not 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>
<p><a href="https://github.com/miyuchina/mistletoe">mistletoe</a> is a pure-Python markdown-&gt;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.</p>
</li>
<li>
<p><a href="https://jinja.palletsprojects.com/en/3.0.x/">jinja2</a> is a way to embed special tags in HTML &quot;templates&quot; that can then be programmatically filled with content. It's very similar to the Django templating language.</p>
</li>
</ul>
<h3>The posts</h3>
<p>I then decided that all blog posts should be one markdown file with a file name <code>YYYY-MM-DD-The-post-name.md</code>. So this 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: The blog moved!
date: 2021-10-11
copyrights: Image: [©Griatch](https://deviantart.com/griatch-art)
---
Here the blog starts...
</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 one 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>&lt;h1 id=<span style="color: #BC7A00">{{</span> <span style="color: #19177C">blogpost.anchor</span> <span style="color: #BC7A00">}}</span>&gt;
<span style="color: #BC7A00">{{</span> <span style="color: #19177C">blogpost.title</span> <span style="color: #BC7A00">}}</span>
&lt;a class=&quot;devblog-headerlink&quot; href=&quot;<span style="color: #BC7A00">{{</span> <span style="color: #19177C">blogpost.permalink</span> <span style="color: #BC7A00">}}</span>&quot; title=&quot;Permalink to this blog post&quot;&gt;&lt;/a&gt;
&lt;div class=&quot;devblog-title-date&quot;&gt;- <span style="color: #BC7A00">{{</span> <span style="color: #19177C">blogpost.date_pretty</span> <span style="color: #BC7A00">}}</span>&lt;/div&gt;
&lt;/h1&gt;
<span style="color: #BC7A00">{{</span> <span style="color: #19177C">blogpost.html</span> <span style="color: #BC7A00">}}</span>
&lt;footer class=&quot;devblog-footer&quot;&gt;
&lt;span class=&quot;devblog-copyrights&quot;&gt;
<span style="color: #BC7A00">{{</span> <span style="color: #19177C">blogpost.image_copyrights</span> <span style="color: #BC7A00">}}</span>
&lt;/span&gt;
&lt;a class=&quot;devblog-to-toplink&quot; href=&quot;<span style="color: #BC7A00">{{</span> <span style="color: #19177C">blogpost.permalink</span> <span style="color: #BC7A00">}}</span>&quot; title=&quot;Link to top of post&quot;&gt;⇬(top)&lt;/a&gt;
&lt;/footer&gt;
</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.</p>
<p>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&amp;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>
<p>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!</p>
</li>
<li>
<p>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.</p>
</li>
<li>
<p>Notifications: 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.</p>
</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>
<p>Homepage - <a href="https://www.evennia.com">https://www.evennia.com</a></p>
</li>
<li>
<p>Docs - <a href="https://www.evennia.com/docs">https://www.evennia.com/docs</a></p>
</li>
<li>
<p>Devblog - <a href="https://www.evennia.com/devblog">https://www.evennia.com/devblog</a></p>
</li>
<li>
<p>Forums - <a href="https://github.com/evennia/evennia/discussions">https://github.com/evennia/evennia/discussions</a></p>
</li>
<li>
<p>Code - [https://github.com/evennia/evennia](https://github.com/evennia/evennia</p>
</li>
</ul>
<p>At this point, the only things running elsewhere (and which will continue doing so) are:</p>
<ul>
<li>
<p><a href="https://games.evennia.com">https://games.evennia.com</a> - runs on Google App Engine</p>
</li>
<li>
<p><a href="https://demo.evennia.com">https://demo.evennia.com</a> - Digital Ocean droplet</p>
</li>
<li>
<p><a href="https://discord.gg/AJJpcRUhtF">https://discord.gg/AJJpcRUhtF</a> - Discord server (duh)</p>
</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?
@ -745,11 +874,12 @@
<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">Evennias 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>
<p>
<small><em><p>Images: <a href="https://deviantart.com/griatch-art">©Griatch</a></p>
</em></small>
</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>
@ -797,10 +927,11 @@
<p>Cheers and a Happy new year,</p>
<p>Griatch</p>
<footer>
<p>
<small><em></em></small>
</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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

View file

@ -0,0 +1,118 @@
title: The blog moved!
copyrights: Images: [©Griatch](https://deviantart.com/griatch-art)
---
![to greener pastures image by Griatch](images/to_greener_pastures_by_griatch_art_smallview.jpg)
If you are reading this, you may notice that this blog has moved from [its old home](https://evennia.blogspot.com/) over on blogspot. I had not issues with blogspot except for the fact that writing the blog itself was done in a rather clunky editor with limited support for code.
Every other text in Evennia (docs, comments etc) is written in [markdown](https://en.wikipedia.org/wiki/Markdown) and I figured it would be nice to be able to use that also for my dev blog.
So I put together my own little blog platform.
## Making a little blog platform
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.
I already use github pages for the [Evennia homepage](https://www.evennia.com) and [documentation](https://www.evennia.com/docs). These are simply html pages located in a `gh-pages` branch of the main `evennia` 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.
### The tools
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:
- [mistletoe](https://github.com/miyuchina/mistletoe) 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 `CommonMark` Markdown spec (same as github). I could also easily have it use [pygments](https://pygments.org/) to add code-highlighting to code snippets.
- [jinja2](https://jinja.palletsprojects.com/en/3.0.x/) 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.
### The posts
I then decided that all blog posts should be one markdown file with a file name `YYYY-MM-DD-The-post-name.md`. So this devblog has a file name of `2021-11-18-The-blog-moved.md`.
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:
```
title: The blog moved!
date: 2021-10-11
copyrights: Image: [©Griatch](https://deviantart.com/griatch-art)
---
Here the blog starts...
```
The `title` is mainly to be able to add characters like `!` or `?` that I don't want to add to the file name. I've not used the `date` 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 `copyrights` is to properly credit any resources (mostly images) used.
I wrote my own `build_devblog.py` program that simple reads all `.md` files from one directory. It figures out the date and title (from file name or meta-header) and runs `mistletoe` 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.
### The html
Next I prepared a little `post.html` Jinja template:
```jinja
<h1 id={{ blogpost.anchor }}>
{{ blogpost.title }}
<a class="devblog-headerlink" href="{{ blogpost.permalink }}" title="Permalink to this blog post"></a>
<div class="devblog-title-date">- {{ blogpost.date_pretty }}</div>
</h1>
{{ blogpost.html }}
<footer class="devblog-footer">
<span class="devblog-copyrights">
{{ blogpost.image_copyrights }}
</span>
<a class="devblog-to-toplink" href="{{ blogpost.permalink }}" title="Link to top of post">⇬(top)</a>
</footer>
```
Above, the `blogpost` is a dataclass made available to Jinja, from which it reads and inserts data into the HTML using the `{{ ... }}` 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 `2021.html`, `2020.html` etc. Within each page, the blog post is just an anchor. So the link to this post is
https://www.evennia.com/devblog/2021.html#2021-11-18-The-blog-moved
which seems quite clear.
For the entire year of devblogs, I stole the template used by the main `evennia.com` page, and also used the same CSS file (it's all in the same repo after all). Jinja allows you to do simple `for` loops within the template so it's easy to add all posts into a page.
### The CSS
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.
### Converting the old blog
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.
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).
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).
### Things lost in move
There are a few things that were possible on blogspot that my simple little custom platform cannot do.
- 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!
- 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.
- Notifications: 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.
## Onward
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.
The new Evennia site ecosystem is getting a little more compact. These are services hosted on github/github pages:
- Homepage - [https://www.evennia.com](https://www.evennia.com)
- Docs - [https://www.evennia.com/docs](https://www.evennia.com/docs)
- Devblog - [https://www.evennia.com/devblog](https://www.evennia.com/devblog)
- Forums - [https://github.com/evennia/evennia/discussions](https://github.com/evennia/evennia/discussions)
- Code - [https://github.com/evennia/evennia](https://github.com/evennia/evennia
At this point, the only things running elsewhere (and which will continue doing so) are:
- [https://games.evennia.com](https://games.evennia.com) - runs on Google App Engine
- [https://demo.evennia.com](https://demo.evennia.com) - Digital Ocean droplet
- [https://discord.gg/AJJpcRUhtF](https://discord.gg/AJJpcRUhtF) - Discord server (duh)
There is also an old version of the docs on `ReadTheDocs`. This is out of date and should be removed ...
But overall, the Evennia ecosystem is getting more and more cleaned up as we (slowly) approach the release of Evennia 1.0 ...

View file

@ -9,6 +9,8 @@
<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">
<meta name="description" content="Evennia is a modern Python library and server for creating text-based multi-player games and virtual worlds (also known as MUD, MUSH, MU, MUX, MUCK, etc). While Evennia handles all the necessary things every online game needs, like database and networking, you create the game of your dreams by writing normal Python modules.">
<!--[if lt IE 9]>

View file

@ -4,8 +4,9 @@
<div class="devblog-title-date">- {{ blogpost.date_pretty }}</div>
</h1>
{{ blogpost.html }}
<footer>
<p>
<small><em>{{ blogpost.image_copyrights }}</em></small>
</p>
<footer class="devblog-footer">
<span class="devblog-copyrights">
{{ blogpost.image_copyrights }}
</span>
<a class="devblog-to-toplink" href="{{ blogpost.permalink }}" title="Link to top of post">⇬(top)</a>
</footer>

View file

@ -88,16 +88,6 @@
</h1>
<p>
<em>Evennia</em> is an open-source Python-based framework, codebase andserver for creating text-based multiplayer online games (aka MUD/MU* etc) using moderntechnologies and tools.</p>
<!--h3>
<a name="news" class="anchor" href="#news">
<span class="octicon octicon-link">
</span>
</a>Latest News</h2>
</h3>
<ul>
<li class="newsitem">Nov 14, 2020: Evennia 0.9.5 released! (<a href="http://evennia.blogspot.com/2020/11/evennia-095-released.html">dev blog</a>|<a href="https://github.com/evennia/evennia/blob/v0.9.5/CHANGELOG.md#evennia-095-nov-2020">changelog</a>)</li>
<li class="newsitem">Nov 14, 2020: New evennia.com and documentation site</li>
</ul-->
<h2>
<a name="live-demo" class="anchor" href="#live-demo">
<span class="octicon octicon-link">

View file

@ -528,6 +528,14 @@ a[href="devblog-posts"]:focus {
.blog_post > .highlight > pre {
line-height: 0.5em!important;
}
.devblog-copyrights {
font-size: smaller;
font-style: italic;
}
.devblog-to-toplink {
float: right;
font-size: initial;
}
/* Media alternatives */