• Add Review
  • Subscribe
  • Nominate
  • Submit Media
  • RSS
This page is for discussion of the technical side of content creation. If you have a technical issue or question with regards to a character or story you are creating, talk about it here.
(The old Custom Content thread can be found here)


Helpful things:

--> Medium build girl, the .psd that was used to create the built-in characters, is available with layer names in English.

--> Kudos to SparkleFox for finding us a male tachie generator, authored by "彩 雅介" (Aya Mayabaikai?)! This one is put together as a program, but has PSD files with layer-names in Japanese. No "fan-translation" available at this time.

--> You can use any of these images for making new custom characters.

--> Notepad++ with syntax highlighting for Heartache 101 can be a big help with story creation. To set it up, go to the View menu and set User Defined Language to HeartAche. Then close View, go to the Language menu and select HeartAche. (If you already have Notepad++, here's userDefineLang.xml by itself)

--> Mr. Help File has, regrettably, forgotten to mention certain locations! They are as follows:
Beach (sunset), Grounds (sunset), Roof (sunset), Bedroom (Morning), Downtown, Studio Room.
Note that these locations must be specified via a PLACE command. To the best of my (ie: Marrend's) knowledge, they cannot be obtained via the generic "School" or "City" code.

--> If you are writing story content that includes the appearance of existing characters (built-in or custom), the following list may be of reference:

ID 0 = The Player
ID 1 = Nakajima Miki {flowerthief, Built-in content}
ID 2 = Ikeda Keika {flowerthief, Built-in content}
ID 3 = Onishi Tsubasa {flowerthief, Built-in content}
ID 4 = Kaneshiro Shihoko {flowerthief, Built-in content}
ID 5 = Kaneshiro Riho {flowerthief, Built-in content}
ID 6 = Sato Akari {flowerthief, Built-in content}
ID 7 = Hiraoka Hinami {flowerthief, Built-in content}
ID 8 = (Secret character) {flowerthief, Built-in content}
ID 9 = Watanabe Junko {Nekochi, "Junko"}
ALSO = Tsukino Emi {Silent Pheonix, "Tsukino Emi", in progress}
ID 10 = Mitsuya Masako {Marrend, "Masako"}
ID 11 = Monotami Ruri {Marrend, "Uchioniko"}
ID 12 = Nemoto Mayu {Marrend, "Uchioniko"}
ID 13 = Terakado Shoko {Marrend, "Uchioniko}
ID 14 = Shirazu Izumi {Marrend, "Uchioniko"}
ID 15 = Watanabe Aoi {Nekochi, "Junko"}
ALSO = Lambaria Yuu {KimotoDragoon, "Yuu", in progress, Caretaker: Marrend}
ID 16 = Ran Fujioka {Neckochi, unpublished}
ID 17 = Torako Koizumi {Neckochi, unpublished}
ID 18 = Yumemi Tanno {Neckochi, unpublished}
ID 19 = Umehara Joruri {Marrend, "Joruri"}
ID 20 = Sakuragawa Fuyuki {Fuyuki, "Fuyuki", cancelled}
ID 21 = 21 Ways {dude797, "21"; Caretaker: Dozen}
ID 22 = Ikari Kyouki {Dozen, unpublished}
ID 23 = (Reserved for Nekochi)
ID 24 = (Reserved for Nekochi)
ID 25 = Kuwabara Emiko {Marrend, "Emiko"}
ID 26 = Tanaka Yoko {triad2/Noone42, in progress}
ID 27 = Katanashi Seira {triad2/Noone42, in progress}
ID 28 = (Reserved for KimotoDragoon)
ID 29 = Shitazawa Arika {Dozen, unpublished}

ID 31 = Maeda Eriko {triad2, "Meada"}
ID 32 = ? Genji {triad2, "Meada"}
ID 33 = ? Ryoko {Dozen, unpublished}
ID 34 = (Reserved for Tthedragon)
ID 35 = (Reserved for Tthedragon)
ID 36 = Murakami Megumi {Render, unpublished}
ID 37 = Kawano Fujiko {Render, unpublished}
ID 38 = Matsuhara Akane {Render, unpublished}
ID 39 = Momohana Nami {GloopMaster, Unknown, in progress}
ID 40 = Konohana Midori {LordNight, "Midori", RMN only, in progress}
ID 41 = Natsume Rika {LordNight, "Midori", RMN only, in progress}
ID 42 = (Reserved for LorSquirrel)
ID 43 = Hasegawa Kanon {LordNight, "Midori", RMN only, in progress}
ID 44 = Kirihara Kana {LordNight, "Midori", RMN only, in progress}
ID 45 = (Reserved for LordNight)
ID 46 = (Reserved for LordNight)
ID 47 = (Reserved for LordNight)
ID 48 = (Reserved for LorSquirrel)
ID 49 = (Reserved for LorSquirrel)
ID 50 = (Reserved for LorSquirrel)
ID 51 = Shiromiya Kagami {BDFalcon, unpublished}
ID 52 = Tsuchitsuru Airi {BDFalcon, unpublished}
ID 53 = Kimura Shizuka {Mute, unpublished}
ID 54 = Columban Kuri {?, unpublished}
ID 55 = Shikimori Asuka {Render, "Clique", unpublished}
ID 56 = Shikimori Sanako {Render, "Clique", unpublished}
ID 57 = Nakao Yasuko {Render, "Clique", unpublished}
ID 58 = Sakaki Usagi {Render, "Clique", unpublished}
ID 59 = Waifu Mai {pegaso, "Mai", unpublished} (temporary reserve?)
ID 60 = Makoda Yuuki {Ilan14, unpublished}
ID 61 = Hisatsuki Seiryuu {BDFalcon, unpublished}
ID 62 = Torahashi Mio {BDFalcon, unpublished}
ID 63 = Eienji Rie {BDFalcon, unpublished}
ID 64 = Hamaguchi Takako {dewelar, unpublished}
ID 65 = Yoshimura Noriko {dewelar, "Noriko"}
ID 66 = Ichini Sanshi {BDFalcon, unpublished}
ID 67 = Kimura Sachiko {Mute, unpublished}
ID 68 = Hitsuragi Yuureiko {BDFalcon, unpublished}
ID 69 = Hanata Haruka {BDFalcon, unpublished}
ID 70 = Shiraki Kotone {BasedMG, "Kotone", in progress}
ID 71 = Kurokawa Sarako {BDFalcon, unpublished}
ID 72 = Kurokawa Mikari {BDFalcon, unpublished}
ID 73 = (Reserved for LorSquirrel)
ID 74 = Yamisaki Eliza {Kevincalanor, Wolfpack}
ID 75 = Yamisaki Alessa {Kevincalanor, Wolfpack}
ID 76 = Nakamura Yuriko {Kevincalanor, Wolfpack}
ID 77 = Harada Himeko {Garage, "Winggirl"}
ID 78 = Fujikawa Sayumi {Garage, "Winggirl"}
ID 79 = Fujikawa Mayumi {Garage, "Winggirl"}
ID 80 = Hashimoto Midori {Ertad, unpublished}
ID 81 = (reserved for Ertad)
ID 82 = (reserved for Ertad)
ID 83 = (reserved for Ertad)
ID 84 = (reserved for Ertad)
ID 85 = (reserved for Ertad)
ID 86 = (reserved for Ertad)
ID 87 = (reserved for Ertad)
ID 88 = (reserved for Ertad)
ID 89 = (reserved for Ertad)
ID 90 = (reserved for Ertad)
ID 91 = (reserved for Ertad)
ID 92 = Itawa Miyuki {RukasuWYZ, "Ijona on'nanoko", probably canceled}
ID 93 = Shogowa Yuka {RukasuWYZ, "Ijona on'nanoko", probably canceled}
ID 94 = Fujita Suki {RukasuWYZ, "Ijona on'nanoko", probably canceled}
ID 95 = Chihiro Sato {RukasuWYZ, "Ijona on'nanoko", probably canceled}
ID 96 = Shingoza Ayumi {RukasuWYZ, "Ijona on'nanoko", probably canceled}

ID 97 = Sawada Merika {Garage, "Winggirl - Pathways"}
ID 98 = Nagai Shika {Garage, "Winggirl - Pathways"}
ID 99 = Harada Hibiko {Garage, "Winggirl - Pathways"}
ID 100 = Robin Clark {Wowzer_, "Robin"}
ALSO = ? Takuya {Kevincalanor, "Built-off", tachie/profile only}
ID 101 = Miyazaki Kiyoka {Nedras, "First Years", unpublished}
ID 102 = Matsumoto Atsumi {Nedras, "First Years", unpublished}
ID 103 = Kagawa Yasuna {Nedras, "First Years", unpublished}
ID 104 = Azuka Ishikawa {Nedras, "First Years", unpublished}
ID 105 = Hayashito Kaede {ShinigamisApples/KiyokoKaia, unpublished}
ID 106 = Hayashi Kitsune {Garage, "Kitsune"}
ID 107 = Sasaki Riku {Garage, "Nadeshiko"}
ID 108 = Yamaguchi Ayame {Garage, "Nadeshiko"}
ID 109 = Kimura Nanashi {Garage, "Nadeshiko"}
ID 110 = Takahashi Karen {Garage, "Rivalries"}
ID 111 = Inoue Azami {Garage, "Rivalries"}
ID 112 = Yamamoto Hina {Garage, "Crossover", unpublished}
ID 113 = Kojima Daishi {Garage, "Crossover", unpublished}
ID 114 = Hashimoto Chiyo {Garage, "Crossover", unpublished}

ID 121 = Furuya Reika {ScarbucksCoffee, "Reika", unpublished}
ID 122 = Furuya Shunpei {ScarbucksCoffee, "Reika", unpublished}
ID 123 = Shimada Tsukasa {ScarbucksCoffee, "Reika", unpublished}
ID 124 = Shimada Tomo {ScarbucksCoffee, "Reika", unpublished}

ID 130 = Tanaka Grace {mysteriousone3, "Grace"}

(Note: You don't need to care about this list if your story events will not include existing characters, as ID numbers for characters in separate files don't have to be unique)

--> Finally, I've listed the game cheats here. You can use these during story events to test your content:
SHIFT + F5 -- Adds 10 to Looks
SHIFT + F6 -- Adds 10 to Athletics
SHIFT + F7 -- Adds 10 to Personality
SHIFT + F8 -- Adds 10 to Mind
SHIFT + F9 -- Adds 10 to Soul
ALT + F5 -- Adds 1000 to yen
ALT + F6 -- Active speaker's affection decreases by 100
ALT + F7 -- Active speaker's affection increases by 100
ALT + F8 -- Advances the calendar by 1 day
ALT + F9 -- Advances the calendar by 7 days

Posts

Zakariya
Every misdeed has its own punishment, and every good deed has its reward.
1174
author=Garage
Your images are quite nice looking. Seems like she's not from the same school as the rest, though.


Aurora was initially supposed to be a university student. ;)
Stumbled accros minor bug in Uchioniko/ruri_story.txt, STORY 15 ...

The first text she says is "UNFREINDLY". ;)
Marrend
Guardian of the Description Thread
21781
Welp.

*Edit: Er, I mean, thanks, Garage.
Fun with STORY-files part n+1:

According to my tool (which of course is at least 137% bug free) there are several stories in several routes which seemed to be unreachable ... (like, they have unresolvable dependencies and no STORY directly jumps to them)

(In fact almost half of them are in my own unpublished stuff ... well that's why it's not yet published)

The rest is in Ijona on'nanoko, Joruri, Wolfypack and n_stories ...

WARNING in file "Ijona on'nanoko/Yuka_Shogowa.txt", STORY #4: seams unreachable?
WARNING in file "Joruri/joruri_story.txt", STORY #101: seams unreachable?
WARNING in file "Wolfypack/ElizaMain.txt", STORY #106: seams unreachable?
WARNING in file "n_stories/m_story2.txt", STORY #104: seams unreachable?
WARNING in file "n_stories/r_story.txt", STORY #208: seams unreachable?


NOTE: as far as I can tell, the findings seem to be correct ... but it's not too easy to be sure ...

Edit (NOTE²): As it seems at least the unreachable STORY in Joruri is intentional, according to a comment next to it:
STORY 101
CONDITION = 101 DONE
# The "common event" STORY that is never actually called.
Marrend
Guardian of the Description Thread
21781
Funny story: I randomly visited the "main" site, and it actually loaded, rather than giving me a generic "server too full" message! I couldn't seem to get into the administrator back-end, but, I was able to retrieve the images and text of the (now largely irrelevant) step-by-step process that detailed how to set up a ZIP file so that the files extract to the right directories. I will add that to this to this page if there is a sense it might still be useful.

Another awkward thing about the "main" site is that the "Comments" section there is completely blocked off: it produces a 404 "page not found" error. Though, it's probably also true that since the other site is just so damn spotty with how often it's even available, this place has become pretty much the de facto "main" site for the game.


As for this place, I will continue to support it as much as possible. This mainly includes keeping the ID-list up-to-date, taking/denying requests in regards to that, and keeping the official custom content download updated. I kinda feel Garage's support programs should be put into the OP here (plus his instructions in to how to get them to work/run), but, I'll absolutely admit to not actually messing with them!
Zakariya
Every misdeed has its own punishment, and every good deed has its reward.
1174
This site does have more activity and gets more attention, so this becoming the game's primary site is not a bad thing. :P
@Marrend:

Regarding my tools: be my guest. I made them to be useful. If the instructions need clarifications or contain errors, I liked to know about it.

As for official content: do you have a new schedule / deadline for the next update planed?
Marrend
Guardian of the Description Thread
21781
I have an update slated in mid-December, and have so far been doing the update twice a year. Though, to be honest, I'm more inclined to do it once a year (I'm thinking somewhere in June), now that I've gone to teal.
author=Marrend
I have an update slated in mid-December, and have so far been doing the update twice a year. Though, to be honest, I'm more inclined to do it once a year (I'm thinking somewhere in June), now that I've gone to teal.

