Jump to content
Corsair Community

Unofficial Custom Game Integration


Macca_Cool

Recommended Posts

Hey! I finally got my stuff together and released it.

 

I've been somewhat active on the forums in the past, mostly talking about SDKs and the potential for custom game integration with iCUE, much like FarCry5 and Metro Exodus shipped with, and I'm proud to announce that I've finished it (6 months ago) and have finally got to releasing it.

 

I would like to put together a tutorial video to walk through all the aspects of the software, but that's for another time. Today I've released a public download and the source code on Github with some documentation on settings/functions and some usage explaination on the Github README.

 

Please note: this isn't for the feint of heart, I'm providing a platform to build your own game integration from, I have not created profiles and controllers for all your favourite games and neither do I intend to. This means that programming controllers and making profiles is all up to you. That being said, I've provided enough examples and documentation to have you on your way.

 

The software provides access to the game-integration functions provided by Corsair for the aforementioned games via HTTP GET requests, this allows almost any language to utilise its functionality, meaning theoretically any game mods should be compatible. I've provided controller examples in Python and have implemented a number of settings to allow it to fit with many use-cases.

 

So here's the link, have fun, and any questions, ask them here and I'll try to get back to you. Happy integrating!

https://github.com/Zac-McDonald/iCUE-Custom-Game-Integration

Link to comment
Share on other sites

Thanks so much, James! This project means a lot to me, so I really appreciate that. I'm currently working on styling (and adding proper HTML structure to) the documentation and am gonna try to add some example configs and usages, etc. Hopefully that tutorial video for the setup and use-cases comes along too, as it's quite complex to setup and would really help users.
Link to comment
Share on other sites

  • 4 weeks later...

Hi there. Thank You so much for the SDK.

I have download all you upoload but be realy confused.

I hope i can find someone who can help me eith it.

I want to link iCUE with League of Legends and use this SDK. I am not so good at thes pogramming parts in java.

Is there anyone who can help me with the config of the SDK for League of Legends?

Thank you.

Link to comment
Share on other sites

@excessive_amoun you are planning on coordinating game integration with league of legends? Are you familiar with the API? I am not, but from there he/we can generally help you set game states using the game SDK integration. If you just want a single profile you can specify a game specific profile by linking to league of legends' exe inside icue.
Link to comment
Share on other sites

  • 4 months later...

Hello guys I found this thread in my good rgb sdk searching xD

 

Can you help me a little? Im very lost.

 

My keyboard k70 mk2 rgb low profile.

 

What im looking for.

 

- Default icue effects for desktop(easy)

-Good game integration with overwatch (aurora makes it nice)

-Integration for WoW and later for other games.

 

For 3rd point aurora its poor and Icue natively only recognize 4 or 5 five games.

 

 

Sooo this project its what I need? XD

Link to comment
Share on other sites

Alright, so that's a pretty loaded question. Firstly, the program can definitely help you create game integrated lighting to the same fidelity of the Corsair partnered games (Far Cry 5, Metro Exodus, etc.) for games of your choice, but you need to note that I say create. The program at its core is just giving easier access to the Corsair game integration functionality via HTTP requests as opposed to the C++ API. It is up to the user to create the integration, as such it is a very programming and DIY centric approach, that is at the mercy of the programs you try to integrate.

 

Linking a single profile to an application can be done fairly easily with the software, but that can also be done in iCUE itself, linking programs that dynamically change profiles is the focus of the application, as well as managing when these programs (which I call controllers) need to start/stop to provide seamless lighting between different integrated applications. My point being that if you wanted dynamic lighting for a game like WoW, you would need to find a way to extract information from the game to decide on the current lighting. For the likes of Far Cry 5, with inbuilt support for iCUE game integration, it internally listens for game events such as getting hit or touching fire and triggers a lighting profile to match, likewise it has states such as day and night with accompanying profiles. Sticking with the WoW example, this API might provide the functions you would want for your controller.

 

An example of a well documented and real-time game API is the CSGO one which is accessed via a local HTTP server. Something like this is pretty difficult to come by however, especially in online competitive games like CSGO and Overwatch. The CSGO API I linked provides different information depending on if you are playing or spectating a match, this is to keep the game fair so that users cannot abuse the API to gain an unfair advantage, and this is likely the main reason why these APIs are few-and-far-between. You mention Project-Aurora, which provides game-lighting integration for a number of games and hardware. If you weren't aware, you can dig through how they integrate lighting for individual games here. As a lot of these games don't provide APIs like CSGO, the game states are extracted using a variety of different methods. Integration for the likes of Minecraft and Witcher 3, among others, is provided via game mods that extract information from within the games and hands it to Project-Aurora. This kind of strategy could easily be ported to work with this software. I believe some other games read values directly out of memory (I remember seeing an old Terraria integration that did this, not so sure about Aurora). Games like Overwatch, DOOM and Factorio that have existing support for Razer Chroma are implemented by wrapping the Chroma integration DLL and extracting the lighting settings and applying them to other hardware. In the case of Overwatch, this means they can have lighting effects on each character and on different in-game events with only the lighting settings leaving the application. This means if you wanted Overwatch integration, you would need to do the same as Aurora and map the lighting from the Chroma SDK to the Corsair SDK, making it a lot more difficult than something like CSGO.

 

