Giter VIP home page Giter VIP logo

openapoc's Introduction

OpenApocalypse Tweet

OpenApoc is an open-source re-implementation of the original X-COM: Apocalypse, that requires the original files to run, licensed under the MIT and written in C++ / SDL2. It was originally founded by PmProg in July 2014, and has since grown in to community.


Linux Build Status Windows Build Status Openapoc issues See our Trello TO-DO list for more info Translate OpenApoc to your language OpenApoc MIT license
Openapoc forum Openapoc IRC chat Openapoc Discord Openapoc Facebook Openapoc Vkontakte

Table of Contents

Key_Features

  • Unlimited modding capabilities, which was not possible in the original
  • Port the game to any platform you like (windows, linux, android etc)
  • Support for modern screen resolutions
  • Added a full debug system (hot keys, etc.)
  • Added 'more options' menu (which many improvements)
  • Added skirmish module (fast fight)
  • We can bring, in mods, Julian Gollop cut ideas into the game
  • The new engine have ample opportunities for expansion and changes
    • High FPS, smooth sound during the game without bugs from original
    • No limitations which were in vanilla

Whats_left?

23.11.17

  • Basically, to have a truly playable game, we now need only:
    • Aliens moving from building to building
    • Funding for X-Com and orgs
    • Agent Training
    • Bribes
      That will be a game which has all of its main mechanics implemented. We still have a long way to go, but that's a point at which you can really play Apocalypse in OpenApoc and do everything you need.
  • And then, to reach a mostly complete state, we also require:
    • Proper portal location in alien dimension
    • Proper portal movement
    • Alien Takeover screen
    • Score screen and graphs
    • Proper collapse algorithm for alien tubes
    • Victory & Defeat screens
    • UFO growth halting when relevant building is destroyed
    • Organisations properly buying their vehicles
    • Organisations making treaties, raiding each other and x-com, sending illegal flyers
    • Proper Music (not just 3 looped tracks)
    • Overspawn
  • Then, to be fully vanilla feature complete, we also need:
    • Better battle AI (behavior, taking cover, more intelligent attack patterns)
    • Better city AI (craft retreat when damaged, other stuff)
    • Proper ground vehicles (occupying lanes, blocking, overtaking etc.)
    • Proper location screen (assigning agents to vehicles)
    • Some fixes to Ufopaedia display
    • Proper transferring agents
    • UI Tooltips
    • Controls for editing text (naming soldiers and other property)
    • Agent medals and statistics
    • Agent name generator (more than 10 names and surnames)
    • Colored text support
  • And then, to be a full 1.0 OpenApoc release, we also need:
    • Different file format than xml for storing save files (at least), so that save/loading takes reasonable amount of time
    • Different handling of game data (separation of "rules" and "gamestate", so that for example you can modify a research project in a mod, add that mod to your playthrough midgame, and not have to lose all progress made on that project, or later remove the project mod, and have the changes reversed but research state persist)
    • Close all issues
    • Maybe something else that didn't come up to mind immediately

Building

OpenApocalypse is built leveraging a number of libraries - to provide needed functionality (and save us the time of implementing it ourselves badly)

  • SDL2
  • Boost - specifially the 'locale' library, used for localisation, 'program-options' for settings management, and 'filesystem'.
  • Libunwind - debug backtracing on linux - not needed on windows.

The following libraries are also used, but are shipped as submodules in the repository and directly included in the build, so you don't need to install these dependencies to build or use openapoc.

  • GLM - Math library.
  • libsmacker - Decoder for .smk video files.
  • lodepng - Reading/writing PNG image files.
  • miniz - Zlib-comptible compression library.
  • physfs - Library for reading data from .iso files or directory trees (Note: We use a patched version, available on GitHub - required to read the .iso files we use).
  • pugixml - XML library used for reading/writing the game data files.
  • tinyformat - A c++ typesafe string formatting library.

