Git Product home page Git Product logo

xadrian's Introduction

Xadrian

Xadrian is a factory complex calculator for the games X3: Terran Conflict and X3: Albion Prelude. With this tool you can plan your factory complexes before you build them in-game.

Build instructions

Requirements

  1. Java JDK 6 or higher. Tested with Oracle Java and OpenJDK. On a Debian based Linux system you can install it with the command sudo apt-get install openjdk-6-jdk.

  2. Apache Maven. When installed correctly then you should be able to run mvn --version on the command-line. On a Debian based Linux system you can install it with the command sudo apt-get install maven

  3. Nullsoft Scriptable Install System. When installed correctly then you should be able to run makensis on the command-line. On a Debian based Linux system you can install it with the command sudo apt-get install nsis

  4. Download the WinShell plugin and unpack the DLL file from the downloaded ZIP into the Plugins folder of NSIS. On Linux this is probably /usr/share/nsis/Plugins.

  5. On a 64 bit Linux machine you also need the 32 bit C library to be able to run Launch4J. On a Debian-based system you can install it with the command sudo apt-get install libc6-i386.

Building

Just run mvn package to compile Xadrian. If everything works well then you'll find the Xadrian packages for all platforms in the target directory.

The Windows Setup is only built automatically on Linux when the file /usr/share/nsis/Plugins/WinShell.dll was detected. If your NSIS installation is not in this standard directory or you are building on Windows and you are sure that you have configured NSIS correctly then you can force the NSIS build with mvn package -P nsis.

Factory Complex Template Codes

Since version 1.4.3 Xadrian supports exporting and importing factory complexes to and from template codes. These template codes are very small strings which can easily be shared via Instant Messaging or Websites or whatever.

Template codes are base64 encoded byte streams. The stream consists of dynamically sized unsigned numerical values. The highest bit of each byte defines if there are more bytes belonging to the current value. So when bit 7 is 0 then this is a one-byte value in the range of 0 to 127. When the bit is 1 then this first byte contains the lower 7 bits of the value and the next byte contains additional 7 bits of the value and the highest bit again defines if there a more bits in the next byte.

The stream contains the following values (in this order):

  • Template settings bit mask. Currently the following bits are defined:

      Bit   0: 0=No sector selected, 1=Sector selected
      Bit 1-3: 0=X3:TC complex, 1=X3:AP complex
      Bit 4-6: The template version. Currently always 0.
    
  • When sector is set then the next two values are the X and Y position of the sector. When no sector is set then the next value is the sun power in percent.

  • Next value is the numeric id of the first factory of the complex. This numeric id (nid) can be looked up in the X3:TC factories.xml file or in the X3:AP factories.xml file.

  • If the factory is a mine then the next values are the asteroid yields plus one. A value of 0 marks the end of the list. If the factory is not a mine then the next value defines the quantity of this factory.

  • The last step is repeated until a factory numeric id of 0 is read which marks the end of the factory list.

Example

Let's say we have a X3:AP complex in the sector Harmony of Perpetuity with three Terran Silicon Mines L, two Teladi Ore Mines M, two Teladi Flower Farm M and one Paranid Solar Power Plant Size XL. These are the unencoded values (with description):

  3   Bit 0 is set because a sector is selected, Bit 1 is set because this 
      is a X3:AP complex.
 14   X coordinate of sector Harmony of Perpetuity
  4   Y coordinate of sector Harmony of Perpetuity
 73   Numeric id of Terran Silicon Mine Size L
 21   Asteroid yield 20 + 1
 20   Asteroid yield 19 + 1
 19   Asteroid yield 18 + 1
  0   End of asteroid yield list
223   First 7 bits of numeric id 223 of the Paranid Solar Power Plant XL 
      plus bit 7 set to indicate more bits in the next value
  1   The rest of the bits of numeric factory id 223. Bit 7 is now 0 so no 
      more bytes are needed for this value
  1   Quanity of Paranid Solar Power Plant XL in the complex
 17   Numeric ID of Teladi Ore Mine Size M
 19   Asteroid yield 18 + 1 
 17   Asteroid yield 16 + 1
  0   End of asteroid yield list
 22   Numeric ID of Teladi Flower Farm M
  2   Quantity of Teladi Flower Farm M factories in the complex
  0   End of factory list

So in hexadecimal notation the template code is this:

03 0e 04 49 15 14 13 00  df 01 11 13 11 00 16 02 00

Simply base64-encode these bytes and you'll get the template code string:

dGVzdC50eHQK

That's it.

xadrian's People

Contributors

kayahr avatar

Watchers

Joseph Booker avatar James Cloos 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.