Code Monkey home page Code Monkey logo

endless-sky-editor's Introduction

endless-sky-editor

Map editor for the Endless Sky universe.

To compile the editor, you will need to install Qt Creator. Binary releases will happen occasionally, but are not as high a priority right now as the development of the game itself.

Editing a map file

To edit a map file, use File -> Open... and browse to the file you want to edit. If it is in a standard game data location (i.e. an “images” folder exists one level up) the editor will also load the landscape images and sprites for planets.

There are keyboard shortcuts (shown in the menus) for automatically generating systems, asteroids, commodity prices, etc. These shortcuts only work if you do not currently have a text entry box selected.

The Galaxy tab

In the Galaxy tab, left click on a system to select it. You can then drag it around to reposition it, or double-click to switch to the System tab. To pan the view, click and drag on the background (i.e. the space in between systems). The large circle around the selected system shows the range of a jump drive.

To add a new star system, right click on the background. When a system is selected, you can toggle hyperlinks to that system by right clicking on other systems.

To randomize commodity prices, click on the name of one of the commodities in the list (not the price, or you’ll go into text editing mode) and then press ‘C’. The entire region of space connected to the currently selected system will have new commodity prices assigned. Keep randomizing the prices until you end up with something that makes sense, e.g. food and clothing cheaper in “frontier” regions and medical goods and equipment cheaper on more developed worlds.

You can delete the currently selected system by pressing the delete key.

The “galaxy” objects in the map file define background images, including the big image of the galaxy itself and the text labels for different regions of space. Right now, you need to add these to the map file manually. The existing labels use 24-point Zapfino font, with the fill color set to #AABBCCDD.

The System tab

In the System tab, you can edit the stellar objects in a single star system, including their orbital positions and paths. Usually it’s sufficient to just generate random star systems (using the keyboard shortcuts in the “System” menu) until you get one that matches what you want the system to contain. You can also click and drag objects to change their orbits, and there are keyboard shortcuts for randomly changing sprites or adding objects to the system.

For some special objects (like wormholes and unusual stars) you will need to edit the map file manually to add them in. For example, to create a wormhole you might just create a gas giant as a placeholder, then manually change its sprite. You will also need to edit the map file manually if you want to specify a star system’s background haze or ambient music.

In the sidebar on the left, you can view and edit a system’s commodity prices, fleets, and minables. Fleet names need to match something defined in the game data files. The “period” of a fleet is the average number of frames in between times that that fleet appears. (A frame is a 60th of a second, so a fleet with a period of 3600 appears once a minute.) Minables can be randomized by pressing ‘H’; you can also edit them manually.

In the game data, a “planet” specifically means a stellar object that you can land on. To define planet data for an object, double-click it in the System view.

The Planet tab

In the Planet tab, you can select a landscape photo for the planet by clicking an image in the gallery. If you hover your mouse over the current image, it will tell you how many planets that image is used for. (This is to help make sure certain photos don’t end up overused.)

Every planet must have a description and a landscape photo. The one exception is wormholes, since the planet dialog does not come up when you land on them. A wormhole should be defined in the map file only if its path should be shown on the map, and its spaceport text should be filled with a placeholder if NPC ships should land on it.

As with the fleet list, the shipyard and outfitter lists need to use names of shipyards and outfitters that are defined elsewhere in the data files.

The “bribe” amount is given as a fraction of your fleet’s net worth. Security is a value between 0 and 1 indicating the chance of your cargo and outfits being checked for illegal items. Required reputation controls whether you can land on a planet; for example, some high-security worlds may not let you land even if you’re friendly, and some low-security pirate worlds may let anyone land even if they’re hostile to you.

For tribute, the threshold is the raw combat rating you must have in order to demand tribute from a planet. The tribute amount is the daily payoff in credits. Currently each planet can only define a single defense fleet type.

endless-sky-editor's People

Contributors

fliegendewurst avatar maltedreschert avatar mcofficer avatar omagasohe avatar tehhowch avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

endless-sky-editor's Issues

map editor qt 5

just diving into this whole type of thing and when i looked into getting qt5 it said that the full version is nearly $500/month so i was wondering if the free version is suitable for the editor and if so, how to get it to work. as i said, completely new to this sort of thing so any advice would be greatly appreciated!

No skins/textures

When i created a new system, i can see lines indicating planets, but no textures on said planets.
Issue/bug prehaps? On windows 10

Archive this?

Currently this map editor is outdated by several years and will cause a lot of mess if used with current map, the only release tag is even more severely outdated and while the "nightly" build exist it's extremely obscure and not exactly public(it was shared only on Discord for all I know) making people think they need to build it themselves only to find that this project lacks of any actual guide or documentation for building it.

