Giter Club home page Giter Club logo

freeciv-web's Introduction

THE FREECIV-WEB PROJECT

Build Status

Freeciv-web is an open-source turn-based strategy game. It's built entirely in HTML5 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.

Freeciv-web is 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.txt for details.

Freeciv-web is now playable online at http://play.freeciv.org/

Contact: The Freeciv Project - [email protected] https://mail.gna.org/listinfo/freeciv-dev

Freeciv-web

Overview

Freeciv-Web consists of these components:

  • 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, PHP, HTML and CSS. Built with maven and runs on the Resin application server.

  • Freeciv - the Freeciv C server, which is checked out from the official svn repository, and patched to work with a WebSocket/JSON protocol. Implemented in C.

  • 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 - a process launcher for Freeciv C servers, which manages multiple Freeciv server processes and checks capacity through the Metaserver. Implemented in Python.

  • Freeciv-img-extract - extracts the images of the Freeciv tileset, and generates a version for the web. This produces a tileset PNG and Javascript.

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 14.04 on your host operating system such as Windows, OSX or Linux.

  1. Install VirtualBox: https://www.virtualbox.org/

  2. Install Vagrant: http://www.vagrantup.com/

  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:

 git clone https://github.com/freeciv/freeciv-web.git --depth=10
  1. Run Vagrant with the following commands in your Freeciv-web directory from step 3:
vagrant plugin install vagrant-vbguest
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.

  1. (Skip this step if you run Windows) For Linux or OS X, then you need to setup a SSH tunnel to port 80 like this:
sudo ssh -p 2222 -gNfL 80:localhost:80 vagrant@localhost -i ~/.vagrant.d/insecure_private_key

Then test Freeciv-web by pointing your browser to http://localhost/ on your host operating system.

To log in to your Vagrant server, run the command:

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:

Compiling and running the Freeciv Web client (old method)

When not using Vagrant, or with other Linux distributions, follow this manual installation procedure to setup Freeciv-web:

  1. Checkout Freeciv-web from github to ~/freeciv-build

  2. Install the system requirements from the previous chapter.

  3. Create mysql database called 'freeciv_web' Import mysql tables into a MySQL database from: freeciv-web/src/main/webapp/meta/private/metaserver.sql

  4. Get, prepare, and build freeciv server:

    cd freeciv ./prepare_freeciv.sh

  5. Install Freeciv. This involves running the following commands:

    cd freeciv/freeciv make install (as root user)

    copy freeciv-web/freeciv/data/fcweb to /usr/local/share/freeciv

  6. Build and configure freeciv-web.

    • Run setup_links.sh and sync.sh in freeciv-img-extract
    • Run sync-js-hand.sh in the scripts/ directory.
    • 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
    • Copy nginx configuration file from publite2/nginx/freeciv-web to /etc/nginx/sites-enabled/ and edit to suit your needs.
  7. Start and stop Freeciv-web with the following commands:
    scripts/start-freeciv-web.sh
    scripts/stop-freeciv-web.sh
    scripts/status-freeciv-web.sh
    (On Vagrant, these scripts are found on /vagrant/scripts)

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

Developers interested in Freeciv-web

If you want to contibute to Freeciv-web, see the TODO file for some tasks you can work on.

Contributors to Freeciv-web

Andreas Røsdal
Marko Lindqvist
and the Freeciv.org project!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.