Skip to content

Commit

Permalink
Added Squall info.
Browse files Browse the repository at this point in the history
  • Loading branch information
erikogenvik committed Nov 7, 2023
1 parent a638fe1 commit 25654c0
Show file tree
Hide file tree
Showing 12 changed files with 75 additions and 95 deletions.
8 changes: 4 additions & 4 deletions content/components/_index.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: "Components"
menu:
main:
weight: 7
main:
weight: 7
---

The Worldforge project is made up of many different components, which initially can be confusing. Creating a virtual
Expand All @@ -19,7 +19,7 @@ about [Ember the client](ember) and [Cyphesis the server](cyphesis).

If you're more patient you perhaps rather want to also read up on the [Atlas](atlas) protocol, or the [Eris](eris)
client library, or the [Mercator](mercator) terrain system. You might be interested in the [Varconf](varconf)
configuration system, the [WFMath](wfmath) math library or the [Metaserver](metaserver). Keep in mind that all code is
available for all of our systems, for you to both inspect and alter.
configuration system, the [WFMath](wfmath) math library, the [Metaserver](metaserver) or the [Squall](squall) assets
sync library. Keep in mind that all code is available for all of our systems, for you to both inspect and alter.

You also want to take a look of the default [worlds](worlds) that we provide.
2 changes: 1 addition & 1 deletion content/components/atlas/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ implementation independent, but so far there has been no need for alternative im
the protocol specification can be found at the [wiki](http://wiki.worldforge.org/wiki/Atlas_Protocol).

Source
The source for Atlas-C++ is available at [Github](https://github.com/worldforge/atlas-cpp).
The source for Atlas-C++ is available at [Github](https://github.com/worldforge/worldforge/tree/master/libs/atlas).
8 changes: 2 additions & 6 deletions content/components/cyphesis/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,12 @@ Some of the features provided are:

### Download

We provide pre-build binaries for Linux.

Either as a [Snap package](https://snapcraft.io/cyphesis)
Or as [native packages](https://software.opensuse.org//download.html?project=games%3AWorldForge&package=cyphesis) for
multiple distros
We provide pre-build binaries for Linux as a [Snap package](https://snapcraft.io/cyphesis)
These packages are all automatically built from the latest source.

### Building

For building see the instructions found in the [source](https://github.com/worldforge/cyphesis).
For building see the instructions found in the [source](https://github.com/worldforge/worldforge/tree/master/apps/cyphesis).

### Running locally

Expand Down
2 changes: 1 addition & 1 deletion content/components/ember/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,5 @@ We provide automatically [built binaries](/downloads), using the latest source.

### Development and more info

If you're interested in developing Ember, the source is available on [Github](https://github.com/worldforge/ember/).
If you're interested in developing Ember, the source is available on [Github](https://github.com/worldforge/worldforge/tree/master/apps/ember).
There's also a lot more information on the [wiki](http://wiki.worldforge.org/wiki/Ember).
2 changes: 1 addition & 1 deletion content/components/eris/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@ important in-game (IG) operations such as entity creation, movement and updates.

### Source

The source code for Eris can be found on [Github](https://github.com/worldforge/eris).
The source code for Eris can be found on [Github](https://github.com/worldforge/worldforge/tree/master/libs/eris).
2 changes: 1 addition & 1 deletion content/components/mercator/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ crater could be applied.

### Source

The source code for Mercator can be found on [Github](https://github.com/worldforge/mercator).
The source code for Mercator can be found on [Github](https://github.com/worldforge/worldforge/tree/master/libs/mercator).

### Dependencies
Mercator depends on WFMath.
Expand Down
49 changes: 49 additions & 0 deletions content/components/squall/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
---
title: "Squall"
menu:
main:
weight: 3
parent: "Components"

---

Squall is the component which makes it possible to sync media from the server to the client.

### Requirements

Since we had a couple of extra requirements we didn't want to just use basic file transfers for syncing media. The main
requirements we had were:

* Allow the client to connect to different servers, each with slightly different media. The idea here is that we provide
base media, and then will let servers extend this with their own media. Thus we envision that a lot of the media will
be similar. So for example, a client would connect to two different servers, which share 90% of common assets. These
common assets wouldn't need to be re-downloaded.
* Have a built in mechanism for when assets are updated. This ties in to the vision we have about a development loop
where the world is created inside a running server, without the need to restart the server. To accomplish this we need
a good way to inform the client about changed assets. Whenever something changes the client should download the
changed asset only.
* Use simple and tested existing file transfer mechanisms. Such as HTTP. We want to make it simple to expose assets
using a basic file server.

### Design

All of these requirements led to the design of Squall. It borrows ideas from both Git and BitTorrent, in the sense that
all assets are represented by hashes of their content. This also goes for directories.

An effect of this is that a client only needs to download any hashes that it's missing. Thus fulfilling requirement #1.

Since directories also are computed using hashes of their content, any change to an assets will resonate to all its
parent directories and in the end to the root directory. Thus every change will result in a new hash for the root, which
can be commnuicated to the client. Thus fulfilling requirement #2.

And since we only need to expose data attached to hashes it's easy to serve data using a standard file server. Thus
fulfilling requirement #3.

### Stand alone library

The Squall library is licensed under the MIT license, with the hope that it might find use outside of Worldforge. While
it's contained in the monorepo it's also possible to build standalone.

### Source

The source for Squall is available at [Github](https://github.com/worldforge/worldforge/tree/master/libs/squall).
2 changes: 1 addition & 1 deletion content/components/varconf/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,4 @@ recommended that developers use Atlas to store complex data.

### Source

The source code for Varconf can be found on [Github](https://github.com/worldforge/varconf).
The source code for Varconf can be found on [Github](https://github.com/worldforge/worldforge/tree/master/libs/varconf).
2 changes: 1 addition & 1 deletion content/components/wfmath/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ the basic math objects that are used to build these shapes (points, vectors, mat

### Source

The source code for WFMath can be found on [Github](https://github.com/worldforge/wfmath).
The source code for WFMath can be found on [Github](https://github.com/worldforge/worldforge/tree/master/libs/wfmath).

### Geometries

Expand Down
8 changes: 4 additions & 4 deletions content/develop/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,17 @@ Everything we do is 100% Free Software. All of our code is available, as is all

#### Getting involved with the community

If you want to get involved with the project you absolutely have to subscribe to the mailing lists. Most of the
If you want to get involved with the project you absolutely have join the chat on Gitter. Most of the
day-to-day communication happens through the [Gitter](https://gitter.im/Worldforge/Lobby) channel, and that also where
you most easily can get in contact with other developers. This site also has a helpful "Open Chat" feature to the right.

In general you should look through how you can interact with the [community](/community).

#### Diving into the code

If you're a coder and want to help out with coding you should start by getting all code set up using
the [Hammer tool](/develop/build-source). We provide a lot of different libraries, and getting everything to compile can
often be tricky. The Hammer tool will help you getting all of this sorted.
If you're a coder and want to help out with coding you should start by getting all code set up by cloning and building
[the code](https://github.com/worldforge/worldforge). We provide all of the code needed both for server and client in
a monorepo.

Once that's done you probably want to look closer at how everything [fits together](/develop/technical-overview). You
will want to look closer at the various [components](/components). Look through the code
Expand Down
83 changes: 10 additions & 73 deletions content/develop/build-source/_index.md
Original file line number Diff line number Diff line change
@@ -1,84 +1,21 @@
---
title: "Building from source"
menu:
main:
weight: 5
parent: "Develop"
main:
weight: 5
parent: "Develop"

---

{{< imgresize screenshot_20140628_150933.jpg "360x360" "A wireframe view" "float:right; padding: 5px;">}}

If you're interested in helping out with the code, or just want to try the latest version, you should build from source.
Since Worldforge is made up of a lot of different components it's often cumbersome and confusing for new developers to
get everything built in order. For that reason we provide a build tool we call Hammer which we strongly recommend that
you use. It will download and build all necessary components. This page provides guidelines and help with building the
whole of Worldforge from source.

### Get access to a Linux system.

The core WorldForge system runs on Linux, MacOSX and Windows, and may well run on other unix like systems, but getting
involved in development is easiest if you are working on Linux, as that is the platform of choice of most of our
developers. This is not to say you must develop on Linux. We have developers who primarily use other systems, but life
is much easier if every developer at least has access to a Linux system to check stuff on. Most of the WorldForge C++
code uses standard GNU tools like autoconf and automake to manage the build, so it helps to be familiar with these. Any
up to date Linux distro should be fine. The best thing to do is get Linux installed on a machine you own, so you have
admin rights, and can work around any minor issues. It does not need to be your main desktop or laptop machine, and in
many ways your Linux system will not even need to have a monitor attached, as you can do almost everything by logging in
remotely.

### Fetch code and build.

The Worldforge project contains a large number of libraries and clients, which can be confusing for a newcomer. To
alleviate this we provide a script which will automatically fetch and build all the needed libraries used by Worldforge,
as well as the Cyphesis server and the Ember and Sear clients. This method is very much preferred for any new developer,
as it oftentimes can be time consuming to get all of the different libraries built in the correct order. Instructions on
how to use Hammer can be found [here](http://wiki.worldforge.org/wiki/Hammer_Script).
If you are impatient, here are the basic steps needed for building and running both the Cyphesis server and the Ember
client locally

git clone git://github.com/worldforge/hammer.git
cd hammer
./hammer.sh install-deps all
./hammer.sh checkout all
./hammer.sh build all
./work/local/bin/cyphesis&
./work/local/bin/ember

However, if you want to fetch and compile everything yourself we provide the instructions for this below.

### Get the code

We host all of our code on [Github](https://github.com/worldforge)

### Build and install the libraries.

Developers and users are encouraged to install WorldForge libraries from the binary packages available from our download
pages, or as part of many Linux distributions. As a developer, you should find this the best and easiest way to keep up
to date with the libraries, and help us test the packages.

However, building all the libraries from git source will provide an invaluable opportunity to learn how the WorldForge
system is put together. The libraries should be built in the following order, but feel free to change this order if you
want to find out how the dependencies work.

* [Atlas-C++](/components/atlas-cpp)
* [Varconf](/components/varconf)
* [WFMath](/components/wfmath)
* [Mercator](/components/mercator)
* [Eris](/components/eris)
* [Worlds](/components/worlds)

The [components section](/components) has details of what these libraries do, and you should make yourself familiar with
their roles.

### Build the Ember client
All the code needed to run a server or a client is available in
our [main monorepo](https://github.com/worldforge/worldforge).

The [Ember](/components/ember) client is the main client used both for playing the game as well as authoring the world.
The main dependencies that you might need to install yourself are [Ogre3D](http://www.ogre3d.org/)
and [CEGUI](http://www.cegui.org.uk/).
There are instructions available on how to setup dependencies through Conan, and how to build the various components.

### Build and install a WorldForge server.
### Get other code

The [Cyphesis](/components/cyphesis) server is the main game play server. Instructions for building from source are
available in the README file in the source directory, and on its page on the website. It is easiest to build and run on
Linux, but has also been tested on MacOSX and on Windows using [MingW](http://www.mingw.org/). Once you have it
installed and running, try connecting to it using Ember.
We host all of our code on [Github](https://github.com/worldforge). While most features can be found in the main
monorepo we also have a couple of other repositories containing code that might be of interest.
2 changes: 0 additions & 2 deletions content/downloads/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,8 @@ We provide prebuilt binaries for Linux and Windows. These are automatically buil

* For [Linux, as AppImage](https://amber.worldforge.org/ember/releases/unstable/Ember-x86_64.AppImage)
* For [Linux, as Snap](https://snapcraft.io/ember)
* For Linux, as [native packages](https://software.opensuse.org//download.html?project=games%3AWorldForge&package=ember) for multiple distros.
* For [Windows](https://amber.worldforge.org/ember/releases/unstable/Ember-latest.exe)

### Cyphesis server

* As a [Snap package](https://snapcraft.io/cyphesis)
* As [native packages](https://software.opensuse.org//download.html?project=games%3AWorldForge&package=cyphesis) for multiple distros

0 comments on commit 25654c0

Please sign in to comment.