Currently we have a much more updated map editor here: https://github.com/quyykk/plugin-editor which also appears to be preferred by current dev as well as being considered as the new standard since it can handle multiple map file (which is part of the reason for the recent map file splitting).

I suggest we either actually maintain it (which seems unlikely) or archive it and change all the links to Quyykk's editor and add some redirect message here in case someone ends up here somehow.

Ability to Lock Systems and Planets in current Positions [enhancement]

Accidentally shifting planets and systems can be annoying, especially when the general working area is a relatively convoluted.

As it stands, however, being careful is sufficient, but having this feature would make things a bit better. Locked systems can also serve as a reminder that this system is satisfactorily designed.

Feature request: Preview button

To avoid having to save the map, open it in the game and finding the system, it would be nice to have a "preview" button in the system tab that shows how the selected system looks in game, which means rendering the stars in the background and removing the UI elements like the planet orbits and the habitable zone. An alternative is to be able to select individually which of these UI elements to show, plus a button for the background stars

Build fails.

After running qmake, make returns a compiler error.
Log:
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -o main.o main.cpp In file included from main.cpp:13:0: MainWindow.h:63:5: warning: identifier ‘nullptr’ is a keyword in C++11 [-Wc++0x-compat] QTabWidget *tabs = nullptr; ^ MainWindow.h:50:48: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11 virtual void keyPressEvent(QKeyEvent *event) override; ^ MainWindow.h:51:47: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11 virtual void closeEvent(QCloseEvent *event) override; ^ MainWindow.h:52:55: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11 virtual void dragEnterEvent(QDragEnterEvent *event) override; ^ MainWindow.h:53:45: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11 virtual void dropEvent(QDropEvent *event) override; ^ MainWindow.h:63:24: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 QTabWidget *tabs = nullptr; ^ MainWindow.h:64:30: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 DetailView *detailView = nullptr; ^ MainWindow.h:65:30: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 GalaxyView *galaxyView = nullptr; ^ MainWindow.h:66:30: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 SystemView *systemView = nullptr; ^ MainWindow.h:67:30: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 PlanetView *planetView = nullptr; ^ MainWindow.h:69:25: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 QMenu *galaxyMenu = nullptr; ^ MainWindow.h:70:25: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 QMenu *systemMenu = nullptr; ^ MainWindow.h:63:24: error: ‘nullptr’ was not declared in this scope QTabWidget *tabs = nullptr; ^ MainWindow.h:64:30: error: ‘nullptr’ was not declared in this scope DetailView *detailView = nullptr; ^ MainWindow.h:65:30: error: ‘nullptr’ was not declared in this scope GalaxyView *galaxyView = nullptr; ^ MainWindow.h:66:30: error: ‘nullptr’ was not declared in this scope SystemView *systemView = nullptr; ^ MainWindow.h:67:30: error: ‘nullptr’ was not declared in this scope PlanetView *planetView = nullptr; ^ MainWindow.h:69:25: error: ‘nullptr’ was not declared in this scope QMenu *galaxyMenu = nullptr; ^ MainWindow.h:70:25: error: ‘nullptr’ was not declared in this scope QMenu *systemMenu = nullptr; ^ In file included from Map.h:17:0, from main.cpp:14: Planet.h:111:72: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 double requiredReputation = std::numeric_limits<double>::quiet_NaN(); ^ Planet.h:112:59: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 double bribe = std::numeric_limits<double>::quiet_NaN(); ^ Planet.h:113:62: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 double security = std::numeric_limits<double>::quiet_NaN(); ^ Planet.h:115:61: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 double tribute = std::numeric_limits<double>::quiet_NaN(); ^ Planet.h:116:70: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 double tributeThreshold = std::numeric_limits<double>::quiet_NaN(); ^ Planet.h:117:74: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 double tributeFleetQuantity = std::numeric_limits<double>::quiet_NaN(); ^ In file included from System.h:16:0, from Map.h:18, from main.cpp:14: StellarObject.h:89:23: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 double distance = 0.; ^ StellarObject.h:90:21: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 double period = 0.; ^ StellarObject.h:91:21: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 double offset = 0.; ^ StellarObject.h:92:19: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 int parent = -1; ^ In file included from Map.h:18:0, from main.cpp:14: System.h:131:10: error: ‘map’ in namespace ‘std’ does not name a template type std::map<QString, int> trade; ^ In file included from main.cpp:14:0: Map.h:72:30: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 mutable bool isChanged = false; ^ make: *** [Makefile:282: main.o] Error 1
I am using Gentoo under AMD64.

Freezing and Crashing

The program freezes and crashes for unknown reasons.

The first time it froze was when renaming a newly created system. I chose a name that, already existed and, upon renaming, the program froze and crashed.
The second time it crashed was when rearranging planets (I just clicked and dragged a random planet) in one of my systems.