Teal? ... Oh ... congratulations on that!

About the update schedule. Oh, well ... at least I'll be having enough time to finish my current project properly, then.
Marrend
Guardian of the Description Thread
21781
Before I forget for the umpteenth time: I tried the tachie generator with Kevincalanor's workshop PSD. I don't have a screenshot, but, it couldn't find a file (I think it started with the number 255, and the images it extracted went up to 230 or so). What really got me worried was that AVG was flagging tachiegen.cmd as a virus!

Even if I put an exception on tachiegen.cmd, I still get a blank gray screen, and none of the options under "File" do anything. I presume this is mostly because of that missing file report, but, I'm certainly no expert on this matter!
author=Marrend
Before I forget for the umpteenth time: I tried the tachie generator with Kevincalanor's workshop PSD. I don't have a screenshot, but, it couldn't find a file (I think it started with the number 255, and the images it extracted went up to 230 or so). What really got me worried was that AVG was flagging tachiegen.cmd as a virus!

Even if I put an exception on tachiegen.cmd, I still get a blank gray screen, and none of the options under "File" do anything. I presume this is mostly because of that missing file report, but, I'm certainly no expert on this matter!
Hello Marrend,

Did you run setup.cmd first?

About the virus warning ... who exactly did issue that warning? And which virus has been detected and where?

