Freeciv.net is an Open Source strategy game which can be played online against other players, or in single player mode against AI opponents.
C JavaScript C++ Python PHP Lua Other
Pull request Compare This branch is 2273 commits behind freeciv:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
freeciv-img-extract
freeciv-music
freeciv-pr
freeciv-proxy
freeciv-web
freeciv
publite2
LICENSE.txt
README

README

THE FREECIV WEB CLIENT
----------------------

This is yet another rewrite of the Freeciv web client, which
will make it possible to play Freeciv in your web browser.

http://www.freeciv.net

This software is licensed under the GNU AFFERO GENERAL PUBLIC LICENSE.


Contact: Andreas Røsdal  - andrearo@pvv.ntnu.no


Overview
--------

The Freeciv Web client consists of these components:

* freeciv - a fork of the main Freeciv C client and server.

* freeciv-proxy - a HTTP proxy which allows web client users
  to connect to Freeciv civservers. This proxy converts C packets
  to and from JSON.

* freeciv-web - a Java web application for the Freeciv web client.
  This application is a AJAX application which consists of HTML,
  Javascript, images and JSP files which make up the application
  viewed in each user's web browser. 

* freeciv-img-extract - extracts the images of the Freeciv tileset,
  and generates a version for the web. This produces a tileset PNG 
  and Javascript. Run this to sync with the upstream Freeciv SVN 
  repository.

* publite2 - a simple way to launch multiple civservers. 

* freeciv-music - contains music which can be played during the game.


System Requirements
-------------------

- Resin 4.0.1 - http://www.caucho.com/

- Java 1.6.0 SDK - http://java.sun.com/javase/downloads/index.jsp

- Python 2.7 - http://www.python.org/

- Mysql 5.0.x - http://www.mysql.com/

- Maven 2 - http://maven.apache.org/download.html

- Probably some Linux distribution.

- Firefox

- Firebug for debugging - http://getfirebug.com/

- Closure Compiler - http://code.google.com/intl/nb/closure/compiler/
  (Bundled in source code, no need to download.)

- curl-7.19.7 - http://curl.haxx.se/

- OpenSSL - http://www.openssl.org/

- nginx 0.8.33 - http://nginx.org/

- simplejson 2.1.1 optional: http://pypi.python.org/pypi/simplejson

Compiling and running the Freeciv Web client
---------------------------------

1. Install the system requirements. Install Resin in /opt/resin

2. Create mysql database called 'freecivmetaserver'
   Import mysql dump into a MySQL database from:  /publite2/mysqldump.sql.bz2

3. Build and configure freeciv-web. 

   - Edit /freeciv-web/src/main/webapp/freecivmetaserve/php_code/settings.php.dist,
     rename this file to settings.php, and update values for fcdb_username and fcdb_pw
     to your MySQL username and password.
   - Edit /freeciv-web/src/main/webapp/WEB-INF/resin-web.xml.dist, rename this
     file to resin-web.xml, and update the values for your MySQL database.
   - Run 'build.sh' in the freeciv-web directory

4. Compile and install Freeciv. This involves running the following commands:
   cd freeciv 
   ./autogen.sh --enable-client=no
   make
   make install     (as root user)


5. Start resin with these commands:  
   cd /opt/resin/bin
   ./resin.sh start

6. Start publite2:
  Run publite2_single.py in the publite2 directory.

7. Run the freeciv-proxy:
  Run run.sh in the freeciv-proxy directory.
 To debug, check the proxy debugging page: 
http://localhost/civ/status
http://localhost:8082/civ/status

8. Start nginx on port 80 as root.

9. Start the web client in your browser:
   Point your web browser to http://localhost/

10. Continue to play the game. 

FIXME: Had to add -lssl when compiling server...

- create .awsAuth and change mode like this:  chmod 600 .awsAuth


Also: 
Set ulimit -n 65535 in /etc/profile
and add some TCP/IP tuning in /etc/sysctrl.conf

TODO:
-----

- Make goto lines wrap in X direction of the map.
- Show city revolt graphics
- Show attack animation.
- Opera 11 broken in jQuery 1.5.x.
- WebGl?
- Port to Python 3.2
- Show borders
- Saving in the client side.
- Show city tile output in city dialog.
- Playback of games.
- HTML5 Web Sockets.