Moving to a monorepo

— November 7, 2023
The Worldforge project contains a large selection of different libraries, server, client and tools. For quite some while these have all been spread out into separate repositories. One of our initial thoughts was to release these components separately so that various third party projects could use them. However, as time went by it became apparent that this vision never materialized. None of our libraries have seen use outside Worldforge. Thus is was only natural to combine the components that are in active use into one monorepo, which can be found here.

Cyphesis Python docs

— January 10, 2023
The Cyphesis server is mainly written in C++ and provides scripting though Python. All the rules that make the world tick are written in Python. However, so far there hasn’t been a good way to provide good documentation for the bindings. Any Python develop would have had to either look at previous code, or look up the actual bindings themselves. With a recent change we now provide automated Python “stubs”, which helps a lot.

New site - same as old

— December 13, 2022
We’ve updated the main site. It’s now the same as the old, but instead of using a CMS (Concrete5) we’ve opted for a simpler approach using the Hugo static site generator. Everything should look pretty much the same as before. We’ve now also removed the ability to comment on posts and pages, as this only served as a magnet for spambots. The source code for the site can now be found at Github.

Simple rules combined to complex gameplay

— June 17, 2020
A while ago I was asked about an example of how the Worldforge rules work. The focus was especially on how a series of simple rules allows for more complex game mechanics. Since I wrote down an example of how consumption works I thought I might as well post it here, since it provides a good example of how we think about game rules. One example could be the “bread” entity type.

Movement contraints

— June 14, 2020
Worldforge _finally_ got “movement constraints” implemented. This feature basically allows world creators to declare rules for which entities the players are allowed to move. Previously there were no constraints, so any random player could pick up any random other entity (such as a house, or another player). As with so many other things the main reason why such a seemingly basic feature took such a long time to implement is that we want to make the rules generic and dynamic enough to allow for many different kinds of games.

Installable packages for Windows and Linux

— December 30, 2019
We’ve extended our infrastructure for building installable packages and now provide a wider variety. Since before we have used the Open Build Service to automatically build packages for a wide selection of Linux distros. This setup can be viewed here. This setup has now been expanded with both TravisCI, AppVeyor and Snapcraft. On TravisCI we have a setup where we build packages for both Linux and OSX, using both GCC and Clang.

Adding fishing gameplay

— September 23, 2019
Recently I’ve performed a major refactoring of how entity interaction happens in the Worldforge system. The basis of it is the new “usages” property which declares the actions that are available for each entity. As an example of how this can be used I’ve implemented a simple “fishing” task. When fishing you need a “fishing rod”, and you need worms (or “annelids” as they are called in the system). You get these by digging in the ground with a shovel and then sifting through the resulting piles of earth with a sieve.

Autoreload of rules and scripts in Cyphesis

— May 21, 2018
I’ve done some work in Cyphesis to allow for much more powerful features for live editing of the world, mainly editing rules and scripts. Cyphesis have since long before had support for live editing of rules. It has been possible to send Atlas operations from clients for editing or installing new rules. However, this is not really the workflow you would want, since any rule change would be detached from the source code.

SQLite used in Cyphesis

— May 20, 2018
Our main server, Cyphesis, now uses SQLite instead of PostgreSQL by default. The main reason for this change is to make the system less complex and to make setup easier. For a long time we’ve used PostgreSQL as backend for all persisted data. Our persistence needs are however very modest. We only store accounts (created once) and entity state. As such we don’t really need a complex database system; it’s good enough with a simpler system.

Updated Blender Addon

— April 20, 2018
The Worldforge Blender Addon has been seen a large update, adding some cool features and fixing some long standing issues. In this post I’ll describe what’s changed. But first, What is the Worldforge Blender Addon? Blender is the designated tool used by the Worldforge project to create 3d assets (“meshes”). It’s a fully featured, professional and totally free 3d creation tool. Since all of our assets are provided as Free Software it’s important that the source material is in a format which allows anyone to access it.