anathema / anathema_legacy

Anathema is an exhaustive suite for all aspects of Exalted series management. This repository hold the code to support Exalted 1, Exalted 2 and Exalted 2.5.
http://anathema.github.com
69 stars 70 forks source link

Suggestion: "Shards of the Exalted Dream" Support #252

Open Venicus opened 12 years ago

Venicus commented 12 years ago

With this new book out, there are some changes that could be made to Anathema to support content from it. For a lot of non-core Exalted content, the program's flexible enough that you can work around it even if it isn't built-in, but some of these things are frankly impossible to do with Anathema as-is. Total support for Shards, I think, can be divided into a couple of tiers of priority.

Tier 1: Content for which no workaround exists, and which is centrally important to the game.

Tier 2: Content which is not presently in Anathema, but which is optional and can be easily glossed over or handled manually.

Tier 3: Content which can be added using Anathema's existing tools, but would be convenient to have pre-stocked.

If anyone has any items to add to this list, or any clever workarounds that might bump an item to a lower tier, please feel free to suggest! The first two may be tricky (I don't honestly know), but they're probably the most essential to making Anathema compatible with this new product. The rest, by and large, can be handled by kludges or using fairly simple existing means (in-engine equipment creation, for instance).

smattox commented 12 years ago

You're in luck, I'm working on these as we speak. :)

Venicus commented 12 years ago

You're a beautiful person inside and out.

UrsKR commented 12 years ago

As a feature request for the feature request: As someone who will most likely never use the content from Shards, I would like not having to think about it if I just play Vanilla Exalted. That is, it's cool if the content is there for those of you who use it, but I would like Anathema to default to the assumption that it doesn't exist in my game. This especially extends to

As an explicit exception, if this "Theion" happens to be a new Yozi and his Charms could work in Creation, I'm fine with him popping up.

Please note that I have yet to read the rules, and am only extrapolating from what I see in code, forums and this request.

UrsKR commented 12 years ago

Regarding Tier 3, adding modern Equipment, I would like to invoke our rationale to only "offer the means to generate content, not the content itself".

Venicus commented 12 years ago

The only potential problems I see for it interfering with a "vanilla" game are the abilities, and the new Lore charms. The abilities would interfere because you'd have to pick your 5 caste abilities if your caste has one of the two new abilities in it. Though just clicking the other five would take up maybe two or three seconds. Since most of the new charms are isolated in those two abilities' trees, they're also out of your way. The problem, possibly, is Lore charms. Those sit in the Lore tree with the vanilla charms, and would clutter it up a bit if you're not using Shards. As for Strafing, Firearms, and Ammo, the added clutter from those (one extra text box and two extra checkboxes) to ignore would be incredibly minimal.

In short, I think the only thing that would honestly generate any authentic inconvenience (at least from a user perspective) for someone not using the content is apt to be Lore charms, and to a far lesser extent, picking caste abilities. The rest falls pretty squarely into "just don't use it" territory. Unfortunately, I am not sure how it would be best (and most feasible) to segregate those. If they were shepherded into separate templates, it does add a bunch of other templates to keep updated and debugged. I don't know how burdensome that would be. The chief problem I see is that it would keep you from hybridizing them with other templates. For instance, if someone is using some of these new mechanics independently of one of the new settings (revised Resonance for example), they couldn't then stick them on a loyalist Abyssal. Though designed to work with them, the new content isn't strictly married to the new settings. Maybe there could just be a separate drop-in charms file for Shards charms (or several), rather like how custom charms are separated out?

Totally understandable on the exclusion of new equipment though. I know it'd be unwise to go overboard in shoveling in content.

smattox commented 12 years ago

Shards contains about three new templates for each Exalt type, and I was planning on including the Firearms and Drive trees in the Charm Cascades as well.

Avoiding unwanted clutter is a valid concern, so here is my proposed compromise: I'll can add a new panel to Preferences, "Extended Content" or something like that, that contains a checkbox for 'Shards of the Exalted Dream' (it occurs to me that 'Additional Yozis' might make another good checkbox with the same aim). With these disabled the unwanted templates and Charm trees won't appear anywhere.

Also, with respect to equipment, I wasn't entirely sure if I was going to add an actual ammo parameter at all, as we don't really have room to put it on our current panoply sheet. New tags were not a problem, but I'm not certain hiding those is a good idea, and would be a bit more invasive than I'd like to do so.

Venicus commented 12 years ago