By the way: a current version of Windows will probably complain because it's an unsigned executable which has been downloaded from the Web ... but I don't have a way to fix this.

As for the blank grey screen issue ... if the tachie parts can't be loaded, then the screen stays grey. The error handling leaves much room for improvement, currently :( Namely: the errors are shown in a seperate "DOS-Box" and the main program doesn't really indicate that anything went wrong. I'll fix this "soon".
(Technically: the parts are loaded by an event-handler. The fact that this handler failed is not dealt with in the rest of the program)


Edit: According to virustotal 3 of 59 used scanners claim that there's a heuristic detection in tachiegen.exe ... personally I believe those are false positives, especially since the scanners I trust most don't find anything.

I used Software from the following sources to build this .exe:
  • Microsoft
(And my own few lines of code, of course)

The first three are very wildly used (ImageMagick and python have been around for ... at least a decade and are installed on about any non-windows system).
Marrend
Guardian of the Description Thread
21781
I used setup.cmd first. Isn't that how the files from Kevincalanor's PSD were made in the first place?

As for what identified the file as a possible virus, that was AVG. I can't remember, nor took a screenshot of, the specific message. So, I'll have to get back to you on that point!

*Edit: Have screenshots, will travel.



This one I got after setup.cmd extracted the files. So, maybe AVG is preventing the program from doing it's thing, thus the missing file(s)?



