Packaging Overview

I just added some background information on the packaging assembly as part of my documentation set for experiences and insights on tuning the Ikosa framework.


First Page

Finally finished off and published the first (non-bloggish) page of a “series” of pages I’ll be adding to (eventually) that I’d collected thoughts on about optimization stuff in the Ikosa Framework.

Ikosa Tuning Introduction


Roundup 2

July

  • Model cache improvements
  • furnishing stuff
  • multiple cabinet drawer containers
  • location targeting
  • object storage/holding actions
  • client UI work
  • portal cleanup

August

  • movement budget consumed on failed movement
  • grasp awareness improvements
  • bump-into awareness
  • movement and lighting tweaks
  • RoomIndex

September

  • performance and edge case tweaks
  • room awareness performance
  • value-type usage increased
  • move-cost factors for moving objects
  • LocatorIndex
  • removed shader effects reference

October

  • auto-pump the time-tracker
  • turn time-extension when creatures acting (especially moving)
  • client UI concurrency stabilizations
  • pouch and devotional symbol slots (for caster classes)
  • menus via ObservableCollection
  • auto-hit (unattended objects, friendlies with harmless)
  • grip rules for climbing improved

November

  • more climbing test and fix
  • multi-level fractional power die
  • ghoul/ghast (mostly)
  • extraordinary power actions

December

  • poison as a trait
  • paralysis power
  • mental actions
  • secret saves
  • disease trait
  • more undead immunities (paralysis/disease)
  • violet fungus
  • tentacle natural weapon
  • construct guard (automaton)
  • extra health for constructs
  • dart/javelin (needed for goblins)
  • container notifies of lighting changes
  • thread per actor window
  • team affiliations
  • user/creature binding

January

  • IsMaster client handling
  • multiple (closeable) actor windows
  • UI re-organization
  • portrait cache on client
  • initiative visualizer (IsMaster)
  • IsMaster master and any actor prerequisite list
  • auto-turn tracker startup on unfriendly awareness

Annual Roundup 1

It’s been just slightly over a year since any substantive post.  Again, as the sole resource on Guildsmanship (Ikosa Framework), I get more from the coding than from promoting to the small set of people who are even slightly aware I have been coding the D20 system (v3.5) for the past decade (or so).

2017-01-29

Last January: more furnishing things (mostly model generation)

February: even more furnishing things such as drawers and doors opening, UI workshop, in-game manipulation actions; ended with some drawing optimizations in the workshop and client

March: continuing on optimizations

April: even more optimizations (it’s easy to get addicted to performance numbers!)

May: got back into furnishing movement (push/pull/slide/rotate); also got into climbing, moving on furniture; and UI bound jump-down and hop-up actions

June: (slow month) but I added a new ModelCacheSelector; and here’s a quoted comment from a check-in: “Furnishing default implementations tend towards solid convex cuboids
overrides for hollow/cabinet/surface mainly change covered face exposures” (which I think was a refactoring to a base-class so I didn’t have to copy/implement certain geometry features)

I’ll add some more later today while I’m on a roll.


Latest Model Pics


TFS Changeset Count

Lest I appear idle due to a lack of posts…

2016-01-27 (2)

And a small sample of the check-ins over the past few weeks:

2016-01-27 (3)


Splash of Color

Putting all the fragments together gives the basic shape of a meta-model, but doesn’t explain how to get to this:

1-Pieces

The first thing to do is to define the set of brushes that can be used to paint the miniature.  This is done by opening the “brushes” node for the meta-model in the package explorer.

2-Open

Resulting in the brushes editor:

3-Brushes

From within it is possible to add colors, images, gradients and stacks.  Colors are pretty self-explanatory, they are solid colors.  Images are images available to the model either bound directly to the part, or referenced as a resource in the package.  Gradients are linear gradients based on WPF gradient brushes.  Stacks are sets of brushes that are overlain on top of each other (assuming that the upper brushes have some transparency.  Stacks allow multiple directionalities to gradients within a brush.

Next, opening a gradient brush shows the gradient editor:

4-GradientBrush

The directionality of the gradient is selected via the array of buttons with arrows.  The gradient stops are modified in the list box and buttons on the right side.  The slider to the left of the gradient stop list box specifies the gradient stop relative location for the currently selected gradient in the list.  The striping effect of the gradient is controlled by the “spread” combo and the slider next to the combo (which determines how the pattern repeats when it ends and how often the pattern repeats).

Now, to the actual painting back in the meta-model editor.

5-Painting

The “brushes” tab lists all the named areas that can have brush references mapped, and the currently mapped reference.  Right-clicking one and selecting “assign” brings up a visual list of all the brushes that can be applied.5b-assign brush

These references are the “global” (for the meta-model) brush references.  It is possible to apply variations to individual fragment instances; and this applies to brushes as well as “parameters” such as lengths and radii, and to place more than one fragment in a reference connector.

For example, on the left arm, the first “arm.xaml” segment connected to the torso doesn’t have anything mapped for the “arm” brush, but the “arm.xaml” mapped in it’s “connector” has it’s “arm” brush overridden to be sleeve, which is effectively a reverse direction of the “shirt” brush so that the visual jump at the elbow isn’t so jarring.

6-Tweaks

Also, I mapped another segment “balljoint.xaml” to the left-arm slot on the torso to create the slightly bulging shoulders.

7-LocalOverride

Finally, to reduce the relative thickness of the forearms, I select the forearm segment, switch to the “doubles” tab, unselect the “yield” checkbox for arm-diameter and freely adjust the diameter.