That sounds reasonable to me. My chief concern is just being sure we can still use the new mechanical options and additions without being unnecessarily chained to using the new settings and their associated "baggage" (character creation rules/restrictions being the main thing I mean). I do totally understand the desire to avoid making it inconvenience regular games, though. I just figure it's ideal to still make it possible for someone to, say, pull Drive into their vanilla Exalted game if they see fit to do so. Thank you all for hearing me out. I'm not at "insider" to all this, so I don't really know what's reasonable and what would be too much to ask. I'm just sharing my opinions in hopes they spark some ideas for the much more talented. I think I've made my thoughts clear enough, so I will gratefully leave the noble work to you.

smattox commented 12 years ago

Getting overly inclusive winds up becoming a headache pretty fast. I was planning on only incorporating any of the new stuff into the new templates.

One thing I've been meaning to do for a while is to try to implement dynamic loading of templates, so people can customize them in a similar fashion to the way they can charms and spells currently. I'd rather address a desire for unique rule combinations that way.

UrsKR commented 12 years ago

@JMobius, maybe you and @rlrutherford share a goal with respect to templates. He mentioned something similar in 734ece9e5cd5aba0976d92973df74ed5f0d0be6e.

As for the checkbox, that would totally suit me.

Venicus commented 12 years ago

I just noticed that, with regards to using new mechanics in a standard game, the only mechanical difference between Heaven's Reach and regular Exalted - besides using the new mechanics - is the Essence 5 cap. All the other settings diverge in more noticeable ways. Would it be difficult for someone on the user end to disable the cap (by editing the template manually if necessary)? I'm just curious how feasible it would be for someone to just kludge compatibility that way without the design team having to change anything to accommodate it. This is assuming (maybe wrongly) that the Essence limit would actually be part of the template.

smattox commented 12 years ago

If you can edit the templates, Essence caps and just about anything else can be seasoned to taste.

secondsun commented 11 years ago

So I've just started a game which is in Heaven's reach. I've hacked in Firearms and drive (and some Abyssal Charms). I am wondering if someone could give me some ideas for where to begin on adding in the choose 5 caste abilities.

Also I'm trying to put in a toggle to turn the modern abilities on or off. This right now will be global and not per character

https://github.com/secondsun/anathema/tree/shards

UrsKR commented 11 years ago

For a global toggle, you might consider using preferences system. It doesn't offer much beside centralized storage and static access, but at least the toggle will show up where you expect it. Have a look at net.sf.anathema.character.generic.framework.configuration.AnathemaCharacterPreferences to get going.

As for adding the option to choose, I believe @smattox already had it running once. Sean?

smattox commented 11 years ago

I don't think I got the preference option for Shards working. It was something that I was in the process of exploring when 3E got announced, and I subsequently lost all steam.

-Sean

On Mon, Aug 26, 2013 at 7:47 AM, Urs Reupke notifications@github.comwrote:

For a global toggle, you might consider using preferences system. It doesn't offer much beside centralized storage and static access, but at least the toggle will show up where you expect it. Have a look at net.sf.anathema.character.generic.framework.configuration.AnathemaCharacterPreferencesto get going.

As for adding the option to choose, I believe @smattoxhttps://github.com/smattoxalready had it running once. Sean?

— Reply to this email directly or view it on GitHubhttps://github.com/anathema/anathema/issues/252#issuecomment-23267352 .

UrsKR commented 11 years ago

I am sorry, @smattox, I was talking about the other choice. In @Venatius words:

Allow characters with these as caste abilities to select their usual number of caste abilities (ex: Dawn can pick any 5 of the usual abilities + Firearms).

Didn't you implement triple-choice buttons for caste abilities and all such things?

smattox commented 11 years ago

Oh yes, I believe that was in place in the Shards branch, though that appears to be deleted now. Or is it merely archived?

-Sean

On Mon, Aug 26, 2013 at 8:14 AM, Urs Reupke notifications@github.comwrote:

I am sorry, @smattox https://github.com/smattox, I was talking about the other choice. In @Venatius https://github.com/Venatius words:

Allow characters with these as caste abilities to select their usual number of caste abilities (ex: Dawn can pick any 5 of the usual abilities + Firearms).

Didn't you implement triple-choice buttons for caste abilities and all such things?

— Reply to this email directly or view it on GitHubhttps://github.com/anathema/anathema/issues/252#issuecomment-23269724 .

UrsKR commented 11 years ago

Thanks, that's easily remedied. Though deleted on this repo, there is any number of forks that still has your code.

@secondsun, if you want to have a look, you can reproduce Sean's earlier work from here for example.

secondsun commented 11 years ago

Thanks guys.

I really appreciate how easy it was to add the bits I could. This project is surprisingly well architected.

Summers Pittman

Phone:404 941 4698 Java is my crack.