This is the virus report I was talking about before.

So, maybe it's just me, but, a thought surfaces that if I put both setup.cmd and tachiegen.cmd on "ignore threat" for AVG, and run both from scratch, that might get things working the way they should? I'll experiment with this idea tomorrow, lest a better solution comes forward.
author=Marrend
I used setup.cmd first. Isn't that how the files from Kevincalanor's PSD were made in the first place?
Yep. setup.cmd calls an extract.exe which in turn extracts the indivual parts from Kevincalanor's PSD.

... could you please run setup.cmd from within in a DOS-Box? If there's a missmatch between the version of his PSD and my stuff, this will result in an error message containing the phrase "Are you sure structure.json fits the source?"

author=Marrend
As for what identified the file as a possible virus, that was AVG. I can't remember, nor took a screenshot of, the specific message. So, I'll have to get back to you on that point!

*Edit: Have screenshots, will travel.
"General behaviroal detection" ...
Well. The behaviour might seem fishy to a paranoid antimalware detector (and it's their job to be paranoid ...)
Two nested .cmds bending some path related environment variables and the calling an .exe of an unverfiable origin which has it's own versions of some libraries ...
But that's the only way it can work without installing all those dependencies ...

author=Marrend
This one I got after setup.cmd extracted the files. So, maybe AVG is preventing the program from doing it's thing, thus the missing file(s)?
This should fire BEFORE setup.cmd is doing it's stuff. Unless AVG doesn't like that setup.cmd tries to remove some tempfiles after the extraction finishes ...

author=Marrend

This is the virus report I was talking about before.
Wait a second ... tachegen.cmd???? Where's that letter "i"?
For reference: THIS is the content if you download tachiegen.zip right now:


author=Marrend
So, maybe it's just me, but, a thought surfaces that if I put both setup.cmd and tachiegen.cmd on "ignore threat" for AVG, and run both from scratch, that might get things working the way they should? I'll experiment with this idea tomorrow, lest a better solution comes forward.
Please get a fresh copy of both my .zip and Kevincalanor's PSD before trying this. And please use a fresh directory (i.e.: remove the content of "Female Tachie Generator" first).

It would be very nice of you, if you'd run setup.cmd and tachiegen.cmd from a "Commandline" (cmd.exe, DOS-Box) Window and post any error messages by the programs (unless they suddently start working as intended). Alternatively: edit setup.cmd and add a line containing the single word "pause" at the very end.

Like this:
@echo off
copy HTC-TachieWorkshop.psd tachiegen\HTC-TachieWorkshop.psd
tachiegen\setup.cmd
pause
Marrend
Guardian of the Description Thread
21781
author=Garage
Wait a second ... tachegen.cmd???? Where's that letter "i"?

This... this was weird. So I had cleared that directory of the files generated by the program, and was attempting to re-extract the files. However, I kept getting a window that said I needed permission to copy, move, otherwise make, a file with the name of "tachiegen.cmd" into that directory. That's how it "lost" the 'i'.

However, yeah, doing it from absolutely scratch in a different directory is on my to-do list.

*Edit: As an aside, I did try to run setup.cmd through DOSBOX, but, it yelled right back at me that the program was not to be run in DOS mode. For reference, I'm going off the links from this post.
author=Marrend
author=Garage
Wait a second ... tachegen.cmd???? Where's that letter "i"?
This... this was weird. So I had cleared that directory of the files generated by the program, and was attempting to re-extract the files. However, I kept getting a window that said I needed permission to copy, move, otherwise make, a file with the name of "tachiegen.cmd" into that directory. That's how it "lost" the 'i'.
That should only happen if there was another tachiegen.cmd already in this directory ... after you unzipped my stuff and copied Kevincalanor's PSD the directory should look like this:


And the subdirectory "tachiegen" should contain hundreds of files and look like:
(many, many more files following, not shown here)

By the way: I republished tachiegen-32bit.zip several times. Be sure to fetch the latest version of my ZIP as well as Kevincalanor's PSD.
(My latest update was on 11/16/2016)

author=Marrend
However, yeah, doing it from absolutely scratch in a different directory is on my to-do list.

*Edit: As an aside, I did try to run setup.cmd through DOSBOX, but, it yelled right back at me that the program was not to be run in DOS mode. For reference, I'm going off the links from this post.
Sorry - I might not have formulated that correctly. I was talking about a "commandline window" - in other words cmd.exe - a not about the emulator named DOSBOX. Sounds like you used the later one (or something similar). My programs are built for a modern windows system, they might run on something like XP ... they won't run in a DOS emulator.
Marrend
Guardian of the Description Thread
21781
I was able to run those files directly from File Mangler Windows Explorer, and not have to go through the mess of opening a DOS command prompt. Saves a few steps, I guess?

*Edit:
AVG still wants an exception for both setup.cmd and tachiegen.cmd. However, I did manage to spout...



...Ruri-chan in her Iwayama High outfit. I'd almost prefer Red-Green-Blue color control in some instances over Hue-Saturation-Luminescence, but, I can't really complain too much!


*round of applause for Garage!*
Marrend
Guardian of the Description Thread
21781
WELP. DON'T MIND THIS POST.
author=Marrend
I was able to run those files directly from File Mangler Windows Explorer, and not have to go through the mess of opening a DOS command prompt. Saves a few steps, I guess?
Sure.

Using a DOS prompt would be helpful, if there were any error messages ...

Glad it worked out, tho. This means there wouldn't be any (intesting) error messages anyway.

author=Marrend
*Edit:
AVG still wants an exception for both setup.cmd and tachiegen.cmd. However, I did manage to spout...
My current best bet is that it would find any program built by pyinstaller suspicious ... I could build a minimal "hello world" style program and let you test that, if you like ...

author=Marrend
...Ruri-chan in her Iwayama High outfit.
Almost as cute as the original ;) giving her two-colored hair is impossible with the current version I fear. Well - one could temper with the structure.json file if you'd really want too ...

