Skip to content
This repository has been archived by the owner on Oct 18, 2021. It is now read-only.

SumoLogic-Labs/killer-queen-collector

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

killer-queen-collector

Standalone Scala application that connects to a Killer Queen arcade cabinet, receives game events, and turns them into JSON payloads to be logged and analyzed. It additionally enriches the stream of events to provide more useful metadata. There is also the optional ability to use a simple UI to assign player names so that you can consistently track player performance over time.

Running the KQ Collector

  1. Checkout this repository locally
  2. (Optional) Configure the application to send the logs to Sumo Logic
  3. Ensure your computer is on the same network as the Killer Queen cabinet. (http://kq.local should load)
  4. Execute bin/run.sh

Sending Data to Sumo Logic

We've included an example log4j2 configuration file that you can copy to log4j2.xml and use. Replace REDACTED with an HTTP source URL. For information on how to get your HTTP source URL, see the help docs.

Core Concepts

Event

The core concept is that everything is an Event. In code, there are a few sub types: InboundEvent, OutboundEvent, GameplayEvent, ResetEvent, and EnrichedEvent.

  • InboundEvent - Native events generated by the KQ cabinet and received by the collector. For more history, see the original reddit request thread.
    • GameplayEvent - InboundEvent that involves gameplay, instead of general control flow.
  • OutboundEvent - Events generated by the collector and sent to the KQ cabinet.
  • ResetEvent - Internal collector control event that can be passed to StateMachine.reset to avoid creating an arbitrary event.
  • EnrichedEvent - Our attempt to use knowledge of the current game's state to add contextual information to an InboundEvent

To know more about the types of events and the fields they have available, please check the source. See EnrichedEvents.scala and Events.scala.

Player and Player State

A Player is a singular reference to the position on the cabinet. i.e. Player 1 is the Gold Queen, always.

In a single play of a game, there is a PlayerState that can be used to track the current state of any given character. They have an attribute that is a Player.

Additional Terminology

  • A Maiden is the game's codified name for gates that minions can use to upgrade their player

Releases

No releases published

Packages

No packages published