On Mon, Aug 26, 2013 at 11:23 AM, Urs Reupke notifications@github.comwrote:

Thanks, that's easily remedied. Though deleted on this repo, there is any number of forks that still has your code.

@secondsun https://github.com/secondsun, if you want to have a look, you can reproduce Sean's earlier work from herehttps://github.com/lordarcanix/anathema/commits/ShardsDevelopmentfor example.

— Reply to this email directly or view it on GitHubhttps://github.com/anathema/anathema/issues/252#issuecomment-23270519 .

smattox commented 11 years ago

Summers,

Wait until you see what Urs and Sandra have done with the architecture for 3E. :)

-Sean

On Mon, Aug 26, 2013 at 8:26 AM, Hoyt Summers Pittman < notifications@github.com> wrote:

Thanks guys.

I really appreciate how easy it was to add the bits I could. This project is surprisingly well architected.

Summers Pittman

Phone:404 941 4698 Java is my crack.

On Mon, Aug 26, 2013 at 11:23 AM, Urs Reupke notifications@github.comwrote:

Thanks, that's easily remedied. Though deleted on this repo, there is any number of forks that still has your code.

@secondsun https://github.com/secondsun, if you want to have a look, you can reproduce Sean's earlier work from here< https://github.com/lordarcanix/anathema/commits/ShardsDevelopment>for example.

— Reply to this email directly or view it on GitHub< https://github.com/anathema/anathema/issues/252#issuecomment-23270519> .

— Reply to this email directly or view it on GitHubhttps://github.com/anathema/anathema/issues/252#issuecomment-23270774 .

Venicus commented 11 years ago

Glad to hear someone is still looking at this, Summers. I'm afraid I don't have the ingenuity of the tier you all are operating on, but if I can somehow ease your task by doing grunt work (like charm input - I have all Solar and Abyssal Drive/Firearm charms kludged together thus far), please let me know how I can be of assistance to you.

secondsun commented 11 years ago

@Venatius By all means rebase against my branch , add your charm stuff, and issue a PR. I already have the Abyssal firearms charms in but everything else is still up for grabs. Right now we have a DB PC who is using firearms so that will be appreciated.

Venicus commented 11 years ago

Unfortunately, rather than being integrated with the main files, I've made these add-ons in the repository/custom folder. I'm a little less clear on how to integrate them with the greater whole. Kludge though it is, however, they are perfectly functional for purchasing and viewing. On a second quick review it seems I don't have Abyssal firearms, just Solar/Abyssal Drive and Solar firearms. I can certainly look at DB firearms for you though!

secondsun commented 11 years ago

@Venatius

There is a gradle project, Book_ShardsOfTheExaltedDream.

In this project is the folder /resources/data/charms/shards/ . There are files in this directory which define the charm names and the charm descriptions.

There is a subfolder for each Exalt Type in the shards directory. In each subfolder are xml files for their charms. The schema SHOULD be self explanatory but if you need help let me know.

UrsKR commented 11 years ago

@secondsun, when all is said and done, we could well merge your work back into our 2e branch. How about it?

secondsun commented 11 years ago

@UrsKR

Sure, though I am sure there will be a lot of saying and doing before then :-p

secondsun commented 11 years ago

All right, I've put in some more code. No enabling and disabling the modern abilities "works". If you have modern abilities disabled and try to open a character with modern abilities your get a "friendly" error message.

Some suggestions on working for the error message or general style feedback is appreciated.

UrsKR commented 11 years ago

I had a look, @secondsun, and I am wondering whether you could add a flag "modern abilities" to your character templates' 'AdditionalRules', read that when the character is loaded or created and initialize the abilities based on that.
No need for a preference setting, no need to exceptionalize anything. Did you have a look at @smattox's solution?

UrsKR commented 11 years ago

@secondsun, I'm not sure if "general style feedback" includes general thoughts on your changes. Are you fine with me commenting your commits?

secondsun commented 11 years ago

of course

Summers Pittman

Phone:404 941 4698 Java is my crack.

On Wed, Aug 28, 2013 at 2:42 PM, Urs Reupke notifications@github.comwrote:

@secondsun https://github.com/secondsun, I'm not sure if "general style feedback" includes general thoughts on your changes. Are you fine with me commenting your commits?

— Reply to this email directly or view it on GitHubhttps://github.com/anathema/anathema/issues/252#issuecomment-23437647 .

secondsun commented 11 years ago

@UrsKR I looked at his solution, but wandered through my own for a while to get better at understanding the code.

It looks like I can borrow a whole lot and possibly side step some of the nonsense I did (especially around IAbilityType)

UrsKR commented 11 years ago

