Awesome
<p align="center"> <img src=".github/resources/dogu-gamium-logo.png" width="100px" height="100px" title="Gamium_Logo"/> </p> <p align="center"> <b>Gamium</b> </p> <p align="center"> Gamium is an SDK that allows you to automate game test </p>Automation Demo by Gamium
<img src=".github/resources/gamium-dogurpgsample_demo.gif" title="Demo"/>Description
Gamium provides the ability to script the behavior of game users. Starting from a simple function of clicking on the UI, you can automate various cases and be free from repetitive manual tests.
Automation starts when the gamium client sends a network message to the gamium engine for the specified command. Users just need to put the gamium engine into the game build and send the specified message using the client sdk.
Philosophy
As various platforms emerge, the number of things to test is increasing. Accordingly, the mobile app automation framework is used universally, but in the case of games, there are many projects where tests are not yet automated.
We want to solve this problem and develop automation library with multi-engine support through the same interface. The interface we provide is inspired by Selenium and Playwright.
Support List
Engine
Engine | Windows / macOS | Android | iOS | Xbox | PS4 / PS5 | Switch |
---|---|---|---|---|---|---|
Unity | ✅ | ✅ | ✅ | Need testing | Need testing | Need testing |
Unreal | Planned | Planned | Planned | Planned | Planned | Planned |
Godot | Planned | Planned | Planned | Planned | Planned | Planned |
Proprietary Engine
Language | Support |
---|---|
C++ | Planned |
C# | Planned |
Client Language
Language | Support |
---|---|
Typescript | ✅ |
Python | ✅ |
C# | Planned |
Getting Started
Please refer to the Get Started
Installation
npm i gamium
pip install gamium
Examples
You can look up the UI and then click and scroll,
await gamium.ui().click(By.path('/Canvas[1]/Login[1]/Panel[1]/GuestLoginBtn[1]'));
You can simulate input into the game,
await gamium.sendKey(KeyBy.unityKeyboard('Space'));
You can also call specific functions.
await gamium.executeRpc(RpcBy.method('Gamium.Private.CodebaseSample', 'CallParam1', 10));
Read Resources
Contributing
Please, don't hesitate to file a question.
If you have problem, file an issue.
If you are interested in contributing directly to the code base, don't hesitate to Pull request.
But I'd really appreciate it if you could read the CONTRIBUTING.md before making your request.
License
Gamium is MIT licensed