/c2ng

PCC2 Next Generation, a VGA Planets client

Primary LanguageC++OtherNOASSERTION

                       Planets Command Center II
                      ---------------------------
                         Next Generation (c2ng)


WHAT IS PCC2 (c2ng)?
=====================

  Planets Command Center (PCC) is a game client for VGA Planets 3.

  VGA Planets is a play-by-email space-combat strategy game for DOS,
  written by Tim Wisseman. PCC 1.x is a closed-source DOS program
  since 1995. PCC2 is an open-source version for 32-bit operating
  systems in work since 2001.

  PCC2 Next Generation (c2ng) is the next step in the evolution of
  PCC2. It is intended to be 100% compatible to PCC2. However, it does
  away with many self-imposed limitations of PCC2.


Project Goals
--------------

  We do no longer expect to ever have a DOS version. Multithreading /
  multicore is no longer rocket science. We assume every operating
  system we ever run on has threads, and every library we use can deal
  with them. Computers are fast to allow us some internal abstractions
  that finally yield better reliability.

  This also allows us to implement features that cannot be done in the
  original 2001 PCC2 core:
  - network play. Talk to your host directly. No more messing with
    folders and zip files.
  - targeting a GUI library other than SDL 1.2. In particular, this
    means we can target SDL 2, allowing us to run on Android. Maybe we
    can even run on a direct OS interface with no library between.
  - history. The single most often requested feature.
  - more scriptability.

  Basically, this is the VGA Planets client for the 21st century.


Status
=======

  This is a complete, playable Planets client at a feature level
  comparable to PCC1/PCC2. It is pretty solid and mature and can be
  used by everyone.

  The user interface is still rough at times; I hope to clean that up
  in the future. In particular, it flickers a bit more than I like to
  admit.


User Features
--------------

  Browsing and loading local and network games ................. done
    Browse your hard disk as well as network.
    Support servers that do not have VGAP binary formats (Nu).

  Manage multiple turns ........................................ done
    Browse history while playing.

  Multithreaded combat simulation .............................. done
    We can use multiple threads for simulation and thus (again)
    offer the fastest and most feature-rich combat simulation ever.

  Lots of utilities ............................................ done
    All the PCC2 command-line utilities, plus some more, for all your
    scripting needs, e.g. c2unpack, c2check, c2export, etc.

  SDL2 ......................................................... done
    The SDL2 graphics library is more up-to-date than SDL1 that PCC2
    is using. In particular, it allows painless full-screen mode on
    current computers.

  All the features of PCC1/PCC2 .......................... 99.9% done
    Scripting. Battle simulator. History. Zoomable map. And so on.
    New features nowadays often get born in PCC2ng.


Technical Features
-------------------

  (Not directly relevant for players, but I like them.)

  Manage multiple games ........................................ done
    PCC2 used global variables. This one does not, so it can have
    multiple instances.

  Model/View/Presenter separation with multiple threads ........ done
    More fluent GUI. No more "Application not responding".

  Scripting engine ............................................. done
    Controls most of the GUI and data displays.

  Meaningful test coverage ..................................... done
    PCC2 has a meager test coverage of around 10%. c2ng currently
    achieves >50% in the application, ~90% in the foundation
    libraries. This, together with some newer coding styles, gives it
    a greater stability than PCC2, and some confidence that changing a
    feature does not break another.

  PlanetsCentral / PCC2Web ..................................... done
    PlanetsCentral now runs exclusively on servers provided by c2ng,
    in better quality than before. c2ng serves as an architectural
    blueprint for PCC2 Web.


Still Missing
--------------

  Installer (for Windows), Package (for Linux).

  Full network play, in particular, for Nu.

  Standalone simulator, maybe?


Installation Instructions
=========================

  As of 2.41, the Windows version is distributed in a *.zip file. To
  install, just unzip into an empty directory (e.g. C:\Planets\PCC2).

  Install an artwork plugin from <http://phost.de/~stefan/plugins/> by
  downloading the *.c2z file, and dropping it on c2pluginw.exe.

  Linux users need to install from source; see doc/HackingGuide.txt.


How to use it
=============

  The main program is c2ng(.exe); it replaces the former pcc-v2(.exe).

  When you start the program, you will be shown a browser starting
  with "My Computer".

  (a) To play a local game, use the browser to browse to a game
  directory on your hard disk.

  (b) To play a network game, press [Ins] to add a network account.
  c2ng will ask for
  - user name
  - server type (PlanetsCentral or planets.nu)
  - server address (you can leave this blank)
  A new entry will appear representing that account. You can enter it
  like a normal folder to browse your games; you will be asked for
  your password the first time you do that in a session. Also, c2ng
  will ask you for a game directory where to place local files. If you
  choose the default, c2ng will store the files in your user profile.

  Use arrow keys and [Enter] to browse. After entering a game, you
  will see the regular PCC2 main screen with F1/F2/F3 buttons and all
  the usual playing options. Play normally. When you exit, a turn file
  will be written.

  If you have configured PCC2 to make backups of your result files,
  [Alt]+[Up] will show the previous turn. (If you have not configured
  PCC2 to make backups, do so now.)


Program List
-------------

  - Main Utilities
    . c2ng: graphical player client

  - Utilities
    . c2check: turn checker
    . c2compiler: script compiler
    . c2configtool: configuration handler
    . c2export: game data export
    . c2gfxgen: procedural graphics generation
    . c2mgrep: message search
    . c2mkturn: maketurn utility
    . c2plugin: plugin manager
    . c2pluginw: plugin manager (simple GUI)
    . c2rater: game rating computer
    . c2script: scripting engine
    . c2simtool: battle simulator command-line tool
    . c2sweep: game directory cleaner
    . c2unpack: unpack utility
    . c2untrn: turn file decompiler

  - PlanetsCentral
    . c2console: console
    . c2dbexport: database exporter
    . c2docmanager: manage documentation for c2doc-server
    . c2doc-server: documentation server
    . c2fileclient: file client
    . c2file-server: file server
    . c2format-server: format (binary I/O) server
    . c2host-server: host server
    . c2logger: server control and logging utility
    . c2mailin: incoming mail processor
    . c2mailout-server: mail queue server
    . c2monitor-server: server status monitor
    . c2nntp-server: NNTP server
    . c2play-server: web-based play backend server
    . c2router-server: web-based play session manager
    . c2talk-server: PM/forum server
    . c2user-server: user manager


Future Milestones
------------------

  - complete the Nu integration
  - more server integration
  - fancier GUI and more graphics resolutions!
  - implement internationalisation and help
  - can we integrate forums/activities?
  - more operating systems (Android!)
  - C++11/17
  - OpenGL


Contributing
=============

  This package is licensed under a BSD license; see COPYING.txt. You
  can get sourcecode, build it yourself, and modify if you wish. See
  <doc/HackingGuide.txt> for instructions.

  Since 2.40.10 (May 2021), c2ng is maintained in a public git
  repository. You are welcome to submit bug reports, patches, or pull
  requests.

  Most PCC1/PCC2 code has now been ported so the code should now be
  fairly stable, structure-wise.


Contact
========

  Web site: <http://phost.de/~stefan/pcc2ng.html>

  Github: <https://github.com/stefanreuther/c2ng>

  PlanetsCentral: <https://planetscentral.com/>

  Email: <streu@gmx.de>