I can't remember what he did back then, but that's the one thing I wanted to comment on. The Duplicate Enum Scheme you employed appears to be overly complicated, I strongly assume there's an easier way to filter the abilities.

secondsun commented 11 years ago

Probably. Using multiple templates is the way to go, I just wasn't sure sure when I began how to get it working. I do see that in smaddox's code however. (And now that I am more familiar it is easier to follow).

Summers Pittman

Phone:404 941 4698 Java is my crack.

On Wed, Aug 28, 2013 at 2:50 PM, Urs Reupke notifications@github.comwrote:

I can't remember what he did back then, but that's the one thing I wanted to comment on. The Duplicate Enum Scheme you employed appears to be overly complicated, I strongly assume there's an easier way to filter the abilities.

— Reply to this email directly or view it on GitHubhttps://github.com/anathema/anathema/issues/252#issuecomment-23438196 .

Venicus commented 10 years ago

Mr. Pittman, did your work end up getting to any sort of usable state? I don't mean to nag, but I was curious how that all shook out/is shaking out. I looked at https://github.com/secondsun/anathema, but unfortunately, I was quite clueless as to how to actually download your "version", assuming anything had even yet changed.

secondsun commented 10 years ago

@Venatius Here is the branch https://github.com/secondsun/anathema/tree/shards

It got useable enough for me but I never got around to actually getting the support "correct" @smattox has a CL further up which I need to merge and I need to use templates instead of adding in some hard coded enums.

It works but there are some issues. 1) You can't really mix "modern" (heavens reach/modern age) Exalted with "Vanilla" Exalted. 2) Not all of the charms are in and 3) It doesn't correctly support 6 caste abilities (you get the XP bonus for all 6 instead for 5/6). 4) I only have Realm Dragonblooded and Abyssals implemented. smattox's patch fixes #3. Using templates would fix 1, and time and hard labor will fix 2 & 4.

Hope that helps

Venicus commented 10 years ago

I see. Interesting, thank you! If it helps any, for my own upcoming Shards-based game, I've been cobbling together charms and equipment, which you can nab at http://www.mediafire.com/download/kaj6beul33ii4so/Second%20Coming.7z. Only caveats: 1: Firearms charms are fitted into Archery, and Drive charms into Ride (fixable easily enough with a simple Find and Replace). 2: I was not able to figure out how to enable repurchases for Steel and Smoke Mandala. 3: I was not able to add the Strafing tag - firearms are kludged in as "bow-type" weapons with the Flat Damage tag. This bundle includes all modern firearms and artifact firearms plus armor, and all modern charms for Solars, Sidereals, and Lunars. I'd be glad to work on incorporating these kludged charms into your system. As you can probably see, my understanding of how to monkey around in Anathema is pretty limited, but I can at least volunteer some grunt labor. Where can I find the patch you mention, if I may?

secondsun commented 10 years ago

https://drive.google.com/file/d/0BzSy-Z4v4qE-OHM4UnpHMjdza3c/edit?usp=sharing Here is a jar which may/should work.

Venicus commented 10 years ago

Phew. I'm somewhat embarrassed to say putting this together from your work may be a little above my comprehension. At present I'm trying to assemble it by dropping the contents of your updated .jar files (where I can distinguish them - I see Abyssals were updated, and book_ShardsOfTheExaltedDream was added) into the existing ones in the Lib folder, and I'm sorry to say I'm just not sure what to do with the one you just linked. My apologies. I have no real acquiantance with the Github type setup. Is there any way to just collectively download these files in a bundle that I can just drop in and test rather than picking through file by file?

secondsun commented 10 years ago

In theory you should be able to run the jar I posted. Otherwise go here: https://github.com/secondsun/anathema/tree/shards, click download zip, decompress the file, then go to the command line and go into the exploded directory and run 'gradlew run'. That should be all you need to do.

On Mon 13 Jan 2014 02:59:10 PM EST, Venatius wrote:

Phew. I'm somewhat embarrassed to say putting this together from your work may be a little above my comprehension. At present I'm trying to assemble it by dropping the contents of your updated .jar files (where I can distinguish them - I see Abyssals were updated, and book_ShardsOfTheExaltedDream was added) into the existing ones in the Lib folder, and I'm sorry to say I'm just not sure what to do with the one you just linked. My apologies. I have no real acquiantance with the Github type setup. Is there any way to just collectively download these files in a bundle that I can just drop in and test rather than picking through file by file?

— Reply to this email directly or view it on GitHub https://github.com/anathema/anathema/issues/252#issuecomment-32205047.

Venicus commented 10 years ago

