Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Pidgeot

Pages: 1 2 3 [4] 5 6 ... 19
46
PyLNP itself does not touch it, but PyInstaller - the program used to package PyLNP into an .app - does use that to ensure the right things get run. I guess it might have leaked from there somehow.

This seems to have been fixed in PyInstaller 3.0, so I'll try giving an upgrade to PyInstaller another shot. I've been holding off on doing that for a while now, since the 3.x builds haven't seemed to work right on Windows, but if that's still an issue, it might be possible to just do Mac... will try.

47
At the moment it's already planned to have multiple options in Defaults, which would sort of allow for the whole profile stuff.

A copy pastable string should be possible as part of that, I guess... will keep it in mind for then.

48
https://bitbucket.org/Pidgeot/python-lnp/pull-requests/49/graphics-preview/diff

So it reads the graphics sets from the graphics folder and dynamically renders scenes with them on-the-fly? That sounds like a pretty awesome way to do it. I'm guessing you could have it show any scene you wanted and not just the arena, maybe the user would get a few options on what scene to render?

In the interest of keeping the code manageable, the data export simple, and the implementation reasonably snappy, the current WIP has some restrictions (namely, only the basic tileset can be used; no TWBT overrides or creature graphics). This, in turn, puts some restrictions on the scene if you want to make the rendering match; the arena is a good sample map for these restrictions since you know there won't be anything unexpected and it shows off a decent array of tiles.

49
DF General Discussion / Re: PeridexisErrant's DF Starter Pack
« on: May 22, 2016, 08:09:18 pm »
It sounds like something was wrong with the art folder in the graphics pack and copying it over failed. It's hard to say what exactly; was it a specific pack that caused the issue, or any pack?

