GTD
This is for online dice pool rolling/chat app. But it should be considered as a possible online rolling standard to use.
roll channels:
/roll
(Allows you to roll to your own private client window to set up your own roll templates/schemas. You can save these roll templates accordingly and double/right click on them to convert them to respective rolls towards different target roll channels accordingly..or you may, often as a GM or if given permissions, prompt other users online with such roll templates (as popup windows/tabs/etc.) on their screen to “poke” them to make the necessary rolls as the game flows on…)/rollnow
(By adding a now
suffix, allows you to roll dice to current online public table slot prompted/made available by GM host, if any.)/rollto
(Similar to now
suffix, but defers the execution of the rolling of results until later which is either triggered by GM or automated game event triggers (and the dice layout setup may be edited by GM/players) before actually rolling of the results. )/gmroll
/gmrollnow
/gmrollto
(Secretely rolls to GM. Doesn’t reveal this roll to other players at all, or indicates you actually rolled anything to other players. Simply Prefix above with gm
.)Often, rollto
and rollnow
would often have to conform to a particular schema/template since it rolls to the public online table, and this depends on the game setup by the GM and the current game situation. The template (and possible GUI) is clearly shown in the respective slot at the online table itself, or via popup window prompts, tabs, etc.. Additionally, usually online dice pool limits will apply to rollto
and rollnow
calls for each player, with the player only allowed to invest a limited number of dice into each of these rolls.
Null rolls can be used to represent diceless actions or actions that are somewhat related to “dice” in concept, but have zero effective quantities.
/roll 0d
- Dummy “null” roll to indicate rolling of “nothing” or a roll that requires 0 dice investment. Using d10
/dWhatever
/ie. any sided dice wouldn’t matter in this case..but it may act as further descriptio.n/roll 0d0
- Strict dummy null roll of no sides./roll 0d10
- eg. Strict dummy null roll of zero “10” sided dice.Without specifying a number prefix to the dice, you indicate rolling unknown “n” number of that respective dice.
/roll d10
- Roll some 10 sided dice.Seperate grouped rolls with either a +
or -
, or optionally include =
seperators between them to define explicitly seperate top-level tabulated groups, which may use the given inner +
/-
operators optionally (depending on the game/gm setup itself for the given roll template).
/roll 4d10 + 2d10
- Roll 4 10-sided dice and 2 10-sided dice/roll 4d10 + 2d10 =
- Roll 4 10-sided dice and 2 10-sided dice and compute results through default game scheme setup/roll 4d10 + 2d10 = 3d10 = 2d10
Roll individually computed results with =
seperated groupsHide rolled dice results (can only be revealed by GM or if made allowable to specific players to “open” each individual dice), by suffixing dice with h
character. Only GM can see the results.
/roll 4d10h
- Roll 4 10 sided dice with results hidden to other players.Suffix portion with gm
.
/roll d10 + 4d10gm
- Roll some 10 sided dice with the 4 10-sided dice portion hidden from other players. You can label dice by adding a colon :LabelDice
after. (note: labels are not case sensitive..). Labeled dice may have their own limited dice pool quota per player for a given game, or may have their own implied number of sides/result resolution, depending on the game schema.
/roll d10:Red
- Roll some 10 sided “Red” dice./roll d:WeirdDiceForGame
- Roll some weird dice setup for a particular game called “WeirdDiceForGame”./roll 4d10 Jumping + 3d10 Swimming
/roll 4d10:Red Jumping + 3d10:Blue Swimming
Simply suffix >N
to dice, where N
is the specific target number.
/roll d10>7
- Rolls dice at TN 7 (target number 7, >=7)
After rolling, you may add as many @
seperators to indicate who you wish to target with that roll, (the person/target zone/at something/etc.). Define detailed targeting within a specific “target” by seperating with colons :
.
/roll 4d10 @Alfred
- Roll 4 d10s towards Alfred/roll 4d10 @ Alfred
- Roll 4 d10s towards Alfred/roll 4d10 @ Alfred : Downward Swing to Head
- Roll 4 d10s towards Alfred with a Downward Swing to Head/roll 4d10 @ Alfred @ John
- Roll 4 d10s towards Alfred and John.Usually, when you use rollnow
/rollto
@something...
, many games will automatically create a rollnow
/rollto
reply number slot (with index number eg. #1
or #1.1
or #1.1.1
depending on the schema) towards a particular character to allow that character to respond with his own dice pool against another character’s roll.
/roll 7d10 @ Alfred.2
- Replies to Alfred with 7 D10s at number “2”.
To define your template variable token fields, enclose it with curly braces. Variable names are case sensitive. ANY_DICE
is a reserved keyword though, allowing you to roll any combination of dice as you see fit.
roll d6 {varEntry1} + d10:{diceLabel} {varEntry2} @{Person} : {targetZone}
roll d10>{tn} {manuever} @ {Person} : {targetZone}
roll {ANY_DICE} {manuever} @ {Person} : {targetZone}
Simply precede variable name with a question mark ?
. ANY_DICE
cannot be made optional though, only exception.
roll d6 {?desc}
Considering a enclosed section with square []
brackets, and subsequent regex style quantifier suffix? ANY_DICE
cannot be quantified though, only exception.
Enclosed brackets ()
.
roll 1(d6|d10) {description}
- Roll 1 D6 or 1 D10 of particular description.Templates don’t define validations or how the results may be processed. Validations/processes are done seperate from templates (either manually or through a seperate app-specific module) to avoid over-complicating templates. The position of the token within the prescribed Standard Roll Format and the labeling already implicitly determines what that token entails. By keeping such roll templates minimal/bare-bones, they can be better re-used for multiple games/rule-sets or re-interprated by human/AI GMs in any way he sees fit.
Likewise, whether a certain dice roll portion requires dice limits from player pool or not, is not handled by the roll template itself, but externally through the “game” itself.
Roll templates simply define the view “input structure” to use, but doesn’t contain any logic in itself.
Format..
/rollChannel {ANY_DICE} [@ {target}]
Summary:??d##
- Within {ANY_DICE}
, a whole word smallcase d
preceding an optional number ##
(sidedness) indicates dice to roll, ie. the dice definition. ??
is optional to define specific number of dice to roll. This is further added by optional :
label to indicate special dice label if needed (eg. d10:White
).d## WholeWord
- A whole word after dice indicates description of that preceding dice definition. (or may imply description fo all preceding dice definitions, this is up to personal interpretation and doesn’t concern the program)@
- Target(s) seperator
Roll for Bout Orientation /roll 1d10h:{orient} + 0d:{orientAnti}
Commit a Bout manuever to target with any additional dice cost (known only by GM) due to any manuever/range/misc modifiers with a given TN/rollto d10>{tn} {manuever} + d10gm cost @ {target}
Declare General action phase action (doesn’t require any dice roll, so use dummy 0d1
dice to represent it) towards optional target/area /rollto 0d1 {action} ?@
A 3D Tactics sandbox framework to support the following features:
Target humanoid billboard settings:
Typical Main body 2D grid convention: 5 slices(vertically) x 3 columns(horizontally). (center grid column based off Torso fatness to represent Chest and Belly.)
Main body slices:
Lower limb slices:
* Depending on intended pose, limps at this location may be excluded and included as part of Chest slice area instead
Determine overall percentage cover by:
Determine covered hit locations by:
When character is prone, an additional rotated/oriented sweep billboard target area is included from head tip billboard center, to tail end of prone character’s facing direction, with hit slice regions (vertical slices) for both Main body and Lower limbs, excluding Head.
Convention:
Main body slices: (length makes up 4/5 of Main body: 80% height of Main body height
)
Lower limbs slices: (length is Total humanoid height - Main body height- 20% height of Main body height
)
Upperhead Volume
Face Side (box-side specific)
Neck Volume
Chest Side (box-side specific)
Belly Side (box-side specific)
Upper Back Side (of Chest) (box-side specific)
Lower Back Side (of Belly) (box-side specific)
Side Sides (left and right)
Hip Volume
Groin Sides (front and back)
Thigh Volume
Knee Volume
Shoulder Side (top side of Chest)
Upper Arm Volume
Elbow Sides (of elbow face of upper-arm and fore-arm respectively)
Forearm Volume
Hand Volume
PHASE 1: 3D sandbox Functionality:
PHASE 2: Visual Aesthetic:
Possible Choices are:
1 round of 3 phases each.
Simply declare your prefered mode of action to GM, regardless of whether you execute it or not during Instant Aciton Sub phase. Your character will change to the appropiate weapon/stance/direction automatically to hint to others what that action would likely be (Ranged, Melee, Thrown, Reloading, Misc, Sprint, etc.) and who is likely to be targeted. PER tests may be automatically applied to peek into actual nature of the declared action.
You are limited to moving 1.5 yards cap within this sub phase, or 3 yards (if sprinting), or (0.75 yards, if moving slowly).
Declared actions must be done against known targets in view, otherwise they still incur moving while shooting penalty if moving in any way to declare action on target.
*All undeclared actions use half base dice only.
You either receieve attacks upon breaking out of cover for too long, or if you do receive any attacks while behind cover, you gain your +ADR pool defense roll against it. You may run Active defense against a target during Instant Action Sub Phase and stay behind half cover while moving to take cover in relation to specific target’s movement.
…………
All Melee Attacks are treated as 1-on-1 in Ballad. There are no X-vs-1 bouts in Ballad.
Any Shoot action executed within Melee range is treated as a 1-on-1 Melee Attack with the initiator having initiative, and also allows Character to react after being shot, or even steal initiative before attacking manuever is resolved (if the attack received is not Melee Ambush).
Once activated “melee-ranged” combat.. (Receives + ADR to Melee Combat Pool as Base Dice, can shoot up to max MP while in Melee against undefended, though any cover will act as RS.)
Add zone of control obstacles over each character, and any other characters (smaller for friends/larger obstacles for enemies or those in melee).
Alternatively, for contigous groups of characters in crowd formation (friendlies/enemies), useful for settiing up frontlines to hold, etc. set up a concave hull of these units via voronoi regions and also enclosing the outliers of the voronoi region. Run through all outlying faces being added and add them to navmesh.
Both of the above cases will influence the resulting navmesh.
Periodic raycasts
Repeated raycasts/occlusion clipping for periodic Stealth/Concealment/Cover/Hit Chance checks
Crouching:
Prone:
Concealment check requirement:
<=3 to <=6 yards:
Consider Stealth Check not needed at all
(To determine percentage exposure of occludee geometry, or whether occludee can be deemed fully occluded.)
Obviously, the “clipping” approach will be more computationally intensive, and isn’t needed in most cases unless you require more accuracy in determining object exposure, since the clipping method involves incrementally subtracting away visible surface area of objects to determine exposure of it. This algorithm should also work for non-convex occluders or combined groups of multiple convex/non-convex occluders.
The method, described for general case:
NOTE for chunk-based terrain:
(If using chunk-based terrain, note that each chunk buffer needs 1 tile padding to take into account face-visibility of neighboring tiles from neighboring chunks)