Sashité for Developers
  1. Sashité for Developers
  2. Specifications
  3. PNN
  4. 1.0.0

Piece Name Notation (PNN) Specification


Overview

Piece Name Notation (PNN) provides a foundational, human-readable naming system for game pieces in abstract strategy board games. PNN serves as a primitive building block in the Sashité ecosystem, using descriptive alphanumeric names with case encoding, optional state modifiers, and optional terminal markers to represent piece identity and player assignment.

As a foundational primitive, PNN is completely self-contained and provides formal naming for piece identification. It does not depend on or derive from any other specifications.

Core concept: Each PNN name is a case-consistent alphanumeric identifier that directly represents a game piece, player assignment, optional state, and optional terminal status.


Terminology

For complete definitions of terms used in this document, see the Glossary.

PNN uses the following specific terms:

PNN does not prescribe how these states or terminal status alter movement, rules, or match outcomes; that logic belongs to the Rule System.


Dependencies

None. PNN is a foundational primitive with no dependencies.


Format Specification

Structure

PNN names consist of an optional state modifier followed by a case-consistent alphanumeric name and an optional terminal marker.

[<state-modifier>]<name-body>[<terminal-marker>]

Where:

Grammar (BNF)

<pnn> ::= <state-modifier> <name-body> <terminal-marker>
       | <state-modifier> <name-body>
       | <name-body> <terminal-marker>
       | <name-body>

<state-modifier> ::= "+" | "-"

<name-body> ::= <uppercase-name> | <lowercase-name>

<uppercase-name> ::= <uppercase-letter>+
<lowercase-name> ::= <lowercase-letter>+

<terminal-marker> ::= "^"

<uppercase-letter> ::= "A" | "B" | "C" | ... | "Z"
<lowercase-letter> ::= "a" | "b" | "c" | ... | "z"

Regular Expression

\A[+-]?([A-Z]+|[a-z]+)\^?\z

Structural Constraints


Foundational Design

Primitive Principles

As a foundational primitive, PNN follows these design principles:

  1. Human-readable format: Descriptive names for better usability
  2. Self-contained: No external dependencies or derivation requirements
  3. Direct assignment: Names represent pieces through explicit association
  4. Universal applicability: Works across all abstract strategy game contexts
  5. Deterministic behavior: Clear, unambiguous identification rules

Piece Assignment

PNN names are assigned directly to represent pieces:


Piece Attribute Mapping

PNN encodes piece attributes using this correspondence:

Piece Attribute PNN Encoding Examples
Name Alphanumeric name KING, QUEEN, KNIGHT
Side Name case KING = First player, king = Second player
State State modifier +KING = Enhanced, -KING = Diminished
Terminal status Terminal marker KING^ = Terminal Piece, KING = Non-terminal

Assignment Rules

State Modifiers

Terminal Marker

The Rule System defines which pieces are terminal and how their status affects the Game.

Interpretation Examples

PNN Name Side State Terminal Interpretation
KING King First player Normal No Standard king for first player
king King Second player Normal No Standard king for second player
KING^ King First player Normal Yes Terminal king for first player
king^ King Second player Normal Yes Terminal king for second player
+ROOK Rook First player Enhanced No Enhanced rook for first player
+ROOK^ Rook First player Enhanced Yes Enhanced terminal rook for first player
-pawn Pawn Second player Diminished No Diminished pawn for second player
-pawn^ Pawn Second player Diminished Yes Diminished terminal pawn for second player

Relationship with PIN

PNN and PIN are independent primitives that serve complementary roles:

Optional Correspondence

While both specifications can be used independently, they may be related through:

Important Notes

  1. No dependency: PNN does not depend on PIN, nor PIN on PNN
  2. Bidirectional mapping requires context: Converting between PNN and PIN requires external mapping information
  3. Independent usage: Systems may use PNN alone, PIN alone, or both with defined mappings
  4. Multiple mappings: One PNN name may correspond to multiple PIN characters in different contexts, and vice versa

System Constraints

Player Limitation

PNN supports exactly two players through case distinction:

Context Dependency

The meaning of PNN names depends on context:


Design Properties


Examples

See PNN Examples for recommended naming conventions and practical implementation guidance.


Reference Implementations

Ruby