Thank you! That looks hugely simpler. I think I'm on the cusp of getting this settled. I can try the gradle compiling thing once I get this SDK downloaded, but I'm trying the .jar first. Does one simply substitute it in place of the one in the Anathema folder? It seems to run that way, but I'm not seemingly seeing the changes. (Assuming they're actually supposed to be visible in the interface yet - which, if I misunderstood that, would explain plenty) EDIT: Drat, no dice on the gradlew run. Compiles along fine for a while, then hits execution failure for 'Character_Generic:compileJava'. Used the 64-bit SDK if that matters.

secondsun commented 10 years ago

To see the changes look in the preferences and enable modern support.

Summers Pittman

Phone:404 941 4698 Java is my crack.

On Mon, Jan 13, 2014 at 3:11 PM, Venatius notifications@github.com wrote:

Thank you! That looks hugely simpler. I think I'm on the cusp of getting this settled. I can try the gradle compiling thing once I get this SDK downloaded, but I'm trying the .jar first. Does one simply substitute it in place of the one in the Anathema folder? It seems to run that way, but I'm not seemingly seeing the changes. (Assuming they're actually supposed to be visible in the interface yet - which, if I misunderstood that, would explain plenty)

— Reply to this email directly or view it on GitHubhttps://github.com/anathema/anathema/issues/252#issuecomment-32206231 .

Venicus commented 10 years ago

That would explain it! I'm afraid I'm not seeing that option though. Just to make sure I'm not stupidly misunderstanding: I took a fresh, default-setup Anathema 5.1.3, dropped your .jar in place of the existing one, and launched via the .exe file, and checked File>Preferences. If this was meant to be in conjunction with the gradle build or something like that, that would be the problem. (Thanks for your patience, by the way!)

secondsun commented 10 years ago

Hrm, the easiest way is to just run Gradle. I never tried to make a distribution of my stuff until just now.

Summers Pittman

Phone:404 941 4698 Java is my crack.

On Mon, Jan 13, 2014 at 3:45 PM, Venatius notifications@github.com wrote:

That would explain it! I'm afraid I'm not seeing that option though. Just to make sure I'm not stupidly misunderstanding: I took a fresh, default-setup Anathema 5.1.3, dropped your .jar in place of the existing one, and launched via the .exe file, and checked File>Preferences. If this was meant to be in conjunction with the gradle build or something like that, that would be the problem. (Thanks for your patience, by the way!)

— Reply to this email directly or view it on GitHubhttps://github.com/anathema/anathema/issues/252#issuecomment-32209469 .

Venicus commented 10 years ago

That does seem easiest, although I'm still running into that building error. Let me see if using the x86 JDK helps.

secondsun commented 10 years ago

I'm running the 64-bit jdk on my desktop. Could you gist up the stacktrace of the error you get?

Venicus commented 10 years ago

Sure thing. Here you are, full output from running "gradlew run --stacktrace" at http://pastebin.com/3svUhtsK

secondsun commented 10 years ago

Well I just downloaded and build everything from scratch. Can you redownload and reextract the zip? It looks like you are missing classes.

Venicus commented 10 years ago

Fantastic! Yep, it looks like that was the problem. It built just fine that time. One last question for now and I can get out of your hair. Is a compiled version saved anywhere after you run the compile like that? I don't see it at least in any obvious places, and it looks like being able to close and re-open it is necessary for things like enabling modern settings (since it requires a program restart). Or is running this the only way to launch it using these files?

secondsun commented 10 years ago

I don't know. There may be a gradle task to create a distribution but I don't remember.

On Mon 13 Jan 2014 04:14:22 PM EST, Venatius wrote:

Fantastic! Yep, it looks like that was the problem. It built just fine that time. One last question for now and I can get out of your hair. Is a compiled version saved anywhere after you run the compile like that? I don't see it at least in any obvious places, and it looks like being able to close and re-open it is necessary for things like enabling modern settings (since it requires a program restart). Or is running this the only way to launch it using these files?

— Reply to this email directly or view it on GitHub https://github.com/anathema/anathema/issues/252#issuecomment-32212098.

Venicus commented 10 years ago

Well, fair enough. At least this gets it launched. Much appreciated! That's some darn fine work you've done there. If you've any interest in continuing this, I hope my messy charm files save at least a little labor.

secondsun commented 10 years ago

try running gradlew release

On Mon 13 Jan 2014 04:17:11 PM EST, Venatius wrote:

Well, fair enough. At least this gets it launched. Much appreciated! That's some darn fine work you've done there. If you've any interest in continuing this, I hope my messy charm files save at least a little labor.

— Reply to this email directly or view it on GitHub https://github.com/anathema/anathema/issues/252#issuecomment-32212347.