Archive for the ‘Coding’ Category

Cutting through the Tangles (Notes on Graphics in Eulora, VII)

Friday, December 6th, 2019

Comments Filtering for MP-WP

Friday, November 29th, 2019

V-tree and V-starter V2

Sunday, November 10th, 2019

Eulora (S.MG) - Taking a Different Sort of Stock

Tuesday, November 5th, 2019

Pretty Petty Particles (Notes on Graphics in Eulora, VI)

Friday, September 27th, 2019

Eulora Client Data Hierarchy v2.0

Saturday, September 14th, 2019

A Summer's Summary and Next Steps in Eulora

Thursday, September 5th, 2019

Ossabot and Its Flask of Python 2.7 on CentOS 6

Monday, September 2nd, 2019

The Widgeting Paws of Pointerism (Notes on Graphics in Eulora, V)

Tuesday, August 6th, 2019

Overview of FFA Ch1 - Ch19

Monday, July 29th, 2019

Naked Models (Notes on Graphics in Eulora, IV)

Wednesday, July 24th, 2019

The Mirror Land (Notes on Graphics for Eulora, III)

Wednesday, July 17th, 2019

A Working Cuntoo Install on AMD FX-8350 (with script)

Sunday, July 14th, 2019

The Rocky Moon (Notes on Graphics for Eulora, II)

Monday, July 8th, 2019

Notes on Graphics for Eulora

Sunday, June 30th, 2019

Euloran Blu's and Boos

Tuesday, June 18th, 2019

Eulora Client Hierarchy of Data Draft

Tuesday, June 11th, 2019

Eulora's Client Core: The Dedicated Requester

Monday, May 27th, 2019

Eulora's Client Core - Basic Docs

Saturday, May 4th, 2019

Reading Notes on FFA Ch1 - Ch4

Wednesday, April 17th, 2019

EuCrypt Chapter 16: Bytestream Input/Output Keccak

Friday, March 15th, 2019

Compiling Crystal Space with SJLJ

Monday, March 11th, 2019

GNAT Compilation Notes

Monday, March 4th, 2019

Inconsiderate Considerations or a Tiny Euloran Dataset on Blueprints

Sunday, March 3rd, 2019

ZCX vs SJLJ - Data Set

Thursday, February 28th, 2019

Seppuku Job Market: Minimal Dynamic Tasking in Ada

Thursday, February 7th, 2019

Compiling Ada Library for Use with Non-Ada Main

Saturday, January 12th, 2019

SMG Comms Chapter 13: Sender and Receiver

Monday, December 17th, 2018

SMG Comms Chapter 12: Thread-Safe Queues

Thursday, December 13th, 2018

SMG Comms Chapter 11: Arbitrary Size of Public Exponent

Thursday, December 6th, 2018

SMG Comms Chapter 10: Actions and RSA Keys

Friday, November 30th, 2018

Proposed Change to W_Borrow (FFA)

Saturday, November 24th, 2018

SMG Comms Chapter 9: Files (Transfers and Requests)

Thursday, November 22nd, 2018

SMG Comms Chapter 8: Keys Management

Saturday, November 17th, 2018

V with VTools, Keccak Hashes and Its Own Tree

Tuesday, November 13th, 2018

SMG Comms Chapter 7: Read/Write Serpent Keysets to/from Serpent Messages

Saturday, November 10th, 2018

SMG Comms Chapter 6: Packing and Unpacking RSA

Sunday, November 4th, 2018

SMG Comms Chapter 5: RSA with OAEP from Ada

Wednesday, October 31st, 2018

SMG Comms Chapter 4: C Wrappers for RSA and MPI

Thursday, October 25th, 2018

SMG Comms Chapter 3: Packing Serpent

Thursday, October 18th, 2018

SMG Comms Chapter 2: Raw Types

Tuesday, October 16th, 2018

Results of Testing UDP - Take 2

Saturday, October 13th, 2018

EuCrypt Chapter 14: CRC32 Implementation with Lookup Table

Wednesday, October 10th, 2018

Results of Testing UDP - Take 1

Thursday, October 4th, 2018

Tester for UDP Communications

Thursday, September 27th, 2018

SMG.Comms Implementation - Chapter 1

Friday, September 14th, 2018

