{ "info": { "author": "CJ Kucera", "author_email": "cj@apocalyptech.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: X11 Applications :: Qt", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3 :: Only", "Topic :: Games/Entertainment", "Topic :: Utilities" ], "description": "Python Starbound Mapper\n-----------------------\n\nYet another Starbound mapper!\n\nThis project is a reasonably basic Starbound map viewer, focusing on a few\nsimple map introspection tasks, rather than on 100% accurate map rendering. It\ndoes pretty much everything that I'd been hoping to have in a viewer when\nstarting out, such as: looking for interesting areas to head while spelunking;\nchecking my home base for \"holes\" in the background tiles; clicking on tiles to\nget some detailed information such as the images being used, etc.\n\nThe app is far from perfect, and in specific could really use some performance\nimprovements, but my time playing Starbound is more or less at an end, and my\nimpetus to hack on the map viewer further is pretty much nil. A quick glance\nat the screenshots below will show that the blocks are rendered as simple\nsquares rather than with all their borders, that platforms don't link up with\neach other, and that objects aren't currently rendered in their correct\norientations (or even variations, in most cases). It doesn't yet attempt to do\ncorrect color tinting or the like, either. What you see is what you get!\n\nI would, of course, be happy to accept pull requests which address any of the\nitems on my TODO list, below -- or other features not on the TODO list -- but\nI'm no longer actively developing this, myself.\n\nInstallation\n------------\n\nPystarboundmap requires Python 3, and is a PyQt5 app. Python 2 is not supported.\n\n#### Installation to system / user / virtualenv\n\nThe easiest way to install/use the mapper is with pip, via:\n\n\t$ pip install pystarboundmap\n\nAlternatively, from a git checkout you can install with the usual `setup.py` syntax:\n\n\t$ python setup.py install\n\nIn either case, then run it from anywhere using the pystarboundmap script:\n\n\t$ pystarboundmap\n\n#### Running via local git checkout\n\nIf you'd prefer to just run it from the git checkout, you can install its\ndependencies with:\n\n $ pip install -r requirements.txt\n\nThen launch the GUI with:\n\n $ python -m pystarboundmap.gui\n\n#### Dependencies\n\nThe project makes use of the following:\n - Python 3\n - python-pillow\n - PyQt5\n - appdirs\n - timeago\n - [py-starbound](https://github.com/blixt/py-starbound) (by blixt)\n\nUsage\n-----\n\nThe game will attempt to autodetect your Starbound installation directory\n(which is *completely* untested on Windows, so please let me know if that\nfails completely). If the install directory can't be found, the app will\nprompt you to choose it manually (and this can be changed later via the `Edit\n-> Settings` menu).\n\nThe default \"Open\" dialog will let you choose a world to open first by\nplayer name, and then by the world name. You can get a more standard\nfile-opening dialog with `Ctrl-Shift-O`, but this dialog should be much\nfriendlier:\n\n[![Open By Name](https://raw.githubusercontent.com/apocalyptech/pystarboundmap/master/screenshots/open_by_world.png)](https://raw.githubusercontent.com/apocalyptech/pystarboundmap/master/screenshots/open_by_world.png)\n\nThe map will start out centered on the level spawn point, though if the\nlevel contains a mech beacon, it will be centered there instead (since\nlevels with mech beacons generally don't have anything interesting around the\nspawn point). Once on the main screen, the functionality is pretty basic:\n\n[![Main Window](https://raw.githubusercontent.com/apocalyptech/pystarboundmap/master/screenshots/mainwindow.png)](https://raw.githubusercontent.com/apocalyptech/pystarboundmap/master/screenshots/mainwindow.png)\n\nThe information about the currently-hovered tile will be shown on the lefthand\nside of the screen, which can be resized by dragging on the edge. You can\nscroll using the scrollbars or by click-and-drag on the map itself. You can\nzoom in using the slider, or with the keyboard shortcuts `+` and `-`.\n\nThe various layers can be toggled on/off, so if you wanted to check for holes\nin the background tiles of your home base, or something, that may be useful.\nThere are also toggles to draw the background tiles much lighter, so they're\neasier to see, and toggles to show the \"anchor\" points for both objects and\nplants. This is seen in the screenshot, where the object anchor points are in\nblue. Plants will be in green.\n\nTo get more detail about a tile, click on it to bring up a dialog with the\nextra details:\n\n[![Tile Info](https://raw.githubusercontent.com/apocalyptech/pystarboundmap/master/screenshots/tileinfo.png)](https://raw.githubusercontent.com/apocalyptech/pystarboundmap/master/screenshots/tileinfo.png)\n\nYou can also use `Ctrl-I` or `View -> World Info` to get information about\nthe world itself:\n\n[![World Info](https://raw.githubusercontent.com/apocalyptech/pystarboundmap/master/screenshots/worldinfo.png)](https://raw.githubusercontent.com/apocalyptech/pystarboundmap/master/screenshots/worldinfo.png)\n\nThe \"Navigate\" menu will let you go directly to a specific coordinate, the\nspawn point, the level mech beacon (if one exists), the \"current\" player\nlocation (if this is the map the player is currently on), or to any bookmarks\nset by the user. Note that you *must* load the world using the by-name\ndialog rather than the by-file open dialog, in order to have bookmarks\nand/or current location in the Navigate menu -- that information is stored\nin the Player object.\n\n[![Navigate Menu](https://raw.githubusercontent.com/apocalyptech/pystarboundmap/master/screenshots/navigate.png)](https://raw.githubusercontent.com/apocalyptech/pystarboundmap/master/screenshots/navigate.png)\n\nTODO\n----\n\n - Add NPCs/Enemies/Monsters/Vehicles?\n - (What's a StagehandEntity, I wonder?)\n - Minimap\n - I'll have to see how feasible this is - I'd imagined just a simple\n little thing to show which regions have data and which don't, with\n a little box showing the currently-displayed area, but it feels like\n the game populates more regions than you might expect, and I suspect\n it wouldn't actually be that useful\n - Search for item types (ores, quest-related things?)\n - This is something which probably made more sense when the app was\n attempting to load literally the whole map at once. Might not be\n worth it with the current more-limited loaded set.\n - Visualization of explored areas (as defined by light sources)\n - Autodetect game location improvements\n - Theoretically we autodetect Steam install locations now (Steam detection\n on Mac has at least one success, so it's only Windows Steam dir\n detection that's untested)\n - Completely untested on Windows\n - Any way to detect GOG installs?\n - Any registry entries or whatever in general for Windows, which aren't\n Steam/GOG specific?\n - Support for mods\n - Performance improvements\n - Resource loading:\n - There's probably an unnecessary PNG conversion happening during\n some of the image loading, though these aren't really problematic\n and we're only loading 'em on-demand now anyway.\n - Specific tile types\n - Scenes with lots of liquids get bogged down a bit...\n - Map loading/rendering:\n - This is pretty slow, and I'll have to profile it to figure out\n where the slowness actually is. It's more of an annoyance at\n the moment, though, since we're now only rendering the visible\n areas of the map, rather than loading the entire thing at the\n app startup\n - Render more than just a single extra region on each side?\n - Would like to move map loading into a separate thread so it can\n happen more in the background, rather than freezing the GUI\n while it loads. (Using the mouse scrollwheel especially is\n quite jerky because of this.)\n - Keep a \"history\" of loaded Regions and only expire them after\n they haven't been used in N redraws? That way, scrolling back\n to a previously-visited area would be less likely to have to re-load.\n - One thing which is slower than I'd like is the expiration of\n Regions. It's noticeable at 1x zoom, but my experiments with\n going to 0.5x zoom produced some really pronounced pauses.\n Should see if there's a way to speed that up. (Though the region\n \"history\" in the point above would at least delay those slowdowns\n for a bit.)\n - Rendering improvements\n - Parsing and using render templates (or at the very least making our\n own internal representation of them) would allow materials to have\n proper \"edges\", for platforms/pipes/rails to link up properly, etc.\n - Liquid levels\n - on/off items (light sources), open/closed doors, etc\n - coloration of objects/tiles\n - \"flip\" parameter\n - crop status\n - Unrelated to rendering specifically, but we could probably report\n on crop progress in the tile info dialog.\n - Randomize tiles w/ multiple options (dirt, etc, seems to be randomly\n assigned from four or five options. The randomization is fixed-seed\n inside Starbound itself, and I highly doubt I'd be able to get it the\n same, but maps would probably still look nicer with them randomized)\n - Layer improvements - right now we're right enough *most* of the time,\n but your own space station is one which doesn't render right at all.\n Should really figure out Starbound's native layer priority and use\n objects' \"renderLayer\" property.\n - Handle exceptions gracefully\n - An easy crash reproduction is to have a map open, load it in Starbound,\n then try to browse around. Starbound seems to shuffle the tree around\n enough that we can no longer read it.\n - Make sure we gracefully handle situations where the Starbound install dir\n disappears on us between runs; I suspect right now the app will just crash\n and the only way to get it to run again would be to manually clear out the\n config file.\n - Should we save the layer toggle states (and zoom level) between runs?\n Also the \"show biome/dungeon details\" checkbox on the load dialog?\n - Read in codex files, to report the real name in container contents. This\n will require actually lexing the config files in `read_config`, though,\n instead of just doing the poor-man's processing we're doing now. The codex\n files feature multiline strings (without anything but a dangling quote to\n distinguish them), sometimes feature escaped quotes inside the text, and\n sometimes feature a double-slash, which gets interpreted as a comment. Not\n worth it for me, at the moment.\n - Would be nice if the zoom kept the map view centered on the mouse\n pointer, when using the keyboard zoom shortcuts\n - Would be nice if the world-info caching progress bar went from 0->100%\n instead of being a more generic \"something is happening\" bar.\n - Fossil display cabinets render completely wrong\n\nLICENSE\n-------\n\npystarboundmap is licensed under the\n[New/Modified (3-Clause) BSD License](https://opensource.org/licenses/BSD-3-Clause).\nA copy is also found in [COPYING.txt](COPYING.txt).\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/apocalyptech/pystarboundmap", "keywords": "", "license": "BSD License", "maintainer": "", "maintainer_email": "", "name": "pystarboundmap", "package_url": "https://pypi.org/project/pystarboundmap/", "platform": "", "project_url": "https://pypi.org/project/pystarboundmap/", "project_urls": { "Homepage": "https://github.com/apocalyptech/pystarboundmap" }, "release_url": "https://pypi.org/project/pystarboundmap/1.0.0b7/", "requires_dist": [ "Pillow (~=5.3)", "PyQt5 (~=5.11)", "appdirs (~=1.4)", "timeago (~=1.0)", "py-starbound (~=1.0)" ], "requires_python": "", "summary": "Starbound Map Viewer", "version": "1.0.0b7" }, "last_serial": 5557590, "releases": { "1.0.0b5": [ { "comment_text": "", "digests": { "md5": "a024e9c012798ec358bef7415425daf8", "sha256": "64379add974849418c4f2d392b08d39de4e766ed9e30e4bcd090a061ccda4f85" }, "downloads": -1, "filename": "pystarboundmap-1.0.0b5-py3-none-any.whl", "has_sig": false, "md5_digest": "a024e9c012798ec358bef7415425daf8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44816, "upload_time": "2018-11-12T16:38:48", "url": "https://files.pythonhosted.org/packages/94/14/938de81566aaaaca4fae2f3b97298267e9f53737fe84b329c265aecb4c36/pystarboundmap-1.0.0b5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a714db3a79718f6ade7fc6b806dcf8d8", "sha256": "02729887ca50957aeb9f6cb0915c0413089e330bcf5338167db03757d7fb1cd8" }, "downloads": -1, "filename": "pystarboundmap-1.0.0b5.tar.gz", "has_sig": false, "md5_digest": "a714db3a79718f6ade7fc6b806dcf8d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46349, "upload_time": "2018-11-12T16:38:50", "url": "https://files.pythonhosted.org/packages/38/76/0de5c292b523702a150ee27ed000858e4c26ae7bf4b4fc237b569487d010/pystarboundmap-1.0.0b5.tar.gz" } ], "1.0.0b6": [ { "comment_text": "", "digests": { "md5": "9fb54e76425ff1b4aaa04d9bec781194", "sha256": "7c87d3d777059928e2a1e6d4a47d4801ef5c82e3ffcc1430cfb8d2a1e5e1653f" }, "downloads": -1, "filename": "pystarboundmap-1.0.0b6-py3-none-any.whl", "has_sig": false, "md5_digest": "9fb54e76425ff1b4aaa04d9bec781194", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44853, "upload_time": "2019-04-09T04:41:12", "url": "https://files.pythonhosted.org/packages/3d/3f/f147c996fcdfc4f1fac6f3481936b9dc4b350f87b687a92e5f26f9284969/pystarboundmap-1.0.0b6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3b0acf443295b9cdddf1f129633f3c4b", "sha256": "2611cf829481749c67fb0333dad9fe7fa53d4f6f0219e28a1770238941c7f0f4" }, "downloads": -1, "filename": "pystarboundmap-1.0.0b6.tar.gz", "has_sig": false, "md5_digest": "3b0acf443295b9cdddf1f129633f3c4b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46433, "upload_time": "2019-04-09T04:41:14", "url": "https://files.pythonhosted.org/packages/63/0e/c8e028042ffcd21cb83d4aa8102da07c1cead486673a4b986f7be15e0300/pystarboundmap-1.0.0b6.tar.gz" } ], "1.0.0b7": [ { "comment_text": "", "digests": { "md5": "b0de2d4f95f5094b8068db70225f938d", "sha256": "94b4b6b6d2f1fe00dbac85b5b19be45c3635bf660d1cf007db94279c333e5803" }, "downloads": -1, "filename": "pystarboundmap-1.0.0b7-py3-none-any.whl", "has_sig": false, "md5_digest": "b0de2d4f95f5094b8068db70225f938d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44852, "upload_time": "2019-07-19T16:59:43", "url": "https://files.pythonhosted.org/packages/29/e9/105571eebbe99de1b9100089093068a5c4632790952e34b9a9cdb5137831/pystarboundmap-1.0.0b7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "15a61c806043b365e65e27950808f511", "sha256": "8fe424201a7d70cea9de79d9f3eb83851248c49ad26d2b75dfc0ee4c1844e705" }, "downloads": -1, "filename": "pystarboundmap-1.0.0b7.tar.gz", "has_sig": false, "md5_digest": "15a61c806043b365e65e27950808f511", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46432, "upload_time": "2019-07-19T16:59:45", "url": "https://files.pythonhosted.org/packages/11/ee/d3f4daaada2fd3f153e0323f1fd7fa047385aa4191adc4e55b0bf22314d8/pystarboundmap-1.0.0b7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b0de2d4f95f5094b8068db70225f938d", "sha256": "94b4b6b6d2f1fe00dbac85b5b19be45c3635bf660d1cf007db94279c333e5803" }, "downloads": -1, "filename": "pystarboundmap-1.0.0b7-py3-none-any.whl", "has_sig": false, "md5_digest": "b0de2d4f95f5094b8068db70225f938d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44852, "upload_time": "2019-07-19T16:59:43", "url": "https://files.pythonhosted.org/packages/29/e9/105571eebbe99de1b9100089093068a5c4632790952e34b9a9cdb5137831/pystarboundmap-1.0.0b7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "15a61c806043b365e65e27950808f511", "sha256": "8fe424201a7d70cea9de79d9f3eb83851248c49ad26d2b75dfc0ee4c1844e705" }, "downloads": -1, "filename": "pystarboundmap-1.0.0b7.tar.gz", "has_sig": false, "md5_digest": "15a61c806043b365e65e27950808f511", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46432, "upload_time": "2019-07-19T16:59:45", "url": "https://files.pythonhosted.org/packages/11/ee/d3f4daaada2fd3f153e0323f1fd7fa047385aa4191adc4e55b0bf22314d8/pystarboundmap-1.0.0b7.tar.gz" } ] }