If you have a reproducible test, try running PyLNP from a command prompt with the argument "-d" and then make it fail to install that graphics pack. This will output a bit more debugging info into the log (it's worth a shot, at least).
Completely bone stock starter pack; doesn't matter which graphic set I use.

I recorded a demo video, maybe you could try yourself and see if the same thing happens?

https://www.youtube.com/watch?v=EdX2McVhTdg  (whoops quality issues)

note: I kept changing graphic sets to show proof it was changing just fine; that isn't required, you can just break it from the start by viewing one of DF's subfolders (not sure if every one applies, but just to be safe go in the raw folder).

Right, I've managed to reproduce this on my end as well now. This isn't an issue with the pack itself; I was able to do this with the stuff I have laying around from 34.11.

Still not sure *why* it's going wrong, but I'll investigate as soon as I have a chance to do so.

50
DF General Discussion / Re: PeridexisErrant's DF Starter Pack
« on: May 20, 2016, 12:06:09 pm »
Having issues changing graphics sets all of a sudden.
<snip>

It sounds like something was wrong with the art folder in the graphics pack and copying it over failed. It's hard to say what exactly; was it a specific pack that caused the issue, or any pack?

If you have a reproducible test, try running PyLNP from a command prompt with the argument "-d" and then make it fail to install that graphics pack. This will output a bit more debugging info into the log (it's worth a shot, at least).

To recover the broken install, you should be able to manually copy the contents of LNP\Baselines\0.42.06 into that folder.

I will probably try to improve the whole error handling and debug info a bit for future versions of PyLNP.

51
DF General Discussion / Re: Unofficial Linux Lazy Newb Pack
« on: May 09, 2016, 02:45:52 pm »
Tried starting this (using latest ubuntu, 32bit) and got a fairly strange result:
http://oi65.tinypic.com/a3jd6u.jpg

The PyLNP executable in this pack is the 64-bit version; it won't work on a 32-bit OS.

You can grab a 32-bit PyLNP build from here (PyLNP_0.11-linux-i686.tar.xz); just extract that on top of the pack and you should be good to go.

52
DF General Discussion / Re: PeridexisErrant's Starter Pack, 40.24-r20
« on: April 09, 2016, 03:39:17 pm »
Just downloaded the pack earlier today, however the launcher wont launch. I'm getting (what I believe to be) an error page. called "stderr" which says the following.

Spoiler (click to show/hide)

What should I do?
Have you extracted LNP from the zip file and placed the contents in a directory? I wouldn't be surprised if trying to execute from within the zip will result in errors. (...\Documents sounds like an odd place to put DF, but as a place when the downloaded file would be placed).

The path in stack traces is the build path from my machine; it's an artifact of the tool used to create the executables. It bears no relation to where the pack is extracted.

53
DF General Discussion / Re: Unofficial Linux Lazy Newb Pack
« on: April 03, 2016, 06:38:44 pm »
"Not found: data/art/Phoebus_16x16.png".

i have the same problem. i solved it by using LD_PRELOAD for my zlib:

LD_PRELOAD=/usr/lib/libz.so.1 ./df

if you use dfhack than run:

PRELOAD_LIB=/usr/lib/libz.so.1 ./dfhack

(i don't know why dfhack needs its own dedicated variable for this.).

AFAIK, it's because DFHack itself uses the LD_PRELOAD mechanism to load itself, and I'm guessing they don't want conflicts with existing LD_PRELOAD values, so they bring it in with a different name. (Although AFAICT, the dfhack script seems like it should apply this modification on its own these days.)

I was trying to start it from the LNP launcher; I believe the LNP launcher is supposed to run distro_fixes.sh which handles the preloading automatically, but apparently it is only running it for dfhack not for straight Dwarf Fortress.

-Harry

PyLNP itself does not apply any fixes (it does not know what needs to be applied; it just runs the ./df or ./dfhack scripts). The ./dfhack script applies distro_fixes.sh automatically; ./df doesn't. (Also, distro_fixes.sh doesn't actually apply anything for the regular df script anyway, AFAICT...)

IIRC the syntax in question just sets an environment variable for the duration of the command, and that *is* something I can do from Python - but as I understand it, the exact things that need to be applied may be different depending on the computer it's running on. I'd need someone to tell me how to get the necessary information in order to build it into PyLNP.

As for the stderr.txt message, the call stack shows it was unable to check for pack updates. It looks like it couldn't look up the IP for DFFD; maybe it couldn't get to the Internet? You can turn off the check in the File menu.

54
PyLNP 0.11 is now up. It mainly adds support for utility manifests and readme files, and also improves visual display of Windows builds when running at non-standard DPI settings.

Utility authors and pack maintainers: See the PyLNP readme for details on the manifests.

EDIT: A quick hotfix has been made to fix a minor bug in the readme opening code and binaries re-uploaded as 0.11 with this. There was only a single download before this, so it's not really worth bumping the version number. If you downloaded within the first hour, you might want to re-download.

55
DF General Discussion / Re: Another way to play DF remotely
« on: February 23, 2016, 04:28:46 pm »
who doesn't hate Windows programming the way I do
Why the hate, though?
Honestly, at this point at least 50% of it is just that "it's not UNIX"; I've been a UNIX programmer basically forever. The rest is issues with tools (You have not signed the agreement, Visual Studio will now self-destruct), with the silly ways DLLs work (don't get me started), with weird kludges layered on inconsistent behaviors layered on ancient bugs... and I'm especially annoyed that Microsoft deliberately removed UTF-8 as an API character set, forcing the use of UTF-16 if you don't want to subtly break in "international" situations. Sigh...

Windows never *had* UTF-8 support as an API character set. UTF-8 didn't even exist when Microsoft started working on Unicode support (Windows NT was officially released in July 1993 and worked on for several years before then; UTF-8 was first made public about 6 months before that release - not nearly enough time to rewrite everything).

UTF-8 has a code page ID, so you can convert the data without too much trouble, but it has never been a supported locale for the "ANSI" (i.e. non-wide/non-Unicode) functions. If it's ever worked for anything, it's pure luck, because the functions were never designed for it.

56
PyLNP 0.10f is now up. It should fix installed keybind detection, and it adds a warning if your configuration is invalid (allowing you to fix the configuration before launching DF).

An "invalid configuration" is when PyLNP doesn't know of the value you're using for an option, or if you are using a TWBT print mode with DFHack disabled.

57
Tilesets and Graphics / Re: Dwarf Fortress graphics repositories
« on: January 31, 2016, 03:13:52 pm »
I was thinking that it would be best to keep the tile size the same.  The reason is that we have the walls and other items that need to be continuous.  We could take the outer pixels from the creature tile, but I have the impression that some artists use the entire tile.   What I was thinking as an alternative is to use only the corners of the tile.  4corners*4channels(RGBA)*255 gives us plenty of room to encode information.  What do you think?

I believe it is a bad idea because it becomes impossible to use those corners for actual graphics (how would you know what is supposed to be there?) - which is already going to cause issues with some of the examples you've already shown (e.g. reindeer in Spacefox).

Even if you cheated and said you only reserved the alpha channel for this information... that's still going to make the graphics visibly different, which is going to make it difficult to properly imagine how it's going to look.

I imagine that very few people will want to manually add the metadata we're talking about - they'd much rather draw the graphics, generate some raws, modify those, then run the process in reverse. They have the *option*, sure, since it's all just pixels with defined colors, but it's a bit abstract and not something I imagine most people are up for (except perhaps if they're just modifying an existing sprite for a one-off, in which case they can copy the border as well).

For the case where things have to join up... those also have to be able to join up with *themselves*, and you can't really check that anyway in a grid format like this.

The idea is that if you have, say, a 16x16 set of tiles, the generated image from all of this uses a grid of 17x17* - 1 pixel in each dimension is used for the border, and then the remaining 16 pixels are the actual tile graphics.

If the 16x16 tile graphics are completely blank - i.e., all pixels transparent - then we ignore that tile, because it's not specified, otherwise we cut out that 16x16 tile, assemble them all into whatever image layout the game wants.
The border is useful because it makes the separation between each tile more clear -
More clear for whom? It's trivial for a computer to just count the 16 pixels, it doesn't need to 'see'. And eventually the whole process from start to finish would be automated, so nobody else would need to distinguish the tiles either.

For a person who is using the grid to figure out what they need to create. It's just as trivial for the computer to count 17 (or 18) pixels, but it's much easier for a human to make sure they're "staying within the lines" if they have lines to follow for those cases where you're doing one-off edits; otherwise it might be difficult to see you're accidentally going one pixel into another tile (which just happened to be a transparent area, so you couldn't tell easily).

It's also a tiny bit easier for the computer when it needs to figure out whether to skip a given tile (because you're looking for a tile where all pixels are transparent, as opposed to pixels where some are and some aren't).

Quote
Quote
metadata embedding
I don't see the reasoning with that. Essentially, it seems that between the first input and the final output, you suggest to store all the information in the image - I'm wondering why not store all the information in a plain text database instead? That seems easier, more compatible and more transparent.
Taking the existing tilesets, separating them, adding a border with embedded data, then taking that and removing it again to use in DF seems a bit roundabout. Why not transfer the metadata directly in the final definition file?


EDIT: Just realized, the "datasets" I'm talking about, are the creature definition files.

You can certainly use a secondary file for the metadata if you'd prefer, and it'd probably be more efficient since you'd potentially be able to avoid stitching the image together - but it's my impression that for graphics sets, the amount of customization needed is going to be quite limited post-standardization anyway. You have to analyze the image anyway to tell whether or not a given tile is present (and therefore, whether it should be pointed to in the generated raws)... so it's not much extra effort to analyze a couple extra pixels to get the metadata you need at the same time.

You could also just choose to leave all metadata in the RAWs and only use this to unify the positions for a given creature. Depends what you want to be able to do, of course... but if that's your entire goal, then it seems overkill to add all of the grid labels.

58
Tilesets and Graphics / Re: Dwarf Fortress graphics repositories
« on: January 31, 2016, 12:51:10 pm »
As for the border thing, I assume that's only for the example files or - if we follow pidgeots suggestion to use it for colorization indication - temporary, because those would be visible in game.

The idea is that if you have, say, a 16x16 set of tiles, the generated image from all of this uses a grid of 17x17* - 1 pixel in each dimension is used for the border, and then the remaining 16 pixels are the actual tile graphics.

If the 16x16 tile graphics are completely blank - i.e., all pixels transparent - then we ignore that tile, because it's not specified, otherwise we cut out that 16x16 tile, assemble them all into whatever image layout the game wants.

The border is useful because it makes the separation between each tile more clear - and it also just happens that we can exploit the fact that it's there anyway to carry hidden information. For example, we wouldn't necessarily need to store the tile size explicitly - the top left (or bottom right, etc.) pixel of the image could be colored as RGB(x_size, y_size, whatever) and we could just check that when building the raws to know what we were working with. The final component could be used to mark a file format version, or you could go to RGBA to specify how *many* tiles were in each direction, etc. It's really just a way you might capture the additional metadata that needs to be applied to the raws (of course, you need to figure out *what* that metadata might be, and document how that gets mapped between the images and the raws, but the basic idea is that if you just add a single image, you can just copy the border of a cell that works similarly - or make your graphical change, update the raws after applying it, and then regenerate the grid format.

*The reason for 17x17 instead of 18x18 is that you otherwise get the appearance of a 2 pixel border between cells, but only a single pixel border on the edges. It makes things seem a bit more ordered if the borders appear uniform.

59
Tilesets and Graphics / Re: Dwarf Fortress graphics repositories
« on: January 31, 2016, 07:45:11 am »
Ok, here is what I mean by a matrix template.  The files you are going to look have all been generated by the automatic script (text and all).  I have now filled all rows if there is at least a standard tile like this:

Obviously this is a work in progress, so the details are not finalized, but one thing I notice is that it's not entirely obvious where the tile boundaries are located just based on the grid lines on the edge. On the first column, the first tile includes both the "left" and the "right" line of black pixels; on subsequent ones it's only the right line that's included.

Would it perhaps make sense to include space for the grid lines, perhaps, and actually extend them into the "tile" area for the sake of overview? That would also make it easier to identify an undefined cell: it's one where every pixel is transparent, rather than one where certain edges are black and everything else s transparent.

(It would also theoretically make it possible to specify special cases, e.g. ADD_COLOR/AS_IS, by using specific RGB values for specific pixels in the border... but that's a more advanced concept anyway, so don't worry too much about that for now)

60
Tilesets and Graphics / Re: Dwarf Fortress graphics repositories
« on: January 28, 2016, 06:36:54 pm »
A word of caution, upscaling a graphics set takes quite a bit of time (we are talking about several hours), because the best results are obtained when you upscale each tile separately.   I wonder if perhaps is better to pre-generate and pack the 16x16 and 24x24 sets with PyLNP.  Since DF doesn't change that often, perhaps it's also better to keep the upscaling application separate from PyLNP (of course translating it to Python is still totally worth it!).   This way people are very much aware of what they are getting into when they launch it  :P

Yeah, this is something that's going to be a bit of a problem for integrating upscaling directly into PyLNP. You absolutely have to scale each tile seperately, because the results are generally going to look terrible if you don't, with tiles bleeding into each other and creating odd artifacts.

In the case of waifu, it is an *absolutely awesome* scaling algorithm, but it is also crazy expensive. You wouldn't want to introduce any overhead you can avoid whatsoever... so it would probably be best to call out to C code (possibly using a wrapper so it builds as a C-based Python module?), although even then I suspect it might be too expensive without resorting to GPU acceleration...

Pages: 1 2 3 [4] 5 6 ... 19