THE FREECIV-WEB PROJECT
Freeciv-web is an open-source turn-based strategy game. It can be played in any HTML5 capable web-browser and features in-depth game-play and a wide variety of game modes and options. Your goal is to build cities, collect resources, organize your government, and build an army, with the ultimate goal of creating the best civilization. You can play online against other players (multiplayer) or play by yourself against the computer. There is both a HTML5 2D version with isometric graphics and a 3D WebGL version of Freeciv-web.
Freeciv-web is free and open source software. The Freeciv C server is released under the GNU General Public License, while the Freeciv-web client is released under the GNU Affero General Public License. See License for the full license document.
Currently known servers based on Freeciv-web:
- freecivweb.org (Only longturn games, no 3D)
- Battle for Planet Isotrident (with their own repo), now also in Chinese: Wenming
Freeciv-Web consists of these components:
Freeciv - the Freeciv C server, which is checked out from the official Git repository, and patched to work with a WebSocket/JSON protocol. Implemented in C.
Publite2 - a process launcher for Freeciv C servers, which manages multiple Freeciv server processes and checks capacity through the Metaserver. Implemented in Python.
pbem is play-by-email support.
freeciv-earth is code to generate Freeciv savegames from a map captured from mapbox.
Running Freeciv-web on your computer
The recommended and probably easiest way is to use Vagrant on VirtualBox.
Whatever the method you choose, you'll have to check out Freeciv-web to a directory on your computer, by installing Git and running this command:
git clone https://github.com/freeciv/freeciv-web.git --depth=10
You may also want to change some parameters before installing, although
it's not needed in most cases. If you have special requirements, have a look
copy them without the
.dist extension and edit to your liking.
Don't change the
.dist files, they are the ones from the repo.
⚠️ Notice for Windows users
Please keep in mind that the files are to be used in a Unix-like system (some Ubuntu version with the provided Vagrant file). Line endings for text files are different in Windows, and some editors "correct" them, making the files unusable in the VM. There's some provision to recode the main configuration files when installing, but not afterwards. If you touch shared files after installation, please use an editor that respect Unix line endings or transform them with a utility like dos2unix after saving them.
Running Freeciv-web with Vagrant on VirtualBox
Freeciv-web can be setup using Vagrant on VirtualBox to quickly create a local developer image running Freeciv-web on latest Ubuntu on your host operating system such as Windows, OSX or Linux. This is the recommended way to build Freeciv-web on your computer.
- Install VirtualBox: https://www.virtualbox.org/ - Install manually on Windows, and with the following command on Linux:
sudo apt-get install virtualbox
- Install Vagrant: http://www.vagrantup.com/ - Install manually on Windows , and with the following command on Linux:
sudo apt-get install vagrant
- Run Vagrant with the following commands in your Freeciv-web directory:
This will build, compile, install and run Freeciv-web on the virtual server image. Wait for the installation process to complete, watching for any error messages in the logs.
- Test Freeciv-web by pointing your browser to http://localhost if you run Windows or http://localhost:8080 if you run Linux or macOS.
To log in to your Vagrant server, run the command:
The Vagrant guest machine will mount the Freeciv-web source repository in the /vagrant directory. Note that running Freeciv-web using Vagrant requires about 4Gb of memory and 3 Gb of harddisk space.
System Requirements for manual install
Install this software if you are not running Freeciv-web with Vagrant:
Tomcat 8 - https://tomcat.apache.org/
Python 3.6 - http://www.python.org/
Pillow v2.3.0 (PIL fork) - http://pillow.readthedocs.org/ (required for freeciv-img-extract)
Mysql 5.5.x - http://www.mysql.com/
Maven 3 - http://maven.apache.org/download.html
Firebug for debugging - http://getfirebug.com/
curl-7.19.7 - http://curl.haxx.se/
OpenSSL - http://www.openssl.org/
nginx 1.11.x or later - http://nginx.org/
MySQL Connector/Python - https://github.com/mysql/mysql-connector-python
pngcrush, required for freeciv-img-extract. http://pmt.sourceforge.net/pngcrush/
Tornado 4.4 or later - http://www.tornadoweb.org/
Jansson 2.6 - http://www.digip.org/jansson/
liblzma-dev - http://tukaani.org/xz/ - for XZ compressed savegames.
cwebp to create .webp files of the tileset.
When in a tested system,
you may run
scripts/install/install.sh and it will fetch and configure what's needed.
Start and stop Freeciv-web with the following commands:
All software components in Freeciv-web will log to the /logs sub-directory of the Freeciv-web installation.
Freeciv-Web alternative Docker image
- Build local dockerfile based on debian - this will take a significant amount of time (10 - 20 minutes)
docker build . -t freeciv-web
- Run docker image including required ports on your host
docker run -i -t --user docker -p 8888:8080 -p 80:80 -p 7000:7000 -p 7001:7001 -p 7002:7002 -p 6000:6000 -p 6001:6001 -p 6002:6002 freeciv-web
- Start Freeciv-web with:
Answer prompt for docker sudo password with "docker"
- Connect to docker via host machine using standard browser
Enjoy. The overall dockerfile and required changes to scripts needs some further improvements.
Freeciv-Web continuous integration on Travis CI
Freeciv-web has CasperJS tests which are run by Travis CI on every commit, and by Vagrant when creating a new image. The tests can be found in tests/freeciv-web-tests.js. Please make sure that patches and commits for Freeciv-web don't break the CasperJS tests. Thanks!