a-nikolaev / curseofwar

A Real Time Strategy game for Linux.
http://a-nikolaev.github.io/curseofwar/
GNU General Public License v3.0
320 stars 34 forks source link
                                    __                      
       ____                        /  ]                     
      / __ \_ _ ___ ___ ___    __ _| |_  /\      /\___ ___  
    _/ /  \/ | |X _/ __/ __\  /   \   /  \ \ /\ / /__ \X _/ 
    \ X    | | | | |__ | __X  | X || |    \ V  V // _ | |   
     \ \__/\ __X_| \___/___/  \___/| |     \ /\ / \___X_|   
      \____/                       |/       V  V            

    Curse of War -- Real Time Strategy Game for Linux.
    Copyright (C) 2013 Alexey Nikolaev.

Summary

This is a fast-paced action strategy game for Linux implemented using ncurses user interface.

Unlike most RTS, you are not controlling units, but focus on high-level strategic planning: Building infrastructure, securing resources, and moving your armies.

The core game mechanics turns out to be quite close to WWI-WWII type of warfare, however, there is no explicit reference to any historical period.

See "How to play" section for more details.

Build, Install, Uninstall

  1. Build with make (Linux)

    Ncurses version: $ make

    SDL version: $ make SDL=yes

    To install, "make install" with defined variable DESTDIR. See file INSTALL for details.

  2. Build with CMake (Linux or Windows)

    See COMPILE-WITH-CMAKE for details.

Command line arguments

-W width Map width (default is 21)

-H height Map height (default is 21)

-S [rhombus|rect|hex] Map shape (rectangle is default). Max number of countries N=4 for rhombus and rectangle, and N=6 for the hexagon.

-l [2|3| ... N] Sets L, the number of countries (default is N).

-i [0|1|2|3|4] Inequality between the countries (0 is the lowest, 4 in the highest).

-q [1|2| ... L] Choose player's location by its quality: 1 = the best available on the map, and L = the worst. Only in the singleplayer mode.

-r Absolutely random initial conditions, overrides options -l, -i, and -q.

-d [ee|e|n|h|hh] Difficulty level (AI) from the easiest to the hardest (default is normal).

-s [p|sss|ss|s|n|f|ff|fff] Game speed from the slowest to the fastest (default is normal).

-R seed Specify a random seed (unsigned integer) for map generation.

-T Show the timeline.

-E [1|2| ... L] Start a server for not more than L clients.

-e port Server's port (19140 is default).

-C IP Start a client and connect to the provided server's IP-address.

-c port Clients's port (19150 is default).

-v Display the version number

-h Display help information

How to play

A good and easy mode to start playing: $ curseofwar -i4 -q1 -dee

Or, on a smaller map: $ curseofwar -i4 -q1 -dee -W16 -H16

Normally, the game starts with 4 small countries in the corners of the map. You start as the ruler of the Green country, and your goal is to conquer the whole map.

Tiles

The map is made of hexagonal tiles. They are:

/\^ Mountains, cannot be populated

/$\ Gold mines, cannot be populated too. This is the source of gold for your country. To control a mine, surround it with your army

n Villages, have the slowest population growth (+10%)

i=i Towns, average population growth (+20%)

W#W Fortresses, high population growth (+30%)

Controls

Arrow keys and H, J, K, L are for moving the cursor

R or V build village -> town -> fortress

Space add/remove a flag X remove all your flags C remove a half of your flags

S slower F faster

Q quit

Multiplayer

To start a server for two players: $ ./curseofwar -E 2

To start a client and connect to the server: $ ./curseofwar -C <server's IP>

To specify ports, use -e option for server's port, and -c option for client's port. By default, servers are using port 19140, and clients are using port 19150.

Examples:
  Start a server for a single client using port 11111
    $ ./curseofwar -E 1 -e 11111

  To connect to it:
    $ ./curseofwar -C <server's IP> -e 11111

  Alternatively, to connect to it using port 12345 on the client's side:
    $ ./curseofwar -C <server's IP> -c 12345 -e 11111

Note that all needed map options must be setup when you start a server, the map and other data are transmitted to clients, once they are connected.

Example:
  Server for 3 clients, no computer opponents, hexagonal map, and equal 
  conditions for all:
    $ ./curseofwar -E3 -l3 -S hex -i0 

Game speed cannot be changed by a client, so it must be set initially by the server. Not all data is sent to clients (e.g. info about population is not sent in full).

Multiplayer mode is at relatively early development stage. Changes may occur at any moment. When you play with other people, make sure that you are using the same version of the game. Hopefully, game's client-server communication protocol will be improved in future. All communication is made via UDP.

Please, report you problems with multiplayer.

License

Curse of War -- Real Time Strategy Game for Linux. Copyright (C) 2013 Alexey Nikolaev.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Source code

https://github.com/a-nikolaev/curseofwar

Contact

Dev: Mail: curseofwar-dev@googlegroups.com

General: IRC: #curseofwar on irc.freenode.net