author=Marrend
I'd almost prefer Red-Green-Blue color control in some instances over Hue-Saturation-Luminescence, but, I can't really complain too much!
Please DO complain if you feel something needs improvement.

As for the color models: you can use both of them ...

The coloring modes are named after the way I tell the graphics lib how to modify the original graphics. Basically, "multiply" means "RGB" and "modulate" means "HSL" ... "Skin" is just a variant of "modulate" with a narrower range for hue ... (Yep. I should cange the names to "RGB", "HSL" and "skin" ... would be easier to understand)

author=Marrend
*round of applause for Garage!*
:bows:

My contribution is only the scripting logic, tho ...

*Edit*: does the program need some helpfile or a tutorial or is it selfexplantory?

*Edit*: here is the "hello world" program. It does exactly two things: it says "hello" and then it wants you to press enter.
(Inside hello.zip is a folder named hello ... inside of that there's a program named hello.exe) as suspected, uploading this hello.exe to virustotal yields exactly the same results.

The way windows 10 treats this is funny by the way. If I copy hello.zip via USB-Stick, extact it and then run hello.exe windows doesn't see a problem.

If I download it, extract the downloaded .zip and run the hello.exe windows tells me that it's dangerous. The reason for that is that my .exe files are not "signed" by me and thus windows can't verify the author.

Why downloads are considered more suspicioues then files copied from an USB-Stick? ... ask Microsoft.
Marrend
Guardian of the Description Thread
21781
Choosing what parts are shown consists of drop-downs and check-boxes, and is self-explanatory in my view. I wasn't sure how to access the coloration options in the first place, so, that could be something to note. I may have missed that post, and it didn't take me long to figure it out, but, having the method up-front (as it were) might be useful.

As for the coloration options, well, I think changing their name to something like "HSL" and "RGB" should help things along to make it more user-friendly. Alternatively, if you make a help file, make the note about what the "skin" option does, versus the "multiply" and "modulate" methods.
author=Marrend
Choosing what parts are shown consists of drop-downs and check-boxes, and is self-explanatory in my view. I wasn't sure how to access the coloration options in the first place, so, that could be something to note. I may have missed that post, and it didn't take me long to figure it out, but, having the method up-front (as it were) might be useful.

As for the coloration options, well, I think changing their name to something like "HSL" and "RGB" should help things along to make it more user-friendly. Alternatively, if you make a help file, make the note about what the "skin" option does, versus the "multiply" and "modulate" methods.
My next release will have the method names changed to HSL and RGB and a few changes to how errors are presented to the user.

I guess I'll write a small tutorial about a poor little girl who's parents can't afford a new uniform for her youngest daughter Hanako ...

Currently she looks like this:

I'm not too sure if her hair stays like this, though.


EDIT: DONE! see the artistic thread.

edit: for reference: this is the documentation as a seperate .zip (just the docs not the tool itself.)