A Collection of Pearls as Well as Ever Sadder Epitaphs

Saturday, August 4th, 2018

Cutting MySQL into Musl Shape

Saturday, July 14th, 2018

Some Branching Troubles on Existing V Trees

Tuesday, July 10th, 2018

Eulora's Own CR50

Tuesday, June 26th, 2018

EuCrypt Manifest File

Friday, June 15th, 2018

Chasing the Elusive Euloran Quality

Sunday, June 10th, 2018

The Lack of Dust - A Very Euloran Problem

Tuesday, June 5th, 2018

Rocking Fuckgoats on the Rock-chip

Monday, June 4th, 2018

A Tiny Stab at a Little Pricing Problem

Thursday, May 24th, 2018

EuCrypt Chapter 13: SMG RNG

Thursday, May 3rd, 2018

RFC: Eulora's Communication Protocol (EuComms)

Tuesday, April 17th, 2018 response is a "Set of Serpent Keys" (A.1.1)

  • int8 - number of keys requested;
  • int8 - value 1 for server use, 2 for client use, anything else undefined currently.

A.1.3 Choose Serpent Key

  • int32 - ID of the key that will be used for communications from now on (depending on the key's set, it'll be used for server's or client's messages).

A.1.4 Burn & Choose Serpent Key

  • int32 - ID of the key to remove from usable sets;
  • int32 - ID of the key to use for future comms;

A.1.5 Unknown/Malformed Message received

  • int64 - id of message that was not understood.

A.2 File Transfer
A.2.1 File Information

  • int8 - length of file name in octets, n
  • n*char - file name (string)
  • int8 - file type
  • int64 - octets per unit
  • int64 - file size in unit given above
  • int32 - file hash (keccak)

A.2.2 File Content

  • int32 - file hash (keccak)
  • int64 - octets per unit
  • int64 - file size in unit given above
  • unit*file_size*int8 - file content

A.2.3 Request File Information --> response is a "File Information" (A.2.1)

  • int8 - length of file name in octets, n
  • n*char - file name (string)

A.2.4 Request File Content --> response is a "File Content" (A.2.2)

  • int8 - length of file name in octets, n
  • n*char - file name (string)

A.2.5 Request File Information --> response is a "File Information" (A.2.1)

  • int32 - file hash (keccak)

A.2.6 Request File Content --> response is a "File Content" (A.2.2)

  • int32 - file hash (keccak)

A.3 Chat
A.3.1 Chat Public

  • int64 - id of speaker
  • int16 - length of string being said
  • n*char - string being said

A.3.2 Chat Private

  • int64 - id of target for this chat
  • int64 - id of speaker
  • int16 - length of string being said
  • n*char - string being said

A.4 Character Actions & Activities
A.4.1 Basic action

  • int64 - id of subject
  • int64 - id of object
  • int32 - id of action attempted (client-sent)/performed (server-sent) --> see Annex B for list of current basic actions

A.4.2 Item movement

  • int64 - id of subject
  • int64 - id of object
  • int64 - quantity (stack count) to be moved
  • int64 - id of destination object (i.e. own char's id for "pickup", container ID for move to container, sector id for "drop" or move from container to world, other char's id for "trade" or "store" etc.)

A.4.3 Item movement with specified slot

  • int64 - id of subject
  • int64 - id of object
  • int64 - quantity (stack count) to be moved
  • int64 - id of destination object (i.e. own char's id for "pickup", container ID for move to container, sector id for "drop" or move from container to "world", other char's id for "trade" or "store" etc.)
  • int64 - slot id

A.4.4 Activity --> this is meant to be sent by the server;

  • int64 - id of activity
  • int64 - duration (in seconds)
  • int64 - start time (unix format)
  • int8 - status: 0 -> finished/success; >0 -> ongoing / scheduled; <0 -> failed / aborted

A.4.5 Request Activity Information --> response is "Activity" above (A.4.4)

  • int64 - id of requested activity

A.4.6 Train

  • int64 - id of character
  • int64 - id of skill to train

A.5 Environment & Graphics
NB: "requests" here are not actions of the character in the game as such but rather supporting raw API for the client; for instance, requests here include obtaining the id of own character or available maps.

A.5.1 List of Sectors

  • int64 - number of sectors, n
  • n*int64 - list with ids of available sector

