Project: Web of Souls (Start)
What’s in a Name?
Web of Souls is a game platform project. It is meant as a vehicle to learn
new technologies, provide a topic for writing, and code to publish while
having some fun. One of its core ideas is from the Well World Saga science
fiction novels by Jack Chalker and thus the hat tip in the project name to
his Well of Souls. That idea is having different worlds where the species
and environments varied yet they were all connected back at the well world.
What is the project?
In descriptive form the project is to create a game engine/platform that is
open for others to create and play with. It is not a platform that requires
programming skills to use but rather one aimed at allowing anyone who wants
to design interactive places to do so. At the same time the code will be
published and open for developers to play with as well.
What kind of game platform?
To start a game platform that supports places that operate with a system. This
is a rather meta way of saying it will support games that have a world or place
and some rules that govern what you can do there. An online role-playing game
is an excellent example and one of the primary game type targets. At the same
time the core capabilities are expected to be driven by declarative or data
driven setups to allow a wide variety of places to be created. Each of these
places can then be connected to each other much in the way one website can be
linked to another.
One place can be connected to another to create something larger and with
different designs and rules. This could be used internally to manage the
persistent world combined with special random instances. It also will
allow for one person’s creation to be linked to anothers and promote
visibility of that as well as travel between the places. These doorways
will be a big deal in the game and come with a lot of information and
control options for both places.
Declarative and Data Driven
Provide services and language to load places from data and create data from
declarative definitions. At one end of the spectrum you have fully hand
crafted worlds where every component is designed and placed with a purpose.
At the other end you have some simple rules and randomly generated content
to represent your places. The goal is to have a mix to support both games
in the small and in the large. In addition to the game environment this
same approach is to be taken with the rules as well. To do this much of
the game platform API will need to provide services and associations that
connect the rules to the engine.
Persistent or Instance
Support the creation of places that both persist such as a world that can
change with the player’s actions and keep those changes between times of
play and a game place that exists only for that session and may be
different each time it is entered.
User Interface Flexibility
Define the server API such that different types of clients can be written
to interact with the same places. It should be feasible to have a 2D
versus 3D client or perhaps even one that works with text only. Support
both dedicated client views that are player specific and a shared view
that can be put up on a non interactive display such as TV screen.
To accomplish the flexible user interface goal in combination with the
ability to persist worlds the platform will be a server based core with
APIs to enable the creation of clients and tools. While doing this though
a stand alone setup should still be an option that runs even without an
- Server development with Elixir
- Client development with Swift
The project is very ambitious in its goals and direction and should not be
taken too seriously. I hope it at least provides for some interesting
discussions and learning along the way.