Skip to content

Commit

Permalink
- dagger maintenance
Browse files Browse the repository at this point in the history
- hugo page cleanup
- readme cleanup
- added normal and turbo timers
  • Loading branch information
pjmagee committed Feb 2, 2025
1 parent da5ef87 commit 539460e
Show file tree
Hide file tree
Showing 8 changed files with 405 additions and 175 deletions.
71 changes: 4 additions & 67 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@

An objective timer tracker with audio notifications for Dota2. This application is designed to help players keep track of important in-game events such as stacking, power runes, bounty runes, and more. The application is designed to be used in conjunction with the Game State Integration feature of Dota2.

## Features

Check the [Dota 2 Helper website](https://pjmagee.github.io/dota2-helper/) for features, screenshots, and more information.

## Download

Expand All @@ -12,75 +15,9 @@ An objective timer tracker with audio notifications for Dota2. This application
3. Extract the zip file which contains the full application.
4. Run the `Dota2Helper.Desktop.exe`


## Platform

I do not own a Mac or Linux machine to test the application, so only Windows is supported at this time.

## Features

- Profiles for customisation, e.g. heroes, position, or role
- Optimised timers overlay to place on top of Dota 2
- Customisable behaviour for each timer such as name, interval, audio, show/hide
- Playing audio notifications for each timer
- Manual reset for dynamic objectives (e.g. Tormentors, Roshan)
- Dark & light mode themes (dire and radiant style)
- Fake timers are used when the game is not running for easy configuration
- When the game is running, the timers will automatically start based on the game time
- Automatic installation of the game state integration configuration into your Dota 2 folder

## Why use this application?

### Learn about objectives

- The application can help you learn about the importance of objectives in Dota 2
- Objectives can be the difference between winning and losing a game
- Stacking and Pulling camps can be overwhelming for new players, but this application can help you learn the timings
- Early players can learn the importance of power runes and bounty runes which add up over the course of the game.

### Free alternative

There are a few alternatives to this application, but they have their own costs and limitations:

- Valve's Dota+ Subscription offers similar 'camp' timer features, but this application is free and has more customisation options.
- There are a couple of extenions with some Dota support on the Overwolf app store, but you have to install Overwolf and the extensions, and they may not be free.
- Overwolf can be seen as bloatware by some users, and it may impact your game performance.

## (GSI) Game State Integration

The application uses the Game State Integration feature of Dota 2 to get the game time and other information.

When you launch the application, it will automatically install the game state integration configuration into your Dota 2 folder. If you navigate to the 'Integration' tab in the settings window, it has options to uninstall/install and open the folder.

You can go to `..\steamapps\common\dota 2 beta\game\dota\cfg\gamestate_integration`:

You should be able to see a file created called `gamestate_integration_dota2_helper.cfg` with the following content:

```plaintext
"Dota 2 Integration Configuration"
{
"uri" "http://localhost:4001/"
"timeout" "5.0"
"buffer" "0.1"
"throttle" "0.1"
"heartbeat" "1.0"
"data"
{
"provider" "0"
"map" "1"
"player" "0"
"hero" "0"
"abilities" "0"
"items" "0"
}
}
```
Dota2 will send the game state information to the application when the game is running on the provided URI.

This application runs a small local web server waiting for Dota2 to post the game state information to the helper app, which it uses to calculate the timers.

Valve does not seem to have dedicated GSI documentation for Dota2, but the concept and configuration is similar to Valves CSGO GSI, which is documented [here](https://developer.valvesoftware.com/wiki/Counter-Strike:_Global_Offensive_Game_State_Integration).

Only Windows is supported at this time.

## Support

Expand Down
2 changes: 1 addition & 1 deletion dagger.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "Dota2Helper",
"engineVersion": "v0.15.2",
"engineVersion": "v0.15.3",
"sdk": "go",
"dependencies": [
{
Expand Down
60 changes: 30 additions & 30 deletions dagger/go.mod
Original file line number Diff line number Diff line change
@@ -1,53 +1,53 @@
module dagger/dota-2-helper

go 1.22.5
go 1.22.7

toolchain go1.23.2

require (
github.com/99designs/gqlgen v0.17.55
github.com/99designs/gqlgen v0.17.57
github.com/Khan/genqlient v0.7.0
github.com/vektah/gqlparser/v2 v2.5.17
go.opentelemetry.io/otel v1.27.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.27.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.27.0
go.opentelemetry.io/otel/sdk v1.27.0
go.opentelemetry.io/otel/trace v1.27.0
github.com/vektah/gqlparser/v2 v2.5.20
go.opentelemetry.io/otel v1.32.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0
go.opentelemetry.io/otel/sdk v1.32.0
go.opentelemetry.io/otel/trace v1.32.0
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa
golang.org/x/sync v0.8.0
google.golang.org/grpc v1.65.0
golang.org/x/sync v0.10.0
google.golang.org/grpc v1.68.0
)

require (
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 // indirect
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect
github.com/sosodev/duration v1.3.1 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.0.0-20240518090000-14441aefdf88
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.3.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.27.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.27.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.27.0 // indirect
go.opentelemetry.io/otel/log v0.3.0
go.opentelemetry.io/otel/metric v1.27.0
go.opentelemetry.io/otel/sdk/log v0.3.0
go.opentelemetry.io/otel/sdk/metric v1.27.0
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 // indirect
go.opentelemetry.io/otel/log v0.8.0
go.opentelemetry.io/otel/metric v1.32.0
go.opentelemetry.io/otel/sdk/log v0.8.0
go.opentelemetry.io/otel/sdk/metric v1.32.0
go.opentelemetry.io/proto/otlp v1.3.1
golang.org/x/net v0.29.0 // indirect
golang.org/x/sys v0.26.0 // indirect
golang.org/x/text v0.18.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect
google.golang.org/protobuf v1.34.2 // indirect
golang.org/x/net v0.33.0 // indirect
golang.org/x/sys v0.28.0 // indirect
golang.org/x/text v0.21.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20241113202542-65e8d215514f // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f // indirect
google.golang.org/protobuf v1.35.2 // indirect
)

replace go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc => go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.0.0-20240518090000-14441aefdf88
replace go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc => go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0

replace go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp => go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.3.0
replace go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp => go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0

replace go.opentelemetry.io/otel/log => go.opentelemetry.io/otel/log v0.3.0
replace go.opentelemetry.io/otel/log => go.opentelemetry.io/otel/log v0.8.0

replace go.opentelemetry.io/otel/sdk/log => go.opentelemetry.io/otel/sdk/log v0.3.0
replace go.opentelemetry.io/otel/sdk/log => go.opentelemetry.io/otel/sdk/log v0.8.0
Loading

0 comments on commit 539460e

Please sign in to comment.