A.5.2 Request list of sectors --> response will be "List of Sectors" above (A.5.1)

  • int64 - character ID

A.5.3 Sector Map

  • int64 - id of sector
  • int8 - length of map filename (sector's name)
  • n*char - map filename (sector's name)

A.5.4 Request sector map --> response will be "Sector Map" type above (A.5.3)

  • int64 - id of sector

A.5.5 Item in sector (actor/character or object)

  • int64 - id of item
  • int64 - id of sector in which the item is located
  • float - position of item: x coordinate
  • float - position of item: y coordinate
  • float - position of item: z coordinate
  • int64 - id of graphics profile --> graphics profiles are so that the client can request and choose from alternative/equivalent actual files/meshes/icons/animations for this particular graphics profile
  • int8 - length of name/label of item
  • n*char - name/label of item

A.5.6 Request own char --> no payload here really since it's accepted only from authenticated client so unambiguous anyway; response will be a "Item in sector" type above - it includes id of sector + id of char etc. (A.5.5)

A.5.7 Item in container

  • int64 - id of item
  • int64 - count
  • int64 - parent item/actor id (i.e. inventory is simply actor-as-container)
  • int64 - slot id
  • int64 - id of graphics profile --> same story as at A.5.5 above
  • int8 - length of name/label of item
  • n*char - name/label of item

A.5.8 Request item --> response will be "Item in sector" or "Item in container" types above (A.5.6, A.5.7)

  • int64 - id of item

A.5.9 Item Text Description (returned in response to a "view" basic action)

  • int64 - id of item
  • int64 - length of description
  • n*char - text description

A.5.10 Item Text Content --> sent in response to "read" basic action

  • int64 - id of item
  • int64 - length of text content
  • n*char - text content

A.5.11 Item List of Characteristics

  • int64 - id of item
  • int16 - number of characteristics
  • n*int64- the ids of relevant characteristics for this item

A.5.12 Item Characteristic

  • int64 - id of item
  • int64 - id of characteristic
  • int64(/float/int32/int16/char) - value of characteristic --> type here would depend on characteristic according to definition at A.5.13 below

A.5.13 Characteristic

  • int64 - id of characteristic
  • int8 - type of value of this characteristic (see A.0 above for the ids of data types that can appear here)
  • int64 - length of name of characteristic, n
  • n*char - name of characteristic
  • int64 - length of name of category, c
  • c*char - name of category

5.14 Request Characteristic --> response is "Characteristic" above (A.5.13)

  • int64 - id of requested characteristic

A.5.15 Skill

  • int64 - id of skill
  • int64 - length of skill name
  • n*char - skill name
  • int64 - length of skill's category name
  • c*char - category name

A.5.16 Skill List

  • int 64 - number of skills in this list
  • n*int64- ids of skills in this list

A.5.17 Character's Skill

  • int64 - id of character
  • int64 - id of skill
  • int64 - current rank
  • int64 - current knowledge points
  • int64 - current practice points
  • int64 - cost of knowledge to next rank
  • int64 - cost of practice to next rank

A.5.18 Request Skill Information --> response will be Skill above (A.5.15)

  • int64 - skill id

A.5.19 Request List of Skills --> response will be Skill List above (A.5.16)

  • int64 - id of character whose skills are requested

A.5.20 Request Character's Skill --> response will be Character's Skill above (A.5.17)

  • int64 - id of character whose current skill values are requested
  • int64 - id of skill requested

A.5.21 Time of day (game time)

  • int8 - hour
  • int8 - minute

A.5.22 Request time of day (game time) --> no payload, response is Time of day above (A.5.21)

A.5.23 Movement Type

  • int64 - id of this movement type
  • int64 - id of graphic profile for this movement type
  • float - x change
  • float - y change
  • float - z change
  • float - x rotation
  • float - y rotation
  • float - z rotation
  • int64 - length of name
  • n*char - name of this movement type

A.5.24 Request movement type --> response will be "Movement Type" above (A.5.23)

  • int64 - id of requested movement type

A.5.25 List of movement types

  • int64 - number of available movement types
  • n*int64- list of ids of available movement types

A.5.26 Request list of movements --> response will be a "List of movement types" above (A.5.25)

  • int64 - id of item for which available movement types are requested

A.5.27 Set Movement Type

  • int64 - id of item for which movement type is set
  • int64 - id of movement type to set

A.5.28 Destroy Item

  • int64 - id of item that is destroyed/vanishes

A.5.29 Set Item Position

  • int64 - id of item
  • int64 - id of sector in which the item is located
  • int8 - position of item: x coordinate
  • int8 - position of item: y coordinate
  • int8 - position of item: z coordinate

A.5.30 Neutral message --> mainly for feedback e.g. "X killed himself", "That tool is not useful anymore", "You ranked up.", "You got loot"

  • int64 - length of text in characters, n
  • n*int8 - text

A.5.31 Error message (in game)

  • int64 - length of text in characters, n
  • n*int8 - text

A.5.32 Success message (in game)

  • int64 - length of text in characters, n
  • n*int8 - text

A.5.33 Message of the day

  • int64 - length of text in characters, n
  • n*int8 - text

A.5.34 Request message of the day --> no payload here; answer will be "Message of the day" above (A.5.33)

A.5.35 Top

  • int64 - duration in days from game's "today" (i.e. 0 for today's top, 30 for past months' top etc.)
  • int64 - length of text in characters, n
  • n*int8 - text

A.5.36 Request Top --> answer will be "Top" above (A.5.35)

  • int64 - duration in days from game's "today" (i.e. 0 for today's top, 30 for past months' top etc.)

A.5.37 Graphics Profile

  • int64 - id of this graphics profile
  • float - width
  • float - height
  • float - depth
  • int64 - number of contained slots with their own graphics profiles
  • int8 - length of filename for icon
  • m*int8 - icon filename
  • int8 - length of filename for mesh
  • n*int8 - mesh filename
  • int8 - length of filename for texture
  • p*int8 - texture filename
  • int8 - length of filename for animation
  • q*int8 - animation filename
  • int8 - length of filename for sound
  • r*int8 - sound filename

A.5.38 Request Top-Level Graphics Profile --> response is "Graphics Profile" above (A.5.37)

  • int64 - id of requested graphics profile

A.5.39 Request Child Graphics Profile --> response is "Graphics Profile" above (A.5.37)

  • int64 - length of path (i.e. how deep in the hierarchy is the graphics profile of interest)
  • n*int64- ids forming the path to the desired graphics profile (e.g. 2,1,15 means the 15th slot of the 1st slot of top graphics profile number 2).

Annex B - List of currently available basic actions

B.1 Target --> this is less than View at B.2. below; character targets the object.

B.2 View --> this is a generic view and can be applied to anything (objects, actors, world included).

B.3 Read

B.4 Lock/unlock

B.5 Use/Combine/Sacrifice

B.6 Explore (current /explore, with target sector id)

B.7 Repair

B.8 Exchange --> this would be used for at least 3 currently distinct parts: trade, store, bank. As everywhere else, its exact effect depends on context.

B.9 Complete --> for actions that require explicit "accept" confirmation from player (e.g. trade)

B.10 Abort --> aborts what the character is doing (if the abort is possible, permitted and meaningful in the given context).

B.11 Attack --> for current "/die" simply use this with subject and object the same, namely own character.

Use the comment form below for any questions, comments, suggestions or desires you have regarding this communications protocol.

-->

EuCrypt: Additional Check and a Note on Cosmetic Changes

Thursday, March 15th, 2018

EuCrypt: Compilation Sheet

Thursday, March 8th, 2018

EuCrypt: Correcting Bounds Error in Keccak (Word-Level)

Saturday, March 3rd, 2018

EuCrypt Chapter 12: Wrapper C-Ada for RSA + OAEP

Thursday, March 1st, 2018

EuCrypt Chapter 11: Serpent

Thursday, February 22nd, 2018

EuCrypt: Correcting an Error in OAEP Check

Tuesday, February 20th, 2018

EuCrypt Chapter 10: OAEP with Keccak a la TMSR

Thursday, February 15th, 2018

EuCrypt Chapter 9: Byte Order and Bit Disorder in Keccak

Thursday, February 8th, 2018

EuCrypt Chapter 8: Bit-Level Keccak Sponge

Thursday, February 1st, 2018

EuCrypt Chapter 7: Keccak Sponge

Thursday, January 25th, 2018