GithubHelp home page GithubHelp logo

gamesense-sdk's Introduction

SteelSeries GameSense™ SDK

GameSense™ is a framework in SteelSeries Engine that allows games & apps to send status updates to Engine, which can then drive illumination, haptic & OLED display capabilities of SteelSeries devices. One simple example would be displaying the player's health on the row of functions keys as a bargraph that gets shorter and changes from green to red as their health decreases -- even flashing when it gets critically low.

This repository contains documentation, tutorials, and examples for developers wishing to support GameSense™ in their games or applications.

Documentation

Getting Started

How a game can register and send events to GameSense™.

How to specify event handlers in JSON from a game, for an out-of-the-box user customizable experience.

How to control device illumination

How to write full-keyboard lighting effects

How to control OLED screens

How to control tactile feedback

How to add support for Moments

GoLisp Handlers

How to write handlers in GoLisp, for the ultimate flexibility and power.

Reference

List of standard zones that can be used in handlers

List of event icons that can be used with OLED screen handlers

Tutorials

Turn an RGB device into an audio spectrum analyzer, using the GoLisp handlers

Writing a mod for MineCraft to support GameSense™

Writing a mod for MineCraft to support GameSense™, Part 2, writing advanced handlers to work with the events being sent from the mod presented in part 1.

Support tutorial on modding MineCraft