So in short, the software is built to make integration easy to create. Not to directly provide it. The results you want are achievable in most cases, but there would be an amount of work required to do so. I'm happy to help on this end of things; setting up the server and which settings to use. For most applications though, if there is no public API, and there is no modding support, then DIY dynamic lighting probably isn't going to be possible.

Link to comment
Share on other sites

  • 3 weeks later...

This is a really cool piece of software. Do you think it would be possible to use the HTTP server to be a general REST-like API into the SDK? Or for that functionality to be added? My use case is that I want to use RainMeter to display the information that iCUE provides about fans and sensors, but I don't have the programming experience to use the SDK itself, and kludging together a pipe from iCUE to RainMeter via sensor logs/powershell/regex/lua etc. is proving the be a pretty big challenge. A REST API would make this so much simpler.

 

Thanks!

Link to comment
Share on other sites

  • 2 weeks later...
Hey ian, glad to see you're interested. So you're asking if I could, or plan to, add functionality from the iCUE SDK and the sensor logging. It's a pretty big scope change, so I don't see that happening very soon, but I'm definitely interested in getting that fan and sensor information as well. In regards to that, I don't believe that the SDK introduces any method to obtain that info, so regex on the logs will be your best bet, which I might look into. As for a REST API, I need to look further into what that actually entails, but AFAIK it already is, just for the game integration functions.
Link to comment
Share on other sites

Thanks for the reply. I appreciate you letting me know where you're at on this. I ended up cobbling together a local host Apache/PHP setup that grabs and presents the last line of the newest CSV file in the iCUE sensor log directory. I can then use RainMeter to regex that for fan speeds, temperatures, etc. It's crufty as all get out, but it's pretty if you don't look behind the curtain...
Link to comment
Share on other sites

  • 3 weeks later...

I wanted to share something I've done to use Macca_Cool's game state integration.

 

Its basically leverages what he wrote to change colors via parameters, which can be sent from a streamdeck for example.

 

The script is written in autohotkey, and linked below.

 

Various steps in the setup described below may require administrator elevation.

 

Create a new directory inside of:

C:\Program Files (x86)\Corsair\CORSAIR iCUE Software\GameSdkEffects\

 

Called:

hexColors

 

Right click on the folder and select properties, select security tab and then Edit (UAC), then hit Add...

Then type:

everyone

hit Ok Apply Ok

 

this may not matter, but go to general and uncheck read only and then hit Apply and Ok

 

switch over to iCUE, create new profile called ORANGE (or with modification whatever you like), create solid lighting for every piece of hardware you have with a #ff8500 color stop on both ends (I have provided an example icue .cueprofile in the link above but your hardware will likely differ).

 

Then export that profile and save it somewhere like your desktop. Copy that same file into the

"C:\Program Files (x86)\Corsair\CORSAIR iCUE Software\GameSdkEffects\hexColors\" folder.

 

That will make #ffff8500 where it needs to be for the arbitrary solid color part to work. The ahk code can be compiled to run with parameters from the Streamdeck(s).

 

The script will look for two incoming parameters, the first being the name of the cueprofile, the second for how long to play it.

 

If any parameters are missing, the missing will be prompted for, either via a file dialog box, or a dialog box for the number of milliseconds to play the cueprofile.

 

Use case:

On your Streamdeck have a 'System: Run Application' run the following:

 

c:\users\yourUsername\desktop\iCUEState.exe 0xd7af00 4000

(or update the above to wherever you have exported the link.)

 

The 0xd7af00 could easily be replaced with any compatible cue state. By way of example, you could copy in METE_Autumn from Metro Exodus folder and then pass the following:

c:\users\yourUsername\desktop\iCUEState.exe METE_Autumn 4000

or even select it from the file dialog and it should play back.

 

This isn't much more than a 'fun' controller, but maybe it could be a nice proof of concept for someone who hasn't endeavored to try Macca_Cool's integration yet!

 

http://www.smithany.com/hexColors.zip

http://www.smithany.com/iCUEState.ahk

 

* You need to compile the AHK to an exe (both included in the links above) in order to receive the parameters from a streamdeck.

 

What does it look like? Here is a screencap and a video:

http://www.smithany.com/screencapofRGB.png

http://www.smithany.com/IMG_2694.mov

Edited by hastegag
added note about creating solid color for orange.cueprofile
Link to comment
Share on other sites

  • 4 weeks later...
  • 4 weeks later...

I created the Open CUE CLI, a command line tool to change iCUE profiles and play effects. The tool can be used with any profile from any game or with own profiles, placed into C:\Program Files (x86)\Corsair\CORSAIR iCUE Software\GameSdkEffects\profiles directory. It can also shows a list of all games and profiles available. The tool have multiple options to easily change profiles and trigger effects.

 

The cli requires Java 8 or newer and the running Game SDK Server.

Link to comment
Share on other sites

  • 4 months later...
×
×
  • Create New...