A Real Time Strategy game for Linux.
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
images better SDL tileset (adjusted colors) Apr 28, 2014
pixmaps icons 32x32 and 16x16 Jul 21, 2013
.gitignore compilable with mingw Sep 21, 2013
CHANGELOG added a link to the source code in README, upd CHANGELOG Feb 3, 2014
CMakeLists.txt added path.c to CmakeList.txt Aug 4, 2013
COMPILE-WITH-CMAKE SDL multiplayer client, edited README, added INSTALL instructions Aug 6, 2013
INSTALL documentation improved, version changed to 1.2.0 Aug 16, 2013
LICENSE First commit Jun 2, 2013
Makefile added two more default derectories to search in, added -v (version) flag Aug 15, 2013
README Fix 2 minor spelling mistakes Jun 9, 2014
VERSION documentation improved, version changed to 1.2.0 Aug 16, 2013
client.c changed ints to correct enums in struct basic_options, hopefully thos… Aug 1, 2013
client.h Multiplayer works. Version 1.1.0. Jul 9, 2013
common.h simple timeline added Jul 22, 2013
curseofwar-sdl.6 added two more default derectories to search in, added -v (version) flag Aug 15, 2013
curseofwar.6 added two more default derectories to search in, added -v (version) flag Aug 15, 2013
curseofwar.menu edited hints in the menu file Jul 22, 2013
grid.c Had to recover the reclaration of const struct loc dirs. Compiler was… Aug 1, 2013
grid.h made dirs extern to compile as C++ code with cmake Aug 1, 2013
king.c Version 1.1.1, AIO is removed for portability. Fixed a segfaulting ma… Jul 14, 2013
king.h rebalanced proces Nov 3, 2013
main-common.c compilable with mingw Sep 21, 2013
main-common.h separate win_or_lose function, better line, one more image got UI ele… Aug 5, 2013
main-sdl.c no SDL_AUDIO initialization Aug 10, 2013
main.c separate win_or_lose function, better line, one more image got UI ele… Aug 5, 2013
messaging.h Multiplayer works. Version 1.1.0. Jul 9, 2013
mingw-makefile SDL=y by default Feb 3, 2014
network.c Added copyright header to network.* files Jul 28, 2013
network.h Added copyright header to network.* files Jul 28, 2013
output-common.c working SDL gameplay Jul 26, 2013
output-common.h working SDL gameplay Jul 26, 2013
output-sdl.c fixed output for new prices Nov 3, 2013
output-sdl.h separate win_or_lose function, better line, one more image got UI ele… Aug 5, 2013
output.c Merge branch 'rebalance' Feb 3, 2014
output.h simple timeline added Jul 22, 2013
path.c added two more default derectories to search in, added -v (version) flag Aug 15, 2013
path.h Search for data (images) in standard paths, optional INSTALL_DATA env… Aug 4, 2013
server.c Multiplayer works. Version 1.1.0. Jul 9, 2013
server.h Multiplayer works. Version 1.1.0. Jul 9, 2013
state.c changed ints to correct enums in struct basic_options, hopefully thos… Aug 1, 2013
state.h changed ints to correct enums in struct basic_options, hopefully thos… Aug 1, 2013

README

                                        __                      
           ____                        /  ]                     
          / __ \_ _ ___ ___ ___    __ _| |_  /\      /\___ ___  
        _/ /  \/ | |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%)

    
   -    Grassland, normal habitable territory

  People
  ------

  People are your primary resource. Thriving population is essential for your
  victory.
  
  Every tile can support at most 499 people from each country.
  When people from more than one country occupy the same tile, they fight.
  The country that has the highest population at the tile is called the tile
  owner.

  The population of the tile owner is shown on all grassland tiles as follows:

   .      1 - 3    citizens
  ..      4 - 6
  ...     7 - 12
   :     13 - 25
  .:     26 - 50
  .:.    51 - 100
   ::   101 - 200
  .::   201 - 400
  :::   400 - 499

  People migrate from highly populated tiles to less populated tiles.

  Population grows only in cities. In villages by 10%, in towns by 20%, and 
  fortresses by 30% every simulation step. By controlling cities, you control 
  their surrounding territory.

  Flags
  -----

  Every country can put flags on the map. Flags change migration rates, 
  so that people of your country start gathering at the tiles with flags. 

  Player's flags are shown as white "P" on the right side of a tile.
  Flags of the computer opponents are shown as "x" on the left side of a tile.

  The flags can be used to increase population of your own cities, as well as
  for conquering foreign territories.

  When countries are fighting for a city, and if the damage to the defender's 
  army is significant, the city can be destroyed: A fortress becomes a town, 
  a town becomes a village, and the village gets completely burnt by the invaders.
  
  Countries
  ---------

  Computer opponents differ in personality, and it affects the way they fight.

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