Customizing built-in CS:GO event handling with GoLisp, read (https://github.com/SteelSeries/gamesense-sdk/blob/master/doc/api/writing-handlers-in-golisp.md) first.

Sample Code

examples/audiovisualizer Code to go with doc/tutorials/audiovisualizer_tutorial.md.

examples/minecraftforge1.8 Code for the GameSense™ Minecraft mod

Submitting a game or app for approval

You actually don't need to submit anything to us.

Feel free to release your own app, and anyone who has your game/app installed should see it appear as a GameSense App inside of SteelSeries Engine. We want smaller devs to be able to develop their implementation completely on their own if they so choose.

Want to partner up and have a full curated experience for our mutual users?

Great, we do too. Contact us through this form and we'll get back to you right away. We can add images, text, links, and other info about your project. We can also help you with implementation, answer questions, and a lot more.

Project info we'll ask for:

  • Game/app title
  • Name of your organization/company
  • Link text & URL
  • Short description: for App tile, cannot exceed 200 characters
  • App tile image: 330 pixels x 200 pixels as a PNG, containing your logo with a solid background
  • GameSense customization page image: 200 pixels x 50 pixels as a PNG, containing your logo with a fully transparent background

gamesense-sdk's People

Contributors

adam-perez avatar ashleymcdonald avatar davidtibbetts avatar elliequirini avatar freyacodes avatar jhunz avatar joeduncko avatar kostersson avatar ptrtn avatar saltybot avatar samflores23 avatar thanexor avatar toadking avatar wvanbreukelen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gamesense-sdk's Issues

Can't bind color handlers other than static colors

For development, I've made my app send a request to SSE3 to delete itself and its events, before I repopulate them. However, in the Steel Series App, the settings aren't updated. The settings don't seem to affect the hardware at all either. I have no idea what I should be doing, but here's an example that might illustrate what I'm talking about:

{
	"game": "MY_APP",
	"event": "MY_EVENT",
	"min_value": 0,
	"max_value": 8,
	"icon_id": 1,
	"handlers": [
		{
			"device-type": "mouse",
			"zone": "wheel",
			"mode": "percent",
			"color": {
				"zero": {"red": 255, "green": 0, "blue": 0},
				"hundred": {"red": 0, "green": 0, "blue": 255}
			}
		}
	]
}

image
Obviously neither of the colors in the screenshot are red or blue, and I didn't define a range either. The only things that are correct are the number of steps on the range control and the icon_id
The mouse I am working on is the Rival 300. Any help in understanding what is going on would be greatly appreciated, since this is the only place on the internet to get help with this sdk

Game_metadata JSON datas

Hi!

How can I see the list of available meta?

Example:

  "game": "CS2D",
  "game_display_name": "CS2D",
  "developer": "Marcell Csendes",
  "icon_color_id": 5

I need a link for like Discord
image

and for the image, since right now it looks like this:

image

Sending full RGB Data

Hey, im making an LED controller that uses JSON to send the data. I also have an Arctis 5 headset. I'm searching for the way to sync that Controller with my Arctis 5. I been reading about GameSense but all examples uses a gradient value, and i need to send the RGB value. Is there any way to bypass the gradient ?

Arctis Pro Wireless OLED problems

Decided to open new issue referring issues related to scrambling screen at times even though it's been mentioned as sidenote before. (See #58 for screenshots).

Sending JSON request to device will some times cause devices screen to become scrambled causing hard-booting it.

Occurrances seem to be quite random but seem to be related to cases when device gets 2 requests from different sources at same time. Fixed it temporarily by disabling Discord plugin.

We don't happen to have any straightforward way of queuing actions if device is busy? That might be helpful preventing these crashes.

AudioVisualizer source code

Is the source code for AudioVisualizer engine app published anywhere? I mean the app that comes with SteelSeries engine. My requirement is that I want to limit the visualization to a smaller frequency range but I also don't want to start from scratch. Right now the rightmost part of my keyboard never lights up because there are very few songs that have anything in that range. Any way I can hack the internal audio visualizer would be fine too.

Can't get an event to overwrite previous

Hi, I've setup my Game within Engine and I've registered all of my bindings, and they work as expected (nearly), but I wanted to change the default colour of my bindings from red to green.

To do this I removed all events from Engine using the API, and then called the bind_game_event again, using the same names but green as the colour. Now in Engine they show up as green when it displays the events on the keyboard, but when I call the events, they're still red. Am I doing something wrong or is this a bug / intended behaviour?

HTTP 500 Response when binding range-based color handler on Rival 700

First and foremost, I want it to be known that I'm not trying to be a bother with all this activity. I simply have a somewhat ambitious idea that I'd really like to implement with this sdk, and I'm genuinely hoping my shenanigans are helping to make it better :)

Anyway, when I try to bind a handler using the following JSON (copy/pasted from https://github.com/SteelSeries/gamesense-sdk/blob/master/doc/api/json-handlers-color.md this time):

{
"game":"TESTGAME",
"event":"TESTEVENT_COLOR",
"handlers": [{
  "device-type":"mouse",
  "zone":"wheel",
  "mode":"color",
  "color": [{
    "low": 0,
    "high": 10,
    "color": {
      "red": 255,
      "green": 0,
      "blue": 0
    }
  },
  {
    "low": 11,
    "high": 100,
    "color": {
      "gradient": {
        "zero": {
          "red": 255,
          "green": 0,
          "blue": 0
        },
        "hundred": {
          "red": 0,
          "green": 255,
          "blue": 0
        }
      }
    }
  }]
  }]
}

I get the following response:
image

The JSON is valid, since I'm not getting any parsing issues in DHC or Notepad++, so maybe this is a bug in the engine? I'm also not getting any errors in any logs for this one, unless these errors are logged somewhere other than %PROGRAMDATA%\SteelSeries\SteelSeries Engine 3\Logs, and nothing stood out to me in the Program Files installation folder either.

Can't write to oled screen on Arctis Wireless box.

Not sure what I'm doing wrong, trying to write text to the oled display on the Arctis wireless box.

Been fiddling around with writing context-handlers, prefix, suffix, icons and data handlers, but I just can't get anything to show up. Ideally I'd like to write custom text and/or graphics.

The application registers with SSE and all posts returns http 200.

When I try to configure the application within SSE, I can see the Arctis Wireless box displayed and a "add event"-button. Clicking that button crashes SSE.

Below is my test code. (I'm running python in the Linux subsystem if the path looks odd).
I'm expecting it to write "38" to the screen, but it doesn't.

import json
import requests

game = "TEST_APPLICATION"
display_name="TEST_DISPLAY_NAME"
event = "DISPLAY"

corePropsPath = "/mnt/c/ProgramData/SteelSeries/SteelSeries Engine 3/coreProps.json"
sseAddress = json.load(open(corePropsPath))["address"]

def register_game():
    print "Registering game:"
    game_metadata = {
        "game": game,
        "game_display_name": display_name,
        "icon_color_id": 6
    }
    r = requests.post("http://"+sseAddress+"/game_metadata", json=game_metadata)
    print json.dumps(json.loads(r.text), indent=4)

def bind_event():
    print "Binding event:"
    screen_handler = {
        "game": game,
        "event": event,
        "icon_id": 16,
        "handlers": [
            {
               "device-type": "screened",
               "mode": "screen",
               "zone": "one",
               "datas": [
                   {
                       "has-text": "true",
                       "length-millis": 2000
                   }
               ]
            }
        ]
    }

    r = requests.post("http://"+sseAddress+"/bind_game_event", json=screen_handler)
    print json.dumps(json.loads(r.text), indent=4)

def send_event():
    print "Sending event:"
    event_data = {
        "game": game,
        "event": event,
        "data": { "value": 38 }
    }

    r = requests.post("http://"+sseAddress+"/game_event", json=event_data)
    print json.dumps(json.loads(r.text), indent=4)

register_game()
bind_event()
send_event()

Sending bitmap to Arctis Wireless Box does not work

I've tried sending image data to my Arctis Wireless box using the following handler:

POST http://127.0.0.1:50035/bind_game_event HTTP/1.1
Content-Type: application/json

{
   "game": "TEST",
   "event": "DISPLAY",
   "handlers": [
      {
         "device-type": "screened-128x36",
         "datas": [
         {
            "has-text": false,
            "image-data": [
               0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
               0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
               0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,12,0,0,
               0,0,28,0,0,28,0,0,0,112,0,0,0,12,0,0,0,4,28,0,0,28,0,0,0,112,0,0,0,0,0,0,0,14,28,0,0,28,0,0,0,112,0,0,0,0,
               0,0,0,4,127,0,120,28,7,0,112,112,224,14,0,0,28,1,128,1,255,193,254,127,31,193,252,115,248,63,140,236,127,
               15,224,1,193,195,207,127,63,227,254,119,28,113,207,236,227,156,112,3,128,227,135,28,112,119,6,118,12,96,
               207,12,193,152,48,3,28,99,192,28,112,119,7,119,0,192,108,13,128,216,0,31,54,113,248,28,112,119,7,115,192,
               192,108,13,128,223,0,63,34,112,254,28,127,247,255,113,248,255,236,13,255,199,224,31,54,112,31,28,127,247,
               255,112,28,192,12,13,128,0,112,3,28,96,7,28,112,7,0,112,14,192,12,13,128,0,56,3,128,227,131,28,112,119,7,
               118,6,224,108,13,192,216,24,3,193,227,199,31,63,227,254,119,14,112,204,12,225,156,48,1,247,193,254,31,31,
               193,252,115,252,63,140,12,127,15,240,0,255,128,124,31,7,0,112,112,240,14,12,12,28,3,128,0,28,0,0,0,0,0,0,0,
               0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
               0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
               0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
            ]
         }
         ]
      }
   ]
}

And then with the event trigger:


POST http://127.0.0.1:50035/game_event HTTP/1.1
Content-Type: application/json

{  
    "game": "TEST",
    "event": "DISPLAY",
    "data": { "value": 1 }
}

And the device does not react. I've also tried with "screened" device type which didn't help. Do I need the resolution of the wireless box screen to pass the proper device type and also an array of the proper length?

This information is missing from the docs.

SSE3 vs PRo wireless Problem.

Hi. let me just start by saying I know this is the wrong way to get help. But they have tried to close my ticket 2 times now whit out solving the problem I'm having.

The problem I'm having is when I'm trying to connect the transmission box to SSE3 I'm getting this error.

" Warning The core process SteelSeriesEngine3.EXE does not seem to be running."
If someone has some tip that I can trie please let me know. I can provide all logs and everything if someone will need it. The Request number I'm having at support now is (#545098)

Best regards Rasmus

Plugins

So, i could not find any info about creating permanent non-game plugin. E.G i want to display time on my Rival 700 screen, how can i do it?

Scrolling text on Arctis Wireless box and unresponsive endpoint

I'm trying to print some text to the Arctis Wireless box oled screen. I've sucessfully done it by sending context data, however the text gets cut off mid sentence.
Is there any way to scroll longer texts on the screen?
Do we have any means of formatting text that appears on the screen?

The handler I'm sending the request to

{  
   "game":"TS3TOSSE3",
   "event":"POKE_MESSAGE",
   "icon_id":0,
   "handlers":[  
      {  
         "device-type":"screened",
         "mode":"screen",
         "zone":"one",
         "datas":[  
            {  
               "has-text":true,
               "length-millis":5000,
               "arg":"(custom-text:(context-frame: self))"
            }
         ]
      }
   ]
}

The request im sending to the endpoint

{  
   "game":"TS3TOSSE3",
   "event":"POKE_MESSAGE",
   "data":{  
      "frame":{  
         "custom-text":"THIS IS A ERY LONG TEXT"
      }
   }
}

The other issue I just started having is regards to how often can you send events and display text on the screen. It seems that I cannot send two request about two-three seconds apart, since the endpoint seems to not forward the request to the box. I see the JSON sent to the endpont just fine, and the response is also valid (spitting back the contents of my request), however nothing happens.
Or rather, this happens:

box

The screen goes bananas and I have to unplug the device and reset it.
Any idea why is that happening? Is this an issue with my wireless box or bad firmware?
Is there any way to check logs on what the endpoint is trying to do when receiving the request?

Building an IFTTT-like app

Hi, note sure where else to ask. But I'm trying to determine if I can use the SDK (or some other interface via gamesense) to control rgb on my keyboard for tasks outside of gaming. Basically like an IFTTT for the kb... is this doable? I'm also on OSX and not sure if I'm even able to develop on this platform. Any advice here would be grateful!

Keyboard blanking out whole main-keyboard zone after binding letters

Hi, I have an app that has bound events with GameSense using the letters A-Z only. I have one binding for each letter, and they work wonderfully. The issue, however is that the keyboard shuts off the lighting for whole 'main-keyboard' zone.

When I was first testing with my app, I did bind to the 'main-keyboard' zone, but I removed that binding. The only bindings I have now are my A-Z ones. Is this expected behaviour when binding to letters though?

In order to do the bindings I literally did a loop for every letter that called register_game_event passing the letter for the event property in the json.

Get assigned Macros with API

I've reviewed the documentation but haven't been able to find a way to request what the current macro and/or key stroke assignment is with the API. Am I just missing it or is this not supported?

Little bit of background on what I want to do. I'd like to create a rainmeter plugin displays my keyboard and mouse configuration on the screen for a few seconds before fading away. Rather then having to hard code the rainmeter plugin with my current configuration and update it when I make changes to my hardware config I'd like it to fetch the individual key names, their currently assigned macro name or key stroke.

It looks like the standard-zones.md is pretty close to what I want but doesn't return info about the zone.

Thanks in advance.

Is it possible to flash a keyboard such that the zones all flash at the same time?

I'm developing on an Apex 150, which has 5 zones and doesn't respond to any device-type except "rgb-5-zone", and does not recognise zone "all", so the only way I've found to illuminate a whole keyboard is to have 5 handlers - one for each zone (or 5 on-device calls if doing it with lisp).

The problem is if I flash the keyboard, using either json or lisp, the zones all flash out of sync with each other.

In addition, if I want the app to be able to support other keyboards then I need to add handlers for 3 zones on rgb-3-zone, two more for rgb-2-zone, etc, ending up with about 13 handlers in the json structure, or 13 on-device calls in the lisp function)...

{
	"game":"MYGAME",
	"event":"URGENT",
	"icon_id":5,
	"handlers":[
		{"device-type":"rgb-1-zone","zone":"one","mode":"color","color":{"red":138,"green":43,"blue":226},"rate":{"frequency":1,"repeat_limit":3}},
		{"device-type":"rgb-2-zone","zone":"one","mode":"color","color":{"red":138,"green":43,"blue":226},"rate":{"frequency":1,"repeat_limit":3}},
		{"device-type":"rgb-2-zone","zone":"two","mode":"color","color":{"red":138,"green":43,"blue":226},"rate":{"frequency":1,"repeat_limit":3}},
		{"device-type":"rgb-3-zone","zone":"one","mode":"color","color":{"red":0,"green":0,"blue":255},"rate":{"frequency":1,"repeat_limit":3}},
		{"device-type":"rgb-3-zone","zone":"two","mode":"color","color":{"red":138,"green":43,"blue":226},"rate":{"frequency":1,"repeat_limit":3}},
		{"device-type":"rgb-3-zone","zone":"three","mode":"color","color":{"red":0,"green":0,"blue":255},"rate":{"frequency":1,"repeat_limit":3}},
		{"device-type":"rgb-5-zone","zone":"three","mode":"color","color":{"red":138,"green":43,"blue":226},"rate":{"frequency":1,"repeat_limit":3}},
		{"device-type":"rgb-5-zone","zone":"two","mode":"color","color":{"red":96,"green":30,"blue":234},"rate":{"frequency":1,"repeat_limit":3}},
		{"device-type":"rgb-5-zone","zone":"four","mode":"color","color":{"red":96,"green":30,"blue":234},"rate":{"frequency":1,"repeat_limit":3}},
		{"device-type":"rgb-5-zone","zone":"one","mode":"color","color":{"red":0,"green":0,"blue":255},"rate":{"frequency":1,"repeat_limit":3}},
		{"device-type":"rgb-5-zone","zone":"five","mode":"color","color":{"red":0,"green":0,"blue":255},"rate":{"frequency":1,"repeat_limit":3}},
		{"device-type":"rgb-5-zone","zone":"all","mode":"color","color":{"red":138,"green":43,"blue":226},"rate":{"frequency":1,"repeat_limit":3}},
		{"device-type":"rgb-per-key-zones","zone":"all","mode":"color","color":{"red":138,"green":43,"blue":226},"rate":{"frequency":1,"repeat_limit":3}}
	]
}

Is there a way to light up and flash an entire keyboard that works with the whole steelseries range? (Even if it means all zones must be the same colour)

I see there's a show-on-zones specifier in device.lsp (as opposed to show-on-zone), but it's not documented and I couldn't get it working - I tried passing a list as its 2nd argument.

Also, is there an API way to set the launchable app metadata?
(I can currently do it using sqlite -> database.db, but SteelSeries probably prefer it be done in a defined forwards-compatible way)

Docs: *Writing Handlers in JSON* is incomplete.

In the Writing Handlers in JSON doc, in the section Specifying a device type, it says "For a list of valid device type strings, see Reference Sections - Device types below". The section doesn't seem to exist. There is a separate document (standard-zones.md) that includes the information, but Writing Handlers in JSON doesn't point you to it.

Continously stream image data to the display

Is there any way to continuously stream image data to the display? I have tried to create two events each of which holds one image. While one is displayed, the other is rendering, then they are switched. However, while switching the default image (stock image/chosen background image) is displayed for a short moment, which is highly disruptive.
Device in question is Rival 700.

Gradual Interpolation Between Colors?

Not 100% sure if this is the place for feature requests on the sdk, but would it be feasible to add a key for number of milliseconds it should take to transition to a color? I've noticed that all color changes are instant when the event is sent, and this option could make for some nice effects. Or maybe it could be a different visualization mode, which would then require a number of milliseconds to be specified in the handler or event. This would alleviate the need to send a large number of events in quick succession to a device to create this effect (which I think is actually guarded against by the engine, now that I think of it). What do you think?

Engine App is invalid

MSI GT73VR
I turn on the PrismSync and ImageSync, and it didn't work.
At the same time, I can't open AudioVisualizer.

I'm obviously stupid..

I lost my whole afternoon today after buying apex m800 to make audio visualizer to work and I just can't.Could someone do a step-by-step tutorial please ?

Allow access from other devices on LAN

Currently i have made a work around by "proxying" requests via a c# program. however i would love to make this work properly with home assistant, i use a arctis pro wireless and the oled screen has some great possibilities for home automation.
but you currently lock the api to 127.0.0.1, which is understandable but perhaps a option could be added?

image
https://github.com/CyanLabs/Steelseries-Gamesense-API-Proxy
My JSON parsing is a quick and messy solution, the code is extrermely unoptimized and probably has a lot of redundant stuff in it.

CS:GO team switch color

Is there CS:GO documentation to change the color, based on what Team one is on. For example, to make the steelseries rival 300 mouse Yellow when T, and Blue when on the CT team.

Removing an event or game

When I remove event or game SteelSeries Engine 3 app still shows this. After restart application removed object disappear in menu.
I think this should work in the same way as registering. When registering game or event it shows in menu without application restart.

Stop Effect function

Hello SteelSeries developers,
You've done an amazing job for the GameSense SDK, but one important function is missing: "Stop Effect"
We can launch an effect with "Send Game Event", but once it is started, it cannot be canceled or stopped. I understand the main idea was to feel Cooldowns in game with tactile alerts, but for the iFeelPixel application we need a "Stop Effect" function to improve the realism of tactile sensations. Do you have any plan to add it in a future release? or is there an alternative function, please?

image

Data property

Data property in (GameEvent) is a stringified(serialized) string of an object. This should be a normal JSON child property containing the object

Apex

Not work on Apex keyboard with examples "audiovisualizer"

World of Warcraft Gamesense Support

Hi,

I bought m800 keyboard and I saw that under engine 3 software there are 3 games supported by gamesense.

It would be good to make support for more popular games like World of Warcraft. WoW is one of the most popular games on the world and new expansion is coming by end of this month.

Is there chance for you guys to make gamesense work with this keyboard m800? I think there is WoW icon on back of keyboard box :)

I tried to open pull request by it doesn't allow me to open.

Handler for MSI Mystic Light not working.

Trying to create an Handler through json that would affect the keyboard keys and the back of an MSI laptop.

Sending the game_event changes the keyboard color as expected but not the Mystic Light on the back of the laptop. The documentation states: "rgb-24-zone: Any connected, supported, twenty-four zone RGB device. Covers the MSI Mystic Light."

Using the json handler attached here: JSONHandler.txt, the keyboard reacts properly but not the MSI Mystic Light. The MSI Mystic Light just keeps doing whatever was set using the Steel Series Engine 3.

Don't find a key in the rgb-per-key-zones, that is only in the French layout !

Hi there!

I'm using a french layout keyboard, and unfortunately, i think that there is a key we have in france that don't exists in english layouts... so the main problem is that i cannot access or control it, even if i try to change all keys colors...!
I'm working on a software that use keys separately, so having just one that i can't control is really unnoying and frustrating...!

I've tested all the names that are in the list of "Zones specifying various individual keys", and even if i use the group "all", this specific key will not react...

it's the "<>" key by the way...

image

I would be thankful for any help !!!

Thxxx

Weshhhh

SSE not responding/crashing when rapidly sending events

I'll give a description on what i'm working on first:

I am intercepting the calls Overwatch makes, and redirecting them to SSE. There is a list of colors that makes up the effect. I am assuming index 0 = A, index 1 = B and so on.

The following steps are taken:

  • Razer call has been made, list of colors extracted
  • Create per-key event binding where each key get it's own handler and color (min/max is 0 and 1)
  • Create game event, just having a value of 1
  • Serialize/post binding
  • Serialize/post event

The 2 effects i know 100% that should occur:

  1. On the main menu, the entire keyboard should be the same color (the gold/orange OW uses)
  2. When changing characters in the character screen, a wave should run accros the keyboard (with the character specific color)

They either don't happen, or only partially. And it seems to crash SSE3. Since randomly during the color changes, they keyboard leds don't change anymore. And when i try to configure the game, i get a message saying there are no products connected. If i try to change a preset from a device, nothing happens. When i restart SSE, everything pops responds again as expected.

I also tried to just using the function-keys zone using a single handler. And while not having the desired effect, they do flicker as they should have.

So this tells me that i'm sending too much data in a too rapid pace. But i would like to figure this out how to do this optimal. Since there is no need to allow the user to customize the colors, is there a way to just set keys a certain colors witouth all the bindings and such?

And the added bonus, Overwatch support for Gamesense, someting a lot of people want :P

I have attached a log of what i'm sending and such, if needed i can host my code as well.

RazerInterceptor.txt

Specifying `keypad-5` in JSON handler kills all handlers

I have a very simple series of handlers in which I'm trying to address a static color to each number of the right-side keypad. When I do this, it works as long as keypad-5 is not included. If I include a handler for this key, it prevents the other handlers from working; and if I simply remove that one handler, the rest of the individual handlers begin working again as expected.

If I use keypad to set a static color for the entire keypad area, all keys work, including 5.

Any idea what might be happening?

APEX M750 / Firmware Version: 1.20.0.0
SteelSeries Engine 3 / 3.12.13

Thanks!

Custom GameSense Application Icons

Hi, I've been working on an application that uses GameSense, and I was wondering if there's any way to get a custom Game Icon in Engine without it being an official game added by SteelSeries.

This isn't a necessity, just a feature that I was wondering is possible, I'm more than happy with the default icons, just curious.

Binding Event on Rival 700 Causes SteelSeries Engine 3 Software to Crash

I've noticed that binding an event using bind_game_event will subsequently cause the software to crash on startup (first attachment below). Requests sent to the API are all successful, as can be seen in the second screenshot of DHC in Chrome. Registering and removing a test game seems to work just fine; it's just binding an event that appears to offend SteelSeries Engine 3. Also, removing the event will calm the software down and allow it to startup, and events sent to the Rival 700 all seem to produce the expected results in my testing, despite the software being upset. In case it's helpful, I've also attached the errorlog.txt and nw-log.txt files below the screenshots.

Update: Just realized that color-related events don't seem to cause this issue

My event-related request bodies look like this:

  • bind_game_event
{
"game":"TESTGAME",
"event":"TESTEVENT",
"handlers": [{
    "device-type": "screened",
    "zone":"one",
    "mode":"screen",
    "datas": [{
        "has-text":true
        }]
    }]
}
  • game_event
{
"game":"TESTGAME",
"event":"TESTEVENT",
"data":{
    "value": "TEST!"
    }
}
  • remove_game_event
{
"game":"TESTGAME",
"event":"TESTEVENT"
}

errorfromprogram

requests

errorlog.txt

nw-log.txt

JSON color gradients not working

Pretty much what the title says. They do nothing.

Reproduction steps

Hardware: Sensei 310
Expected: Mouse wheel turns red
Happened: Mouse wheel did nothing
Terminal log (Windows + Bash):

$ cat "$ALLUSERSPROFILE/SteelSeries/SteelSeries Engine 3/coreProps.json"

{"address":"127.0.0.1:49983","encrypted_address":"127.0.0.1:49984"}

$ export SSE_ADDRESS="http://$(cat "$ALLUSERSPROFILE/SteelSeries/SteelSeries Engine 3/coreProps.json" | cut -c 13-27)"

$ echo $SSE_ADDRESS

http://127.0.0.1:49983

$ curl $SSE_ADDRESS/bind_game_event -X POST -H "Content-Type: application/json" -d '{
  "game": "TEST",
  "event": "TEST",
  "min_value": 0,
  "max_value": 100,
  "handlers": [
    {
      "device-type": "mouse",
      "zone": "wheel",
      "mode": "color",
      "color": {
        "zero": {
          "red": 255,
          "green": 0,
          "blue": 0
        },
        "hundred": {
          "red": 0,
          "green": 0,
          "blue": 255
        }
      }
    }
  ]
}'

