# freeciv-web **Repository Path**: zhaoxiaohong/freeciv-web ## Basic Information - **Project Name**: freeciv-web - **Description**: Freeciv-web is an Open Source strategy game implemented in HTML5 and WebGL, which can be played online against other players, or in single player mode against AI opponents. - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: cleanup - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-04-21 - **Last Updated**: 2024-05-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README THE FREECIV-WEB PROJECT ----------------------- [![Build Status](https://api.travis-ci.org/freeciv/freeciv-web.png)](https://travis-ci.org/freeciv/freeciv-web) 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](LICENSE.txt) for the full license document. Freeciv-web is now playable online at http://play.freeciv.org/ Freeciv WebGL 3D: ![Freeciv-web](https://raw.githubusercontent.com/freeciv/freeciv-web/develop/freeciv-web/src/main/webapp/javascript/webgl/freeciv-webgl.png "Freeciv-web WebGL screenshot") Freeciv-web HTML5 version: ![Freeciv-web](https://raw.githubusercontent.com/freeciv/freeciv-web/develop/scripts/freeciv-web-screenshot.png "Freeciv-web screenshot") Overview -------- Freeciv-Web consists of these components: * [Freeciv-web](freeciv-web) - a Java web application for the Freeciv-web client. This application is a Java web application which make up the application viewed in each user's web browser. The Metaserver is also a part of this module. Implemented in Javascript, Java, JSP, HTML and CSS. Built with maven and runs on Tomcat 8 and nginx. * [Freeciv](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. * [Freeciv-proxy](freeciv-proxy) - a WebSocket proxy which allows WebSocket clients in Freeciv-web to send socket requests to Freeciv servers. WebSocket requests are sent from Javascript in Freeciv-web to nginx, which then proxies the WebSocket messages to freeciv-proxy, which finally sends Freeciv socket requests to the Freeciv servers. Implemented in Python. * [Publite2](publite2) - a process launcher for Freeciv C servers, which manages multiple Freeciv server processes and checks capacity through the Metaserver. Implemented in Python. * [pbem](pbem) is play-by-email support. * [freeciv-earth](freeciv-earth) is code to generate Freeciv savegames from a map captured from mapbox. Freeciv WebGL ------------- Freeciv WebGL is the 3D version, which uses the Three.js 3D engine. More info about the WebGL 3D version can be found for [developers](https://github.com/freeciv/freeciv-web/tree/develop/freeciv-web/src/main/webapp/javascript/webgl) and [3D artists](https://github.com/freeciv/freeciv-web/wiki/Contributing-Blender-models-for-Freeciv-WebGL). Developer: Andreas Røsdal [@andreasrosdal](http://www.twitter.com/andreasrosdal) 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 Ubuntu 16.04 on your host operating system such as Windows, OSX or Linux. This is the recommended way to build Freeciv-web on your computer. 1. Install VirtualBox: https://www.virtualbox.org/ - Install manually on Windows, and with the following command on Linux: ```bash sudo apt-get install virtualbox ``` 2. Install Vagrant: http://www.vagrantup.com/ - Install manually on Windows , and with the following command on Linux: ```bash sudo apt-get install vagrant ``` 3. Install Git: http://git-scm.com/ then check out Freeciv-web from git to a directory on your computer, by running this git command: ```bash git clone https://github.com/freeciv/freeciv-web.git --depth=10 ``` 4. Run Vagrant with the following commands in your Freeciv-web directory from step 3: ```bash vagrant up ``` 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. 5. 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: ```bash vagrant ssh ``` 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/ - Java 8 JDK - http://www.oracle.com/technetwork/java/javase/downloads/ - 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. Start and stop Freeciv-web with the following commands: start-freeciv-web.sh stop-freeciv-web.sh status-freeciv-web.sh All software components in Freeciv-web will log to the /logs sub-directory of the Freeciv-web installation. Freeciv-Web alternative Docker image ----------------------------------------------- 1. Build local dockerfile based on debian - this will take a significant amount of time (10 - 20 minutes) docker build . -t freeciv-web 2. 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 3. Run docker runner in docker bash ./docker-run.sh Answer prompt for docker sudo password with "docker" 3. Connect to docker via host machine using standard browser http://localhost/ Enjoy. The overall dockerfile and required changes to scripts needs some further improvements. Freeciv-Web continuous integration on Travis CI ----------------------------------------------- Freeciv-Web is built on Travis CI on every commit. This is the current build status: [![Build Status](https://api.travis-ci.org/freeciv/freeciv-web.png)](https://travis-ci.org/freeciv/freeciv-web) 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! Developers interested in Freeciv-web ------------------------------------ If you want to contibute to Freeciv-web, see the [issues](https://github.com/freeciv/freeciv-web/issues) on GibHub and the [TODO file](TODO) for some tasks you can work on. Pull requests on Github is welcome! Contributors to Freeciv-web --------------------------- Andreas Røsdal [@andreasrosdal](http://www.twitter.com/andreasrosdal) Marko Lindqvist [@cazfi](https://github.com/cazfi) Sveinung Kvilhaugsvik [@kvilhaugsvik](https://github.com/kvilhaugsvik) Gerik Bonaert [@adaxi](https://github.com/adaxi) Lmoureaux [@lmoureaux](https://github.com/lmoureaux) Máximo Castañeda [@lonemadmax](https://github.com/lonemadmax) and the [Freeciv.org project](http://freeciv.wikia.com/wiki/People)!