Building_on_Windows

  • Checkout OpenApoc from GitHub.
  • If you are using the GitHub client for Windows, the submodules should already be setup at first checkout. If not using the github client, or if the submodules have been updated, run the following commands in the 'git shell' from the root of the OpenApoc repository. This should reset the submodule checkouts to the latest versions (NOTE: This will overwrite any changes to code in the dependencies/ directory).
git submodule init
git submodule update -f
  • All the other dependencies (Boost, SDL2) are provided automatically by nuget packages, and Visual Studio should automatically download and install these at the first build.
  • Copy the original XCom:Apocalypse .iso file into the "data/" directory. This could also be a directory containing all the extracted files from the CD, and it should be named the same (IE the directory should be data/cd.iso/). This is used during the build to extract some data tables.
  • Open openapoc.sln in Visual Studio.
  • Build (Release/Debug x86/x64 should all work).
  • When running from the Visual Studio UI, the working directory is set to the root of the project, so the data folder should already be in the right place. If you want to run outside of Visual Studio, you need to copy the whole 'data' folder (including the cd.iso file) into the folder openapoc.exe resides in.

Building_on_Linux

(Tested on Ubuntu 16.04)

  • Install the following packages:
sudo apt-get install libsdl2-dev cmake build-essential git libunwind8-dev libboost-locale-dev libboost-filesystem-dev libboost-system-dev libboost-program-options-dev
  • Checkout OpenApoc from GitHub.
  • Fetch the dependencies from git with the following terminal command (run from the just-created OpenApoc folder).
git submodule init
git submodule update
  • Copy the cd.iso file to the 'data' directory under the repository root (Note - despite dosbox having good linux support, the steam version of X-Com Apocalypse refuses to install in steam for linux - you may need to snatch the cd.iso file off a windows steam install).
cp /path/to/cd.iso data/
  • Create a subdirectory ('build' in this example) in the OpenApoc checkout directory, and from that use cmake to configure OpenApoc.
cd /path/to/OpenApoc
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
  • This cmake command will fail if we're missing a dependency, or your system is for some other reason unable to build - if you have any issues please contact us (see above for links).
  • Build the project with the following command.
make -j4
  • This should create a directory 'bin' under the build directory, with the 'OpenApoc' executable file. OpenApoc by default expects the data folder to be in the current working directory, so running the executable from the root of the git checkout should work.
./build/bin/OpenApoc

How_to_setup_OpenApoc

  • This assumes that you have the file 'cd.iso' - a copy of the original X-Com Apocalypse CD (This can be acquired from Steam - this is required to run)
    • you need have all files in ISO file including MUSIC etc
    • if it's in .iso format, rename it to "cd.iso"
    • if it's not, copy all the contents into a folder and rename the folder to "cd.iso"
    • we also support the .cue / .bin files (which are used, for example, in the gog.com version)
    • you rename the .cue file "cd.iso", put it in the data/ folder, then put the .bin file in the same folder (without changing it's name - so for example the gog.com file remails "XCOM.BIN")
  • Download OpenApoc: Windows Build Status
    • If you see a green latest build then you can get it, if it's not then go to HISTORY at the top and click another build that's green
    • Click Platform x64 (or Win32 if you need 32bit binaries)
    • Click ARTIFACTS
    • Download the first option (without "debug" in it)
    • Unzip downloaded file which will create a new folder with everything from us inside
  • Put cd.iso (image or folder) into data folder inside OpenApoc folder
  • Run and enjoy!
    • If you find bug report it here (upload also openapoc_log.txt from game folder)

Faq

Support

Contact_us

If you're interested, please visit our website.
We also have forums - please pop by and introduce yourself!
We also have an IRC channel on Freenode - #openapoc.

Other links:
facebook

openapoc's People

Contributors

jonnyh avatar istrebitel avatar supsuper avatar pmprog avatar redv avatar idshibanov avatar franciscoda avatar sfalexrog avatar shadowdancer avatar superusercode avatar xracer avatar steveschnepp avatar siemensschuckert avatar sparkstar avatar 5thavenue avatar killermosi avatar habandy avatar makus82 avatar doxalogosgit avatar solariusscorch avatar sonicelo avatar yahuaska avatar

Watchers

James Cloos avatar  avatar

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.