Looks like I'll have to use the old ways until this is sorted.

P.S. How do I add labels to this issue?

No wiki?

The editor is usable without documentation, but it would be nice for new users.

Entry Point Not Found (endless-sky-editor.exe)

When using the pre-compiled Win64 binaries, and after finding and downloading several missing DLLs, endless-sky-editor.exe, specifically libwinpthread-1.dll, libstdc++-6.dll, and libgcc_s_dw2-1.dll, I got the following error when I attempted to run endless-sky-editor.exe:

---------------------------
endless-sky-editor.exe - Entry Point Not Found
---------------------------
The procedure entry point _ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_ could not be located in the dynamic link library D:\Games\endless-sky-win64-0.7.11\endless-sky-editor-win64-0.7.10\endless-sky-editor.exe.

I am using Windows 8.1 64bit with an Intel Intel Core i7 4770 and 24 GB of RAM.

Add support for stations and wormholes

Currently, stations and wormholes cannot be 'selected'. Their 'selection circles' are much smaller than planets, which may be why we can't 'select' them.

Also, allow us to create 'planets' like the stars that orbit the wormhole in the Pleiades.

Invalid use of incomplete type 'class QUrl'

Sorry to bug you again but I've run into a new error.

MainWindow.cpp: In member function ‘virtual void MainWindow::dropEvent(QDropEvent*)’:
MainWindow.cpp:146:51: error: invalid use of incomplete type ‘const class QUrl’
     QString path = event->mimeData()->urls().at(0).path();
                                                   ^
In file included from /usr/include/qt4/QtGui/qvector2d.h:46:0,
                 from /usr/include/qt4/QtGui/QVector2D:1,
                 from GalaxyView.h:18,
                 from MainWindow.cpp:16:
/usr/include/qt4/QtCore/qmetatype.h:299:7: note: forward declaration of ‘class QUrl’
 class QUrl;
       ^
In file included from /usr/include/qt4/QtCore/qnamespace.h:45:0,
                 from /usr/include/qt4/QtCore/qobjectdefs.h:45,
                 from /usr/include/qt4/QtGui/qwindowdefs.h:45,
                 from /usr/include/qt4/QtGui/qwidget.h:46,
                 from /usr/include/qt4/QtGui/qmainwindow.h:45,
                 from /usr/include/qt4/QtGui/QMainWindow:1,
                 from MainWindow.h:16,
                 from MainWindow.cpp:13:
/usr/include/qt4/QtCore/qglobal.h: In instantiation of ‘class QTypeInfo<QUrl>’:
/usr/include/qt4/QtCore/qlist.h:113:62:   required from ‘T& QList<T>::Node::t() [with T = QUrl]’
/usr/include/qt4/QtCore/qlist.h:470:46:   required from ‘const T& QList<T>::at(int) const [with T = QUrl]’
MainWindow.cpp:146:50:   required from here
/usr/include/qt4/QtCore/qglobal.h:2242:26: error: invalid application of ‘sizeof’ to incomplete type ‘QUrl’
         isLarge = (sizeof(T)>sizeof(void*)),
                          ^
In file included from /usr/include/qt4/QtCore/qobject.h:50:0,
                 from /usr/include/qt4/QtGui/qwidget.h:47,
                 from /usr/include/qt4/QtGui/qmainwindow.h:45,
                 from /usr/include/qt4/QtGui/QMainWindow:1,
                 from MainWindow.h:16,
                 from MainWindow.cpp:13:
/usr/include/qt4/QtCore/qlist.h: In instantiation of ‘void QList<T>::node_destruct(QList<T>::Node*, QList<T>::Node*) [with T = QUrl]’:
/usr/include/qt4/QtCore/qlist.h:757:18:   required from ‘void QList<T>::free(QListData::Data*) [with T = QUrl ’
/usr/include/qt4/QtCore/qlist.h:732:13:   required from ‘QList<T>::~QList() [with T = QUrl]’
MainWindow.cpp:138:38:   required from here
/usr/include/qt4/QtCore/qlist.h:431:31: warning: possible problem detected in invocation of delete operator: [-Wdelete-incomplete]
         while(from != to) --to, delete reinterpret_cast<T*>(to->v);
                               ^
/usr/include/qt4/QtCore/qlist.h:431:31: warning: invalid use of incomplete type ‘class QUrl’
In file included from /usr/include/qt4/QtGui/qvector2d.h:46:0,
                 from /usr/include/qt4/QtGui/QVector2D:1,
                 from GalaxyView.h:18,
                 from MainWindow.cpp:16:
/usr/include/qt4/QtCore/qmetatype.h:299:7: note: forward declaration of ‘class QUrl’
 class QUrl;
       ^
In file included from /usr/include/qt4/QtCore/qobject.h:50:0,
                 from /usr/include/qt4/QtGui/qwidget.h:47,
                 from /usr/include/qt4/QtGui/qmainwindow.h:45,
                 from /usr/include/qt4/QtGui/QMainWindow:1,
                 from MainWindow.h:16,
                 from MainWindow.cpp:13:
/usr/include/qt4/QtCore/qlist.h:431:31: note: neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined
         while(from != to) --to, delete reinterpret_cast<T*>(to->v);
                               ^
/usr/include/qt4/QtCore/qlist.h:433:32: error: invalid use of incomplete type ‘class QUrl’
         while (from != to) --to, reinterpret_cast<T*>(to)->~T();
                                ^
In file included from /usr/include/qt4/QtGui/qvector2d.h:46:0,
                 from /usr/include/qt4/QtGui/QVector2D:1,
                 from GalaxyView.h:18,
                 from MainWindow.cpp:16:
/usr/include/qt4/QtCore/qmetatype.h:299:7: note: forward declaration of ‘class QUrl’
 class QUrl;
       ^
make: *** [Makefile:307: MainWindow.o] Error 1

Map editor messes with existing ES data

Currently, simply opening the ES map in the map editor and saving the file with no modifications creates a lot of changes, which makes adding systems to the vanilla map harder. The changes I could find it does:
-reordering the data under planets (e.g. bribe after shipyard and outfitter)
-reordering planets in alphabetical order
-removal of unnecessary lines between systems
-removal of "" around planets, sprites (e.g. the black hole) and fleets that don't need it
-removal of "description" and "spaceport" empty lines under wormholes
-if there are more than one tribute fleets, all but the last one are removed
-reordering system links in alphabetical order (lots and lots of these)
-reordering of the "haze" line to go after habitable

While some of these seem reasonable, and perhaps could be fixed by changing them in the vanilla ES, others are proper errors, like the tribute fleets and the deletion of empty description and spaceport lines

Allow positioning the view at specific coordinates

Have an option that allows the view on the galactic and/or system map to be recentered with typed in coordinates. This helps make navigating much faster when editing galactic maps that are further out of the view.

Issue: Map editor doesn't read multiple files

Issue:
The vanilla Endless Sky game has systems located in more than one file, which means that the pug systems are effectively invisible and undetectable to anyone who doesn't spend a lot of time trying to find them.

Desired Solution:
That the map editor support looking in multiple files

Proposed method:

  • Have an option or setting whereby the user can set the default path to the base Endless Sky folder (used to find images and other resources)
  • Have the map-editor scan conduct a limited "loading" just like endless-sky itself does, which would then locate all relevant files regardless of where they are in the data folder.
  • Have an "designate file" command that allows an additional file that may or may not be located within the endless sky folder (most commonly, a plug-in data file). This "designated file" would be loaded (if it isn't already), and would be remembered by the map editor as the designated location for any changes to be saved. In the case of editing vanilla endless sky, this file could be an included map file.

Result:
These changes would result in a map editor that is much more robust and thorough than it is currently, and one that would display all existing systems by default. This would also allow the map file to be broken up into multiple more manageable pieces, or support the addition of additional regions without having the core map file(s) bloated by additional content. It would also make it much easier to work with plug-in systems.

Cannot Open

I hope i'm not overlooking something but I can't seem to find a way to open the editor.

Feature Request: Change system icon to reflect contents of system

Problem:
On the galaxy map, all systems are represented by an identical pale green dot, which conveys no useful information. Further more, it is impossible to tell from the galaxy map which systems belong to which government, which ones are inhabited, or even which ones have anything at all within the system.

Solution:

  • change the system icon to represent something about the system so that the icon actually conveys something useful to the user.

Option 1:

  • Emulate the map viewer from the game (the "mission" option) itself using a dummy set of reputations equivalent to a brand new starting character.
  • As such, the galaxy view would show the galaxy as it exists at the start of the game with things colour coded accordingly. (this reveals where is uninhabited, restricted, hostile, and neutral)

Option 2:

  • Change the system icon into a ring, and colour code it according to the government assigned to that system.
  • Inside the ring, place a dot if there is someplace the player can land. (these could be colour coded according to the same government colours as well, perhaps with a split colour if there's more than one government in the system. Half blue half green, etc.)
  • This would make it easy to see what government controls the system, and whether or not there are permanent places of interest within said system.

Of these two options, option 2 is my preference; but either one would be a significant improvement over the current.

Icon doesn't show

Using the lastest editor's nightly, Windows 10, the app's icon that was added by MZ in 1f154b0 doesn't appear, and instead only the default windows no-icon image is shown

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.