When I first started working on the Ikosa Framework, I had the idea of a local folder system to hold system-shared and “module” resources; and also for players to have their own sets of resources, like pre-painted miniatures and character data. I also wanted to be able to package up resources into easily portable format. I eventually learned how to use the .NET API for open-packaging convention (OPC) files, and built my own little system of management around it that included a “parts” namespace that could reference object structures within a single serialized stream and across streams in the package.
Every time I did something major to the structure of the map object model, or some other major infrastructural change to the model space, I had to rebuild any test map I had. Most of this was simply in reloading icons, images, and models (of which over the years I had created a fair number). Even the improvements I made in the workshop UI to allow multiple-simultaneous import wasn’t quite cutting it; setting up a meta-model is a fairly time-consuming that is done almost entirely in the workshop. (I’ll post on that a little later).
Ergo, I eventually defined resource references that could be added to the resource resolution space of the system and defined in a resource container (of which a local map maintains an instance).
Image resources are used to source image textures for terrain and faces (I’ve conveniently labeled my references as to which one I intended for which). Icon resources are used 2D XAML images used for the UI selection and presentation, and can be added to treasure troves markers to indicate what’s in the treasure pile. Models are just that: 3D models used for characters, doors and furnishings…basically anything that has an ObjectPresenter to show itself in a local view. Fragments are pieces available to construct meta-models (a type of model composed of fragments…obviously) allowing some in-workshop editing and customization. Finally brush-sets are collections of texture brushes that can be used to paint the terrain. The Brushes resources is a single brush set for texture resolution, which I think I should probably deprecate. I believe it’s utility has been superseded by newer texture mapping features in the models and meta-models; or perhaps it is a fall-back texture resolution system? I’ll have to look into it.
Both the “Faces” images reference and the “Fragments” Fragments reference point to the same Ikosa package, so I’ll give a quick peek into what’s inside:
Images are all faces (duh!). The fragments are a mix of body parts and weapons. I haven’t created a good way to visualize what the fragments look like. If I ever get around to it, I’ll have to add some meta-data streams to the fragments with preview images, it’s either that or hoist them into a meta-model to render them (which leaves open the problems of scale, rotation, and textures; so previews seems like a better choice).
Next up is the terrain Ikosa package, which is the source of references for “Terrain” images, the “Models” model resources, and the “Terrain” brush set.
Finally, the icons; I’ve included images of these before, but I’ve expanded the set by a few icons lately so figured I’d add them in and put them in context of a post that explains Ikosa framework resources just a little more:
Spell components (component pouch, devotional symbol and verbal).
Map redraw on invisibility state changes.
Creatures: bugbear, hobgoblin, orc, kobold, half-orc, gnoll, ogre, grimlock (light-sensitivity, weapon proficiencies, giant-type)
Classes: barbarian, rogue, ranger
Tacticals and class-features: evasion, improved evasion, rage, trap-sense, sneak-attack, uncanny-dodge, flanking, overrun, legal-position checks
Prerequisites now part of LocalViewer instead of a docked tool window, fixed some minor problems with responsiveness of controls,
Made single option, check and save prerequisites work with button arrays instead of combo-boxes.
Fixed poisonous natural weapon process flow and binding on spider’s bite attack.
I also spent some time working on trying to work out non-tactical settings and regional settings; but nothing that I can add into the core of the experience just yet.