{"game_event_binding": {"game":"TEST","event":"TEST","icon_id":0,"min_value":0,"max_value":100,"HandlerDatas":["{\"color\":{\"color\":{\"hundred\":{\"blue\":255,\"green\":0,\"red\":0},\"zero\":{\"blue\":0,\"green\":0,\"red\":255}},\"high\":100,\"low\":0},\"device-type\":\"mouse\",\"mode\":\"color\",\"zone\":\"wheel\"}"],"handlers":[{"color":{"color":{"hundred":{"blue":255,"green":0,"red":0},"zero":{"blue":0,"green":0,"red":255}},"high":100,"low":0},"device-type":"mouse","mode":"color","zone":"wheel"}]}}

$ curl $SSE_ADDRESS/game_event -X POST -H "Content-Type: application/json" -d '{
  "game":"TEST",
  "event":"TEST",
  "data":{
    "value":100
  }
}'

{"game_event": {"level":"","game":"TEST","event":"TEST","Data":"{\"value\":100}","data":{"value":100}}}

Working handler (to verify API is working, mousewheel turns red)

$ curl $SSE_ADDRESS/bind_game_event -X POST -H "Content-Type: application/json" -d '{
  "game": "TEST",
  "event": "TEST",
  "min_value": 0,
  "max_value": 100,
  "handlers": [
    {
      "device-type": "mouse",
      "zone": "wheel",
      "mode": "color",
      "color": {
        "red": 255,
        "green": 0,
        "blue": 0
      }
    }
  ]
}'

