Pursuit of Value

Finally re-established https://pursuit-of-value.com


Return of the MSDCPVMUI

The pattern continues.

Writing is hard.  Even harder when you are your own editor.


Century of Posts

The title refers to this being my 100th post here.  But I’m really posting to expose the first 3 articles expanding on my previously tersely declared MSDCPVMUI pattern.

Short-cuts here or on the side-panel of this site:

Although this has sort of felt like a diversion from my tuning stuff.  It actually sort of supports it.


MSDCPVMUI

Model – state of things

Service – access to the state

Data-Contracts – how the state is presented to clients

Proxy – how a remote client deals with the service; the representation of service operations in another programming environment

View-Model – all sort of additional goodies to make the state and proxy behave reactively and transparently to the UI (lots of data wrappers, state-change notifications and command/selection driven service operations).

User-Interface – template driven from the view-model

I’ll admit it isn’t as succinct as pithy initialisms such as MVC or MVVM, but it is more accurate for what I do.  It is generally bi-directional as well.

  1. Model expressed through services as contracts are accessible through proxies as view-models (and contracts) that are projected into user interface.
  2. User-interface is manipulated to affect view-models that use proxies to invoke service operations (typically with data contracts as parameters) that alter model state.

Since Last Summer

As usual, been busy, but I took some time earlier this month to summarize code changes since June:

June

  • support for Game Master client features
  • construct guard configurability
  • damage handling for objects/troves/ammo-bundles improved
  • targeting improvements for sets of things
  • diseases
  • wight (undead)
  • critical hit for powers and spells
  • handle destroyed objects: sub-parts
  • line capture: lightning bolt geometry

July

  • movement updates for furnishing
  • save without full reload: full rewrite with refresh
  • squeeze on fall: deflection
  • Hedral-Grip: 8*8 bitmask for face coverage

August

  • Hedral-Grip continues
  • elevation maintenance heuristic improved
  • IList->IDictionary (interaction exclusions)
  • improving hinder/squeeze near furnishings
  • cache furnishing planar points for sides
  • shuriken
  • shield swap phantom limbs removed
  • buckler rules conformed
  • shield bash
  • object binding connected sides
  • throwing rule net progress

September

  • more net stuff: entanglement
  • Covering group adjunct: creates a “covering” slot
  • Freeze trait (for gargoyle)
  • character model base pogs
  • actor list in service ordered by name…
  • some errant “waiting” blocks removed
  • Turn tracker service to client improved
  • portal editor improvements
  • start of Secret Corner Pivot Portal

October

  • RoomAwareness updates for secret doors
  • CoreIndex (object/token by Guids)
  • IPanelShading and PanelShadingInfo: panel overrides cell drawing
  • Secret doors
  • Search actions
  • auto-Search: elves and dwarves

November

  • more auto-search
  • trapfinding class feature
  • spider throwing net
  • Activation mechanisms
  • LocatorMove interaction (lightweight overlapped capture zone)
  • Surface trigger
  • Open-close triggerable
  • force open actions
  • Secret Sliding Portal
  • editor cleanups in workshop
  • mechanism mount object: binding triggers and responses

December

  • trigger editors
  • triggerable editors
  • merge locator editing into object editors as other tab
  • attack triggerables
  • Health bar in client
  • proximity trigger

February-May Roundup

February

  • client UI ease-of-use
  • action menus along top of actor view UI
  • gem name fixes (true versus observable were reversed)
  • targeting improvements/fixes
  • fix for “Munchausen” bootstrapping problem (picking oneself up)

March

  • ammo recovery
  • throwable weapon relocation
  • ammunition bundle refactoring (new model for handling groups of ammo)

April

  • finishing ammo
  • identity improvements
  • CoreListAim and CoreListTargeting
  • AmmoDropHandler: merge ammo and bundles by known identity
  • use of ammo bundles and new containers with weapon strikes
  • QuantitySelectAim: extract ammo support

May

  • ghoul fever
  • ghoul as replacement template
  • zombie/skeleton template improvements as well
  • ghoulify functionality (UI and ghoul fever result)
  • ghoulish/ghastly paralysis
  • sickened as poison damage
  • ghastly stench
  • temporary poison immunities on saves (if allowed by poison)
  • Cleave Feat (and support classes)
  • fixed coreStep problem with multiple serial steps
  • proneEffect use improved
  • drop handlers use falling movment
  • falling-stop trove merge
  • item/object damage handlers (finally)
  • item/object save handlers (finally)

 


Visualization Overview

The Visualization Overview section is now available in my growing tuning series.  I struggled with being somewhere between a catalog of functionality (and going too deep), an API overview (and being too shallow), and a design justification (and getting too long-winded).

Ultimately, the idea of the system overviews is to provide enough information so that the tuning pages I’m going to create have some context on what I’m tuning without me having to do it in-line and detract from the actual tuning content.


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