RollOnline proposal/standard

Rolling scheme proposals:

This is for online dice pool rolling/chat app. But it should be considered as a possible online rolling standard to use.

roll channels:

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…

Null rolls can be used to represent diceless actions or actions that are somewhat related to “dice” in concept, but have zero effective quantities.

Variable rolls…

Without specifying a number prefix to the dice, you indicate rolling unknown “n” number of that respective dice.

Grouped/Multiple rolls…

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).

Hidden dice results

Hide 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.

Hide entire portion of dice roll from other players and only GM knows about it. Suffix with

Suffix portion with gm.

Labeling dice

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.

Describing dice

Use specific target number to retrieve number of successes of rolls

Simply suffix >N to dice, where N is the specific target number.

/roll d10>7 - Rolls dice at TN 7 (target number 7, >=7)

Rolling towards target(s)

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 :.

Rolling “now” in reply towards another person’s roll.

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”.

Template tokens

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.

Optional tokens

Simply precede variable name with a question mark ?. ANY_DICE cannot be made optional though, only exception.

Quantifiers tokens

Considering a enclosed section with square [] brackets, and subsequent regex style quantifier suffix? ANY_DICE cannot be quantified though, only exception.

Choice selection tokens

Enclosed brackets ().

Roll Templates vs validations/processes

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.

Standard Roll Format

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

RollOnline possible examples

Examples

Song of Swords

GTD

Ballad 3D tactics skirmish framework

A 3D Tactics sandbox framework to support the following features:

Target billboard hit location mapping:

SPECIFY:

Target humanoid billboard settings:

Target board slices: (Convention)

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:

Prone sweep board volume:

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)

Hit box 3D mapping: (extended from 2D target billboard base)

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

Ballad of Laser Whales 3D:

Roadmap:

PHASE 1: 3D sandbox Functionality:

PHASE 2: Visual Aesthetic:

WHAT ENGINE TO USE?

Possible Choices are:

Tactical 3D Engine Aspects:

When considering all targets while moving/aiming/shooting:

Periodic raycasts

Repeated raycasts/occlusion clipping for periodic Stealth/Concealment/Cover/Hit Chance checks

When aiming/shooting at target:

Stealth/Observation/Concealment modifiers for 3D game.

Crouching:

Prone:

Concealment check requirement:

<=3 to <=6 yards:

Consider Stealth Check not needed at all

GENERAL clipping approach for determining occlusion with multiple convex/non-convex occluders:

(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:

Application example: Occlusion vs Terrain (tile-based):

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)

Ballad 3D skirmish rules

1 round of 3 phases each.

EACH PHASE:

Instant Action Sub-Phase: (1 second instant action phase)

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.

Run & Gonne Sub-Phase: ( Remaining (MOB-3) allowance before declared/undeclared actions may occur)

*All undeclared actions use half base dice only.

Implied actions from 3D execution:

Active Defense

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.

…………


Melee-ranged attacks:

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.)

Ballad Blitz Movement during Melee and Skirmish

Determining zones of control for characters:

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.