{"game_event_binding": {"game":"TEST","event":"TEST","icon_id":0,"min_value":0,"max_value":100,"HandlerDatas":["{\"color\":{\"blue\":0,\"green\":0,\"red\":255},\"device-type\":\"mouse\",\"mode\":\"color\",\"zone\":\"wheel\"}"],"handlers":[{"color":{"blue":0,"green":0,"red":255},"device-type":"mouse","mode":"color","zone":"wheel"}]}}

Flash if value is higher than threshgold

Is there possibility to add option to flash a zone when value in event is higher than set threshold, as it is in SSEngine now for values lower than threshold?

Mod not working if you join a server with bungee

Some reason how bungeecoord reconnects the user it doesn't seem to register as the player being 'in game' and so when trying to play a mini game on ex. HiveMC it doesn't activate the colours.

Rival100 on-device doesn't works.

Looks like both of
(on-device 'mouse show-on-zone: c one:) and (on-device 'mouse show-on-zone: c two:) doesn't works with Rival 100. I've created myrgb.lsp in hax0rbindings, and event in it "SETRGB2" (it's strange that old events which was used from game_event doesn't appears in SSE while are in .lsp script.

There is the code of myrgb.lsp:
(handler "SETRGB2" (lambda (data) (let* ((v (value: data)) (c (color-between red-color green-color v)) (on-device 'mouse show-on-zone: c one:) (on-device 'mouse show-on-zone: c two:)))))

I've tried to execute it from POST request with args:
{
"game":"MYRGB",
"event":"SETRGB2",
"data":{"value":1}
}

but it doesn't works, for sure, if I pass bad value in "value" I'll get an error in golisp-log.txt

Managing Apex M800 keyboard lighting using Gamesense SDK causes flicker

I recently picked up the dev branch of Project Aurora which has Gamesense SDK support. I had some discussion with @ToadKing @brainbug89 and @simon-wh over there:

antonpup/Aurora@107d6fe

The "issue" I am having is that even if the colors of the keys are not changing, the keyboard exhibits a barely noticeable flicker, which is not present when using SSE3 to manage the lighting effects.

Even when Aurora uses a solid color, the keys flicker ever so slightly. Is there a "maximum" of data that the Gamesense SDK and the Apex M800 can handle? What can I do to help trouble shoot the problem?

GameSense not working for minimal example

I want to do something like this: #32 (comment)
So first I tried to build a minimal working example. My test.lsp file looks like this:

(handler "TESTEVENT"
  (lambda (data)
    (let* ((val (value: data))
           (c (color-between red-color blue-color val))
      (on-device "headset" show-on-zone: c earcups:)))))

and part of the html-file to create and send json game events:

<script type="text/javascript">
var sseAddress = "127.0.0.1:64998"
var GAME = "TEST"

var test_event = function() {
    var testEventRequest = new XMLHttpRequest();
    var inputvalue = parseInt(document.getElementById("inputValue").value, 10);
    var payload = {
        "game": GAME,
        "event": "TESTEVENT",
        "data": {
            "value": inputvalue
        }
    };
    try {
    	var url = "http://" + sseAddress + "/game_event";
        testEventRequest.open("POST", url, true);
        testEventRequest.setRequestHeader("Content-Type", "application/json");
        testEventRequest.send(JSON.stringify(payload));
        testEventRequest.onreadystatechange = function() {
            if (testEventRequest.readyState == XMLHttpRequest.DONE) {
                //alert("test_event: done");
            }
        };
    } catch (e) {
    	console.error(e);
    }
}

I'm modifying the sseAddress with coreProps.json for every start of SSE.

If I'm using /bind_game_event to create json event handler, everything works fine. But if I'm using golisp handler, it doesn't work: the color cycling of the headset stops (so GameSense is receiving the event), but it doesn't show the selected color. And after 15 sec (timeout) the color cycling starts again.

What's wrong with my code? (Edit: I'm testing with a Siberia v3 Prism and a Rival)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.