MSDCPVMUI
Posted: 2018-05-25 Filed under: Coding | Tags: initialisms Leave a commentModel – 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.
- Model expressed through services as contracts are accessible through proxies as view-models (and contracts) that are projected into user interface.
- 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
Posted: 2018-01-31 Filed under: Coding Leave a commentAs 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
Posted: 2017-06-02 Filed under: Coding Leave a commentFebruary
- 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
Posted: 2017-03-25 Filed under: Coding, General, Workshop, WPF Leave a commentThe 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.
First Page
Posted: 2017-03-14 Filed under: Coding, Debugging, General Leave a commentFinally 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.
Roundup 2
Posted: 2017-02-15 Filed under: Coding Leave a commentJuly
- 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
Posted: 2017-01-29 Filed under: Coding, General Leave a commentIt’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).
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.
TFS Changeset Count
Posted: 2016-01-27 Filed under: Coding, General Leave a commentLest I appear idle due to a lack of posts…
And a small sample of the check-ins over the past few weeks:
Since August…
Posted: 2015-11-19 Filed under: Coding, Debugging, General Leave a commentSpell 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.
DCIV
Posted: 2015-08-17 Filed under: Coding | Tags: refactor, UI Leave a commentIt’s been a few months since I’ve posted, but I’ve had over a hundred code check-ins since then. A quick round-up is in order:
For the first week after my last post I was debugging, performance tweaking and refactoring a lot, trying to cleanup some code and get the system to behave more like I’d expect as a user. One of the major “new” accomplishments from that week was getting the spider to climb on the ceiling, and before two weeks were out, climbing around corners and fixing some client window issues.
Early June had some fixes to the workshop (and support functions in the core) for room editing and light propagation through room links. The bulk of June into early July was working on movement-related things such as multi-step movement targeting which involves picking a cell in the distance (using target selection) and moving towards it with a single UI command; as both an alternative to single-stepping, but as a requirement for overrun and tumble through (as well as jump). I basically had to rework the single-step movements to be a “degenerate” case of multi-step to get the whole system to be relatively streamlined.
June also saw the beginnings of my refactoring for VS 2015 (using the Community Edition Release Candidate).
By about July 26th I was experiencing a small amount of movement burnout (since I still hadn’t completely worked through overrun, tumble and bull-rush like I intended, let alone jump, run or charge). And moved on to some other things.